{ "name": "sonarjs", "version": "1.0.0", "description": "SonarJS code analyzer", "scripts": { "format": "prettier --write .", "check-format": "prettier --list-different .", "build": "mvn clean && npm run bridge:build && npm run _:plugin:prepare-bridge && npm run plugin:build", "build:cov": "mvn clean && npm run bridge:build:cov && npm run _:plugin:prepare-bridge && npm run plugin:build", "build:fast": "npm run bridge:build:fast && npm run _:plugin:prepare-bridge && npm run plugin:build:fast", "bf": "npm run build:fast", "new-rule": "tsx tools/new-rule.mts", "generate-meta": "tsx tools/generate-meta.ts", "generate-java-rule-classes": "tsx tools/generate-java-rule-classes.ts", "ruling": "tsx --tsconfig packages/tsconfig.test.json --test packages/ruling/projects/*.ruling.test.ts", "ruling-sync": "rsync -avh packages/ruling/actual/jsts/ its/ruling/src/test/expected/jsts/ --delete", "bridge:compile:ts5": "tsc -b packages && npm run _:bridge:copy-protofiles", "bridge:compile": "tsgo -p packages/tsconfig.app.json && tsgo -p packages/tsconfig.test.json && npm run _:bridge:copy-protofiles", "bridge:test": "tsx --tsconfig packages/tsconfig.test.json --test --test-concurrency=4 --test-reporter=spec --test-reporter-destination stdout \"packages/*/src/rules/*[!node_modules]/**/*.test.ts\" \"packages/**/tests/**/*.test.ts\"", "bridge:test:js": "tsx tools/copy-test-resources.ts && node --test --enable-source-maps --test-concurrency=4 --test-reporter=spec --test-reporter-destination stdout \"lib/*/src/rules/*[!node_modules]/**/*.test.js\" \"lib/**/tests/**/*.test.js\"", "bridge:test:cov": "cross-env 'NODE_OPTIONS=--import ./tools/nyc-esm-hook-loader.js' nyc npm run bridge:test:js", "bridge:bundle": "node esbuild.mjs", "bridge:build": "npm run bridge:build:fast && npm run bridge:test", "bridge:build:cov": "npm run bridge:build:fast && npm run bridge:test:cov", "bridge:build:fast": "npm run _:bridge:clear && npm run generate-meta && npm run bridge:compile", "bbf": "npm run bridge:build:fast", "plugin:build": "mvn install", "plugin:build:fast": "mvn install -DskipTests", "pbf": "npm run plugin:build:fast", "prepare": "husky", "precommit": "pretty-quick --staged", "postinstall": "patch-package", "count-rules": "tsx tools/count-rules.ts", "_:bridge:copy-protofiles": "cpy --flat packages/jsts/src/parsers/estree.proto lib/jsts/src/parsers", "_:bridge:clear": "rimraf --glob lib/*", "_:plugin:prepare-bridge": "npm run bridge:bundle && npm pack --ignore-scripts && npm run _:plugin:copy-bridge", "_:plugin:copy-bridge": "cpy sonarjs-1.0.0.tgz sonar-plugin/sonar-javascript-plugin/target/classes && cpy sonarjs-1.0.0.tgz sonar-plugin/standalone/target/classes", "eslint-plugin:build": "npm ci && npm install --no-save builtin-modules@3.3.0 && npm run eslint-plugin:compile && cd lib && npm pack", "eslint-plugin:compile": "npm run generate-meta && npm run _:bridge:clear && npm run eslint-plugin:check && npm run eslint-plugin:emit && npm run eslint-plugin:types && npm run eslint-plugin:package-json && npm run eslint-plugin:copy-assets && npm run eslint-docs", "eslint-plugin:check": "tsc -p tsconfig-plugin.json --noEmit", "eslint-plugin:emit": "tsc -p tsconfig-plugin.json --noCheck --module commonjs --moduleResolution node --outDir lib/cjs", "eslint-plugin:types": "tsc -p tsconfig-plugin.json --declaration true --emitDeclarationOnly --outDir lib/types", "eslint-plugin:package-json": "node generate-eslint-package-json.mjs", "eslint-plugin:copy-assets": "cpy LICENSE.txt lib/ --rename LICENSE && cpy packages/jsts/src/rules/README.md lib/ --flat", "eslint-docs": "rimraf --glob lib/docs/*.md && eslint-doc-generator lib --init-rule-docs && tsx tools/generate-external-rules-docs.ts", "deploy-rule-data": "tsx tools/deploy-rule-data.ts", "license-regeneration": "node license-management.mjs", "docker:build": "npm run bridge:bundle && docker build -t sonarjs:latest .", "docker:run": "docker run -p 3000:3000 sonarjs:latest" }, "repository": { "type": "git", "url": "git+https://github.com/SonarSource/SonarJS.git" }, "license": "LGPL-3.0-only", "bugs": { "url": "https://community.sonarsource.com/" }, "homepage": "https://github.com/SonarSource/SonarJS#readme", "engines": { "node": "^20.12.0 || ^22.11.0 || ^24.0.0" }, "type": "module", "devDependencies": { "@eslint/core": "1.0.0", "@inquirer/prompts": "8.0.2", "@istanbuljs/esm-loader-hook": "0.3.0", "@types/babel__preset-env": "7.10.0", "@types/bytes": "3.1.5", "@types/estree": "1.0.8", "@types/estree-jsx": "1.0.5", "@types/express": "5.0.6", "@types/functional-red-black-tree": "1.0.6", "@types/lodash.merge": "4.6.9", "@types/node": "22.19.1", "@types/semver": "7.7.1", "@types/tmp": "0.2.6", "@types/ws": "8.18.1", "cpy-cli": "6.0.0", "cross-env": "10.1.0", "dir-compare": "5.0.0", "esbuild": "0.27.1", "esbuild-plugin-copy": "2.1.1", "esbuild-plugin-text-replace": "1.3.0", "eslint-doc-generator": "2.3.0", "esprima": "4.0.1", "expect": "30.2.0", "glob": "13.0.0", "husky": "9.1.7", "json-schema-to-ts": "3.1.1", "knip": "5.71.0", "license-checker": "25.0.1", "memfs": "4.51.1", "nyc": "17.1.0", "prettier": "3.7.4", "prettier-plugin-java": "2.7.7", "pretty-quick": "4.2.2", "rimraf": "6.1.2", "tsx": "4.21.0", "type-fest": "5.3.0" }, "dependencies": { "@angular-eslint/eslint-plugin": "21.0.0", "@babel/core": "7.28.5", "@babel/eslint-parser": "7.28.5", "@babel/plugin-proposal-decorators": "7.28.0", "@babel/preset-env": "7.28.5", "@babel/preset-flow": "7.27.1", "@babel/preset-react": "7.28.5", "@eslint-community/regexpp": "4.12.2", "@protobufjs/base64": "1.1.2", "@stylistic/eslint-plugin": "5.6.1", "@stylistic/stylelint-plugin": "4.0.0", "@typescript-eslint/eslint-plugin": "8.48.1", "@typescript-eslint/parser": "8.48.1", "@typescript-eslint/type-utils": "8.48.1", "@typescript-eslint/utils": "8.48.1", "@typescript/native-preview": "7.0.0-dev.20250922.1", "builtin-modules": "5.0.0", "bytes": "3.1.2", "color": "5.0.3", "css-unit-converter": "1.1.2", "eslint": "9.39.1", "eslint-plugin-import": "2.32.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "7.0.1", "eslint-plugin-unicorn": "62.0.0", "express": "5.2.1", "functional-red-black-tree": "1.0.1", "globals": "16.5.0", "htmlparser2": "10.0.0", "http-status-codes": "2.3.0", "jsx-ast-utils-x": "0.1.0", "lodash.merge": "4.6.2", "minimatch": "10.1.1", "patch-package": "8.0.1", "postcss": "8.5.6", "postcss-html": "1.8.0", "postcss-less": "6.0.0", "postcss-sass": "0.5.0", "postcss-scss": "4.0.9", "postcss-value-parser": "4.2.0", "protobufjs": "7.5.4", "scslre": "0.3.0", "semver": "7.7.3", "stylelint": "16.26.0", "stylelint-config-html": "1.1.0", "tmp": "0.2.5", "typescript": "5.9.3", "vue-eslint-parser": "10.2.0", "ws": "8.18.3", "yaml": "2.8.2" }, "prettier": { "printWidth": 100, "trailingComma": "all", "singleQuote": true, "arrowParens": "avoid", "endOfLine": "lf", "plugins": [ "prettier-plugin-java" ] }, "files": [ "bin/", "licenses/" ] }