{
  "name": "discourse",
  "version": "1.0.0",
  "repository": "https://github.com/discourse/discourse",
  "author": "Discourse",
  "license": "GPL-2.0-only",
  "devDependencies": {
    "@discourse/moment-timezone-names-translations": "^1.0.0",
    "@fortawesome/fontawesome-free": "5.15.4",
    "@glint/core": "^1.1.0",
    "@glint/environment-ember-loose": "^1.1.0",
    "@glint/environment-ember-template-imports": "^1.1.0",
    "@glint/template": "^1.1.0",
    "@highlightjs/cdn-assets": "11.8.0",
    "@json-editor/json-editor": "2.10.0",
    "@mixer/parallel-prettier": "^2.0.3",
    "ace-builds": "1.4.13",
    "chart.js": "3.5.1",
    "chartjs-plugin-datalabels": "2.2.0",
    "chrome-launcher": "^0.15.1",
    "chrome-remote-interface": "^0.31.3",
    "concurrently": "^8.2.1",
    "diffhtml": "1.0.0-beta.20",
    "ember-template-lint": "5.11.2",
    "esbuild": "^0.19.2",
    "eslint": "^8.37.0",
    "eslint-config-discourse": "^4.0.0",
    "eslint-plugin-ember": "11.11.1",
    "eslint-plugin-sort-class-members": "1.18.0",
    "jsdoc": "^4.0.0",
    "lefthook": "^1.2.0",
    "lint-to-the-future": "^2.0.0",
    "lint-to-the-future-ember-template": "^1.1.1",
    "lint-to-the-future-eslint": "^2.0.1",
    "magnific-popup": "1.1.0",
    "moment": "2.29.4",
    "moment-timezone": "0.5.43",
    "pikaday": "1.8.2",
    "prettier-plugin-ember-template-tag": "^0.3.2",
    "puppeteer-core": "^21.0.3",
    "squoosh": "discourse/squoosh#dc9649d",
    "tidy-jsdoc": "^1.4.1",
    "typescript": "^5.1.3"
  },
  "scripts": {
    "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\"",
    "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\"",
    "lint:js": "eslint ./app/assets/javascripts --cache",
    "lint:js-plugins": "eslint ./plugins --cache",
    "lint:js:fix": "eslint ./app/assets/javascripts",
    "lint:js-plugins:fix": "eslint ./plugins",
    "lint:hbs": "ember-template-lint 'app/assets/javascripts/**/*.{gjs,hbs}' 'plugins/**/assets/javascripts/**/*.{gjs,hbs}' --no-error-on-unmatched-pattern",
    "lint:hbs:fix": "ember-template-lint 'app/assets/javascripts/**/*.{gjs,hbs}' 'plugins/**/assets/javascripts/**/*.{gjs,hbs}' --no-error-on-unmatched-pattern --fix",
    "lint:prettier": "yarn pprettier --list-different 'app/assets/stylesheets/**/*.scss' 'app/assets/javascripts/**/*.{js,gjs,hbs}' 'plugins/**/assets/stylesheets/**/*.scss' 'plugins/**/assets/javascripts/**/*.{js,gjs,hbs}'",
    "lint:prettier:fix": "yarn prettier -w 'app/assets/stylesheets/**/*.scss' 'app/assets/javascripts/**/*.{js,gjs,hbs}' 'plugins/**/assets/stylesheets/**/*.scss' 'plugins/**/assets/javascripts/**/*.{js,gjs,hbs}'",
    "lttf:ignore": "lint-to-the-future ignore",
    "lttf:output": "lint-to-the-future output -o ./lint-progress/",
    "lint-progress": "yarn lttf:output && npx html-pages ./lint-progress --no-cache",
    "postinstall": "yarn --cwd app/assets/javascripts $(node -e 'const argv = JSON.parse(process.env.npm_config_argv).original; const passthrough = [`--frozen-lockfile`, `-s`].filter(arg => argv.includes(arg)); console.log(passthrough.join(` `));')"
  },
  "engines": {
    "node": "16.* || >= 18",
    "npm": "please-use-yarn",
    "yarn": ">= 1.21.1"
  }
}