From 596728917296c11e6ae936c00f8392218a6fe31e Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 22 Nov 2022 14:47:49 +0530 Subject: [PATCH 1/5] fix: lintstagedrc `lint:jison` --- .lintstagedrc.json | 3 ++- packages/mermaid/.lintstagedrc.json | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.lintstagedrc.json b/.lintstagedrc.json index 863473f2a..ab5f4f298 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,4 +1,5 @@ { "!(docs/**/*)*.{ts,js,json,html,md,mts}": ["eslint --fix", "prettier --write"], - "cSpell.json": ["ts-node-esm scripts/fixCSpell.ts"] + "cSpell.json": ["ts-node-esm scripts/fixCSpell.ts"], + "**/*.jison": ["pnpm run lint:jison"] } diff --git a/packages/mermaid/.lintstagedrc.json b/packages/mermaid/.lintstagedrc.json index c3cbb926b..94734fd74 100644 --- a/packages/mermaid/.lintstagedrc.json +++ b/packages/mermaid/.lintstagedrc.json @@ -1,6 +1,5 @@ { "src/docs/**": ["pnpm --filter mermaid run docs:build --git"], "src/docs.mts": ["pnpm --filter mermaid run docs:build --git"], - "src/(defaultConfig|config|mermaidAPI).ts": ["pnpm --filter mermaid run docs:build --git"], - "*.jison": ["pnpm run lint:jison"] + "src/(defaultConfig|config|mermaidAPI).ts": ["pnpm --filter mermaid run docs:build --git"] } From 009a32d20be41abab4f83b2a2d6f6ec482ae080f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 22 Nov 2022 23:05:27 +0530 Subject: [PATCH 2/5] fix: Enable extending lintstagedrc. --- .lintstagedrc.json | 5 ----- .lintstagedrc.mjs | 5 +++++ packages/mermaid/.lintstagedrc.json | 5 ----- packages/mermaid/.lintstagedrc.mjs | 7 +++++++ 4 files changed, 12 insertions(+), 10 deletions(-) delete mode 100644 .lintstagedrc.json create mode 100644 .lintstagedrc.mjs delete mode 100644 packages/mermaid/.lintstagedrc.json create mode 100644 packages/mermaid/.lintstagedrc.mjs diff --git a/.lintstagedrc.json b/.lintstagedrc.json deleted file mode 100644 index ab5f4f298..000000000 --- a/.lintstagedrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "!(docs/**/*)*.{ts,js,json,html,md,mts}": ["eslint --fix", "prettier --write"], - "cSpell.json": ["ts-node-esm scripts/fixCSpell.ts"], - "**/*.jison": ["pnpm run lint:jison"] -} diff --git a/.lintstagedrc.mjs b/.lintstagedrc.mjs new file mode 100644 index 000000000..ff1d8c107 --- /dev/null +++ b/.lintstagedrc.mjs @@ -0,0 +1,5 @@ +export default { + '!(docs/**/*)*.{ts,js,json,html,md,mts}': ['eslint --fix', 'prettier --write'], + 'cSpell.json': ['ts-node-esm scripts/fixCSpell.ts'], + '**/*.jison': ['pnpm -w run lint:jison'], +}; diff --git a/packages/mermaid/.lintstagedrc.json b/packages/mermaid/.lintstagedrc.json deleted file mode 100644 index 94734fd74..000000000 --- a/packages/mermaid/.lintstagedrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "src/docs/**": ["pnpm --filter mermaid run docs:build --git"], - "src/docs.mts": ["pnpm --filter mermaid run docs:build --git"], - "src/(defaultConfig|config|mermaidAPI).ts": ["pnpm --filter mermaid run docs:build --git"] -} diff --git a/packages/mermaid/.lintstagedrc.mjs b/packages/mermaid/.lintstagedrc.mjs new file mode 100644 index 000000000..fe79ad254 --- /dev/null +++ b/packages/mermaid/.lintstagedrc.mjs @@ -0,0 +1,7 @@ +import baseConfig from '../../.lintstagedrc.mjs'; +export default { + ...baseConfig, + 'src/docs/**': ['pnpm --filter mermaid run docs:build --git'], + 'src/docs.mts': ['pnpm --filter mermaid run docs:build --git'], + 'src/(defaultConfig|config|mermaidAPI).ts': ['pnpm --filter mermaid run docs:build --git'], +}; From 183dee89c252d7c5cd50fba22076a7483f815b11 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 22 Nov 2022 23:06:12 +0530 Subject: [PATCH 3/5] feat: Spellcheck docs when building docs.yml is removed as `docs:verify` will cover spellchecks now. --- .github/workflows/docs.yml | 28 ----- cSpell.json | 5 + package.json | 4 +- packages/mermaid/package.json | 8 +- pnpm-lock.yaml | 225 ++++++++++++++++++++++++++++++++-- 5 files changed, 226 insertions(+), 44 deletions(-) delete mode 100644 .github/workflows/docs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index dbdc4b904..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Documentation Checks - -on: - push: - branches: - - develop - paths: - - 'packages/mermaid/src/docs/**/*' - pull_request: - branches: - - develop - paths: - - 'packages/mermaid/src/docs/**/*' -jobs: - spellcheck: - name: 'Docs: Spellcheck' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - name: Check out the code - - uses: actions/setup-node@v3 - name: Setup node - with: - node-version: '18' - - run: npm install -g cspell - name: Install cSpell - - run: cspell --config ./cSpell.json "packages/mermaid/src/docs/**/*.md" --no-progress - name: Run cSpell diff --git a/cSpell.json b/cSpell.json index 03891165f..428003cef 100644 --- a/cSpell.json +++ b/cSpell.json @@ -13,6 +13,7 @@ "bbox", "bilkent", "bisheng", + "braintree", "brolin", "brotli", "codedoc", @@ -33,6 +34,7 @@ "gantt", "gitea", "gitgraph", + "globby", "graphlib", "grav", "greywolf", @@ -40,11 +42,13 @@ "jaoude", "jison", "kaufmann", + "khroma", "klemm", "klink", "knsv", "knut", "laganeckas", + "lintstagedrc", "lucida", "matthieu", "mdbook", @@ -74,6 +78,7 @@ "treemap", "ts-nocheck", "tuleap", + "unist", "verdana", "viewports", "vinod", diff --git a/package.json b/package.json index 36846a313..aef8249e7 100644 --- a/package.json +++ b/package.json @@ -60,8 +60,8 @@ "@cspell/eslint-plugin": "^6.14.2", "@types/eslint": "^8.4.10", "@types/express": "^4.17.14", - "@types/jsdom": "^20.0.1", "@types/js-yaml": "^4.0.5", + "@types/jsdom": "^20.0.1", "@types/lodash": "^4.14.188", "@types/mdast": "^3.0.10", "@types/node": "^18.11.9", @@ -92,8 +92,8 @@ "identity-obj-proxy": "^3.0.0", "jest": "^29.3.1", "jison": "^0.4.18", - "jsdom": "^20.0.2", "js-yaml": "^4.1.0", + "jsdom": "^20.0.2", "lint-staged": "^13.0.3", "path-browserify": "^1.0.1", "pnpm": "^7.15.0", diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 0b4c7aad1..4e0d34944 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,7 +1,7 @@ { "name": "mermaid", "version": "9.2.2", - "description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", + "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "main": "./dist/mermaid.min.js", "module": "./dist/mermaid.core.mjs", "types": "./dist/mermaid.d.ts", @@ -26,12 +26,13 @@ "scripts": { "clean": "rimraf dist", "docs:code": "typedoc src/defaultConfig.ts src/config.ts src/mermaidAPI.ts && prettier --write ./src/docs/config/setup", - "docs:build": "rimraf ../../docs && pnpm docs:code && ts-node-esm src/docs.mts", - "docs:verify": "pnpm docs:code && ts-node-esm src/docs.mts --verify", + "docs:build": "rimraf ../../docs && pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts", + "docs:verify": "pnpm docs:spellcheck && pnpm docs:code && ts-node-esm src/docs.mts --verify", "docs:pre:vitepress": "rimraf src/vitepress && pnpm docs:code && ts-node-esm src/docs.mts --vitepress", "docs:build:vitepress": "pnpm docs:pre:vitepress && vitepress build src/vitepress", "docs:dev": "pnpm docs:pre:vitepress && concurrently \"vitepress dev src/vitepress\" \"ts-node-esm src/docs.mts --watch --vitepress\"", "docs:serve": "pnpm docs:build:vitepress && vitepress serve src/vitepress", + "docs:spellcheck": "cspell --config ../../cSpell.json \"src/docs/**/*.md\"", "release": "pnpm build", "prepublishOnly": "pnpm -w run build" }, @@ -79,6 +80,7 @@ "chokidar": "^3.5.3", "concurrently": "^7.5.0", "coveralls": "^3.1.1", + "cspell": "^6.14.3", "globby": "^13.1.2", "identity-obj-proxy": "^3.0.0", "jison": "^0.4.18", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7bd96ee8f..f05e5fdf8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -248,6 +248,9 @@ importers: coveralls: specifier: ^3.1.1 version: 3.1.1 + cspell: + specifier: ^6.14.3 + version: 6.14.3 globby: specifier: ^13.1.2 version: 13.1.2 @@ -1367,21 +1370,84 @@ packages: '@cspell/dict-vue': 3.0.0 dev: true + /@cspell/cspell-bundled-dicts/6.14.3: + resolution: {integrity: sha512-bgPBduoDi1jkrcLkmAwRG1c6F1iprF2yfBgEDT19dRG1kYuq/fLGNOcSmEp4CbApn8m0MmxsrhEp8O0Q9owQRQ==} + engines: {node: '>=14'} + dependencies: + '@cspell/dict-ada': 4.0.0 + '@cspell/dict-aws': 3.0.0 + '@cspell/dict-bash': 4.1.0 + '@cspell/dict-companies': 3.0.3 + '@cspell/dict-cpp': 4.0.0 + '@cspell/dict-cryptocurrencies': 3.0.1 + '@cspell/dict-csharp': 4.0.1 + '@cspell/dict-css': 4.0.0 + '@cspell/dict-dart': 2.0.0 + '@cspell/dict-django': 4.0.0 + '@cspell/dict-docker': 1.1.3 + '@cspell/dict-dotnet': 4.0.0 + '@cspell/dict-elixir': 4.0.0 + '@cspell/dict-en-gb': 1.1.33 + '@cspell/dict-en_us': 4.1.0 + '@cspell/dict-filetypes': 3.0.0 + '@cspell/dict-fonts': 3.0.0 + '@cspell/dict-fullstack': 3.0.0 + '@cspell/dict-git': 2.0.0 + '@cspell/dict-golang': 5.0.0 + '@cspell/dict-haskell': 4.0.0 + '@cspell/dict-html': 4.0.1 + '@cspell/dict-html-symbol-entities': 4.0.0 + '@cspell/dict-java': 5.0.2 + '@cspell/dict-latex': 3.0.0 + '@cspell/dict-lorem-ipsum': 3.0.0 + '@cspell/dict-lua': 3.0.0 + '@cspell/dict-node': 4.0.1 + '@cspell/dict-npm': 4.0.1 + '@cspell/dict-php': 3.0.3 + '@cspell/dict-powershell': 3.0.0 + '@cspell/dict-public-licenses': 2.0.0 + '@cspell/dict-python': 4.0.0 + '@cspell/dict-r': 2.0.0 + '@cspell/dict-ruby': 3.0.0 + '@cspell/dict-rust': 3.0.0 + '@cspell/dict-scala': 3.0.0 + '@cspell/dict-software-terms': 3.0.5 + '@cspell/dict-sql': 2.0.0 + '@cspell/dict-swift': 2.0.0 + '@cspell/dict-typescript': 3.0.1 + '@cspell/dict-vue': 3.0.0 + dev: true + /@cspell/cspell-pipe/6.14.2: resolution: {integrity: sha512-9H7Z/jy2tGpMW9T/JOk8T3bqvQoHJIz1wddktA5Lq8fnMqlDhM9le2uykhVlLpemLhWpDS2fNzLJ3sHiaPgHBA==} engines: {node: '>=14'} dev: true + /@cspell/cspell-pipe/6.14.3: + resolution: {integrity: sha512-/mLZxJOK3/UFpnR4jrImKY5W4cn5XWjvQPXnFCEzpU0tAAF6GboJgWl30TegqFJjLVCKTNRMOtT1r6kgvb66zw==} + engines: {node: '>=14'} + dev: true + /@cspell/cspell-service-bus/6.14.2: resolution: {integrity: sha512-IOK4MqwDNS2y29eZjdpHrCQ0ouTWZCS2e3EOmlvY+yUpT7e1AX8pVOaar4jLnXg03evAjrFrrmfmhFI6poO6Hg==} engines: {node: '>=14'} dev: true + /@cspell/cspell-service-bus/6.14.3: + resolution: {integrity: sha512-89OWGBzhorhiWcFqFTeHl9Y6WTdd5MGC2XNNCVZLM3VTYaFx4DVkiyxWdkE7gHjYxvNdGSH54/fE18TqLc//dQ==} + engines: {node: '>=14'} + dev: true + /@cspell/cspell-types/6.14.2: resolution: {integrity: sha512-/EZYVglm6+2GlnkFTzuLuQFr7vrttkhG+ZsNO9EDcFYB5N7O2ndNSkTQFxGi8FS8R3RS5CHyS5X6hANnolzvfQ==} engines: {node: '>=14'} dev: true + /@cspell/cspell-types/6.14.3: + resolution: {integrity: sha512-u4Hun0vOQVkk3tJ6VzPjHVmv2dq0D6jYqX8pWLKWRwo38rdoIkdWseN359sWCz96tDM8g5rpSFdmecbWLU7BYg==} + engines: {node: '>=14'} + dev: true + /@cspell/dict-ada/4.0.0: resolution: {integrity: sha512-M0n4ZYmpLOXbDD07Qb/Ekk0K5pX2C+mCuJ2ZxPgbTq9HGlrN43PmqrGJHWcgtVHE3fd1D4VxS85QcQP6r1Y+KQ==} dev: true @@ -1564,6 +1630,11 @@ packages: engines: {node: '>=14.6'} dev: true + /@cspell/strong-weak-map/6.14.3: + resolution: {integrity: sha512-/FTvcywuwfFTMEpRabL8+rqB/ezSjvMp6todO0SwL/agYQmRIuTvTYLh0Ikq430oVnjo7LDgztW0tHq38UlFLw==} + engines: {node: '>=14.6'} + dev: true + /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -4116,6 +4187,11 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true + /commander/9.4.1: + resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} + engines: {node: ^12.20.0 || >=14} + dev: true + /comment-json/4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} @@ -4324,6 +4400,17 @@ packages: yaml: 1.10.2 dev: true + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + /coveralls/3.1.1: resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} engines: {node: '>=6'} @@ -4376,6 +4463,26 @@ packages: gensequence: 4.0.2 dev: true + /cspell-dictionary/6.14.3: + resolution: {integrity: sha512-yIqJEZZj36j1CmmjAiuQOYZM6T62Ih7k35DhAU1hYVARUEEnFN/Uz72UkDj2SAmURVn2On+bAmZ5zCx0JZzf2g==} + engines: {node: '>=14'} + dependencies: + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + cspell-trie-lib: 6.14.3 + fast-equals: 4.0.3 + gensequence: 4.0.2 + dev: true + + /cspell-gitignore/6.14.3: + resolution: {integrity: sha512-CZTGxx3msF6p1Z0xgLe5LXXvve7DooSuRMBMdGn230usce1nKoxpPoPxgs+zXeCpi+FanykKnoZkdRvjolMpOA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + cspell-glob: 6.14.3 + find-up: 5.0.0 + dev: true + /cspell-glob/6.14.2: resolution: {integrity: sha512-a9o3lBccEcH2676RGge2YqEORovm+II++D53P6hOW/23ltDe1J509MSY6CJdYdPk/VssOExas6akJ6FbKSCBgw==} engines: {node: '>=14'} @@ -4383,6 +4490,13 @@ packages: micromatch: 4.0.5 dev: true + /cspell-glob/6.14.3: + resolution: {integrity: sha512-ISwCK8GqM/dnvtaxA17w1MPmMzFLOqdTz+JWIcR4at47T9qd8bNB0X0P4eqyuqgsbKkWbfnSlsYlEjRHTi4a7A==} + engines: {node: '>=14'} + dependencies: + micromatch: 4.0.5 + dev: true + /cspell-grammar/6.14.2: resolution: {integrity: sha512-Q9+gwp1U/qnECTqxa7WBMPn6sgBfXPIM68jXg8RgNMAuy1CE+m1eTCM9FBNFNpNKJWjaZPvANLOW5/EStN2A/A==} engines: {node: '>=14'} @@ -4392,6 +4506,15 @@ packages: '@cspell/cspell-types': 6.14.2 dev: true + /cspell-grammar/6.14.3: + resolution: {integrity: sha512-Nz8tYUmstyKcFlXbxdw4N8NsQ2ZY/5ztNfouokk47LKaTAS0LyWlLSkZUxN016fMY2h+C+3dI+jaut2H/rtNew==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + dev: true + /cspell-io/6.14.2: resolution: {integrity: sha512-QyQ0BBfDvF6B37SlSsmlzRnaGqiIHt7c5NsCNKf3ZfioTWkNI/fiabvSkpNGBAkELP6BPBxjsG+TaS+swZp+Kg==} engines: {node: '>=14'} @@ -4402,6 +4525,16 @@ packages: - encoding dev: true + /cspell-io/6.14.3: + resolution: {integrity: sha512-EbH+qopgWIzr9SZCGDsF4AWYgucN4QzYeAgyXjTbV9RnNIGKOKovMe3vN9nxjOZyPKv2TvmgU+uMXDM61iObRw==} + engines: {node: '>=14'} + dependencies: + '@cspell/cspell-service-bus': 6.14.3 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + /cspell-lib/6.14.2: resolution: {integrity: sha512-QNsmWix0oFi1CjzFfNG1xAJVl1OC+6kiWvq0A1S8VD3LJhJVvBqSv1vudpL1oS7H2/2yxk9PUC/MajGLi5i5MQ==} engines: {node: '>=14.6'} @@ -4432,6 +4565,36 @@ packages: - encoding dev: true + /cspell-lib/6.14.3: + resolution: {integrity: sha512-RJT5Tbe0UCMCtqDWRujjxq9u23sc2XylIpDP7MnpLx8wLVgFv2WPzESYNRGZqceqZYwBAPnpqS9h2ANxXSi8UQ==} + engines: {node: '>=14.6'} + dependencies: + '@cspell/cspell-bundled-dicts': 6.14.3 + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + '@cspell/strong-weak-map': 6.14.3 + clear-module: 4.1.2 + comment-json: 4.2.3 + configstore: 5.0.1 + cosmiconfig: 7.1.0 + cspell-dictionary: 6.14.3 + cspell-glob: 6.14.3 + cspell-grammar: 6.14.3 + cspell-io: 6.14.3 + cspell-trie-lib: 6.14.3 + fast-equals: 4.0.3 + find-up: 5.0.0 + fs-extra: 10.1.0 + gensequence: 4.0.2 + import-fresh: 3.3.0 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + vscode-languageserver-textdocument: 1.0.7 + vscode-uri: 3.0.6 + transitivePeerDependencies: + - encoding + dev: true + /cspell-trie-lib/6.14.2: resolution: {integrity: sha512-+aTRwFUzBPFbJ8zlDwzB1ew/gP7L6kddoXjmqCNeFx9B5DiwN1KPFRo+uBx21JOkoavnviGU//DpyWSU9Cittw==} engines: {node: '>=14'} @@ -4442,6 +4605,40 @@ packages: gensequence: 4.0.2 dev: true + /cspell-trie-lib/6.14.3: + resolution: {integrity: sha512-WVa5gbD9glsZ4c60qPD5RTwojKc5ooxw/Gn+HC9CBdWv5rE1AmM1V3yVWhYx2ZMbJufboBrzmSjJB9qdmUl3oA==} + engines: {node: '>=14'} + dependencies: + '@cspell/cspell-pipe': 6.14.3 + '@cspell/cspell-types': 6.14.3 + fs-extra: 10.1.0 + gensequence: 4.0.2 + dev: true + + /cspell/6.14.3: + resolution: {integrity: sha512-DimVpUiw2iOSvO1daOTtOWjmryVZdFnPmjPhyhWZUqakOEgE2MgoBuk3cFzXqb8GsGXHQh5PqiWr1rqIkQ99qA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@cspell/cspell-pipe': 6.14.3 + chalk: 4.1.2 + commander: 9.4.1 + cspell-gitignore: 6.14.3 + cspell-glob: 6.14.3 + cspell-lib: 6.14.3 + fast-json-stable-stringify: 2.1.0 + file-entry-cache: 6.0.1 + fs-extra: 10.1.0 + get-stdin: 8.0.0 + glob: 8.0.3 + imurmurhash: 0.1.4 + semver: 7.3.8 + strip-ansi: 6.0.1 + vscode-uri: 3.0.6 + transitivePeerDependencies: + - encoding + dev: true + /css-tree/1.0.0-alpha.39: resolution: {integrity: sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==} engines: {node: '>=8.0.0'} @@ -6052,16 +6249,6 @@ packages: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects/1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: true - /follow-redirects/1.15.2_debug@4.3.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -6238,6 +6425,11 @@ packages: engines: {node: '>=0.12.0'} dev: true + /get-stdin/8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + /get-stream/4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -6324,6 +6516,17 @@ packages: path-is-absolute: 1.0.1 dev: true + /glob/8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.0 + once: 1.4.0 + dev: true + /global-dirs/0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} @@ -6648,7 +6851,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2 + follow-redirects: 1.15.2_debug@4.3.2 requires-port: 1.0.0 transitivePeerDependencies: - debug From 1dae3a000d8e16358a8ad48241795159faabbf54 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 23 Nov 2022 00:26:37 +0530 Subject: [PATCH 4/5] chore: Add lodash-eslint rule --- .eslintrc.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index d83222f3a..1d052e22b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -21,7 +21,16 @@ "plugin:@cspell/recommended", "prettier" ], - "plugins": ["@typescript-eslint", "no-only-tests", "html", "jest", "jsdoc", "json", "@cspell"], + "plugins": [ + "@typescript-eslint", + "no-only-tests", + "html", + "jest", + "jsdoc", + "json", + "@cspell", + "lodash" + ], "rules": { "curly": "error", "no-console": "error", @@ -53,7 +62,8 @@ "allowEmptyCatch": true } ], - "no-only-tests/no-only-tests": "error" + "no-only-tests/no-only-tests": "error", + "lodash/import-scope": ["error", "method"] }, "overrides": [ { From 2cefb0fb8f0d65f515538d6f7470a04ddfd92169 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 23 Nov 2022 00:26:50 +0530 Subject: [PATCH 5/5] chore: Add lodash-eslint rule --- package.json | 6 ++- pnpm-lock.yaml | 107 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 105 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 36846a313..628fcecd2 100644 --- a/package.json +++ b/package.json @@ -60,8 +60,8 @@ "@cspell/eslint-plugin": "^6.14.2", "@types/eslint": "^8.4.10", "@types/express": "^4.17.14", - "@types/jsdom": "^20.0.1", "@types/js-yaml": "^4.0.5", + "@types/jsdom": "^20.0.1", "@types/lodash": "^4.14.188", "@types/mdast": "^3.0.10", "@types/node": "^18.11.9", @@ -83,17 +83,19 @@ "eslint-plugin-jest": "^27.1.5", "eslint-plugin-jsdoc": "^39.6.2", "eslint-plugin-json": "^3.1.0", + "eslint-plugin-lodash": "^7.4.0", "eslint-plugin-markdown": "^3.0.0", "eslint-plugin-no-only-tests": "^3.1.0", "eslint-plugin-tsdoc": "^0.2.17", + "eslint-plugin-unicorn": "^45.0.0", "express": "^4.18.2", "globby": "^13.1.2", "husky": "^8.0.2", "identity-obj-proxy": "^3.0.0", "jest": "^29.3.1", "jison": "^0.4.18", - "jsdom": "^20.0.2", "js-yaml": "^4.1.0", + "jsdom": "^20.0.2", "lint-staged": "^13.0.3", "path-browserify": "^1.0.1", "pnpm": "^7.15.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25849114f..91e22e019 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,6 +91,9 @@ importers: eslint-plugin-json: specifier: ^3.1.0 version: 3.1.0 + eslint-plugin-lodash: + specifier: ^7.4.0 + version: 7.4.0_eslint@8.27.0 eslint-plugin-markdown: specifier: ^3.0.0 version: 3.0.0_eslint@8.27.0 @@ -100,6 +103,9 @@ importers: eslint-plugin-tsdoc: specifier: ^0.2.17 version: 0.2.17 + eslint-plugin-unicorn: + specifier: ^45.0.0 + version: 45.0.0_eslint@8.27.0 express: specifier: ^4.18.2 version: 4.18.2 @@ -1766,7 +1772,7 @@ packages: '@types/node': 18.11.9 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.4.0 + ci-info: 3.6.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.2.0 @@ -3785,6 +3791,11 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /bytes/3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -3975,8 +3986,9 @@ packages: engines: {node: '>=6.0'} dev: true - /ci-info/3.4.0: - resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} + /ci-info/3.6.2: + resolution: {integrity: sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg==} + engines: {node: '>=8'} dev: true /cjs-module-lexer/1.2.2: @@ -3990,6 +4002,13 @@ packages: jsonlint: 1.6.0 dev: true + /clean-regexp/1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -5560,6 +5579,16 @@ packages: vscode-json-languageservice: 4.2.1 dev: true + /eslint-plugin-lodash/7.4.0_eslint@8.27.0: + resolution: {integrity: sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=2' + dependencies: + eslint: 8.27.0 + lodash: 4.17.21 + dev: true + /eslint-plugin-markdown/3.0.0_eslint@8.27.0: resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5584,6 +5613,31 @@ packages: '@microsoft/tsdoc-config': 0.16.2 dev: true + /eslint-plugin-unicorn/45.0.0_eslint@8.27.0: + resolution: {integrity: sha512-iP8cMRxXKHonKioOhnCoCcqVhoqhAp6rB+nsoLjXFDxTHz3btWMAp8xwzjHA0B1K6YV/U/Yvqn1bUXZt8sJPuQ==} + engines: {node: '>=14.18'} + peerDependencies: + eslint: '>=8.28.0' + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + ci-info: 3.6.2 + clean-regexp: 1.0.0 + eslint: 8.27.0 + eslint-utils: 3.0.0_eslint@8.27.0 + esquery: 1.4.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.0 + jsesc: 3.0.2 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.24 + regjsparser: 0.9.1 + safe-regex: 2.1.1 + semver: 7.3.8 + strip-indent: 3.0.0 + dev: true + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -6867,11 +6921,18 @@ packages: engines: {node: '>=4'} dev: true + /is-builtin-module/3.2.0: + resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-ci/3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.4.0 + ci-info: 3.6.2 dev: true /is-core-module/2.10.0: @@ -7169,7 +7230,7 @@ packages: '@types/node': 18.11.9 babel-jest: 29.3.1_@babel+core@7.12.3 chalk: 4.1.2 - ci-info: 3.4.0 + ci-info: 3.6.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 @@ -7455,7 +7516,7 @@ packages: '@jest/types': 29.3.1 '@types/node': 18.11.9 chalk: 4.1.2 - ci-info: 3.4.0 + ci-info: 3.6.2 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true @@ -7644,12 +7705,23 @@ packages: - utf-8-validate dev: true + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true + /jsesc/3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-buffer/3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -8965,6 +9037,11 @@ packages: xmlbuilder: 15.1.1 dev: true + /pluralize/8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /png-async/0.9.4: resolution: {integrity: sha512-B//AXX9TkneKfgtOpT1mdUnnhk2BImGD+a98vImsMU8uo1dBeHyW/kM2erWZ/CsYteTPU/xKG+t6T62heHkC3A==} dev: true @@ -9251,11 +9328,23 @@ packages: strip-indent: 3.0.0 dev: true + /regexp-tree/0.1.24: + resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} + hasBin: true + dev: true + /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true + /regjsparser/0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /remark-parse/10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: @@ -9487,6 +9576,12 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-regex/2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.24 + dev: true + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}