{ "name": "discourse", "private": true, "repository": "https://github.com/discourse/discourse", "author": "Discourse", "license": "GPL-2.0-only", "devDependencies": { "@babel/plugin-proposal-decorators": "^7.28.0", "@discourse/lint-configs": "^2.31.0", "@discourse/moment-timezone-names-translations": "^1.0.0", "@fortawesome/fontawesome-free": "6.7.2", "@glint/core": "^2.0.0-alpha.3", "@glint/environment-ember-loose": "^2.0.0-alpha.3", "@glint/environment-ember-template-imports": "^2.0.0-alpha.3", "@glint/template": "^1.6.0-alpha.2", "@rdil/parallel-prettier": "^3.0.0", "@swc/core": "^1.13.5", "chart.js": "3.5.1", "chartjs-plugin-datalabels": "2.2.0", "chrome-launcher": "^1.2.1", "chrome-remote-interface": "^0.33.3", "concurrently": "^9.2.1", "ember-template-lint": "7.9.3", "esbuild": "^0.25.10", "eslint": "9.34.0", "jsdoc": "^4.0.4", "lefthook": "^1.13.6", "licensee": "^11.1.1", "lint-to-the-future": "^2.6.4", "lint-to-the-future-ember-template": "^3.1.0", "lint-to-the-future-eslint": "^3.2.0", "magnific-popup": "1.1.0", "pikaday": "1.8.2", "playwright": "1.55.1", "prettier": "3.5.3", "puppeteer-core": "^24.22.3", "squoosh": "https://codeload.github.com/discourse/squoosh/tar.gz/dc9649d", "stylelint": "16.23.1", "terser": "^5.44.0", "typescript": "5.6.x" }, "scripts": { "dev": "concurrently \"bin/ember-cli server --environment=development\" \"RAILS_ENV=development bin/rails server\"", "lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\"", "lint:fix": "concurrently \"pnpm:lint:*:fix\" --names \"fix:\"", "lint:css": "pnpm stylelint 'app/assets/stylesheets/**/*.scss' $(script/list_bundled_plugins '/assets/stylesheets/**/*.scss') 'themes/**/*.scss'", "lint:css:fix": "pnpm stylelint --fix 'app/assets/stylesheets/**/*.scss' $(script/list_bundled_plugins '/assets/stylesheets/**/*.scss') 'themes/**/*.scss'", "lint:js": "eslint ./app/assets/javascripts $(script/list_bundled_plugins) ./themes --cache --no-error-on-unmatched-pattern", "lint:js:fix": "eslint --fix ./app/assets/javascripts $(script/list_bundled_plugins) ./themes --no-error-on-unmatched-pattern", "lint:hbs": "ember-template-lint 'app/assets/javascripts/**/*.{gjs,hbs}' 'plugins/*/assets/javascripts/**/*.{gjs,hbs}' 'plugins/*/admin/assets/javascripts/**/*.{gjs,hbs}' 'themes/**/*.{gjs,hbs}'", "lint:hbs:fix": "ember-template-lint 'app/assets/javascripts/**/*.{gjs,hbs}' 'plugins/*/assets/javascripts/**/*.{gjs,hbs}' 'plugins/*/admin/assets/javascripts/**/*.{gjs,hbs}' 'themes/**/*.{gjs,hbs}' --fix", "lint:prettier": "pnpm pprettier --list-different 'app/assets/stylesheets/**/*.scss' 'app/assets/javascripts/**/*.{js,gjs,hbs,css}' $(script/list_bundled_plugins '/assets/stylesheets/**/*.scss') $(script/list_bundled_plugins '/{assets,admin/assets,test}/javascripts/**/*.{js,gjs,hbs}') 'themes/**/*.{js,gjs,hbs,scss}'", "lint:prettier:fix": "pnpm prettier -w 'app/assets/stylesheets/**/*.scss' 'app/assets/javascripts/**/*.{js,gjs,hbs,css}' $(script/list_bundled_plugins '/assets/stylesheets/**/*.scss') $(script/list_bundled_plugins '/{assets,admin/assets,test}/javascripts/**/*.{js,gjs,hbs}') 'themes/**/*.{js,gjs,hbs,scss}'", "lint:glint": "glint -p jsconfig.json --noEmit", "lttf:ignore": "lint-to-the-future ignore", "lttf:output": "lint-to-the-future output -o ./lint-progress/", "lint-progress": "pnpm lttf:output && npx html-pages ./lint-progress --no-cache", "ember": "pnpm --dir=app/assets/javascripts/discourse ember" }, "engines": { "node": ">= 20", "npm": "please-use-pnpm", "yarn": "please-use-pnpm", "pnpm": "^9" }, "packageManager": "pnpm@9.15.5", "pnpm": { "patchedDependencies": { "ember-this-fallback@0.4.0": "patches/ember-this-fallback@0.4.0.patch", "babel-plugin-debug-macros@0.3.4": "patches/babel-plugin-debug-macros@0.3.4.patch", "virtual-dom@2.1.1": "patches/virtual-dom@2.1.1.patch", "licensee@11.1.1": "patches/licensee@11.1.1.patch", "@ember-compat/tracked-built-ins@0.9.1": "patches/@ember-compat__tracked-built-ins@0.9.1.patch", "ember-source@6.6.0": "patches/ember-source@6.6.0.patch" }, "peerDependencyRules": { "allowedVersions": { "lint-to-the-future-eslint>eslint": "*", "@mixer/parallel-prettier>prettier": "*", "lint-to-the-future-ember-template>ember-template-lint": "*", "ember-this-fallback>ember-source": "*" }, "ignoreMissing": [ "webpack" ] }, "overrides": { "@ember/test-waiters": "4.1.1" } } }