From 271c7f8d771d2d6d367bbae2e4305a94ccc45613 Mon Sep 17 00:00:00 2001 From: "street-side-software-automation[bot]" <74785433+street-side-software-automation[bot]@users.noreply.github.com> Date: Fri, 1 Jul 2022 20:09:24 +0200 Subject: [PATCH] ci: Workflow Bot -- Update ALL Dependencies (main) (#792) ci: Workflow Bot -- Update ALL Dependencies Co-authored-by: Jason3S --- action-src/package.json | 8 +- action/node_modules/.bin/cspell-grammar | 1 + .../@babel/code-frame/package.json | 7 +- .../helper-validator-identifier/package.json | 5 +- .../@babel/highlight/package.json | 7 +- .../cspell-default.config.js | 6 + .../node_modules/.bin/cspell-grammar | 1 + .../@cspell/cspell-bundled-dicts/package.json | 31 +- .../@cspell/cspell-pipe/package.json | 6 +- .../@cspell/cspell-types/dist/Parser.js | 3 + .../@cspell/cspell-types/dist/TextMap.js | 3 + .../@cspell/cspell-types/dist/configFields.js | 3 + .../@cspell/cspell-types/package.json | 22 +- .../@cspell/dict-cpp/cpp-refined.txt.gz | Bin 3431 -> 3680 bytes .../@cspell/dict-cpp/package.json | 4 +- .../@cspell/dict-en_us/en_US.trie.gz | Bin 402064 -> 402073 bytes .../@cspell/dict-en_us/package.json | 4 +- .../@cspell/dict-java/package.json | 6 +- .../@cspell/dict-latex/package.json | 6 +- .../@cspell/dict-software-terms/package.json | 4 +- .../dict-software-terms/softwareTerms.txt.gz | Bin 7314 -> 7328 bytes .../@octokit/openapi-types/package.json | 4 +- .../plugin-paginate-rest/dist-node/index.js | 4 +- .../generated/paginating-endpoints.js | 30 +- .../plugin-paginate-rest/dist-src/version.js | 2 +- .../plugin-paginate-rest/dist-web/index.js | 32 +- .../plugin-paginate-rest/package.json | 17 +- .../dist-node/index.js | 10 +- .../dist-src/generated/endpoints.js | 20 + .../dist-src/version.js | 2 +- .../dist-web/index.js | 22 +- .../plugin-rest-endpoint-methods/package.json | 11 +- .../@octokit/types/dist-node/index.js | 2 +- .../@octokit/types/dist-src/VERSION.js | 2 +- .../@octokit/types/dist-web/index.js | 2 +- .../node_modules/@octokit/types/package.json | 8 +- .../cspell-gitignore/dist/GitIgnore.js | 8 +- .../cspell-gitignore/dist/GitIgnoreFile.js | 5 +- .../node_modules/cspell-gitignore/dist/app.js | 9 +- .../cspell-gitignore/package.json | 8 +- .../cspell-glob/dist/GlobMatcher.js | 7 +- .../cspell-glob/dist/globHelper.js | 6 +- action/node_modules/cspell-glob/package.json | 6 +- action/node_modules/cspell-grammar/LICENSE | 21 + action/node_modules/cspell-grammar/README.md | 100 ++ action/node_modules/cspell-grammar/bin.js | 6 + .../node_modules/cspell-grammar/dist/app.js | 67 ++ .../cspell-grammar/dist/grammars/index.js | 29 + .../cspell-grammar/dist/grammars/markdown.js | 36 + .../cspell-grammar/dist/grammars/simple.js | 112 +++ .../dist/grammars/typescript.js | 165 ++++ .../node_modules/cspell-grammar/dist/index.js | 8 + .../dist/mappers/appendMappedText.js | 45 + .../cspell-grammar/dist/mappers/types.js | 3 + .../cspell-grammar/dist/mappers/typescript.js | 147 +++ .../cspell-grammar/dist/parser/grammar.js | 9 + .../dist/parser/grammarDefinition.js | 3 + .../dist/parser/grammarNormalized.js | 3 + .../dist/parser/grammarNormalizer.js | 267 +++++ .../dist/parser/grammarTypesHelpers.js | 32 + .../cspell-grammar/dist/parser/index.js | 9 + .../cspell-grammar/dist/parser/matchResult.js | 56 ++ .../cspell-grammar/dist/parser/parser.js | 32 + .../parser/processors/procMatchingRule.js | 155 +++ .../cspell-grammar/dist/parser/scope.js | 78 ++ .../dist/parser/tokenizeLine.js | 131 +++ .../cspell-grammar/dist/parser/types.js | 3 + .../cspell-grammar/dist/parser/util.js | 8 + .../dist/parser/validateGrammar.js | 64 ++ .../parsers/typescript/TypeScriptParser.js | 93 ++ .../dist/parsers/typescript/index.js | 6 + .../dist/viewer/escapeMarkdown.js | 45 + .../dist/viewer/markdownHelper.js | 9 + .../dist/viewer/visualizeAsMD.js | 38 + .../node_modules/cspell-grammar/package.json | 76 ++ action/node_modules/cspell-io/package.json | 8 +- .../cspell-lib/dist/LanguageIds.js | 3 +- .../cspell-lib/dist/Models/TextDocument.js | 6 +- .../dist/Settings/CSpellSettingsServer.js | 55 +- .../dist/Settings/DictionarySettings.js | 2 +- .../dist/Settings/LanguageSettings.js | 3 +- .../cspell-lib/dist/Settings/configLoader.js | 34 +- .../cspell-lib/dist/Settings/link.js | 11 +- .../cspell-lib/dist/Settings/pnpLoader.js | 3 +- .../SpellingDictionary/DictionaryLoader.js | 4 +- .../SpellingDictionaryCollection.js | 2 +- .../SpellingDictionaryFromTrie.js | 7 +- .../SpellingDictionaryMethods.js | 8 +- .../createSpellingDictionary.js | 2 +- .../cspell-lib/dist/spellCheckFile.js | 6 +- .../cspell-lib/dist/suggestions.js | 22 +- .../dist/textValidation/ValidationTypes.js | 3 + .../determineTextDocumentSettings.js | 5 +- .../dist/textValidation/docValidator.js | 99 +- .../dist/textValidation/isWordValid.js | 19 + .../textValidation/lineValidatorFactory.js | 145 +++ .../dist/textValidation/parsedText.js | 84 +- .../dist/textValidation/textValidator.js | 122 +-- .../dist/textValidation/validator.js | 10 +- action/node_modules/cspell-lib/dist/trace.js | 34 +- .../cspell-lib/dist/util/Memorizer.js | 16 +- .../cspell-lib/dist/util/PairingHeap.js | 3 +- .../cspell-lib/dist/util/TextMap.js | 62 ++ .../cspell-lib/dist/util/memorizerWeak.js | 6 +- .../cspell-lib/dist/util/search.js | 4 +- .../node_modules/cspell-lib/dist/util/text.js | 2 +- .../cspell-lib/dist/util/timer.js | 2 +- .../cspell-lib/dist/util/wordSplitter.js | 6 +- action/node_modules/cspell-lib/package.json | 26 +- .../cspell-trie-lib/dist/lib/TrieBuilder.js | 17 +- .../dist/lib/compoundWalker.js | 6 +- .../dist/lib/convertToTrieRefNodes.js | 6 +- .../dist/lib/distance/distanceAStar.js | 3 +- .../dist/lib/distance/weightedMaps.js | 7 +- .../cspell-trie-lib/dist/lib/find.js | 26 +- .../dist/lib/io/importExportV2.js | 3 +- .../dist/lib/io/importExportV3.js | 12 +- .../dist/lib/mappers/mapDictionaryInfo.js | 4 +- .../lib/mappers/mapHunspellInformation.js | 2 +- .../lib/suggestions/genSuggestionsOptions.js | 3 +- .../dist/lib/suggestions/suggestAStar.js | 26 +- .../dist/lib/suggestions/suggestCollector.js | 4 +- .../lib/suggestions/walker/hintedWalker.js | 7 +- .../cspell-trie-lib/dist/lib/trie-util.js | 2 +- .../cspell-trie-lib/dist/lib/trie.js | 13 +- .../dist/lib/utils/PairingHeap.js | 3 +- .../dist/lib/utils/memorizer.js | 6 +- .../dist/lib/utils/secondChanceCache.js | 3 +- .../cspell-trie-lib/dist/lib/utils/timer.js | 2 +- .../node_modules/cspell-trie-lib/package.json | 12 +- .../node_modules/cspell/dist/application.js | 5 +- .../node_modules/cspell/dist/cli-reporter.js | 6 +- .../cspell/dist/commandSuggestion.js | 3 +- .../node_modules/cspell/dist/commandTrace.js | 2 +- .../cspell/dist/emitters/traceEmitter.js | 9 +- action/node_modules/cspell/dist/link.js | 5 +- action/node_modules/cspell/dist/lint/lint.js | 37 +- .../cspell/dist/util/cache/DiskCache.js | 13 +- .../dist/util/cache/ObjectCollection.js | 3 +- .../cspell/dist/util/cache/createCache.js | 9 +- .../node_modules/cspell/dist/util/errors.js | 2 +- .../cspell/dist/util/fileHelper.js | 9 +- action/node_modules/cspell/dist/util/glob.js | 2 +- action/node_modules/cspell/package.json | 20 +- action/node_modules/flatted/esm.js | 2 + action/node_modules/flatted/index.js | 20 +- action/node_modules/flatted/min.js | 4 +- action/node_modules/flatted/package.json | 26 +- action/package.json | 6 +- package.json | 4 +- yarn.lock | 931 +++++++++--------- 151 files changed, 3212 insertions(+), 1097 deletions(-) create mode 120000 action/node_modules/.bin/cspell-grammar create mode 120000 action/node_modules/@cspell/cspell-bundled-dicts/node_modules/.bin/cspell-grammar create mode 100644 action/node_modules/@cspell/cspell-types/dist/Parser.js create mode 100644 action/node_modules/@cspell/cspell-types/dist/TextMap.js create mode 100644 action/node_modules/cspell-grammar/LICENSE create mode 100644 action/node_modules/cspell-grammar/README.md create mode 100755 action/node_modules/cspell-grammar/bin.js create mode 100644 action/node_modules/cspell-grammar/dist/app.js create mode 100644 action/node_modules/cspell-grammar/dist/grammars/index.js create mode 100644 action/node_modules/cspell-grammar/dist/grammars/markdown.js create mode 100644 action/node_modules/cspell-grammar/dist/grammars/simple.js create mode 100644 action/node_modules/cspell-grammar/dist/grammars/typescript.js create mode 100644 action/node_modules/cspell-grammar/dist/index.js create mode 100644 action/node_modules/cspell-grammar/dist/mappers/appendMappedText.js create mode 100644 action/node_modules/cspell-grammar/dist/mappers/types.js create mode 100644 action/node_modules/cspell-grammar/dist/mappers/typescript.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/grammar.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/grammarDefinition.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/grammarNormalized.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/grammarNormalizer.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/grammarTypesHelpers.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/index.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/matchResult.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/parser.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/processors/procMatchingRule.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/scope.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/tokenizeLine.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/types.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/util.js create mode 100644 action/node_modules/cspell-grammar/dist/parser/validateGrammar.js create mode 100644 action/node_modules/cspell-grammar/dist/parsers/typescript/TypeScriptParser.js create mode 100644 action/node_modules/cspell-grammar/dist/parsers/typescript/index.js create mode 100644 action/node_modules/cspell-grammar/dist/viewer/escapeMarkdown.js create mode 100644 action/node_modules/cspell-grammar/dist/viewer/markdownHelper.js create mode 100644 action/node_modules/cspell-grammar/dist/viewer/visualizeAsMD.js create mode 100644 action/node_modules/cspell-grammar/package.json create mode 100644 action/node_modules/cspell-lib/dist/textValidation/ValidationTypes.js create mode 100644 action/node_modules/cspell-lib/dist/textValidation/isWordValid.js create mode 100644 action/node_modules/cspell-lib/dist/textValidation/lineValidatorFactory.js create mode 100644 action/node_modules/cspell-lib/dist/util/TextMap.js create mode 100644 action/node_modules/flatted/esm.js diff --git a/action-src/package.json b/action-src/package.json index bd3b38238..009ef4b21 100644 --- a/action-src/package.json +++ b/action-src/package.json @@ -29,7 +29,7 @@ "@types/jest": "^28.1.3", "@types/minimatch": "^3.0.5", "env-cmd": "^10.1.0", - "jest": "^28.1.1", + "jest": "^28.1.2", "rimraf": "^3.0.2", "standard-version": "^9.5.0", "ts-jest": "^28.0.5", @@ -39,10 +39,10 @@ "@actions/core": "^1.9.0", "@actions/github": "^5.0.3", "@octokit/core": "^3.6.0", - "@octokit/plugin-rest-endpoint-methods": "^5.15.0", + "@octokit/plugin-rest-endpoint-methods": "^5.16.0", "@octokit/rest": "^18.12.0", - "cspell": "^6.1.2", - "cspell-glob": "^6.1.2", + "cspell": "^6.1.3", + "cspell-glob": "^6.1.3", "vscode-uri": "^3.0.3" } } diff --git a/action/node_modules/.bin/cspell-grammar b/action/node_modules/.bin/cspell-grammar new file mode 120000 index 000000000..c1260831a --- /dev/null +++ b/action/node_modules/.bin/cspell-grammar @@ -0,0 +1 @@ +../cspell-grammar/bin.js \ No newline at end of file diff --git a/action/node_modules/@babel/code-frame/package.json b/action/node_modules/@babel/code-frame/package.json index ee1b3820a..18d8db122 100644 --- a/action/node_modules/@babel/code-frame/package.json +++ b/action/node_modules/@babel/code-frame/package.json @@ -1,6 +1,6 @@ { "name": "@babel/code-frame", - "version": "7.16.7", + "version": "7.18.6", "description": "Generate errors that contain a code frame that point to source locations.", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-code-frame", @@ -16,7 +16,7 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "devDependencies": { "@types/chalk": "^2.0.0", @@ -25,5 +25,6 @@ }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/action/node_modules/@babel/helper-validator-identifier/package.json b/action/node_modules/@babel/helper-validator-identifier/package.json index 972fdf11d..27b388c23 100644 --- a/action/node_modules/@babel/helper-validator-identifier/package.json +++ b/action/node_modules/@babel/helper-validator-identifier/package.json @@ -1,6 +1,6 @@ { "name": "@babel/helper-validator-identifier", - "version": "7.16.7", + "version": "7.18.6", "description": "Validate identifier/keywords name", "repository": { "type": "git", @@ -23,5 +23,6 @@ "engines": { "node": ">=6.9.0" }, - "author": "The Babel Team (https://babel.dev/team)" + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" } \ No newline at end of file diff --git a/action/node_modules/@babel/highlight/package.json b/action/node_modules/@babel/highlight/package.json index 2aa44e342..65c97d912 100644 --- a/action/node_modules/@babel/highlight/package.json +++ b/action/node_modules/@babel/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@babel/highlight", - "version": "7.17.12", + "version": "7.18.6", "description": "Syntax highlight JavaScript strings for output in terminals.", "author": "The Babel Team (https://babel.dev/team)", "homepage": "https://babel.dev/docs/en/next/babel-highlight", @@ -15,7 +15,7 @@ }, "main": "./lib/index.js", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -25,5 +25,6 @@ }, "engines": { "node": ">=6.9.0" - } + }, + "type": "commonjs" } \ No newline at end of file diff --git a/action/node_modules/@cspell/cspell-bundled-dicts/cspell-default.config.js b/action/node_modules/@cspell/cspell-bundled-dicts/cspell-default.config.js index 30e0541f4..1d9c524ac 100644 --- a/action/node_modules/@cspell/cspell-bundled-dicts/cspell-default.config.js +++ b/action/node_modules/@cspell/cspell-bundled-dicts/cspell-default.config.js @@ -1,4 +1,5 @@ "use strict"; +const index_js_1 = require("cspell-grammar/parsers/typescript/index.js"); const settings = { version: '0.2', name: 'cspell default settings .js', @@ -133,5 +134,10 @@ const settings = { '@cspell/dict-typescript/cspell-ext.json', '@cspell/dict-vue/cspell-ext.json', ], + plugins: [ + { + parsers: [index_js_1.parser], + }, + ], }; module.exports = settings; diff --git a/action/node_modules/@cspell/cspell-bundled-dicts/node_modules/.bin/cspell-grammar b/action/node_modules/@cspell/cspell-bundled-dicts/node_modules/.bin/cspell-grammar new file mode 120000 index 000000000..bb5002496 --- /dev/null +++ b/action/node_modules/@cspell/cspell-bundled-dicts/node_modules/.bin/cspell-grammar @@ -0,0 +1 @@ +../../../../cspell-grammar/bin.js \ No newline at end of file diff --git a/action/node_modules/@cspell/cspell-bundled-dicts/package.json b/action/node_modules/@cspell/cspell-bundled-dicts/package.json index 9e21e7fa2..61571af2d 100644 --- a/action/node_modules/@cspell/cspell-bundled-dicts/package.json +++ b/action/node_modules/@cspell/cspell-bundled-dicts/package.json @@ -1,6 +1,6 @@ { "name": "@cspell/cspell-bundled-dicts", - "version": "6.1.2", + "version": "6.1.3", "description": "Dictionaries bundled with cspell", "publishConfig": { "access": "public" @@ -46,28 +46,28 @@ "@cspell/dict-ada": "^2.0.0", "@cspell/dict-aws": "^2.0.0", "@cspell/dict-bash": "^2.0.3", - "@cspell/dict-companies": "^2.0.5", + "@cspell/dict-companies": "^2.0.6", "@cspell/dict-cpp": "^3.1.0", "@cspell/dict-cryptocurrencies": "^2.0.0", "@cspell/dict-csharp": "^3.0.1", "@cspell/dict-css": "^2.0.0", "@cspell/dict-dart": "^1.1.1", "@cspell/dict-django": "^2.0.0", - "@cspell/dict-docker": "^1.1.0", + "@cspell/dict-docker": "^1.1.1", "@cspell/dict-dotnet": "^2.0.1", "@cspell/dict-elixir": "^2.0.1", "@cspell/dict-en-gb": "^1.1.33", - "@cspell/dict-en_us": "^2.2.5", - "@cspell/dict-filetypes": "^2.0.1", - "@cspell/dict-fonts": "^2.0.0", + "@cspell/dict-en_us": "^2.2.8", + "@cspell/dict-filetypes": "^2.0.2", + "@cspell/dict-fonts": "^2.0.1", "@cspell/dict-fullstack": "^2.0.6", "@cspell/dict-git": "^1.0.1", "@cspell/dict-golang": "^3.0.1", "@cspell/dict-haskell": "^2.0.0", - "@cspell/dict-html": "^3.0.1", + "@cspell/dict-html": "^3.0.2", "@cspell/dict-html-symbol-entities": "^3.0.0", - "@cspell/dict-java": "^3.0.2", - "@cspell/dict-latex": "^2.0.5", + "@cspell/dict-java": "^3.0.4", + "@cspell/dict-latex": "^2.0.6", "@cspell/dict-lorem-ipsum": "^2.0.0", "@cspell/dict-lua": "^2.0.0", "@cspell/dict-node": "^3.0.1", @@ -78,19 +78,20 @@ "@cspell/dict-python": "^3.0.6", "@cspell/dict-r": "^1.0.3", "@cspell/dict-ruby": "^2.0.1", - "@cspell/dict-rust": "^2.0.0", + "@cspell/dict-rust": "^2.0.1", "@cspell/dict-scala": "^2.0.0", - "@cspell/dict-software-terms": "^2.1.8", + "@cspell/dict-software-terms": "^2.1.9", "@cspell/dict-swift": "^1.0.3", "@cspell/dict-typescript": "^2.0.0", - "@cspell/dict-vue": "^2.0.2" + "@cspell/dict-vue": "^2.0.2", + "cspell-grammar": "^6.1.3" }, "engines": { "node": ">=14" }, "devDependencies": { - "@cspell/cspell-tools": "^6.1.2", - "@cspell/cspell-types": "^6.1.2" + "@cspell/cspell-tools": "^6.1.3", + "@cspell/cspell-types": "^6.1.3" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/@cspell/cspell-pipe/package.json b/action/node_modules/@cspell/cspell-pipe/package.json index f81abc317..e777008ba 100644 --- a/action/node_modules/@cspell/cspell-pipe/package.json +++ b/action/node_modules/@cspell/cspell-pipe/package.json @@ -3,7 +3,7 @@ "publishConfig": { "access": "public" }, - "version": "6.1.2", + "version": "6.1.3", "description": "Library to make working with Iterators/AsyncIterators easier.", "keywords": [ "cspell", @@ -93,9 +93,9 @@ "node": ">=14" }, "devDependencies": { - "@types/node": "^17.0.40", + "@types/node": "^18.0.0", "jest": "^28.1.1", "rimraf": "^3.0.2" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/@cspell/cspell-types/dist/Parser.js b/action/node_modules/@cspell/cspell-types/dist/Parser.js new file mode 100644 index 000000000..0eb7533e0 --- /dev/null +++ b/action/node_modules/@cspell/cspell-types/dist/Parser.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=Parser.js.map \ No newline at end of file diff --git a/action/node_modules/@cspell/cspell-types/dist/TextMap.js b/action/node_modules/@cspell/cspell-types/dist/TextMap.js new file mode 100644 index 000000000..828f3ffb7 --- /dev/null +++ b/action/node_modules/@cspell/cspell-types/dist/TextMap.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=TextMap.js.map \ No newline at end of file diff --git a/action/node_modules/@cspell/cspell-types/dist/configFields.js b/action/node_modules/@cspell/cspell-types/dist/configFields.js index fbc9ab3cd..48a5ca86d 100644 --- a/action/node_modules/@cspell/cspell-types/dist/configFields.js +++ b/action/node_modules/@cspell/cspell-types/dist/configFields.js @@ -47,6 +47,9 @@ exports.ConfigFields = { usePnP: 'usePnP', userWords: 'userWords', words: 'words', + // Experimental + parser: 'parser', + plugins: 'plugins', }; // export const ConfigKeysNames = Object.values(ConfigKeysByField); //# sourceMappingURL=configFields.js.map \ No newline at end of file diff --git a/action/node_modules/@cspell/cspell-types/package.json b/action/node_modules/@cspell/cspell-types/package.json index 4fab22911..1c1e91626 100644 --- a/action/node_modules/@cspell/cspell-types/package.json +++ b/action/node_modules/@cspell/cspell-types/package.json @@ -3,12 +3,28 @@ "publishConfig": { "access": "public" }, - "version": "6.1.2", + "version": "6.1.3", "description": "Types for cspell and cspell-lib", + "type": "commonjs", "main": "dist/index.js", "typings": "dist/index.d.ts", + "typesVersions": { + "*": { + "*": [ + "dist/*" + ], + "dist/index.d.ts": [ + "dist/index.d.ts" + ], + "index.d.ts": [ + "dist/index.d.ts" + ] + } + }, "exports": { ".": "./dist/index.js", + "./Parser": "./dist/Parser.js", + "./Parser.js": "./dist/Parser.js", "./cspell.schema.json": "./cspell.schema.json", "./ajv.config": "./ajv.config.js", "./ajv.config.js": "./ajv.config.js" @@ -51,7 +67,7 @@ "jest": "^28.1.1", "rimraf": "^3.0.2", "ts-json-schema-generator": "^1.0.0", - "typescript": "^4.7.3" + "typescript": "^4.7.4" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/@cspell/dict-cpp/cpp-refined.txt.gz b/action/node_modules/@cspell/dict-cpp/cpp-refined.txt.gz index 1e72dc173f25c7b8b4dc0adf3fdb730675ac67ea..19ed4c4d2fd2cfdcc1284d8ee0292f826e99806c 100644 GIT binary patch literal 3680 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 literal 3431 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 JztC15007uys>J{R diff --git a/action/node_modules/@cspell/dict-cpp/package.json b/action/node_modules/@cspell/dict-cpp/package.json index ec12f99e6..596bbb064 100644 --- a/action/node_modules/@cspell/dict-cpp/package.json +++ b/action/node_modules/@cspell/dict-cpp/package.json @@ -1,6 +1,6 @@ { "name": "@cspell/dict-cpp", - "version": "3.1.0", + "version": "3.1.1", "description": "C/C++ Dictionary dictionary for cspell.", "publishConfig": { "access": "public" @@ -42,5 +42,5 @@ "cpp-refined.txt.gz", "cspell-ext.json" ], - "gitHead": "26130b20179ef151cbd83cc2b46ffb0c6907f04c" + "gitHead": "e647d6dad8008e71fd223fd651011cbc0d89d10d" } diff --git a/action/node_modules/@cspell/dict-en_us/en_US.trie.gz b/action/node_modules/@cspell/dict-en_us/en_US.trie.gz index e8d19fe69a9db0a34920c9d051a9f45988f95095..f3303a2f4abc535873622ab1e1ec0026e889ea41 100644 GIT binary patch delta 163880 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%0AC< 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℘0$dQT9H>dUW<-%eKhz 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 diff --git a/action/node_modules/@cspell/dict-en_us/package.json b/action/node_modules/@cspell/dict-en_us/package.json index 2da310515..a92ae1a33 100644 --- a/action/node_modules/@cspell/dict-en_us/package.json +++ b/action/node_modules/@cspell/dict-en_us/package.json @@ -1,6 +1,6 @@ { "name": "@cspell/dict-en_us", - "version": "2.2.7", + "version": "2.2.8", "description": "English dictionary for cspell.", "publishConfig": { "access": "public" @@ -55,5 +55,5 @@ "devDependencies": { "aoo-mozilla-en-dict": "https://github.com/marcoagpinto/aoo-mozilla-en-dict" }, - "gitHead": "6a274d6a7517323e864d8b65177077571b4e1a5e" + "gitHead": "c30e03c0f8b23216e237d9a6a454e4a1d294a368" } diff --git a/action/node_modules/@cspell/dict-java/package.json b/action/node_modules/@cspell/dict-java/package.json index 7cc5cce84..315f5e9d8 100644 --- a/action/node_modules/@cspell/dict-java/package.json +++ b/action/node_modules/@cspell/dict-java/package.json @@ -1,6 +1,6 @@ { "name": "@cspell/dict-java", - "version": "3.0.4", + "version": "3.0.5", "description": "Java dictionary for cspell.", "publishConfig": { "access": "public" @@ -40,7 +40,7 @@ "cspell-ext.json" ], "devDependencies": { - "cspell-dict-file-checker": "^1.0.3" + "cspell-dict-file-checker": "^1.0.4" }, - "gitHead": "a0a0d5215b5388ad53354ff9995e4d7e03772be5" + "gitHead": "e647d6dad8008e71fd223fd651011cbc0d89d10d" } diff --git a/action/node_modules/@cspell/dict-latex/package.json b/action/node_modules/@cspell/dict-latex/package.json index a430311c6..a7dc15939 100644 --- a/action/node_modules/@cspell/dict-latex/package.json +++ b/action/node_modules/@cspell/dict-latex/package.json @@ -1,6 +1,6 @@ { "name": "@cspell/dict-latex", - "version": "2.0.6", + "version": "2.0.7", "description": "LaTeX cspell dictionary", "publishConfig": { "access": "public" @@ -39,7 +39,7 @@ "cspell-ext.json" ], "devDependencies": { - "cspell-dict-file-checker": "^1.0.3" + "cspell-dict-file-checker": "^1.0.4" }, - "gitHead": "e75f1a5e9618a2561f71e7f15607c219c90db0f0" + "gitHead": "e647d6dad8008e71fd223fd651011cbc0d89d10d" } diff --git a/action/node_modules/@cspell/dict-software-terms/package.json b/action/node_modules/@cspell/dict-software-terms/package.json index fca3eef98..bc1934355 100644 --- a/action/node_modules/@cspell/dict-software-terms/package.json +++ b/action/node_modules/@cspell/dict-software-terms/package.json @@ -1,6 +1,6 @@ { "name": "@cspell/dict-software-terms", - "version": "2.1.8", + "version": "2.1.9", "description": "Software terms dictionary for cspell.", "publishConfig": { "access": "public" @@ -42,5 +42,5 @@ "networkingTerms.txt.gz", "cspell-ext.json" ], - "gitHead": "fac603ee4a1e0d2e1e87b93bad655ee95caaac86" + "gitHead": "c2a02270756b24793bc82d76d4cb53a52d838e4c" } diff --git a/action/node_modules/@cspell/dict-software-terms/softwareTerms.txt.gz b/action/node_modules/@cspell/dict-software-terms/softwareTerms.txt.gz index b1915e4724c62c1cbe237ea9413912630e6f1bb7..fd4ab1b51b72838b140f2d31e356ed9c3b1c4993 100644 GIT binary patch delta 5459 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 J3hjSE002aDF-!me delta 5445 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 diff --git a/action/node_modules/@octokit/openapi-types/package.json b/action/node_modules/@octokit/openapi-types/package.json index 143a5ac2b..0824da779 100644 --- a/action/node_modules/@octokit/openapi-types/package.json +++ b/action/node_modules/@octokit/openapi-types/package.json @@ -9,12 +9,12 @@ "publishConfig": { "access": "public" }, - "version": "12.4.0", + "version": "12.5.0", "main": "", "types": "types.d.ts", "author": "Gregor Martynus (https://twitter.com/gr2m)", "license": "MIT", "octokit": { - "openapi-version": "6.1.0" + "openapi-version": "6.2.1" } } diff --git a/action/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js b/action/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js index d64eca552..2c5af6b22 100644 --- a/action/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js +++ b/action/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js @@ -2,7 +2,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); -const VERSION = "2.19.0"; +const VERSION = "2.21.0"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); @@ -174,7 +174,7 @@ const composePaginateRest = Object.assign(paginate, { iterator }); -const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/actions/runners/downloads", "GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /organizations/{organization_id}/custom_roles", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/runners/downloads", "GET /orgs/{org}/actions/runners/{runner_id}/labels", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/external-groups", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runners/downloads", "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/autolinks", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/tags/protection", "GET /repos/{owner}/{repo}/teams", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /scim/v2/enterprises/{enterprise}/Groups", "GET /scim/v2/enterprises/{enterprise}/Users", "GET /scim/v2/organizations/{org}/Users", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/team-sync/group-mappings", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/codespaces/secrets/{secret_name}/repositories", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; +const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org_id}/codespaces", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; function isPaginatingEndpoint(arg) { if (typeof arg === "string") { diff --git a/action/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js b/action/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js index 61fbd4cba..833bd294d 100644 --- a/action/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js +++ b/action/node_modules/@octokit/plugin-paginate-rest/dist-src/generated/paginating-endpoints.js @@ -8,9 +8,9 @@ export const paginatingEndpoints = [ "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", - "GET /enterprises/{enterprise}/actions/runners/downloads", - "GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels", + "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", + "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", @@ -20,6 +20,7 @@ export const paginatingEndpoints = [ "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", + "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", @@ -27,16 +28,16 @@ export const paginatingEndpoints = [ "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", - "GET /organizations/{organization_id}/custom_roles", + "GET /orgs/{org_id}/codespaces", + "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", - "GET /orgs/{org}/actions/runners/downloads", - "GET /orgs/{org}/actions/runners/{runner_id}/labels", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", + "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/credential-authorizations", @@ -56,30 +57,29 @@ export const paginatingEndpoints = [ "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", + "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/external-groups", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", - "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", + "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", - "GET /repos/{owner}/{repo}/actions/runners/downloads", - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", @@ -88,7 +88,6 @@ export const paginatingEndpoints = [ "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", - "GET /repos/{owner}/{repo}/autolinks", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", @@ -102,16 +101,17 @@ export const paginatingEndpoints = [ "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", + "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", + "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", @@ -151,13 +151,10 @@ export const paginatingEndpoints = [ "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", - "GET /repos/{owner}/{repo}/tags/protection", "GET /repos/{owner}/{repo}/teams", + "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", - "GET /scim/v2/enterprises/{enterprise}/Groups", - "GET /scim/v2/enterprises/{enterprise}/Users", - "GET /scim/v2/organizations/{org}/Users", "GET /search/code", "GET /search/commits", "GET /search/issues", @@ -173,12 +170,10 @@ export const paginatingEndpoints = [ "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", - "GET /teams/{team_id}/team-sync/group-mappings", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", - "GET /user/codespaces/secrets/{secret_name}/repositories", "GET /user/emails", "GET /user/followers", "GET /user/following", @@ -194,6 +189,7 @@ export const paginatingEndpoints = [ "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", + "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", diff --git a/action/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js b/action/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js index 03b05b8b1..b915bdb9b 100644 --- a/action/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js +++ b/action/node_modules/@octokit/plugin-paginate-rest/dist-src/version.js @@ -1 +1 @@ -export const VERSION = "2.19.0"; +export const VERSION = "2.21.0"; diff --git a/action/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js b/action/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js index 0997bf86e..8e6fb9977 100644 --- a/action/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js +++ b/action/node_modules/@octokit/plugin-paginate-rest/dist-web/index.js @@ -1,4 +1,4 @@ -const VERSION = "2.19.0"; +const VERSION = "2.21.0"; /** * Some “list” response that can be paginated have a different response structure @@ -125,9 +125,9 @@ const paginatingEndpoints = [ "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", - "GET /enterprises/{enterprise}/actions/runners/downloads", - "GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels", + "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", + "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", @@ -137,6 +137,7 @@ const paginatingEndpoints = [ "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", + "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", @@ -144,16 +145,16 @@ const paginatingEndpoints = [ "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", - "GET /organizations/{organization_id}/custom_roles", + "GET /orgs/{org_id}/codespaces", + "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", - "GET /orgs/{org}/actions/runners/downloads", - "GET /orgs/{org}/actions/runners/{runner_id}/labels", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", + "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/credential-authorizations", @@ -173,30 +174,29 @@ const paginatingEndpoints = [ "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", + "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/external-groups", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", - "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", + "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", - "GET /repos/{owner}/{repo}/actions/runners/downloads", - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", @@ -205,7 +205,6 @@ const paginatingEndpoints = [ "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", - "GET /repos/{owner}/{repo}/autolinks", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", @@ -219,16 +218,17 @@ const paginatingEndpoints = [ "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", + "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", + "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", @@ -268,13 +268,10 @@ const paginatingEndpoints = [ "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", - "GET /repos/{owner}/{repo}/tags/protection", "GET /repos/{owner}/{repo}/teams", + "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", - "GET /scim/v2/enterprises/{enterprise}/Groups", - "GET /scim/v2/enterprises/{enterprise}/Users", - "GET /scim/v2/organizations/{org}/Users", "GET /search/code", "GET /search/commits", "GET /search/issues", @@ -290,12 +287,10 @@ const paginatingEndpoints = [ "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", - "GET /teams/{team_id}/team-sync/group-mappings", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", - "GET /user/codespaces/secrets/{secret_name}/repositories", "GET /user/emails", "GET /user/followers", "GET /user/following", @@ -311,6 +306,7 @@ const paginatingEndpoints = [ "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", + "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", diff --git a/action/node_modules/@octokit/plugin-paginate-rest/package.json b/action/node_modules/@octokit/plugin-paginate-rest/package.json index 8150cbf2f..4d55ef1db 100644 --- a/action/node_modules/@octokit/plugin-paginate-rest/package.json +++ b/action/node_modules/@octokit/plugin-paginate-rest/package.json @@ -1,7 +1,7 @@ { "name": "@octokit/plugin-paginate-rest", "description": "Octokit plugin to paginate REST API endpoint responses", - "version": "2.19.0", + "version": "2.21.0", "license": "MIT", "files": [ "dist-*/", @@ -17,7 +17,7 @@ ], "repository": "github:octokit/plugin-paginate-rest.js", "dependencies": { - "@octokit/types": "^6.36.0" + "@octokit/types": "^6.38.1" }, "peerDependencies": { "@octokit/core": ">=2" @@ -30,16 +30,15 @@ "@pika/plugin-build-web": "^0.9.0", "@pika/plugin-ts-standard-pkg": "^0.9.0", "@types/fetch-mock": "^7.3.1", - "@types/jest": "^27.0.0", - "@types/node": "^14.0.4", + "@types/jest": "^28.0.0", + "@types/node": "^16.0.0", "fetch-mock": "^9.0.0", - "github-openapi-graphql-query": "^1.0.11", - "jest": "^27.0.0", + "github-openapi-graphql-query": "^2.0.0", + "jest": "^28.0.0", "npm-run-all": "^4.1.5", - "prettier": "2.4.1", - "semantic-release": "^18.0.0", + "prettier": "2.7.1", "semantic-release-plugin-update-version-in-files": "^1.0.0", - "ts-jest": "^27.0.0-next.12", + "ts-jest": "^28.0.0", "typescript": "^4.0.2" }, "publishConfig": { diff --git a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js index b7791b810..9a2262a98 100644 --- a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js +++ b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js @@ -70,6 +70,8 @@ const Endpoints = { createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], + deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], + deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], @@ -86,6 +88,7 @@ const Endpoints = { downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"], @@ -145,6 +148,7 @@ const Endpoints = { removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"], removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], + setActionsOidcCustomIssuerPolicyForEnterprise: ["PUT /enterprises/{enterprise}/actions/oidc/customization/issuer"], setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"], @@ -291,6 +295,7 @@ const Endpoints = { createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"], createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"], deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], @@ -302,6 +307,7 @@ const Endpoints = { getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"], listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: ["GET /orgs/{org_id}/codespaces"], listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"], @@ -311,6 +317,7 @@ const Endpoints = { setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"], startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"], updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] }, dependabot: { @@ -330,6 +337,7 @@ const Endpoints = { setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"] }, dependencyGraph: { + createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"] }, emojis: { @@ -993,7 +1001,7 @@ const Endpoints = { } }; -const VERSION = "5.15.0"; +const VERSION = "5.16.0"; function endpointsToMethods(octokit, endpointsMap) { const newMethods = {}; diff --git a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js index de1d750c7..0f1375052 100644 --- a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js +++ b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js @@ -35,6 +35,12 @@ const Endpoints = { createWorkflowDispatch: [ "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}", + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}", + ], deleteArtifact: [ "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}", ], @@ -79,6 +85,7 @@ const Endpoints = { enableWorkflow: [ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", ], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], getActionsCacheUsageByRepoForOrg: [ "GET /orgs/{org}/actions/cache/usage-by-repository", @@ -212,6 +219,9 @@ const Endpoints = { reviewPendingDeploymentsForRun: [ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", ], + setActionsOidcCustomIssuerPolicyForEnterprise: [ + "PUT /enterprises/{enterprise}/actions/oidc/customization/issuer", + ], setAllowedActionsOrganization: [ "PUT /orgs/{org}/actions/permissions/selected-actions", ], @@ -462,6 +472,9 @@ const Endpoints = { "POST /repos/{owner}/{repo}/codespaces", ], deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: [ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}", + ], deleteRepoSecret: [ "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}", ], @@ -491,6 +504,7 @@ const Endpoints = { "GET /repos/{owner}/{repo}/codespaces/devcontainers", ], listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: ["GET /orgs/{org_id}/codespaces"], listInRepositoryForAuthenticatedUser: [ "GET /repos/{owner}/{repo}/codespaces", ], @@ -510,6 +524,9 @@ const Endpoints = { ], startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: [ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop", + ], updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"], }, dependabot: { @@ -547,6 +564,9 @@ const Endpoints = { ], }, dependencyGraph: { + createRepositorySnapshot: [ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots", + ], diffRange: [ "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}", ], diff --git a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js index a6d0e39d7..e5f2f903d 100644 --- a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js +++ b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js @@ -1 +1 @@ -export const VERSION = "5.15.0"; +export const VERSION = "5.16.0"; diff --git a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js index 651d7abad..364cdf64c 100644 --- a/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js +++ b/action/node_modules/@octokit/plugin-rest-endpoint-methods/dist-web/index.js @@ -35,6 +35,12 @@ const Endpoints = { createWorkflowDispatch: [ "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}", + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}", + ], deleteArtifact: [ "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}", ], @@ -79,6 +85,7 @@ const Endpoints = { enableWorkflow: [ "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable", ], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], getActionsCacheUsageByRepoForOrg: [ "GET /orgs/{org}/actions/cache/usage-by-repository", @@ -212,6 +219,9 @@ const Endpoints = { reviewPendingDeploymentsForRun: [ "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", ], + setActionsOidcCustomIssuerPolicyForEnterprise: [ + "PUT /enterprises/{enterprise}/actions/oidc/customization/issuer", + ], setAllowedActionsOrganization: [ "PUT /orgs/{org}/actions/permissions/selected-actions", ], @@ -462,6 +472,9 @@ const Endpoints = { "POST /repos/{owner}/{repo}/codespaces", ], deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: [ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}", + ], deleteRepoSecret: [ "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}", ], @@ -491,6 +504,7 @@ const Endpoints = { "GET /repos/{owner}/{repo}/codespaces/devcontainers", ], listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: ["GET /orgs/{org_id}/codespaces"], listInRepositoryForAuthenticatedUser: [ "GET /repos/{owner}/{repo}/codespaces", ], @@ -510,6 +524,9 @@ const Endpoints = { ], startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: [ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop", + ], updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"], }, dependabot: { @@ -547,6 +564,9 @@ const Endpoints = { ], }, dependencyGraph: { + createRepositorySnapshot: [ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots", + ], diffRange: [ "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}", ], @@ -1641,7 +1661,7 @@ const Endpoints = { }, }; -const VERSION = "5.15.0"; +const VERSION = "5.16.0"; function endpointsToMethods(octokit, endpointsMap) { const newMethods = {}; diff --git a/action/node_modules/@octokit/plugin-rest-endpoint-methods/package.json b/action/node_modules/@octokit/plugin-rest-endpoint-methods/package.json index 695ced390..4c909c94b 100644 --- a/action/node_modules/@octokit/plugin-rest-endpoint-methods/package.json +++ b/action/node_modules/@octokit/plugin-rest-endpoint-methods/package.json @@ -1,7 +1,7 @@ { "name": "@octokit/plugin-rest-endpoint-methods", "description": "Octokit plugin adding one method for all of api.github.com REST API endpoints", - "version": "5.15.0", + "version": "5.16.0", "license": "MIT", "files": [ "dist-*/", @@ -17,7 +17,7 @@ ], "repository": "github:octokit/plugin-rest-endpoint-methods.js", "dependencies": { - "@octokit/types": "^6.36.0", + "@octokit/types": "^6.38.0", "deprecation": "^2.3.1" }, "peerDependencies": { @@ -32,18 +32,17 @@ "@pika/plugin-ts-standard-pkg": "^0.9.0", "@types/fetch-mock": "^7.3.1", "@types/jest": "^27.0.0", - "@types/node": "^14.0.4", + "@types/node": "^16.0.0", "fetch-mock": "^9.0.0", "fs-extra": "^10.0.0", - "github-openapi-graphql-query": "^1.0.11", + "github-openapi-graphql-query": "^2.0.0", "jest": "^27.0.0", "lodash.camelcase": "^4.3.0", "lodash.set": "^4.3.2", "lodash.upperfirst": "^4.3.1", "mustache": "^4.0.0", "npm-run-all": "^4.1.5", - "prettier": "2.4.1", - "semantic-release": "^18.0.0", + "prettier": "2.7.1", "semantic-release-plugin-update-version-in-files": "^1.0.0", "sort-keys": "^4.2.0", "string-to-jsdoc-comment": "^1.0.0", diff --git a/action/node_modules/@octokit/types/dist-node/index.js b/action/node_modules/@octokit/types/dist-node/index.js index 4b5f4b481..efd1d2869 100644 --- a/action/node_modules/@octokit/types/dist-node/index.js +++ b/action/node_modules/@octokit/types/dist-node/index.js @@ -2,7 +2,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); -const VERSION = "6.37.1"; +const VERSION = "6.38.1"; exports.VERSION = VERSION; //# sourceMappingURL=index.js.map diff --git a/action/node_modules/@octokit/types/dist-src/VERSION.js b/action/node_modules/@octokit/types/dist-src/VERSION.js index 62167dfa4..e9b3d2962 100644 --- a/action/node_modules/@octokit/types/dist-src/VERSION.js +++ b/action/node_modules/@octokit/types/dist-src/VERSION.js @@ -1 +1 @@ -export const VERSION = "6.37.1"; +export const VERSION = "6.38.1"; diff --git a/action/node_modules/@octokit/types/dist-web/index.js b/action/node_modules/@octokit/types/dist-web/index.js index 4ff8d89ff..c5451e023 100644 --- a/action/node_modules/@octokit/types/dist-web/index.js +++ b/action/node_modules/@octokit/types/dist-web/index.js @@ -1,4 +1,4 @@ -const VERSION = "6.37.1"; +const VERSION = "6.38.1"; export { VERSION }; //# sourceMappingURL=index.js.map diff --git a/action/node_modules/@octokit/types/package.json b/action/node_modules/@octokit/types/package.json index 559666130..3611ddfd4 100644 --- a/action/node_modules/@octokit/types/package.json +++ b/action/node_modules/@octokit/types/package.json @@ -1,7 +1,7 @@ { "name": "@octokit/types", "description": "Shared TypeScript definitions for Octokit projects", - "version": "6.37.1", + "version": "6.38.1", "license": "MIT", "files": [ "dist-*/", @@ -18,7 +18,7 @@ ], "repository": "github:octokit/types.ts", "dependencies": { - "@octokit/openapi-types": "^12.4.0" + "@octokit/openapi-types": "^12.5.0" }, "devDependencies": { "@pika/pack": "^0.5.0", @@ -26,7 +26,7 @@ "@pika/plugin-build-web": "^0.9.0", "@pika/plugin-ts-standard-pkg": "^0.9.0", "@types/node": ">= 8", - "github-openapi-graphql-query": "^1.0.11", + "github-openapi-graphql-query": "^2.0.0", "handlebars": "^4.7.6", "json-schema-to-typescript": "^10.0.0", "lodash.set": "^4.3.2", @@ -47,7 +47,7 @@ "source": "dist-src/index.js", "types": "dist-types/index.d.ts", "octokit": { - "openapi-version": "6.1.0" + "openapi-version": "6.2.1" }, "main": "dist-node/index.js", "module": "dist-web/index.js" diff --git a/action/node_modules/cspell-gitignore/dist/GitIgnore.js b/action/node_modules/cspell-gitignore/dist/GitIgnore.js index ed2a3802a..60d253005 100644 --- a/action/node_modules/cspell-gitignore/dist/GitIgnore.js +++ b/action/node_modules/cspell-gitignore/dist/GitIgnore.js @@ -47,7 +47,7 @@ class GitIgnore { } isIgnoredQuick(file) { const gh = this.findResolvedGitIgnoreHierarchy(path.dirname(file)); - return gh === null || gh === void 0 ? void 0 : gh.isIgnored(file); + return gh?.isIgnored(file); } async isIgnored(file) { const gh = await this.findGitIgnoreHierarchy(path.dirname(file)); @@ -73,9 +73,8 @@ class GitIgnore { return isAsyncIterable(files) ? iter : asyncIterableToArray(iter); } async *filterOutIgnoredAsync(files) { - var _a; for await (const file of files) { - const isIgnored = (_a = this.isIgnoredQuick(file)) !== null && _a !== void 0 ? _a : (await this.isIgnored(file)); + const isIgnored = this.isIgnoredQuick(file) ?? (await this.isIgnored(file)); if (!isIgnored) { yield file; } @@ -100,7 +99,6 @@ class GitIgnore { this.resolvedGitIgnoreHierarchies.clear(); } async _findGitIgnoreHierarchy(directory) { - var _a; const root = this.determineRoot(directory); const parent = path.dirname(directory); const parentHierarchy = parent !== directory && (0, _1.contains)(root, parent) ? await this.findGitIgnoreHierarchy(parent) : undefined; @@ -108,7 +106,7 @@ class GitIgnore { if (!git) { return parentHierarchy || new GitIgnoreFile_1.GitIgnoreHierarchy([]); } - const chain = (_a = parentHierarchy === null || parentHierarchy === void 0 ? void 0 : parentHierarchy.gitIgnoreChain.concat([git])) !== null && _a !== void 0 ? _a : [git]; + const chain = parentHierarchy?.gitIgnoreChain.concat([git]) ?? [git]; return new GitIgnoreFile_1.GitIgnoreHierarchy(chain); } determineRoot(directory) { diff --git a/action/node_modules/cspell-gitignore/dist/GitIgnoreFile.js b/action/node_modules/cspell-gitignore/dist/GitIgnoreFile.js index e6b23edb4..98d441b7a 100644 --- a/action/node_modules/cspell-gitignore/dist/GitIgnoreFile.js +++ b/action/node_modules/cspell-gitignore/dist/GitIgnoreFile.js @@ -42,14 +42,13 @@ class GitIgnoreFile { return this.matcher.match(file); } isIgnoredEx(file) { - var _a; const m = this.matcher.matchEx(file); const { matched } = m; const partial = m; const pattern = partial.pattern; - const glob = (_a = pattern === null || pattern === void 0 ? void 0 : pattern.rawGlob) !== null && _a !== void 0 ? _a : partial.glob; + const glob = pattern?.rawGlob ?? partial.glob; const root = partial.root; - const line = pattern === null || pattern === void 0 ? void 0 : pattern.line; + const line = pattern?.line; return { glob, matched, gitIgnoreFile: this.gitignore, root, line }; } static async loadGitignore(gitignore) { diff --git a/action/node_modules/cspell-gitignore/dist/app.js b/action/node_modules/cspell-gitignore/dist/app.js index 5c39110f2..e0f7493c1 100644 --- a/action/node_modules/cspell-gitignore/dist/app.js +++ b/action/node_modules/cspell-gitignore/dist/app.js @@ -59,15 +59,14 @@ async function run(args) { const pFile = gi.isIgnoredEx(file); const pDir = gi.isIgnoredEx(file + '/ '); const r = (await pFile) || (await pDir); - const gitignore = (r === null || r === void 0 ? void 0 : r.gitIgnoreFile) ? path.relative(repo, r.gitIgnoreFile) : ''; - const line = (r === null || r === void 0 ? void 0 : r.line) || ''; - const glob = (r === null || r === void 0 ? void 0 : r.glob) || ''; + const gitignore = r?.gitIgnoreFile ? path.relative(repo, r.gitIgnoreFile) : ''; + const line = r?.line || ''; + const glob = r?.glob || ''; console.log(`${gitignore}:${line}:${glob}\t${filename}`); } } exports.run = run; function parseArgs(params) { - var _a; const roots = []; const files = []; let help = ''; @@ -98,7 +97,7 @@ function parseArgs(params) { } while (params.length) { const fn = options[params[0]]; - params = (_a = fn === null || fn === void 0 ? void 0 : fn(params)) !== null && _a !== void 0 ? _a : optionFile(params); + params = fn?.(params) ?? optionFile(params); } return { roots, files, help }; } diff --git a/action/node_modules/cspell-gitignore/package.json b/action/node_modules/cspell-gitignore/package.json index be901cc54..d12048165 100644 --- a/action/node_modules/cspell-gitignore/package.json +++ b/action/node_modules/cspell-gitignore/package.json @@ -1,6 +1,6 @@ { "name": "cspell-gitignore", - "version": "6.1.2", + "version": "6.1.3", "description": "Gitignore Glob matcher for cspell", "keywords": [ "cspell", @@ -47,13 +47,13 @@ "node": ">=14" }, "dependencies": { - "cspell-glob": "^6.1.2", + "cspell-glob": "^6.1.3", "find-up": "^5.0.0" }, "devDependencies": { - "@types/node": "^17.0.40", + "@types/node": "^18.0.0", "jest": "^28.1.1", "rimraf": "^3.0.2" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/cspell-glob/dist/GlobMatcher.js b/action/node_modules/cspell-glob/dist/GlobMatcher.js index b17647e04..45209b9a2 100644 --- a/action/node_modules/cspell-glob/dist/GlobMatcher.js +++ b/action/node_modules/cspell-glob/dist/GlobMatcher.js @@ -29,12 +29,11 @@ const Path = __importStar(require("path")); const globHelper_1 = require("./globHelper"); class GlobMatcher { constructor(patterns, rootOrOptions, _nodePath) { - var _a; - _nodePath = _nodePath !== null && _nodePath !== void 0 ? _nodePath : Path; - const options = typeof rootOrOptions === 'string' ? { root: rootOrOptions } : rootOrOptions !== null && rootOrOptions !== void 0 ? rootOrOptions : {}; + _nodePath = _nodePath ?? Path; + const options = typeof rootOrOptions === 'string' ? { root: rootOrOptions } : rootOrOptions ?? {}; const { mode = 'exclude' } = options; const isExcludeMode = mode !== 'include'; - _nodePath = (_a = options.nodePath) !== null && _a !== void 0 ? _a : _nodePath; + _nodePath = options.nodePath ?? _nodePath; const { root = _nodePath.resolve(), dot = isExcludeMode, nodePath = _nodePath, nested = isExcludeMode, cwd = process.cwd(), nobrace, } = clean(options); const normalizedRoot = nodePath.resolve(nodePath.normalize(root)); this.options = { root: normalizedRoot, dot, nodePath, nested, mode, nobrace, cwd }; diff --git a/action/node_modules/cspell-glob/dist/globHelper.js b/action/node_modules/cspell-glob/dist/globHelper.js index a75c79373..fd07964b0 100644 --- a/action/node_modules/cspell-glob/dist/globHelper.js +++ b/action/node_modules/cspell-glob/dist/globHelper.js @@ -35,10 +35,9 @@ const relRegExp = /^\.[\\/]/; * @param path - optional node path methods - used for testing */ function fileOrGlobToGlob(fileOrGlob, root, path = Path) { - var _a; const pathToGlob = path.sep === '\\' ? (p) => p.replace(/\\/g, '/') : (p) => p; if (typeof fileOrGlob !== 'string') { - const useRoot = (_a = fileOrGlob.root) !== null && _a !== void 0 ? _a : root; + const useRoot = fileOrGlob.root ?? root; return { ...fileOrGlob, root: useRoot }; } if (doesRootContainPath(root, fileOrGlob, path) || relRegExp.test(fileOrGlob)) { @@ -138,10 +137,9 @@ function normalizeGlobPatterns(patterns, options) { } exports.normalizeGlobPatterns = normalizeGlobPatterns; function normalizeGlobPattern(g, options) { - var _a; const { root, nodePath: path = Path, nested, cwd = Path.resolve() } = options; g = !isGlobPatternWithOptionalRoot(g) ? { glob: g } : g; - const gr = { ...g, root: (_a = g.root) !== null && _a !== void 0 ? _a : root }; + const gr = { ...g, root: g.root ?? root }; const rawRoot = gr.root; const rawGlob = g.glob; gr.glob = gr.glob.trim(); // trimGlob(g.glob); diff --git a/action/node_modules/cspell-glob/package.json b/action/node_modules/cspell-glob/package.json index 848ea21a8..33975d5f1 100644 --- a/action/node_modules/cspell-glob/package.json +++ b/action/node_modules/cspell-glob/package.json @@ -1,6 +1,6 @@ { "name": "cspell-glob", - "version": "6.1.2", + "version": "6.1.3", "description": "Glob matcher for cspell", "keywords": [ "cspell", @@ -46,9 +46,9 @@ }, "devDependencies": { "@types/micromatch": "^4.0.2", - "@types/node": "^17.0.40", + "@types/node": "^18.0.0", "jest": "^28.1.1", "rimraf": "^3.0.2" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/cspell-grammar/LICENSE b/action/node_modules/cspell-grammar/LICENSE new file mode 100644 index 000000000..04a247e2b --- /dev/null +++ b/action/node_modules/cspell-grammar/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Jason Dent + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/action/node_modules/cspell-grammar/README.md b/action/node_modules/cspell-grammar/README.md new file mode 100644 index 000000000..37a04a54a --- /dev/null +++ b/action/node_modules/cspell-grammar/README.md @@ -0,0 +1,100 @@ +# `cspell-grammar` + +CSpell Grammar is used to generate a parser. The Parser is used to add context / scope to parts of a document, making it easier to define the parts to spell spell checked. + +This is to address the issues and limitations related to `ignoreRegExpList` and `includeRegExpList`. + +The parser is use to add `scope` to sections of a document. The `scope` can then be used to apply spell checking rules. + +Example: Only check comments and strings + +```yaml +rules: + '*': false + comment: true + string: true +``` + +It can be even more powerful like controlling the language settings based upon scope. + +```yaml +rules: + comment: + language: en + string: + language: en,fr + dictionaries: ['marketing-terms'], + caseSensitive: true + string.javascript: + caseSensitive: false +``` + +Rules are applied in the order they match the scope of the text. + +When checking JavaScript files with the above example rules: + +- strings will: + - use the locale `en,fr` + - the `marketing-terms` dictionary will be enabled + - `caseSensitive` will be `true` +- everything else: + - locale: `en` + - `caseSensitive` will be `false` + +At its core, `cspell-grammar` uses a simplified form of the TextMate grammar. + +## Reasoning + +Why use a grammar parser? Couldn't a colorizer / highlighter or a language AST be used? +At one level, needs of the spell checker are simpler and different from colorizers or language AST parsers. +The goal of a spell checker is to spell check **_relevant_** text. The spell check does not need to care about +the syntactical correctness of a document or presentation. + +The goal of a grammar parser for the spell checker is to allow the user to decide: + +1. What text should be checked. +1. Which dictionaries (or languages) should be used. +1. Are accents and case important + +Note: CSpell is a pure JavaScript application, so including the Oniguruma is not an option. + +### Considerations + +- Parsing a document should be fast - meaning the grammar should be as simple as possible to meet + the needs of the spell checker and not focus on scope detail. This is where a colorizer grammar is + not a good fit to be used. +- AST's are a bit of an overkill for a spell checker. They provide too much detail while not bringing much benefit + from the detail. + +## Transformation + +Consider the following bit of LaTeX: + +```latex +k\"{o}nnen +können +``` + + + +For the spell checker to work correctly, the `\"{o}` should be transformed into `ö` before it is checked against the German dictionary. + +This creates a few challenges. + +Possible options: + +1. Simple whole document substitution + - Challenges + - It is not context aware and might replace the wrong text. + - It changes the location of the words and messes up issue reporting (some sort of Map would be needed to get the correct line / character offset). + +- Advantages + - Easy to implement except for the context and mapping. + +1. Scope level substitution + Transformations occur at the scope level. + - Challenges + - offset mapping is still and issue (maybe) + - need a way to merge text with adjacent scopes after transformation + - Advantages + - it is context aware diff --git a/action/node_modules/cspell-grammar/bin.js b/action/node_modules/cspell-grammar/bin.js new file mode 100755 index 000000000..302af0b0d --- /dev/null +++ b/action/node_modules/cspell-grammar/bin.js @@ -0,0 +1,6 @@ +#!/usr/bin/env node +'use strict'; + +const app = require('./dist/app.js'); + +app.run(process.argv); diff --git a/action/node_modules/cspell-grammar/dist/app.js b/action/node_modules/cspell-grammar/dist/app.js new file mode 100644 index 000000000..92ee991e8 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/app.js @@ -0,0 +1,67 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.run = void 0; +const fs_1 = require("fs"); +const path = __importStar(require("path")); +const typescript_1 = require("./parsers/typescript"); +const parsers = { + '.ts': typescript_1.parser, +}; +/** + * Run simple parser + * @param args -- command line arguments + * @returns Promise + */ +async function run(args) { + // early out if there are not enough arguments + if (args.length < 3) { + console.log('usage...'); + return; + } + const filename = args.slice(2).filter((p) => !p.startsWith('-'))[0]; + if (!filename) { + console.log('filename missing'); + return; + } + const ext = path.extname(filename); + const parser = parsers[ext]; + if (!parser) { + console.log(`No parser for ${path.basename(filename)}`); + return; + } + console.log(`File: ${path.basename(filename)} Parser: ${parser.name}`); + const content = await fs_1.promises.readFile(filename, 'utf-8'); + const result = parser.parse(content, filename); + for (const pt of result.parsedTexts) { + emit(pt); + } +} +exports.run = run; +function emit(pt) { + const t = pt.text.replace(/\t/g, '↦').replace(/\r?\n/g, '↩︎').replace(/\r/g, '⇠'); + console.log(`${pt.range[0]}-${pt.range[1]}\t${t}\t${pt.scope?.toString() || ''}`); +} +//# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/grammars/index.js b/action/node_modules/cspell-grammar/dist/grammars/index.js new file mode 100644 index 000000000..3ca6cfcf1 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/grammars/index.js @@ -0,0 +1,29 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Markdown = exports.TypeScript = void 0; +exports.TypeScript = __importStar(require("./typescript")); +exports.Markdown = __importStar(require("./markdown")); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/grammars/markdown.js b/action/node_modules/cspell-grammar/dist/grammars/markdown.js new file mode 100644 index 000000000..f5e7d3cac --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/grammars/markdown.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.grammar = void 0; +const repository = { + frontMatter: { patterns: [] }, + block: { patterns: ['#raw'] }, + fenced_code_block: { + patterns: ['#fenced_code_block_unknown'], + }, + fenced_code_block_unknown: { + name: 'markup.fenced_code.block.markdown', + begin: /(^)(\s*)(`{3,}|~{3,})\s*(?=([^`~]*)?$)/, + beginCaptures: { + '3': 'punctuation.definition.markdown', + '4': 'fenced_code.block.language', + }, + // eslint-disable-next-line no-useless-backreference + end: /(^|\G)(\2|\s{0,3})(\3)\s*$/, + endCaptures: { + '3': 'punctuation.definition.markdown', + }, + }, + raw: { + name: 'markup.inline.raw.string.markdown', + captures: 'punctuation.definition.raw.markdown', + begin: /`+/, + end: '\\1', + }, +}; +exports.grammar = { + name: 'Markdown', + scopeName: 'text.html.markdown', + patterns: ['#frontMatter', '#block'], + repository, +}; +//# sourceMappingURL=markdown.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/grammars/simple.js b/action/node_modules/cspell-grammar/dist/grammars/simple.js new file mode 100644 index 000000000..a1617ec05 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/grammars/simple.js @@ -0,0 +1,112 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.grammar = void 0; +const repository = { + statements: { + patterns: ['#braces', '#comment', '#string'], + }, + braces: { + name: 'braces.s', + patterns: ['#braces_paren', '#braces_curly'], + }, + braces_paren: { + captures: 'paren.braces.s', + contentName: 'content.braces.s', + begin: '(', + end: ')', + patterns: ['$self'], + }, + braces_curly: { + captures: 'curly.braces.s', + contentName: 'content.braces.s', + begin: '{', + end: '}', + patterns: ['$self'], + }, + comment: { + patterns: ['#comment_line', '#comment_doc_block', '#comment_block'], + }, + comment_line: { + patterns: ['#comment_line_double_slash', '#comment_line_hash'], + }, + comment_line_hash: { + name: 'comment.line.s', + match: /(#).*\s?/, + captures: { + '1': 'punctuation.s', + }, + }, + comment_line_double_slash: { + name: 'comment.line.s', + match: /(\/\/).*\s?/, + captures: { + '1': 'punctuation.s', + }, + }, + comment_doc_block: { + name: 'comment.block.s', + begin: '/**', + end: '*/', + captures: { + '0': 'punctuation.s', + }, + }, + comment_block: { + name: 'comment.block.s', + begin: '/*', + end: '*/', + captures: { + '0': 'punctuation.s', + }, + }, + string: { + patterns: [{ include: '#string_q_single' }, { include: '#string_q_double' }, { include: '#string_template' }], + }, + string_q_single: { + name: 'string.quoted.single.s', + begin: "'", + end: /'|((?:[^\\\n])$)/, + patterns: [{ include: '#string_character_escape' }], + captures: { + '0': 'punctuation.s', + }, + }, + string_q_double: { + name: 'string.quoted.double.s', + begin: '"', + end: /"|((?:[^\\\n])$)/, + patterns: [{ include: '#string_character_escape' }], + captures: { + '0': 'punctuation.s', + }, + }, + string_template: { + name: 'string.template.s', + begin: '`', + end: '`', + patterns: [{ include: '#string_character_escape' }, '#template_embedded'], + captures: { + '0': 'punctuation.s', + }, + }, + string_character_escape: { + name: 'constant.character.escape.s', + match: /\\(x[0-9A-Fa-f]{2}|[0-3][0-7]{0,2}|[4-7][0-7]?|.|$)/, + }, + template_embedded: { + name: 'embedded.template.s', + begin: '${', + end: '}', + patterns: ['#statements'], + captures: { + '0': 'punctuation.s', + }, + }, +}; +exports.grammar = { + name: 'Simple', + scopeName: 'source.s', + patterns: ['#statements'], + repository, +}; +//# sourceMappingURL=simple.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/grammars/typescript.js b/action/node_modules/cspell-grammar/dist/grammars/typescript.js new file mode 100644 index 000000000..456cba10e --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/grammars/typescript.js @@ -0,0 +1,165 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.grammar = void 0; +const repository = { + statements: { + name: 'code.ts', + patterns: [ + '#keyword', + '#regexp', + '#string', + '#comment', + '#braces', + '#punctuation', + '#space', + { name: 'identifier', match: /[^\s;,!|&:^%{}[\]()*/+=<>]+/ }, + ], + }, + keyword: { + patterns: ['#keywordBase', '#standardTypes', '#standardLib'], + }, + keywordBase: { + name: 'keyword.typescript.ts', + match: /\b(?:any|as|async|await|bigint|boolean|break|case|catch|const|continue|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|in|instanceof|interface|import|let|map|module|new|new|null|number|of|package|private|public|require|return|set|static|string|super|switch|this|throw|true|try|type|typeof|unknown|undefined|var|void|while|yield)\b/, + }, + standardTypes: { + name: 'keyword.type.ts', + match: /\b(?:Promise|Record|Omit|Extract|Exclude|BigInt|Array)\b/, + }, + standardLib: { + name: 'keyword.lib.ts', + match: /\b(?:console|process|window)\b/, + }, + string: { + patterns: ['#string_q_single', '#string_q_double', '#string_template'], + }, + string_q_single: { + name: 'string.quoted.single.ts', + begin: "'", + end: /'|((?:[^\\\n])$)/, + captures: 'punctuation.string.ts', + patterns: [{ include: '#string_character_escape' }], + }, + string_q_double: { + name: 'string.quoted.double.ts', + begin: '"', + end: /"|((?:[^\\\n])$)/, + captures: 'punctuation.string.ts', + patterns: [{ include: '#string_character_escape' }], + }, + string_template: { + name: 'string.template.ts', + begin: '`', + end: '`', + captures: 'punctuation.string.ts', + patterns: [ + { + name: 'meta.template.expression.ts', + contentName: 'meta.embedded.line.ts', + begin: '${', + end: '}', + patterns: ['#statements'], + captures: 'punctuation.definition.template.expression.ts', + }, + { include: '#string_character_escape' }, + ], + }, + string_character_escape: { + name: 'constant.character.escape.ts', + match: /\\(x[0-9A-Fa-f]{2}|[0-3][0-7]{0,2}|[4-7][0-7]?|u[0-9A-Fa-f]{4}|.|\r?\n?$)/, + }, + braces: { + patterns: [ + { + begin: '(', + end: ')', + captures: 'punctuation.meta.brace.ts', + patterns: ['#statements'], + name: 'meta.brace.ts', + contentName: 'code.ts', + }, + { + begin: '{', + end: '}', + captures: 'punctuation.meta.brace.ts', + patterns: ['#statements'], + name: 'meta.brace.ts', + contentName: 'code.ts', + }, + { + begin: '[', + end: ']', + captures: 'punctuation.meta.brace.ts', + patterns: ['#statements'], + name: 'meta.brace.ts', + contentName: 'code.ts', + }, + ], + }, + punctuation: { + name: 'punctuation.ts', + match: /[-;:,!|&^%*/+=<>\n\r]/, + }, + space: { + name: 'punctuation.space.ts', + match: /\s+/, + }, + comment: { + patterns: [ + { + name: 'comment.line.ts', + comment: 'line comment', + begin: '//', + end: /(?=$)/, + captures: 'punctuation.definition.comment.ts', + }, + { + name: 'comment.block.documentation.ts', + comment: 'DocBlock', + begin: /\/\*\*(?!\/)/, + captures: 'punctuation.definition.comment.ts', + end: '*/', + }, + { + name: 'comment.block.ts', + begin: '/*', + end: '*/', + captures: 'punctuation.definition.comment.ts', + }, + ], + }, + regexp: { + name: 'regexp.ts', + begin: /\/(?![/*])/, + end: /\/([a-z]*)/i, + beginCaptures: 'punctuation.begin.regexp.ts', + endCaptures: 'punctuation.end.regexp.ts', + patterns: ['#regexp_escape', '#regexp_brace'], + }, + regexp_escape: { + name: 'escape.regexp.ts', + match: /\\./, + }, + regexp_brace: { + name: 'brace.regexp.ts', + begin: '[', + end: ']', + contentName: 'character-class.regexp.ts', + patterns: ['#regexp_escape'], + }, +}; +exports.grammar = { + name: 'TypeScript', + scopeName: 'source.ts', + patterns: [ + { + name: 'comment.line.shebang.ts', + match: /^#!.*(?=$)/, + }, + { + include: '#statements', + }, + ], + repository, +}; +//# sourceMappingURL=typescript.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/index.js b/action/node_modules/cspell-grammar/dist/index.js new file mode 100644 index 000000000..af8ea8d2a --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tokenizeText = exports.tokenizeLine = exports.compileGrammar = void 0; +var parser_1 = require("./parser"); +Object.defineProperty(exports, "compileGrammar", { enumerable: true, get: function () { return parser_1.compileGrammar; } }); +Object.defineProperty(exports, "tokenizeLine", { enumerable: true, get: function () { return parser_1.tokenizeLine; } }); +Object.defineProperty(exports, "tokenizeText", { enumerable: true, get: function () { return parser_1.tokenizeText; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/mappers/appendMappedText.js b/action/node_modules/cspell-grammar/dist/mappers/appendMappedText.js new file mode 100644 index 000000000..67e00cf4f --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/mappers/appendMappedText.js @@ -0,0 +1,45 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.appendMappedText = void 0; +const assert_1 = __importDefault(require("assert")); +function appendMappedText(a, b) { + if (!a.map && !b.map) { + return { text: a.text + b.text }; + } + const aLen = a.text.length; + const bLen = b.text.length; + const aMap = [0, 0].concat(a.map || [0, 0, aLen, aLen]); + const bMap = [0, 0].concat(b.map || [0, 0, bLen, bLen]); + (0, assert_1.default)(aMap[aMap.length - 1] === aLen); + (0, assert_1.default)(bMap[bMap.length - 1] === bLen); + (0, assert_1.default)((aMap.length & 1) === 0); + (0, assert_1.default)((bMap.length & 1) === 0); + return { + text: a.text + b.text, + map: joinMaps(aMap, bMap), + }; +} +exports.appendMappedText = appendMappedText; +function joinMaps(aMap, bMap) { + const n = aMap.length - 1; + const offsets = [aMap[n - 1], aMap[n]]; + const ab = aMap.concat(bMap.map((v, i) => v + offsets[i & 1])); + // Normalize the map by removing duplicate entries + const r = [0, 0]; + let last0 = 0, last1 = 0; + for (let i = 0; i < ab.length; i += 2) { + const v0 = ab[i]; + const v1 = ab[i + 1]; + if (v0 === last0 && v1 === last1) { + continue; + } + r.push(v0, v1); + last0 = v0; + last1 = v1; + } + return r; +} +//# sourceMappingURL=appendMappedText.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/mappers/types.js b/action/node_modules/cspell-grammar/dist/mappers/types.js new file mode 100644 index 000000000..11e638d1e --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/mappers/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/mappers/typescript.js b/action/node_modules/cspell-grammar/dist/mappers/typescript.js new file mode 100644 index 000000000..94c21f98c --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/mappers/typescript.js @@ -0,0 +1,147 @@ +"use strict"; +/** + * Mappers for TypeScript and JavaScript + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mapRawString = void 0; +const hexChars = { + '0': 0, + '1': 1, + '2': 2, + '3': 3, + '4': 4, + '5': 5, + '6': 6, + '7': 7, + '8': 8, + '9': 9, + A: 10, + B: 11, + C: 12, + D: 13, + E: 14, + F: 15, + a: 10, + b: 11, + c: 12, + d: 13, + e: 14, + f: 15, +}; +const escapeChars = { + t: '\t', + n: '\n', + r: '\r', + b: '\b', + '\\': '\\', + '"': '"', + "'": "'", + '\n': '', +}; +function mapRawString(text) { + const end = text.length; + let t = ''; + const map = []; + const isHex = /^[0-9a-fA-F]+$/; + let i, j; + for (i = 0, j = 0; i < end; ++i) { + let parsed; + const ti = text[i]; + if (ti === '\\') { + map.push(i, j); + const tc = text[++i]; + const ec = escapeChars[tc]; + if (ec) { + t += ec; + j += ec.length; + map.push(i, j); + continue; + } + switch (tc) { + case 'u': + { + let char; + let end; + if (text[i + 1] !== '{') { + const digits = text.slice(i + 1, i + 5); + parsed = isHex.test(digits) ? parseInt(digits, 16) : NaN; + char = isNaN(parsed) ? '' : String.fromCharCode(parsed); + end = i + 4; + } + else { + for (end = i + 2; text[end] in hexChars; ++end) { + // do nothing + } + if (text[end] !== '}') { + char = ''; + } + else { + const digits = text.slice(i + 2, end); + parsed = isHex.test(digits) ? parseInt(digits, 16) : NaN; + char = isNaN(parsed) ? '' : String.fromCodePoint(parsed); + } + } + if (!char) { + t += tc; + j += 1; + } + else { + t += char; + j += char.length; + i = end; + } + } + break; + case 'x': + { + const digits = text.slice(i + 1, i + 3); + parsed = isHex.test(digits) ? parseInt(digits, 16) : NaN; + if (isNaN(parsed)) { + // give up, it is not valid + t += tc; + j += 1; + } + else { + t += String.fromCharCode(parsed); + i += 2; + ++j; + } + } + break; + case '0': + // Deprecated in ES5 + t += '0'; + j += 1; + break; + case '\r': + i += text[i + 1] === '\n' ? 1 : 0; + break; + case '\n': + break; + case undefined: + break; + default: + t += tc; + ++j; + break; + } + map.push(i + 1, j); + continue; + } + t += ti; + ++j; + } + if (map.length) { + const ii = map[map.length - 2]; + const jj = map[map.length - 1]; + if (ii !== i || jj !== j) { + map.push(i, j); + } + } + return { + text: t, + map, + }; +} +exports.mapRawString = mapRawString; +//# sourceMappingURL=typescript.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/grammar.js b/action/node_modules/cspell-grammar/dist/parser/grammar.js new file mode 100644 index 000000000..952c21215 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/grammar.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.compileGrammar = void 0; +const grammarNormalizer_1 = require("./grammarNormalizer"); +function compileGrammar(grammar) { + return (0, grammarNormalizer_1.normalizeGrammar)(grammar); +} +exports.compileGrammar = compileGrammar; +//# sourceMappingURL=grammar.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/grammarDefinition.js b/action/node_modules/cspell-grammar/dist/parser/grammarDefinition.js new file mode 100644 index 000000000..0c504c9a4 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/grammarDefinition.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=grammarDefinition.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/grammarNormalized.js b/action/node_modules/cspell-grammar/dist/parser/grammarNormalized.js new file mode 100644 index 000000000..2e5e115f1 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/grammarNormalized.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=grammarNormalized.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/grammarNormalizer.js b/action/node_modules/cspell-grammar/dist/parser/grammarNormalizer.js new file mode 100644 index 000000000..e54dc7661 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/grammarNormalizer.js @@ -0,0 +1,267 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extractScope = exports.nPattern = exports.normalizeGrammar = void 0; +const grammarTypesHelpers_1 = require("./grammarTypesHelpers"); +const matchResult_1 = require("./matchResult"); +const scope_1 = require("./scope"); +function normalizeGrammar(grammar) { + return new ImplNGrammar(grammar); +} +exports.normalizeGrammar = normalizeGrammar; +const SpecialRepositoryReferences = { + $self: true, + $base: true, +}; +function nPattern(p) { + if ((0, grammarTypesHelpers_1.isPatternMatch)(p)) + return normalizePatternMatch(p); + if ((0, grammarTypesHelpers_1.isPatternBeginEnd)(p)) + return normalizePatternBeginEnd(p); + if ((0, grammarTypesHelpers_1.isPatternInclude)(p)) + return normalizePatternInclude(p); + if ((0, grammarTypesHelpers_1.isPatternPatterns)(p)) + return normalizePatternsPatterns(p); + return normalizePatternName(p); +} +exports.nPattern = nPattern; +function normalizePatternMatch(p) { + const regExec = makeTestMatchFn(p.match); + const self = { + ...p, + captures: normalizeCapture(p.captures), + findMatch, + }; + function findMatch(line, parentRule) { + const match = regExec(line); + if (!match) + return undefined; + const rule = factoryRule(parentRule, self); + return { rule, match, line }; + } + return self; +} +function normalizePatternBeginEnd(p) { + const patterns = normalizePatterns(p.patterns); + const self = { + ...p, + captures: normalizeCapture(p.captures), + beginCaptures: normalizeCapture(p.beginCaptures), + endCaptures: normalizeCapture(p.endCaptures), + patterns, + findMatch, + }; + function findMatch(line, parentRule) { + const match = testBegin(line); + if (!match) + return undefined; + const rule = factoryRule(parentRule, self, findNext, end); + return { rule, match, line }; + } + const testBegin = makeTestMatchFn(p.begin); + const testEnd = p.end !== undefined ? makeTestMatchFn(p.end) : () => undefined; + function findNext(line) { + return patterns && findInPatterns(patterns, line, this); + } + function end(line) { + return testEnd(line); + } + return self; +} +function normalizePatternName(p) { + const patterns = undefined; + const self = { + ...p, + patterns, + findMatch, + }; + function findMatch(line, parentRule) { + const rule = factoryRule(parentRule, self); + const input = line.text.slice(line.offset); + const match = (0, matchResult_1.createSimpleMatchResult)(input, input, line.offset, line.lineNumber); + return { rule, match, line }; + } + return self; +} +function normalizePatternInclude(p) { + const { include } = p; + return include.startsWith('#') || include in SpecialRepositoryReferences + ? normalizePatternIncludeRef(p) + : normalizePatternIncludeExt(p); +} +function normalizePatternIncludeRef(p) { + const { include, ...rest } = p; + const reference = include.startsWith('#') ? include.slice(1) : include; + const self = { + ...rest, + reference, + findMatch, + }; + function findMatch(line, parentRule) { + const pat = parentRule.repository[reference]; + if (pat === undefined) + throw new Error(`Unknown Include Reference ${include}`); + return pat.findMatch(line, parentRule); + } + return self; +} +function normalizePatternIncludeExt(p) { + function findMatch(_line) { + return undefined; + } + const self = { + ...p, + findMatch, + }; + return self; +} +function normalizePatternsPatterns(p) { + return new ImplNPatternPatterns(p); +} +function findInPatterns(patterns, line, rule) { + let r = undefined; + for (const pat of patterns) { + if (pat.disabled) + continue; + const er = pat.findMatch(line, rule); + if (er?.match !== undefined && !er.rule.pattern.disabled) { + r = (r && r.match && r.match.index <= er.match.index && r) || er; + } + } + return r; +} +function normalizePatterns(patterns) { + if (!patterns) + return undefined; + return patterns.map((p) => (typeof p === 'string' ? { include: p } : p)).map(nPattern); +} +const emptyRepository = Object.freeze(Object.create(null)); +function normalizePatternRepository(rep) { + if (!rep) + return emptyRepository; + return normalizeRepository(rep); +} +function normalizeRepository(rep) { + const repository = Object.create(null); + for (const [key, pat] of Object.entries(rep)) { + repository[key] = nPattern(pat); + } + return repository; +} +let ruleCounter = 0; +function factoryRuleBase(parent, pattern, repository, grammar, findNext, end) { + const depth = parent ? parent.depth + 1 : 0; + return { + id: ruleCounter++, + grammar, + pattern, + parent, + repository, + depth, + findNext, + end, + }; +} +function factoryRule(parent, pattern, findNext, end) { + return factoryRuleBase(parent, pattern, parent.repository, parent.grammar, findNext, end); +} +function normalizeCapture(cap) { + if (cap === undefined) + return undefined; + if (typeof cap === 'string') + return { [0]: cap }; + const capture = Object.create(null); + for (const [key, pat] of Object.entries(cap)) { + capture[key] = typeof pat === 'string' ? pat : normalizePatternName(pat).name; + } + return capture; +} +function makeTestMatchFn(reg) { + if (typeof reg === 'string') + return matchString(reg); + return matchRegExp(reg); +} +function matchString(s) { + return (line) => { + const input = line.text; + const index = input.indexOf(s, line.offset); + if (index < 0) + return undefined; + return (0, matchResult_1.createSimpleMatchResult)(s, input, index, line.lineNumber); + }; +} +function matchRegExp(r) { + return (line) => { + const rg = RegExp(r, 'gm'); + rg.lastIndex = line.offset; + const m = rg.exec(line.text); + return (m && (0, matchResult_1.createMatchResult)(m, line.lineNumber)) ?? undefined; + }; +} +function extractScope(er, isContent = true) { + const scope = []; + for (let rule = er; rule; rule = rule.parent) { + const pattern = rule.pattern; + const { name, contentName } = pattern; + if (contentName && isContent) { + scope.push(contentName); + } + if (name !== undefined) { + scope.push(name); + } + isContent = true; + } + return er.grammar.scopePool.parseScope(scope); +} +exports.extractScope = extractScope; +class ImplNGrammar { + constructor(grammar) { + this.scopeName = grammar.scopeName; + this.name = grammar.scopeName; + this.comment = grammar.comment; + this.disabled = grammar.disabled; + this.grammarName = grammar.name; + const self = nPattern({ + patterns: [{ patterns: grammar.patterns }], + }); + const repository = normalizePatternRepository(grammar.repository); + this.patterns = self.patterns; + this.repository = repository; + this.self = self; + this.scopePool = new scope_1.ScopePool(); + } + begin(parentRule) { + const patterns = this.patterns; + function grammarToRule(grammar, baseGrammar, parent) { + const repository = Object.create(null); + Object.assign(repository, grammar.repository); + repository['$self'] = grammar.self; + repository['$base'] = repository['$base'] || baseGrammar.self; + function findNext(line) { + return findInPatterns(patterns, line, this); + } + function end(_line) { + return undefined; + } + return factoryRuleBase(parent, grammar, repository, grammar, findNext, end); + } + return grammarToRule(this, parentRule?.grammar ?? this, parentRule); + } +} +class ImplNPatternPatterns { + constructor(p) { + const { name, comment, disabled, ...rest } = p; + this.patterns = normalizePatterns(rest.patterns); + this.name = name; + this.comment = comment; + this.disabled = disabled; + } + findMatch(line, parentRule) { + const patterns = this.patterns; + const rule = factoryRule(parentRule, this, findNext); + function findNext(line) { + return findInPatterns(patterns, line, this); + } + return rule.findNext?.(line); + } +} +//# sourceMappingURL=grammarNormalizer.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/grammarTypesHelpers.js b/action/node_modules/cspell-grammar/dist/parser/grammarTypesHelpers.js new file mode 100644 index 000000000..4b6c86d4a --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/grammarTypesHelpers.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isGrammar = exports.isPatternPatterns = exports.isPatternBeginEnd = exports.isPatternMatch = exports.isPatternInclude = void 0; +function isPatternInclude(p) { + return !!p.include; +} +exports.isPatternInclude = isPatternInclude; +const TypeofMatch = { + object: true, + string: true, +}; +const TypeofBegin = TypeofMatch; +const TypeofEnd = { ...TypeofBegin, undefined: true }; +function isPatternMatch(pattern) { + const p = pattern; + return !!p.match && typeof p.match in TypeofMatch; +} +exports.isPatternMatch = isPatternMatch; +function isPatternBeginEnd(pattern) { + const p = pattern; + return p.begin !== undefined && typeof p.begin in TypeofBegin && typeof p.end in TypeofEnd; +} +exports.isPatternBeginEnd = isPatternBeginEnd; +function isPatternPatterns(p) { + return Array.isArray(p.patterns); +} +exports.isPatternPatterns = isPatternPatterns; +function isGrammar(g) { + return g.scopeName !== undefined; +} +exports.isGrammar = isGrammar; +//# sourceMappingURL=grammarTypesHelpers.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/index.js b/action/node_modules/cspell-grammar/dist/parser/index.js new file mode 100644 index 000000000..5e0be9434 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/index.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tokenizeText = exports.tokenizeLine = exports.compileGrammar = void 0; +var grammar_1 = require("./grammar"); +Object.defineProperty(exports, "compileGrammar", { enumerable: true, get: function () { return grammar_1.compileGrammar; } }); +var tokenizeLine_1 = require("./tokenizeLine"); +Object.defineProperty(exports, "tokenizeLine", { enumerable: true, get: function () { return tokenizeLine_1.tokenizeLine; } }); +Object.defineProperty(exports, "tokenizeText", { enumerable: true, get: function () { return tokenizeLine_1.tokenizeText; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/matchResult.js b/action/node_modules/cspell-grammar/dist/parser/matchResult.js new file mode 100644 index 000000000..ef99f39dc --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/matchResult.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createSimpleMatchResult = exports.createMatchResult = exports.segmentMatch = void 0; +/** + * Try to assign group names and numbers to segments of the matching text. + * Note: this is NOT a perfect match. It tries its best given limited information. + * For example, it will give back the wrong indexes for the following RegExp and text: + * `/.+(a(?=p)).+/g.exec('bad apple')`. Group 1 will be the `a` in `bad`, not the `a` in apple. + * @param mr - match result + * @returns a list of matching segments in group number order. + */ +function segmentMatch(mr) { + const { matches, index, groups, input } = mr; + const segments = []; + let p = index; + for (let groupNum = 0; groupNum < matches.length; ++groupNum) { + const m = matches[groupNum]; + if (!m) + continue; + // Look forwards for the next best match. + const idx0 = input.indexOf(m, p); + // try looking backwards if forwards does not work. + const idx = idx0 >= p ? idx0 : input.lastIndexOf(m, p); + if (idx < 0) + continue; + segments.push({ match: m, index: idx, groupNum, groupName: undefined }); + p = idx; + } + const textToSeg = new Map(segments.map((s) => [s.match, s])); + for (const [name, value] of Object.entries(groups)) { + const s = value && textToSeg.get(value); + if (!s) + continue; + s.groupName = s.groupName + ? Array.isArray(s.groupName) + ? s.groupName.concat([name]) + : [s.groupName, name] + : name; + } + return segments; +} +exports.segmentMatch = segmentMatch; +function createMatchResult(r, lineNumber) { + const groups = Object.create(null); + r.groups && Object.assign(groups, r.groups); + const matches = r; + const match = r[0]; + return { index: r.index, input: r.input, match, matches, groups, lineNumber: lineNumber }; +} +exports.createMatchResult = createMatchResult; +function createSimpleMatchResult(match, input, index, lineNumber) { + const groups = Object.create(null); + return { index, input, match, matches: [match], groups, lineNumber }; +} +exports.createSimpleMatchResult = createSimpleMatchResult; +//# sourceMappingURL=matchResult.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/parser.js b/action/node_modules/cspell-grammar/dist/parser/parser.js new file mode 100644 index 000000000..d945d6683 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/parser.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createParser = exports.parseDocument = void 0; +const tokenizeLine_1 = require("./tokenizeLine"); +const cspell_pipe_1 = require("@cspell/cspell-pipe"); +function parseDocument(grammar, _filename, content, emitter = (line) => console.log(line)) { + const r = (0, tokenizeLine_1.tokenizeText)(content, grammar); + const tokens = (0, cspell_pipe_1.pipeSync)(r, (0, cspell_pipe_1.opMap)((tl) => tl.tokens.map((t) => ({ t, l: tl.line }))), (0, cspell_pipe_1.opFlatten)(), (0, cspell_pipe_1.opFilter)((t) => !t.t.scope.value.startsWith('punctuation'))); + for (const { t: token, l: line } of tokens) { + emitter(`${(token.range[2] ?? line.lineNumber) + 1}:${token.range[0] + 1}\t ${JSON.stringify(token.text)}\t ${token.scope.toString()}`); + } +} +exports.parseDocument = parseDocument; +function mapTokenizedLine(tl) { + return tl.tokens.map((t) => ({ + text: t.text, + range: [tl.offset + t.range[0], tl.offset + t.range[1]], + scope: t.scope, + })); +} +function mapTokenizedLines(itl) { + return (0, cspell_pipe_1.pipeSync)(itl, (0, cspell_pipe_1.opMap)(mapTokenizedLine), (0, cspell_pipe_1.opFlatten)()); +} +function createParser(grammar, name, transform = mapTokenizedLines) { + function parse(content, filename) { + const parsedTexts = (0, cspell_pipe_1.pipeSync)((0, tokenizeLine_1.tokenizeTextIterable)(content, grammar), transform); + return { content, filename, parsedTexts }; + } + return { name, parse }; +} +exports.createParser = createParser; +//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/processors/procMatchingRule.js b/action/node_modules/cspell-grammar/dist/parser/processors/procMatchingRule.js new file mode 100644 index 000000000..09ea1564a --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/processors/procMatchingRule.js @@ -0,0 +1,155 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.applyCaptures = exports.applyCaptureToEnd = exports.applyCaptureToBeginOrMatch = void 0; +const grammarNormalizer_1 = require("../grammarNormalizer"); +const matchResult_1 = require("../matchResult"); +const util_1 = require("../util"); +/** + * Apply the scopes to the line + * @param line - line of text + * @param matchRuleResult - the matching rule + */ +function applyCaptureToBeginOrMatch(matchRuleResult) { + const { match, rule } = matchRuleResult; + const bePattern = rule.pattern; + const captures = bePattern.beginCaptures ?? bePattern.captures; + return applyCaptures(rule, match, captures); +} +exports.applyCaptureToBeginOrMatch = applyCaptureToBeginOrMatch; +/** + * Apply the scopes to the line + * @param line - line of text + * @param rule - the matching rule + */ +function applyCaptureToEnd(rule, match) { + const { pattern } = rule; + const bePattern = pattern; + const captures = bePattern.endCaptures ?? bePattern.captures; + return applyCaptures(rule, match, captures); +} +exports.applyCaptureToEnd = applyCaptureToEnd; +/** + * Apply the scopes to the line + * @param line - line of text + * @param rule - the matching rule + */ +function applyCaptures(rule, match, captures) { + const scope = (0, grammarNormalizer_1.extractScope)(rule, false); + const pool = rule.grammar.scopePool; + const text = match.match; + const input = match.input; + const range = [match.index, match.index + text.length, match.lineNumber]; + // Do not emit empty captures. + if (!text && !captures) + return []; + if (!captures) { + const tokenized = { + scope, + text, + range, + }; + return [tokenized]; + } + const captureScopes = new Map(Object.entries(captures)); + const cap0 = captureScopes.get('0'); + // Handle the simple case. + if (captureScopes.size === 1 && cap0) { + const tokenized = { + scope: rule.grammar.scopePool.getScope(cap0, scope), + text, + range, + }; + return [tokenized]; + } + const min = match.index; + const max = match.index + text.length; + function trimSegment(seg) { + const { index, match } = seg; + const right = match.length; + if (index >= min && right <= max) + return seg; + if (index >= max || right < min) + return undefined; + const a = Math.max(index, min) - index; + const b = Math.min(right, max) - index; + const text = match.slice(a, b); + return { + ...seg, + index: index + a, + match: text, + }; + } + const segments = (0, matchResult_1.segmentMatch)(match).map(trimSegment).filter(util_1.isDefined); + function processSegments(segments) { + const base = segments[0]; + const root = { + a: base.index, + b: base.index + base.match.length, + s: { seg: base }, + }; + let m; + for (let i = 1; i < segments.length; ++i) { + const seg = segments[i]; + const index = seg.index; + const end = index + seg.match.length; + m = m && m.a <= index ? m : root; + while (m && m.b <= index) { + m = m.n; + } + while (m && m.a < end) { + if (m.a < index) { + const n = { ...m, a: index }; + m.n = n; + m.b = index; + m = n; + } + if (m.b > end) { + const n = { ...m, a: end }; + m.b = end; + m.n = n; + } + m.s = { seg, next: m.s }; + m = m.n; + } + } + return root; + } + function segChainToScope(chain) { + function* _chain(chain) { + while (chain) { + const seg = chain.seg; + if (seg.groupName) { + if (Array.isArray(seg.groupName)) { + yield* seg.groupName; + } + else { + yield seg.groupName; + } + } + yield seg.groupNum.toString(); + chain = chain.next; + } + } + const scopeValues = [..._chain(chain)] + .map((cap) => captureScopes.get(cap)) + .filter(util_1.isDefined) + .reverse(); + return scopeValues.reduce((s, v) => pool.getScope(v, s), scope); + } + const merged = processSegments(segments); + function* emit(m) { + while (m) { + const t = { + text: input.slice(m.a, m.b), + range: [m.a, m.b, match.lineNumber], + scope: segChainToScope(m.s), + }; + yield t; + m = m.n; + } + } + const parsedText = [...emit(merged)]; + return parsedText; +} +exports.applyCaptures = applyCaptures; +//# sourceMappingURL=procMatchingRule.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/scope.js b/action/node_modules/cspell-grammar/dist/parser/scope.js new file mode 100644 index 000000000..3d623d83b --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/scope.js @@ -0,0 +1,78 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ScopePool = exports.Scope = void 0; +const assert_1 = __importDefault(require("assert")); +class Scope { + constructor(value, parent) { + this.value = value; + this.parent = parent; + } + /** + * Convert the scope hierarchy to a string + * @param ltr - return ancestry from left-to-right + * @returns the scope hierarchy as a string separated by a space. + */ + toString(ltr = false) { + if (!this.parent) + return this.value; + return ltr ? this.parent.toString(ltr) + ' ' + this.value : this.value + ' ' + this.parent.toString(ltr); + } + static isScope(value) { + return value instanceof Scope; + } +} +exports.Scope = Scope; +/** + * A Scope Pool is used to keep the number of scope chains down to a minimum. It ensure that if two scopes match, + * then they will be the same object. + */ +class ScopePool { + constructor() { + this.pool = new Map(); + } + /** + * Get a Scope that matches the scope. This method is idempotent. + * @param scopeValue - a single scope value: i.e. `source.ts` + * @param parent - optional parent Scope + */ + getScope(scopeValue, parent) { + const foundPoolMap = this.pool.get(scopeValue); + const poolMap = foundPoolMap || new Map(); + if (poolMap !== foundPoolMap) { + this.pool.set(scopeValue, poolMap); + } + const foundScope = poolMap.get(parent); + if (foundScope) + return foundScope.v; + const scope = new Scope(scopeValue, parent); + poolMap.set(parent, { v: scope }); + return scope; + } + parseScope(scopes, ltr = false) { + if (Scope.isScope(scopes)) + return scopes; + if (isScopeLike(scopes)) { + const parent = scopes.parent ? this.parseScope(scopes.parent) : undefined; + return this.getScope(scopes.value, parent); + } + return this.parseScopeString(scopes, ltr); + } + parseScopeString(scopes, ltr) { + scopes = Array.isArray(scopes) ? scopes : scopes.split(' '); + const parentToChild = ltr ? scopes : scopes.reverse(); + let parent = undefined; + for (const value of parentToChild) { + parent = this.getScope(value, parent); + } + (0, assert_1.default)(parent, 'Empty scope is not allowed.'); + return parent; + } +} +exports.ScopePool = ScopePool; +function isScopeLike(value) { + return typeof value === 'object' && !Array.isArray(value) && value.value !== undefined; +} +//# sourceMappingURL=scope.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/tokenizeLine.js b/action/node_modules/cspell-grammar/dist/parser/tokenizeLine.js new file mode 100644 index 000000000..890c5b665 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/tokenizeLine.js @@ -0,0 +1,131 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tokenizeTextIterable = exports.tokenizeText = exports.tokenizeLine = void 0; +const assert_1 = __importDefault(require("assert")); +const grammarNormalizer_1 = require("./grammarNormalizer"); +const procMatchingRule_1 = require("./processors/procMatchingRule"); +function tokenizeLine(line, rule) { + const text = line.text; + const lineLen = line.text.length; + const parsedText = []; + let ctx = buildContext({ ...line, offset: 0, anchor: -1 }, rule); + // Note: the begin rule has already been matched and applied. + // Does it need to end or go deeper? + while (ctx.line.offset <= lineLen) { + // We are at an end + let endMatch = ctx.rule.end?.(ctx.line); + while (endMatch?.index === ctx.line.offset) { + parsedText.push(...(0, procMatchingRule_1.applyCaptureToEnd)(ctx.rule, endMatch)); + ctx = findParentWithEnd(ctx); + ctx.line.offset = endMatch.index + endMatch.match.length; + endMatch = ctx.rule.end?.(ctx.line); + } + if (ctx.line.offset >= lineLen) + break; + const { line, rule } = ctx; + const offset = line.offset; + const match = rule.findNext?.(line); + const limit = endMatch?.index ?? lineLen; + const emitTil = match ? Math.min(match.match.index, limit) : limit; + if (offset < emitTil) { + const scope = (0, grammarNormalizer_1.extractScope)(rule); + const start = offset; + const end = emitTil; + parsedText.push({ + scope, + text: text.slice(start, end), + range: [start, end, line.lineNumber], + }); + ctx.line.offset = emitTil; + } + if (!match || (endMatch && endMatch.index <= match.match.index)) { + continue; // We are at an end, process it at the beginning of the loop. + } + // Process the beginning of the match + parsedText.push(...(0, procMatchingRule_1.applyCaptureToBeginOrMatch)(match)); + line.anchor = match.match.index + match.match.match.length; + line.offset = line.anchor; + ctx = findNearestWithEnd(buildContext(line, match.rule)); + } + return toParseLineResult(line, ctx.rule, parsedText); +} +exports.tokenizeLine = tokenizeLine; +function tokenizeText(text, grammar) { + return [...tokenizeTextIterable(text, grammar)]; +} +exports.tokenizeText = tokenizeText; +function* tokenizeTextIterable(text, grammar) { + const lines = text.split(/(?<=\r\n|\n|\r(?!\n))/); + const rule = grammar.begin(); + let documentOffset = 0; + let tr = tokenizeLine({ text: lines[0], lineNumber: 0, documentOffset }, rule); + documentOffset += lines[0].length; + yield toParsedLine(tr); + for (let i = 1; i < lines.length; ++i) { + const line = { text: lines[i], lineNumber: i, documentOffset }; + documentOffset += line.text.length; + tr = tr.parse(line); + yield toParsedLine(tr); + } +} +exports.tokenizeTextIterable = tokenizeTextIterable; +function toParsedLine(pr) { + const { tokens: parsedText, line, offset } = pr; + return { tokens: parsedText, line, offset }; +} +function toParseLineResult(line, rule, parsedText) { + return { + tokens: parsedText, + line, + offset: line.documentOffset, + parse: (line) => tokenizeLine(line, rule), + }; +} +function buildContext(line, rule) { + const rules = calcRuleStack(rule); + const numRules = rules.length; + const rootNum = numRules - 1; + const rootRule = rules[rootNum]; + const rootContext = { + line, + rule: rootRule, + }; + let ctx = rootContext; + for (let i = rootNum - 1; i >= 0; --i) { + const rule = rules[i]; + const line = ctx.line; + ctx = { + line, + rule, + parent: ctx, + }; + // Check while here. + } + return ctx; +} +function calcRuleStack(rule) { + const rules = []; + let r = rule; + while (r) { + rules.push(r); + r = r.parent; + } + return rules; +} +function must(t, msg = 'Must be defined') { + (0, assert_1.default)(t !== undefined && t !== null, msg); + return t; +} +function findParentWithEnd(ctx) { + return findNearestWithEnd(must(ctx.parent)); +} +function findNearestWithEnd(ctx) { + while (!ctx.rule.end) { + ctx = must(ctx.parent); + } + return ctx; +} +//# sourceMappingURL=tokenizeLine.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/types.js b/action/node_modules/cspell-grammar/dist/parser/types.js new file mode 100644 index 000000000..11e638d1e --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/util.js b/action/node_modules/cspell-grammar/dist/parser/util.js new file mode 100644 index 000000000..cc28aeb89 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/util.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isDefined = void 0; +function isDefined(t) { + return t !== undefined && t !== null; +} +exports.isDefined = isDefined; +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parser/validateGrammar.js b/action/node_modules/cspell-grammar/dist/parser/validateGrammar.js new file mode 100644 index 000000000..f45420ac3 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parser/validateGrammar.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateRepository = exports.validateGrammarRepository = exports.validatePattern = exports.validatePatterns = exports.validate = void 0; +const assert_1 = require("assert"); +const util_1 = require("util"); +const grammarTypesHelpers_1 = require("./grammarTypesHelpers"); +function validate(grammar) { + (0, assert_1.strict)(grammar.scopeName); + (0, assert_1.strict)(/^[\w.]*\.\w+$/.test(grammar.scopeName)); + const scopeExt = '.' + grammar.scopeName.split('.').pop(); + const context = { + grammar, + scopeExt, + }; + validatePatterns(grammar.patterns, context); + validateGrammarRepository(grammar, context); +} +exports.validate = validate; +function validatePatterns(patterns, context) { + (0, assert_1.strict)(Array.isArray(patterns)); + patterns.forEach((p) => validatePatternOrReference(p, context)); +} +exports.validatePatterns = validatePatterns; +function validatePatternOrReference(pattern, context) { + if (typeof pattern === 'string') { + (0, assert_1.strict)(/^\$self|\$base|#[\w-]+|[\w.]+$/.test(pattern)); + } + else { + validatePattern(pattern, context); + } +} +function validatePattern(pattern, context) { + (0, assert_1.strict)((0, grammarTypesHelpers_1.isPatternMatch)(pattern) || + (0, grammarTypesHelpers_1.isPatternBeginEnd)(pattern) || + (0, grammarTypesHelpers_1.isPatternInclude)(pattern) || + (0, grammarTypesHelpers_1.isPatternPatterns)(pattern), (0, util_1.format)('Unknown Pattern: %o', pattern)); + (0, assert_1.strict)(!((0, grammarTypesHelpers_1.isPatternBeginEnd)(pattern) && (0, grammarTypesHelpers_1.isPatternMatch)(pattern)), (0, util_1.format)('Pattern must be a Match pattern or a Begin/End pattern, but not both: %o', pattern)); + validatePatternName(pattern, context); +} +exports.validatePattern = validatePattern; +function validateGrammarRepository(p, context) { + p.repository && validateRepository(p.repository, context); +} +exports.validateGrammarRepository = validateGrammarRepository; +function validateRepository(r, context) { + (0, assert_1.strict)(typeof r === 'object'); + for (const [key, pat] of Object.entries(r)) { + (0, assert_1.strict)(/^[\w.-]+$/.test(key), 'Invalid Repository key, must be `a-zA-Z0-9`, `.`, `-`'); + validatePattern(pat, context); + } +} +exports.validateRepository = validateRepository; +function validatePatternName(p, context) { + (0, assert_1.strict)(isValidPatternName(p.name), (0, util_1.format)('Invalid pattern name: %o', p)); + (0, assert_1.strict)(p.name === undefined || p.name.endsWith(context.scopeExt), (0, util_1.format)('Pattern name ending must match grammar scope ending. Grammar scope: "%s"; Pattern: %o', context.grammar.scopeName, p)); +} +function isValidPatternName(name) { + if (name === undefined) + return true; + if (typeof name !== 'string') + return false; + return /^[-\w.]+$/.test(name); +} +//# sourceMappingURL=validateGrammar.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parsers/typescript/TypeScriptParser.js b/action/node_modules/cspell-grammar/dist/parsers/typescript/TypeScriptParser.js new file mode 100644 index 000000000..58ef40c5a --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parsers/typescript/TypeScriptParser.js @@ -0,0 +1,93 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parser = void 0; +const cspell_pipe_1 = require("@cspell/cspell-pipe"); +const __1 = require("../.."); +const typescript_1 = require("../../grammars/typescript"); +const appendMappedText_1 = require("../../mappers/appendMappedText"); +const typescript_2 = require("../../mappers/typescript"); +const parser_1 = require("../../parser/parser"); +const scope_1 = require("../../parser/scope"); +const tsGrammar = (0, __1.compileGrammar)(typescript_1.grammar); +const pool = new scope_1.ScopePool(); +const useScope = new WeakMap(); +function* transform(texts) { + for (const parsed of texts) { + if (doesScopeMatch(parsed.scope, 'constant.character.escape.ts')) { + const mapped = (0, typescript_2.mapRawString)(parsed.text); + const scope = parsed.scope ? pool.parseScope(parsed.scope) : undefined; + yield { + text: mapped.text, + scope: scope?.parent, + map: mapped.map, + range: parsed.range, + }; + continue; + } + yield parsed; + } +} +function* mergeStringResults(results) { + let last; + for (const next of results) { + if (!doesScopeMatch(next.scope, 'string.')) { + if (last) { + yield last; + last = undefined; + } + yield next; + continue; + } + if (!last) { + last = next; + continue; + } + if (next.scope !== last.scope || last.range[1] !== next.range[0]) { + yield last; + last = next; + continue; + } + last = mergeParsedText(last, next); + } + if (last) + yield last; +} +function mergeParsedText(a, b) { + const abT = (0, appendMappedText_1.appendMappedText)(a, b); + const ab = { + text: abT.text, + scope: a.scope, + range: [a.range[0], b.range[1]], + map: abT.map, + delegate: a.delegate, + }; + return ab; +} +function filterScope(scope) { + const cached = useScope.get(scope); + if (cached !== undefined) + return cached; + const value = scope.value; + const use = !value.startsWith('punctuation') && !value.startsWith('keyword.'); + useScope.set(scope, use); + return use; +} +function mapTokenizedLine(tl) { + return tl.tokens + .filter((t) => filterScope(t.scope)) + .map((t) => ({ + text: t.text, + range: [tl.offset + t.range[0], tl.offset + t.range[1]], + scope: t.scope, + })); +} +function mapTokenizedLines(itl) { + return (0, cspell_pipe_1.pipeSync)(itl, (0, cspell_pipe_1.opMap)(mapTokenizedLine), (0, cspell_pipe_1.opFlatten)(), transform, mergeStringResults); +} +exports.parser = (0, parser_1.createParser)(tsGrammar, 'typescript', mapTokenizedLines); +function doesScopeMatch(s, match) { + if (!s) + return false; + return typeof s === 'string' ? s.startsWith(match) : s.value.startsWith(match); +} +//# sourceMappingURL=TypeScriptParser.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/parsers/typescript/index.js b/action/node_modules/cspell-grammar/dist/parsers/typescript/index.js new file mode 100644 index 000000000..6ef7ac71d --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/parsers/typescript/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parser = void 0; +var TypeScriptParser_1 = require("./TypeScriptParser"); +Object.defineProperty(exports, "parser", { enumerable: true, get: function () { return TypeScriptParser_1.parser; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/viewer/escapeMarkdown.js b/action/node_modules/cspell-grammar/dist/viewer/escapeMarkdown.js new file mode 100644 index 000000000..6e3ccca99 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/viewer/escapeMarkdown.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.escapeHtml = exports.escapeMarkdown = void 0; +const matchHtml = /["'&<>]/g; +const matchMarkdown = /[-"'&<>`*_+[\]()\\|~]/g; +const entityMap = { + '<': '<', + '>': '>', + '&': '&', + '"': '"', + "'": ''', +}; +const charCodeToEntity = compileEntities(entityMap); +function escapeMarkdown(text) { + return _escape(text, matchMarkdown); +} +exports.escapeMarkdown = escapeMarkdown; +function escapeHtml(str) { + return _escape(str, matchHtml); +} +exports.escapeHtml = escapeHtml; +function _escape(str, r) { + const cvt = charCodeToEntity; + let lastIndex = 0; + let html = ''; + r.lastIndex = 0; + while (r.test(str)) { + const i = r.lastIndex - 1; + html += str.substring(lastIndex, i) + cvt[str.charCodeAt(i)]; + lastIndex = r.lastIndex; + } + return html + str.substring(lastIndex); +} +function compileEntities(entityMap) { + const result = []; + result.length = 127; + for (let i = 32; i < 128; ++i) { + result[i] = `&#${i};`; + } + for (const [char, entity] of Object.entries(entityMap)) { + result[char.charCodeAt(0)] = entity; + } + return result; +} +//# sourceMappingURL=escapeMarkdown.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/viewer/markdownHelper.js b/action/node_modules/cspell-grammar/dist/viewer/markdownHelper.js new file mode 100644 index 000000000..eda9c7e44 --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/viewer/markdownHelper.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toInlineCode = void 0; +const escapeMarkdown_1 = require("./escapeMarkdown"); +function toInlineCode(text) { + return `${(0, escapeMarkdown_1.escapeMarkdown)(text.replace(/\r/g, '↤').replace(/\n/g, '↩'))}`; +} +exports.toInlineCode = toInlineCode; +//# sourceMappingURL=markdownHelper.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/dist/viewer/visualizeAsMD.js b/action/node_modules/cspell-grammar/dist/viewer/visualizeAsMD.js new file mode 100644 index 000000000..ab45bebdb --- /dev/null +++ b/action/node_modules/cspell-grammar/dist/viewer/visualizeAsMD.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tokenizedLinesToMarkdown = exports.tokenizedLineToMarkdown = exports._tokenizedLineToMarkdown = void 0; +const markdownHelper_1 = require("./markdownHelper"); +function _tokenizedLineToMarkdown(line, indentation = '') { + const markdownLines = []; + const header = `- \`${line.line.lineNumber + 1}\`: ${(0, markdownHelper_1.toInlineCode)(line.line.text)} + + | text | scope | + | --------- | -------------------------------------------------------- |`; + markdownLines.push(...header.split('\n')); + markdownLines.push(...line.tokens.map((t) => ` | ${(0, markdownHelper_1.toInlineCode)(t.text)} | ${t.scope} |`)); + return markdownLines.map((line) => indentation + line).join('\n') + '\n\n'; +} +exports._tokenizedLineToMarkdown = _tokenizedLineToMarkdown; +function tokenizedLineToMarkdown(line, indentation = '') { + const rows = line.tokens.map((t) => `| ${(0, markdownHelper_1.toInlineCode)(t.text)} | ${t.scope} |`); + const detail = `

    +${line.line.lineNumber + 1}: ${(0, markdownHelper_1.toInlineCode)(line.line.text)} + +| text | scope | +| --------- | -------------------------------------------------------- | +${rows.join('\n')} + +
    +`; + const markdownLines = detail.split('\n'); + return (markdownLines + .map((line) => indentation + line) + .map((line) => (line.trim() === '' ? '' : line)) + .join('\n') + '\n\n'); +} +exports.tokenizedLineToMarkdown = tokenizedLineToMarkdown; +function tokenizedLinesToMarkdown(lines, indentation = '') { + return lines.map((line) => tokenizedLineToMarkdown(line, indentation)).join(''); +} +exports.tokenizedLinesToMarkdown = tokenizedLinesToMarkdown; +//# sourceMappingURL=visualizeAsMD.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-grammar/package.json b/action/node_modules/cspell-grammar/package.json new file mode 100644 index 000000000..5e4ad6f48 --- /dev/null +++ b/action/node_modules/cspell-grammar/package.json @@ -0,0 +1,76 @@ +{ + "name": "cspell-grammar", + "version": "6.1.3", + "description": "Grammar parsing support for cspell", + "keywords": [ + "cspell", + "grammar" + ], + "author": "Jason Dent ", + "homepage": "https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-gitignore#readme", + "license": "MIT", + "bin": { + "cspell-grammar": "bin.js" + }, + "main": "dist/index.js", + "directories": { + "dist": "dist" + }, + "typings": "index.d.ts", + "typesVersions": { + "*": { + "*": [ + "dist/*" + ], + "parsers/*": [ + "dist/parsers/*" + ], + "index.d.ts": [ + "dist/index.d.ts" + ] + } + }, + "exports": { + ".": "./dist/index.js", + "./parsers/typescript": "./dist/parsers/typescript/index.js", + "./parsers/typescript/index.js": "./dist/parsers/typescript/index.js" + }, + "files": [ + "dist", + "bin.js", + "!**/__mocks__", + "!**/*.test.*", + "!**/*.spec.*", + "!**/*.map" + ], + "scripts": { + "build": "tsc -p .", + "build-dev": "tsc -p tsconfig.dev.json", + "watch": "tsc -p . -w", + "clean": "rimraf dist coverage .tsbuildinfo", + "clean-build": "npm run clean && npm run build", + "coverage": "jest --coverage", + "test-watch": "jest --watch", + "test": "jest" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/streetsidesoftware/cspell.git" + }, + "bugs": { + "url": "https://github.com/streetsidesoftware/cspell/labels/cspell-grammar" + }, + "engines": { + "node": ">=14" + }, + "devDependencies": { + "@types/node": "^18.0.0", + "jest": "^28.1.1", + "rimraf": "^3.0.2" + }, + "dependencies": { + "@cspell/cspell-pipe": "^6.1.3", + "@cspell/cspell-types": "^6.1.3" + }, + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" +} diff --git a/action/node_modules/cspell-io/package.json b/action/node_modules/cspell-io/package.json index 3f753e6f6..b88fa177b 100644 --- a/action/node_modules/cspell-io/package.json +++ b/action/node_modules/cspell-io/package.json @@ -1,6 +1,6 @@ { "name": "cspell-io", - "version": "6.1.2", + "version": "6.1.3", "description": "A library of useful I/O functions used across various cspell tools.", "main": "dist/index.js", "typings": "dist/index.d.ts", @@ -39,11 +39,11 @@ }, "devDependencies": { "@types/fs-extra": "^9.0.13", - "@types/node": "^17.0.40", + "@types/node": "^18.0.0", "fs-extra": "^10.1.0", "jest": "^28.1.1", - "lorem-ipsum": "^2.0.4", + "lorem-ipsum": "^2.0.8", "rimraf": "^3.0.2" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/cspell-lib/dist/LanguageIds.js b/action/node_modules/cspell-lib/dist/LanguageIds.js index 1451d8946..0423386f2 100644 --- a/action/node_modules/cspell-lib/dist/LanguageIds.js +++ b/action/node_modules/cspell-lib/dist/LanguageIds.js @@ -241,7 +241,6 @@ function doesSetContainAnyOf(setOfIds, languageId) { } function buildLanguageExtensionMapSet(defs) { return defs.reduce((map, def) => { - var _a; function getMapSet(value) { const found = map.get(value); if (found) @@ -254,7 +253,7 @@ function buildLanguageExtensionMapSet(defs) { getMapSet(value).add(def.id); } def.extensions.forEach(addId); - (_a = def.filenames) === null || _a === void 0 ? void 0 : _a.forEach(addId); + def.filenames?.forEach(addId); return map; }, new Map()); } diff --git a/action/node_modules/cspell-lib/dist/Models/TextDocument.js b/action/node_modules/cspell-lib/dist/Models/TextDocument.js index 96d3bd484..43bd16226 100644 --- a/action/node_modules/cspell-lib/dist/Models/TextDocument.js +++ b/action/node_modules/cspell-lib/dist/Models/TextDocument.js @@ -98,7 +98,7 @@ class TextDocumentImpl { * @returns this */ update(edits, version) { - version = version !== null && version !== void 0 ? version : this.version + 1; + version = version ?? this.version + 1; for (const edit of edits) { const vsEdit = edit.range ? { @@ -112,9 +112,9 @@ class TextDocumentImpl { } } function createTextDocument({ uri, content, languageId, locale, version, }) { - version = version !== null && version !== void 0 ? version : 1; + version = version ?? 1; uri = Uri.toUri(uri); - languageId = languageId !== null && languageId !== void 0 ? languageId : (0, LanguageIds_1.getLanguagesForBasename)(Uri.basename(uri)); + languageId = languageId ?? (0, LanguageIds_1.getLanguagesForBasename)(Uri.basename(uri)); languageId = languageId.length === 0 ? 'text' : languageId; return new TextDocumentImpl(uri, content, languageId, locale, version); } diff --git a/action/node_modules/cspell-lib/dist/Settings/CSpellSettingsServer.js b/action/node_modules/cspell-lib/dist/Settings/CSpellSettingsServer.js index 3a029d6d3..d66dacbca 100644 --- a/action/node_modules/cspell-lib/dist/Settings/CSpellSettingsServer.js +++ b/action/node_modules/cspell-lib/dist/Settings/CSpellSettingsServer.js @@ -22,8 +22,12 @@ var __importStar = (this && this.__importStar) || function (mod) { __setModuleDefault(result, mod); return result; }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.__testing__ = exports.extractDependencies = exports.getSources = exports.checkFilenameMatchesGlob = exports.toInternalSettings = exports.finalizeSettings = exports.calcOverrideSettings = exports.mergeInDocSettings = exports.mergeSettings = exports.ENV_CSPELL_GLOB_ROOT = exports.currentSettingsFileVersion = exports.configSettingsFileVersion0_2 = exports.configSettingsFileVersion0_1 = void 0; +const assert_1 = __importDefault(require("assert")); const cspell_glob_1 = require("cspell-glob"); const path = __importStar(require("path")); const CSpellSettingsInternalDef_1 = require("../Models/CSpellSettingsInternalDef"); @@ -116,7 +120,7 @@ function merge(left, right) { const leftId = _left.id || _left.languageId || ''; const rightId = _right.id || _right.languageId || ''; const includeRegExpList = takeRightOtherwiseLeft(_left.includeRegExpList, _right.includeRegExpList); - const optionals = (includeRegExpList === null || includeRegExpList === void 0 ? void 0 : includeRegExpList.length) ? { includeRegExpList } : {}; + const optionals = includeRegExpList?.length ? { includeRegExpList } : {}; const version = max(_left.version, _right.version); const settings = (0, CSpellSettingsInternalDef_1.createCSpellSettingsInternal)({ ..._left, @@ -146,6 +150,7 @@ function merge(left, right) { description: undefined, globRoot: undefined, import: undefined, + plugins: mergeList(_left.plugins, _right.plugins), __imports: mergeImportRefs(_left, _right), __importRef: undefined, }); @@ -176,8 +181,7 @@ function doesLeftHaveRightAncestor(left, right) { return hasAncestor(left, right, 1); } function hasAncestor(s, ancestor, side) { - var _a; - const sources = (_a = s.source) === null || _a === void 0 ? void 0 : _a.sources; + const sources = s.source?.sources; if (!sources) return false; // calc the first or last index of the source array. @@ -194,7 +198,7 @@ function mergeInDocSettings(left, right) { } exports.mergeInDocSettings = mergeInDocSettings; function takeRightOtherwiseLeft(left, right) { - if (right === null || right === void 0 ? void 0 : right.length) { + if (right?.length) { return right; } return left || right; @@ -224,19 +228,19 @@ function _finalizeSettings(settings) { finalized: true, ignoreRegExpList: (0, patterns_1.resolvePatterns)(settings.ignoreRegExpList, settings.patterns), includeRegExpList: (0, patterns_1.resolvePatterns)(settings.includeRegExpList, settings.patterns), + parser: resolveParser(settings), }; finalized.name = 'Finalized ' + (finalized.name || ''); finalized.source = { name: settings.name || 'src', sources: [settings] }; return finalized; } function toInternalSettings(settings) { - var _a; if (settings === undefined) return undefined; if ((0, CSpellSettingsInternalDef_1.isCSpellSettingsInternal)(settings)) return settings; const { dictionaryDefinitions: defs, ...rest } = settings; - const dictionaryDefinitions = (0, DictionarySettings_1.mapDictDefsToInternal)(defs, filenameToDirectory((_a = settings.source) === null || _a === void 0 ? void 0 : _a.filename) || resolveCwd()); + const dictionaryDefinitions = (0, DictionarySettings_1.mapDictDefsToInternal)(defs, filenameToDirectory(settings.source?.filename) || resolveCwd()); const setting = dictionaryDefinitions ? { ...rest, dictionaryDefinitions } : rest; return (0, CSpellSettingsInternalDef_1.createCSpellSettingsInternal)(setting); } @@ -279,11 +283,10 @@ function getSources(settings) { const visited = new Set(); const sources = []; function _walkSourcesTree(settings) { - var _a, _b; if (!settings || visited.has(settings)) return; visited.add(settings); - if (!((_b = (_a = settings.source) === null || _a === void 0 ? void 0 : _a.sources) === null || _b === void 0 ? void 0 : _b.length)) { + if (!settings.source?.sources?.length) { sources.push(settings); return; } @@ -294,7 +297,6 @@ function getSources(settings) { } exports.getSources = getSources; function mergeImportRefs(left, right = {}) { - var _a; const imports = new Map(left.__imports || []); if (left.__importRef) { imports.set(left.__importRef.filename, left.__importRef); @@ -302,7 +304,7 @@ function mergeImportRefs(left, right = {}) { if (right.__importRef) { imports.set(right.__importRef.filename, right.__importRef); } - const rightImports = ((_a = right.__imports) === null || _a === void 0 ? void 0 : _a.values()) || []; + const rightImports = right.__imports?.values() || []; for (const ref of rightImports) { imports.set(ref.filename, ref); } @@ -323,6 +325,39 @@ function resolveCwd() { const cwd = envGlobRoot || process.cwd(); return cwd; } +function resolveParser(settings) { + if (!settings.parser) + return undefined; + if (typeof settings.parser === 'function') + return settings.parser; + const parserName = settings.parser; + (0, assert_1.default)(typeof parserName === 'string'); + const parsers = extractParsers(settings.plugins); + const parser = parsers.get(parserName); + (0, assert_1.default)(parser, `Parser "${parserName}" not found.`); + return parser; +} +const parserCache = new WeakMap(); +const emptyParserMap = new Map(); +function extractParsers(plugins) { + if (!plugins || !plugins.length) + return emptyParserMap; + const found = parserCache.get(plugins); + if (found) + return found; + function* parsers(plugins) { + for (const plugin of plugins) { + if (!plugin.parsers) + continue; + for (const parser of plugin.parsers) { + yield [parser.name, parser]; + } + } + } + const map = new Map(parsers(plugins)); + parserCache.set(plugins, map); + return map; +} exports.__testing__ = { mergeObjects, }; diff --git a/action/node_modules/cspell-lib/dist/Settings/DictionarySettings.js b/action/node_modules/cspell-lib/dist/Settings/DictionarySettings.js index 4e8cce33a..66a400e93 100644 --- a/action/node_modules/cspell-lib/dist/Settings/DictionarySettings.js +++ b/action/node_modules/cspell-lib/dist/Settings/DictionarySettings.js @@ -59,7 +59,7 @@ function fixPath(def) { }; } function mapDictDefsToInternal(defs, pathToSettingsFile) { - return defs === null || defs === void 0 ? void 0 : defs.map((def) => mapDictDefToInternal(def, pathToSettingsFile)); + return defs?.map((def) => mapDictDefToInternal(def, pathToSettingsFile)); } exports.mapDictDefsToInternal = mapDictDefsToInternal; function mapDictDefToInternal(def, pathToSettingsFile) { diff --git a/action/node_modules/cspell-lib/dist/Settings/LanguageSettings.js b/action/node_modules/cspell-lib/dist/Settings/LanguageSettings.js index 6c4fa5d0a..feefcfe5d 100644 --- a/action/node_modules/cspell-lib/dist/Settings/LanguageSettings.js +++ b/action/node_modules/cspell-lib/dist/Settings/LanguageSettings.js @@ -85,8 +85,7 @@ function calcSettingsForLanguage(languageSettings, languageId, locale) { exports.calcSettingsForLanguage = calcSettingsForLanguage; const cacheDoesLanguageSettingMatchLanguageId = new WeakMap(); function doesLanguageSettingMatchLanguageId(s, languageId) { - var _a; - const r = (_a = cacheDoesLanguageSettingMatchLanguageId.get(s)) !== null && _a !== void 0 ? _a : new Map(); + const r = cacheDoesLanguageSettingMatchLanguageId.get(s) ?? new Map(); const f = r.get(languageId); if (f !== undefined) { return f; diff --git a/action/node_modules/cspell-lib/dist/Settings/configLoader.js b/action/node_modules/cspell-lib/dist/Settings/configLoader.js index 1836410c6..4f0031622 100644 --- a/action/node_modules/cspell-lib/dist/Settings/configLoader.js +++ b/action/node_modules/cspell-lib/dist/Settings/configLoader.js @@ -105,7 +105,7 @@ function readConfig(fileRef) { const s = {}; try { const r = cspellConfigExplorerSync.load(filename); - if (!(r === null || r === void 0 ? void 0 : r.config)) + if (!r?.config) throw new Error(`not found: "${filename}"`); Object.assign(s, r.config); normalizeRawConfig(s); @@ -190,7 +190,7 @@ function mergeSourceList(orig, append) { return [...collection.values()]; } function importSettings(fileRef, defaultValues, pnpSettings) { - defaultValues = defaultValues !== null && defaultValues !== void 0 ? defaultValues : defaultSettings; + defaultValues = defaultValues ?? defaultSettings; let { filename } = fileRef; filename = path.resolve(filename); const importRef = { ...fileRef, filename }; @@ -230,10 +230,9 @@ async function normalizeSearchForConfigResultAsync(searchPath, searchResult, pnp return normalizeSearchForConfigResult(searchPath, result, pnpSettings); } function normalizeSearchForConfigResult(searchPath, searchResult, pnpSettings) { - var _a; const error = searchResult instanceof ImportError_1.ImportError ? searchResult : undefined; const result = searchResult instanceof ImportError_1.ImportError ? undefined : searchResult; - const filepath = result === null || result === void 0 ? void 0 : result.filepath; + const filepath = result?.filepath; if (filepath) { const cached = cachedFiles.get(filepath); if (cached) { @@ -245,10 +244,10 @@ function normalizeSearchForConfigResult(searchPath, searchResult, pnpSettings) { } } const { config = (0, CSpellSettingsInternalDef_1.createCSpellSettingsInternal)({}) } = result || {}; - const filename = (_a = result === null || result === void 0 ? void 0 : result.filepath) !== null && _a !== void 0 ? _a : searchPath; + const filename = result?.filepath ?? searchPath; const importRef = { filename: filename, error }; const id = [path.basename(path.dirname(filename)), path.basename(filename)].join('/'); - const name = (result === null || result === void 0 ? void 0 : result.filepath) ? id : `Config not found: ${id}`; + const name = result?.filepath ? id : `Config not found: ${id}`; const finalizeSettings = (0, CSpellSettingsInternalDef_1.createCSpellSettingsInternal)({ id, name, __importRef: importRef }); const settings = { id, ...config }; cachedFiles.set(filename, finalizeSettings); // add an empty entry to prevent circular references. @@ -371,7 +370,6 @@ function clearCachedSettingsFiles() { } exports.clearCachedSettingsFiles = clearCachedSettingsFiles; function mergeImportRefs(left, right = {}) { - var _a; const imports = new Map(left.__imports || []); if (left.__importRef) { imports.set(left.__importRef.filename, left.__importRef); @@ -379,7 +377,7 @@ function mergeImportRefs(left, right = {}) { if (right.__importRef) { imports.set(right.__importRef.filename, right.__importRef); } - const rightImports = ((_a = right.__imports) === null || _a === void 0 ? void 0 : _a.values()) || []; + const rightImports = right.__imports?.values() || []; for (const ref of rightImports) { imports.set(ref.filename, ref); } @@ -394,17 +392,17 @@ function extractImportErrors(settings) { } exports.extractImportErrors = extractImportErrors; function resolveGlobRoot(settings, pathToSettingsFile) { - var _a; const settingsFileDirRaw = path.dirname(pathToSettingsFile); const isVSCode = path.basename(settingsFileDirRaw) === '.vscode'; const settingsFileDir = isVSCode ? path.dirname(settingsFileDirRaw) : settingsFileDirRaw; const envGlobRoot = process.env[CSpellSettingsServer_1.ENV_CSPELL_GLOB_ROOT]; - const defaultGlobRoot = envGlobRoot !== null && envGlobRoot !== void 0 ? envGlobRoot : '${cwd}'; - const rawRoot = (_a = settings.globRoot) !== null && _a !== void 0 ? _a : (settings.version === CSpellSettingsServer_1.configSettingsFileVersion0_1 || - (envGlobRoot && !settings.version) || - (isVSCode && !settings.version) - ? defaultGlobRoot - : settingsFileDir); + const defaultGlobRoot = envGlobRoot ?? '${cwd}'; + const rawRoot = settings.globRoot ?? + (settings.version === CSpellSettingsServer_1.configSettingsFileVersion0_1 || + (envGlobRoot && !settings.version) || + (isVSCode && !settings.version) + ? defaultGlobRoot + : settingsFileDir); const globRoot = rawRoot.startsWith('${cwd}') ? rawRoot : path.resolve(settingsFileDir, rawRoot); return globRoot; } @@ -431,9 +429,8 @@ function toGlobDef(g, root, source) { return g; } function normalizeDictionaryDefs(settings, pathToSettingsFile) { - var _a; const dictionaryDefinitions = (0, DictionarySettings_1.mapDictDefsToInternal)(settings.dictionaryDefinitions, pathToSettingsFile); - const languageSettings = (_a = settings.languageSettings) === null || _a === void 0 ? void 0 : _a.map((langSetting) => util.clean({ + const languageSettings = settings.languageSettings?.map((langSetting) => util.clean({ ...langSetting, dictionaryDefinitions: (0, DictionarySettings_1.mapDictDefsToInternal)(langSetting.dictionaryDefinitions, pathToSettingsFile), })); @@ -443,9 +440,8 @@ function normalizeDictionaryDefs(settings, pathToSettingsFile) { }); } function normalizeOverrides(settings, pathToSettingsFile) { - var _a; const { globRoot = path.dirname(pathToSettingsFile) } = settings; - const overrides = (_a = settings.overrides) === null || _a === void 0 ? void 0 : _a.map((override) => { + const overrides = settings.overrides?.map((override) => { const filename = toGlobDef(override.filename, globRoot, pathToSettingsFile); const { dictionaryDefinitions, languageSettings } = normalizeDictionaryDefs(override, pathToSettingsFile); return util.clean({ diff --git a/action/node_modules/cspell-lib/dist/Settings/link.js b/action/node_modules/cspell-lib/dist/Settings/link.js index c9e25feef..5b31587c0 100644 --- a/action/node_modules/cspell-lib/dist/Settings/link.js +++ b/action/node_modules/cspell-lib/dist/Settings/link.js @@ -72,7 +72,7 @@ function addPathsToGlobalImports(paths) { const error = (0, GlobalSettings_1.writeRawGlobalSettings)(globalSettings); return { success: !error, - error: error === null || error === void 0 ? void 0 : error.message, + error: error?.message, resolvedSettings, }; } @@ -88,7 +88,7 @@ function removePathsFromGlobalImports(paths) { const listResult = listGlobalImports(); const toRemove = new Set(); function matchPackage(pathToRemove) { - return ({ package: pkg, id }) => pathToRemove === (pkg === null || pkg === void 0 ? void 0 : pkg.name) || pathToRemove === id; + return ({ package: pkg, id }) => pathToRemove === pkg?.name || pathToRemove === id; } function compareFilenames(fullPath, partialPath) { if (fullPath === partialPath) @@ -124,16 +124,15 @@ function removePathsFromGlobalImports(paths) { return { success: true, removed: [...toRemove], - error: error === null || error === void 0 ? void 0 : error.toString(), + error: error?.toString(), }; } exports.removePathsFromGlobalImports = removePathsFromGlobalImports; function resolveSettings(filename) { - var _a; const settings = (0, configLoader_1.readRawSettings)(filename); const ref = settings.__importRef; - const resolvedToFilename = ref === null || ref === void 0 ? void 0 : ref.filename; - const error = ((_a = ref === null || ref === void 0 ? void 0 : ref.error) === null || _a === void 0 ? void 0 : _a.message) || (!resolvedToFilename && 'File not Found') || undefined; + const resolvedToFilename = ref?.filename; + const error = ref?.error?.message || (!resolvedToFilename && 'File not Found') || undefined; return (0, util_1.clean)({ filename, resolvedToFilename, diff --git a/action/node_modules/cspell-lib/dist/Settings/pnpLoader.js b/action/node_modules/cspell-lib/dist/Settings/pnpLoader.js index 5a26d33f9..cf188ec9a 100644 --- a/action/node_modules/cspell-lib/dist/Settings/pnpLoader.js +++ b/action/node_modules/cspell-lib/dist/Settings/pnpLoader.js @@ -40,10 +40,9 @@ class PnpLoader { return result; } async peek(uriDirectory) { - var _a; await lock; const cacheKey = this.calcKey(uriDirectory); - return (_a = cachedRequests.get(cacheKey)) !== null && _a !== void 0 ? _a : Promise.resolve(undefined); + return cachedRequests.get(cacheKey) ?? Promise.resolve(undefined); } /** * Request that the nearest .pnp file gets loaded diff --git a/action/node_modules/cspell-lib/dist/SpellingDictionary/DictionaryLoader.js b/action/node_modules/cspell-lib/dist/SpellingDictionary/DictionaryLoader.js index c73269bcf..7eb6d0592 100644 --- a/action/node_modules/cspell-lib/dist/SpellingDictionary/DictionaryLoader.js +++ b/action/node_modules/cspell-lib/dist/SpellingDictionary/DictionaryLoader.js @@ -89,7 +89,7 @@ function loadDictionary(def) { exports.loadDictionary = loadDictionary; function loadDictionarySync(def) { const { key, entry } = getCacheEntry(def); - if ((entry === null || entry === void 0 ? void 0 : entry.dictionary) && entry.loadingState === LoadingState.Loaded) { + if (entry?.dictionary && entry.loadingState === LoadingState.Loaded) { return entry.dictionary; } const loadedEntry = loadEntrySync(def.path, def); @@ -101,7 +101,7 @@ const importantOptionKeys = ['name', 'noSuggest', 'useCompounds', 'type']; function calcKey(def) { const path = def.path; const loaderType = determineType(path, def); - const optValues = importantOptionKeys.map((k) => { var _a; return ((_a = def[k]) === null || _a === void 0 ? void 0 : _a.toString()) || ''; }); + const optValues = importantOptionKeys.map((k) => def[k]?.toString() || ''); const parts = [path, loaderType].concat(optValues); return parts.join('|'); } diff --git a/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryCollection.js b/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryCollection.js index dbb150384..c1feae365 100644 --- a/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryCollection.js +++ b/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryCollection.js @@ -82,7 +82,7 @@ class SpellingDictionaryCollection { this.dictionaries.forEach((dict) => dict.genSuggestions(collector, _suggestOptions)); } getErrors() { - return this.dictionaries.reduce((errors, dict) => { var _a; return errors.concat(((_a = dict.getErrors) === null || _a === void 0 ? void 0 : _a.call(dict)) || []); }, []); + return this.dictionaries.reduce((errors, dict) => errors.concat(dict.getErrors?.() || []), []); } } exports.SpellingDictionaryCollection = SpellingDictionaryCollection; diff --git a/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryFromTrie.js b/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryFromTrie.js index 989885f24..e32a1f5a0 100644 --- a/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryFromTrie.js +++ b/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryFromTrie.js @@ -9,7 +9,6 @@ const util_1 = require("../util/util"); const SpellingDictionaryMethods_1 = require("./SpellingDictionaryMethods"); class SpellingDictionaryFromTrie { constructor(trie, name, options, source = 'from trie', size) { - var _a; this.trie = trie; this.name = name; this.options = options; @@ -20,7 +19,7 @@ class SpellingDictionaryFromTrie { this.type = 'SpellingDictionaryFromTrie'; this._find = (0, Memorizer_1.memorizer)((word, useCompounds, ignoreCase) => this.findAnyForm(word, useCompounds, ignoreCase), SpellingDictionaryFromTrie.cachedWordsLimit); this.mapWord = (0, repMap_1.createMapper)(options.repMap || []); - this.isDictionaryCaseSensitive = (_a = options.caseSensitive) !== null && _a !== void 0 ? _a : !trie.isLegacy; + this.isDictionaryCaseSensitive = options.caseSensitive ?? !trie.isLegacy; this.containsNoSuggestWords = options.noSuggest || false; this._size = size || 0; this.weightMap = options.weightMap || (0, SpellingDictionaryMethods_1.createWeightMapFromDictionaryInformation)(options.dictionaryInformation); @@ -114,10 +113,10 @@ class SpellingDictionaryFromTrie { return collector.suggestions.map((r) => ({ ...r, word: r.word })); } genSuggestions(collector, suggestOptions) { - var _a; if (this.options.noSuggest) return; - const _compoundMethod = (_a = suggestOptions.compoundMethod) !== null && _a !== void 0 ? _a : (this.options.useCompounds ? cspell_trie_lib_1.CompoundWordsMethod.JOIN_WORDS : cspell_trie_lib_1.CompoundWordsMethod.NONE); + const _compoundMethod = suggestOptions.compoundMethod ?? + (this.options.useCompounds ? cspell_trie_lib_1.CompoundWordsMethod.JOIN_WORDS : cspell_trie_lib_1.CompoundWordsMethod.NONE); (0, SpellingDictionaryMethods_1.wordSuggestFormsArray)(collector.word).forEach((w) => this.trie.genSuggestions((0, SpellingDictionaryMethods_1.impersonateCollector)(collector, w), _compoundMethod)); } getErrors() { diff --git a/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryMethods.js b/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryMethods.js index 7e9af4d12..04dac3dc3 100644 --- a/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryMethods.js +++ b/action/node_modules/cspell-lib/dist/SpellingDictionary/SpellingDictionaryMethods.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.__testMethods = exports.createWeightMapFromDictionaryInformation = exports.suggestArgsToSuggestOptions = exports.hasOptionToSearchOption = exports.wordDictionaryFormsCollector = exports.wordSuggestForms = exports.wordSuggestFormsArray = exports.wordSearchForms = exports.wordSearchFormsArray = exports.defaultNumSuggestions = exports.suggestionCollector = exports.impersonateCollector = void 0; +exports.__testMethods__ = exports.createWeightMapFromDictionaryInformation = exports.suggestArgsToSuggestOptions = exports.hasOptionToSearchOption = exports.wordDictionaryFormsCollector = exports.wordSuggestForms = exports.wordSuggestFormsArray = exports.wordSearchForms = exports.defaultNumSuggestions = exports.suggestionCollector = exports.impersonateCollector = void 0; const cspell_trie_lib_1 = require("cspell-trie-lib"); const trie_util_1 = require("cspell-trie-lib/dist/lib/trie-util"); const gensequence_1 = require("gensequence"); @@ -12,7 +12,6 @@ exports.defaultNumSuggestions = 10; function wordSearchFormsArray(word, isDictionaryCaseSensitive, ignoreCase) { return [...wordSearchForms(word, isDictionaryCaseSensitive, ignoreCase)]; } -exports.wordSearchFormsArray = wordSearchFormsArray; function wordSearchForms(word, isDictionaryCaseSensitive, ignoreCase) { const forms = new Set(); word = word.normalize('NFC'); @@ -82,8 +81,9 @@ function wordDictionaryFormsCollector(prefixNoCase) { }; } exports.wordDictionaryFormsCollector = wordDictionaryFormsCollector; +const DEFAULT_HAS_OPTIONS = Object.freeze({}); function hasOptionToSearchOption(opt) { - return !opt ? {} : opt; + return !opt ? DEFAULT_HAS_OPTIONS : opt; } exports.hasOptionToSearchOption = hasOptionToSearchOption; function suggestArgsToSuggestOptions(args) { @@ -105,7 +105,7 @@ function createWeightMapFromDictionaryInformation(di) { return di ? (0, cspell_trie_lib_1.mapDictionaryInformationToWeightMap)(di) : undefined; } exports.createWeightMapFromDictionaryInformation = createWeightMapFromDictionaryInformation; -exports.__testMethods = { +exports.__testMethods__ = { wordSearchForms, wordSearchFormsArray, wordDictionaryForms, diff --git a/action/node_modules/cspell-lib/dist/SpellingDictionary/createSpellingDictionary.js b/action/node_modules/cspell-lib/dist/SpellingDictionary/createSpellingDictionary.js index c319889fc..6bc591a88 100644 --- a/action/node_modules/cspell-lib/dist/SpellingDictionary/createSpellingDictionary.js +++ b/action/node_modules/cspell-lib/dist/SpellingDictionary/createSpellingDictionary.js @@ -45,7 +45,7 @@ function _createSpellingDictionary(params) { function createForbiddenWordsDictionary(wordList, name, source, options) { // console.log(`createSpellingDictionary ${name} ${source}`); const words = (0, cspell_trie_lib_1.parseDictionaryLines)(wordList.concat(wordList.map((a) => a.toLowerCase())), { - stripCaseAndAccents: !(options === null || options === void 0 ? void 0 : options.noSuggest), + stripCaseAndAccents: !options?.noSuggest, }); const forbidWords = gensequence_1.operators.map((w) => '!' + w)(words); const trie = (0, cspell_trie_lib_1.buildTrieFast)(forbidWords); diff --git a/action/node_modules/cspell-lib/dist/spellCheckFile.js b/action/node_modules/cspell-lib/dist/spellCheckFile.js index a3cd9682f..b629a355a 100644 --- a/action/node_modules/cspell-lib/dist/spellCheckFile.js +++ b/action/node_modules/cspell-lib/dist/spellCheckFile.js @@ -69,8 +69,8 @@ async function spellCheckFullDocument(document, options, settings) { return { document, options, - settingsUsed: (prep === null || prep === void 0 ? void 0 : prep.localConfig) || settings, - localConfigFilepath: prep === null || prep === void 0 ? void 0 : prep.localConfigFilepath, + settingsUsed: prep?.localConfig || settings, + localConfigFilepath: prep?.localConfigFilepath, issues: [], checked: false, errors: docValidator.errors, @@ -81,7 +81,7 @@ async function spellCheckFullDocument(document, options, settings) { document, options, settingsUsed: docValidator.getFinalizedDocSettings(), - localConfigFilepath: prep === null || prep === void 0 ? void 0 : prep.localConfigFilepath, + localConfigFilepath: prep?.localConfigFilepath, issues, checked: docValidator.shouldCheckDocument(), errors: undefined, diff --git a/action/node_modules/cspell-lib/dist/suggestions.js b/action/node_modules/cspell-lib/dist/suggestions.js index 40bd4ff02..0ed1fc081 100644 --- a/action/node_modules/cspell-lib/dist/suggestions.js +++ b/action/node_modules/cspell-lib/dist/suggestions.js @@ -35,21 +35,19 @@ async function* suggestionsForWords(words, options, settings = {}) { } exports.suggestionsForWords = suggestionsForWords; async function suggestionsForWord(word, options, settings = {}) { - var _a; const { languageId, locale: language, strict = true, numChanges = 4, numSuggestions = 8, includeTies = true, includeDefaultConfig = true, dictionaries, } = options || {}; const ignoreCase = !strict; async function determineDictionaries(config) { - var _a, _b; const withLocale = (0, Settings_1.mergeSettings)(config, util.clean({ language: language || config.language, // dictionaries: dictionaries?.length ? dictionaries : config.dictionaries, })); - const withLanguageId = (0, LanguageSettings_1.calcSettingsForLanguageId)(withLocale, (_a = languageId !== null && languageId !== void 0 ? languageId : withLocale.languageId) !== null && _a !== void 0 ? _a : 'plaintext'); + const withLanguageId = (0, LanguageSettings_1.calcSettingsForLanguageId)(withLocale, languageId ?? withLocale.languageId ?? 'plaintext'); const settings = (0, Settings_1.finalizeSettings)(withLanguageId); - settings.dictionaries = (dictionaries === null || dictionaries === void 0 ? void 0 : dictionaries.length) ? dictionaries : settings.dictionaries || []; + settings.dictionaries = dictionaries?.length ? dictionaries : settings.dictionaries || []; validateDictionaries(settings, dictionaries); const dictionaryCollection = await (0, SpellingDictionary_1.getDictionaryInternal)(settings); - settings.dictionaries = ((_b = settings.dictionaryDefinitions) === null || _b === void 0 ? void 0 : _b.map((def) => def.name)) || []; + settings.dictionaries = settings.dictionaryDefinitions?.map((def) => def.name) || []; const allDictionaryCollection = await (0, SpellingDictionary_1.getDictionaryInternal)(settings); return { dictionaryCollection, @@ -58,7 +56,7 @@ async function suggestionsForWord(word, options, settings = {}) { } await (0, SpellingDictionary_1.refreshDictionaryCache)(); const config = includeDefaultConfig - ? (0, Settings_1.mergeSettings)((0, Settings_1.getDefaultSettings)((_a = settings.loadDefaultConfiguration) !== null && _a !== void 0 ? _a : true), (0, Settings_1.getGlobalSettings)(), settings) + ? (0, Settings_1.mergeSettings)((0, Settings_1.getDefaultSettings)(settings.loadDefaultConfiguration ?? true), (0, Settings_1.getGlobalSettings)(), settings) : settings; const { dictionaryCollection, allDictionaryCollection } = await determineDictionaries(config); const opts = { ignoreCase, numChanges, numSuggestions, includeTies }; @@ -69,8 +67,8 @@ async function suggestionsForWord(word, options, settings = {}) { const found = allDictionaryCollection.find(sug.word, findOpts); return { ...sug, - forbidden: (found === null || found === void 0 ? void 0 : found.forbidden) || false, - noSuggest: (found === null || found === void 0 ? void 0 : found.noSuggest) || false, + forbidden: found?.forbidden || false, + noSuggest: found?.noSuggest || false, }; }); return { @@ -92,8 +90,7 @@ function combine(suggestions) { return [...words.values()]; } function limitResults(suggestions, numSuggestions, includeTies) { - var _a; - let cost = (_a = suggestions[0]) === null || _a === void 0 ? void 0 : _a.cost; + let cost = suggestions[0]?.cost; let i = 0; for (; i < suggestions.length; ++i) { if (i >= numSuggestions && (!includeTies || suggestions[i].cost > cost)) { @@ -104,10 +101,9 @@ function limitResults(suggestions, numSuggestions, includeTies) { return suggestions.slice(0, i); } function validateDictionaries(settings, dictionaries) { - var _a; - if (!(dictionaries === null || dictionaries === void 0 ? void 0 : dictionaries.length)) + if (!dictionaries?.length) return; - const knownDicts = new Set(((_a = settings.dictionaryDefinitions) === null || _a === void 0 ? void 0 : _a.map((def) => def.name)) || []); + const knownDicts = new Set(settings.dictionaryDefinitions?.map((def) => def.name) || []); for (const dict of dictionaries) { if (!knownDicts.has(dict)) { throw new SuggestionError(`Unknown dictionary: "${dict}"`, 'E_dictionary_unknown'); diff --git a/action/node_modules/cspell-lib/dist/textValidation/ValidationTypes.js b/action/node_modules/cspell-lib/dist/textValidation/ValidationTypes.js new file mode 100644 index 000000000..fdcd29a96 --- /dev/null +++ b/action/node_modules/cspell-lib/dist/textValidation/ValidationTypes.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=ValidationTypes.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-lib/dist/textValidation/determineTextDocumentSettings.js b/action/node_modules/cspell-lib/dist/textValidation/determineTextDocumentSettings.js index f9e5949bf..af526f666 100644 --- a/action/node_modules/cspell-lib/dist/textValidation/determineTextDocumentSettings.js +++ b/action/node_modules/cspell-lib/dist/textValidation/determineTextDocumentSettings.js @@ -41,11 +41,10 @@ const TextDocumentSettings_1 = require("../Settings/TextDocumentSettings"); * @param settings - The near final settings. Should already be the combination of all configuration files. */ function determineTextDocumentSettings(doc, settings) { - var _a, _b; const filename = doc.uri.fsPath; - const settingsWithDefaults = (0, Settings_1.mergeSettings)((0, Settings_1.getDefaultSettings)((_a = settings.loadDefaultConfiguration) !== null && _a !== void 0 ? _a : true), (0, Settings_1.getGlobalSettings)(), settings); + const settingsWithDefaults = (0, Settings_1.mergeSettings)((0, Settings_1.getDefaultSettings)(settings.loadDefaultConfiguration ?? true), (0, Settings_1.getGlobalSettings)(), settings); const fileSettings = (0, Settings_1.calcOverrideSettings)(settingsWithDefaults, filename); - const languageIds = ((_b = fileSettings === null || fileSettings === void 0 ? void 0 : fileSettings.languageId) === null || _b === void 0 ? void 0 : _b.length) + const languageIds = fileSettings?.languageId?.length ? fileSettings.languageId : doc.languageId ? doc.languageId diff --git a/action/node_modules/cspell-lib/dist/textValidation/docValidator.js b/action/node_modules/cspell-lib/dist/textValidation/docValidator.js index b3451c296..14df58349 100644 --- a/action/node_modules/cspell-lib/dist/textValidation/docValidator.js +++ b/action/node_modules/cspell-lib/dist/textValidation/docValidator.js @@ -17,6 +17,8 @@ const simpleCache_1 = require("../util/simpleCache"); const timer_1 = require("../util/timer"); const util_1 = require("../util/util"); const determineTextDocumentSettings_1 = require("./determineTextDocumentSettings"); +const lineValidatorFactory_1 = require("./lineValidatorFactory"); +const parsedText_1 = require("./parsedText"); const textValidator_1 = require("./textValidator"); const validator_1 = require("./validator"); const ERROR_NOT_PREPARED = 'Validator Must be prepared before calling this function.'; @@ -39,7 +41,6 @@ class DocumentValidator { return this._ready; } prepareSync() { - var _a, _b, _c; // @todo // Determine doc settings. // Calc include ranges @@ -55,29 +56,30 @@ class DocumentValidator { : useSearchForConfig ? this.errorCatcherWrapper(() => searchForDocumentConfigSync(this._document, settings, settings)) : undefined; - this.addPossibleError((_a = localConfig === null || localConfig === void 0 ? void 0 : localConfig.__importRef) === null || _a === void 0 ? void 0 : _a.error); + this.addPossibleError(localConfig?.__importRef?.error); const config = (0, Settings_1.mergeSettings)(settings, localConfig); const docSettings = (0, determineTextDocumentSettings_1.determineTextDocumentSettings)(this._document, config); const dict = (0, SpellingDictionary_1.getDictionaryInternalSync)(docSettings); - const matcher = new cspell_glob_1.GlobMatcher((localConfig === null || localConfig === void 0 ? void 0 : localConfig.ignorePaths) || [], { root: process.cwd(), dot: true }); + const matcher = new cspell_glob_1.GlobMatcher(localConfig?.ignorePaths || [], { root: process.cwd(), dot: true }); const uri = this._document.uri; - const shouldCheck = !matcher.match(uri.fsPath) && ((_b = docSettings.enabled) !== null && _b !== void 0 ? _b : true); + const shouldCheck = !matcher.match(uri.fsPath) && (docSettings.enabled ?? true); const finalSettings = (0, Settings_1.finalizeSettings)(docSettings); const validateOptions = (0, validator_1.settingsToValidateOptions)(finalSettings); const includeRanges = (0, textValidator_1.calcTextInclusionRanges)(this._document.text, validateOptions); - const segmenter = (0, textValidator_1.mapLineSegmentAgainstRangesFactory)(includeRanges); - const lineValidator = (0, textValidator_1.lineValidatorFactory)(dict, validateOptions); + const segmenter = (0, parsedText_1.createMappedTextSegmenter)(includeRanges); + const textValidator = (0, lineValidatorFactory_1.textValidatorFactory)(dict, validateOptions); this._preparations = { config, dictionary: dict, docSettings, + finalSettings, shouldCheck, validateOptions, includeRanges, segmenter, - lineValidator, + textValidator, localConfig, - localConfigFilepath: (_c = localConfig === null || localConfig === void 0 ? void 0 : localConfig.__importRef) === null || _c === void 0 ? void 0 : _c.filename, + localConfigFilepath: localConfig?.__importRef?.filename, }; this._ready = true; this._preparationTime = timer.elapsed(); @@ -92,7 +94,6 @@ class DocumentValidator { return this._prepared; } async _prepareAsync() { - var _a, _b, _c; (0, assert_1.default)(!this._ready); const timer = (0, timer_1.createTimer)(); const { options, settings } = this; @@ -103,46 +104,46 @@ class DocumentValidator { ? this.catchError(searchForDocumentConfig(this._document, settings, settings)) : undefined; const localConfig = (await pLocalConfig) || {}; - this.addPossibleError((_a = localConfig === null || localConfig === void 0 ? void 0 : localConfig.__importRef) === null || _a === void 0 ? void 0 : _a.error); + this.addPossibleError(localConfig?.__importRef?.error); const config = (0, Settings_1.mergeSettings)(settings, localConfig); const docSettings = (0, determineTextDocumentSettings_1.determineTextDocumentSettings)(this._document, config); const dict = await (0, SpellingDictionary_1.getDictionaryInternal)(docSettings); - const matcher = new cspell_glob_1.GlobMatcher((localConfig === null || localConfig === void 0 ? void 0 : localConfig.ignorePaths) || [], { root: process.cwd(), dot: true }); + const matcher = new cspell_glob_1.GlobMatcher(localConfig?.ignorePaths || [], { root: process.cwd(), dot: true }); const uri = this._document.uri; - const shouldCheck = !matcher.match(uri.fsPath) && ((_b = docSettings.enabled) !== null && _b !== void 0 ? _b : true); + const shouldCheck = !matcher.match(uri.fsPath) && (docSettings.enabled ?? true); const finalSettings = (0, Settings_1.finalizeSettings)(docSettings); const validateOptions = (0, validator_1.settingsToValidateOptions)(finalSettings); const includeRanges = (0, textValidator_1.calcTextInclusionRanges)(this._document.text, validateOptions); - const segmenter = (0, textValidator_1.mapLineSegmentAgainstRangesFactory)(includeRanges); - const lineValidator = (0, textValidator_1.lineValidatorFactory)(dict, validateOptions); + const segmenter = (0, parsedText_1.createMappedTextSegmenter)(includeRanges); + const textValidator = (0, lineValidatorFactory_1.textValidatorFactory)(dict, validateOptions); this._preparations = { config, dictionary: dict, docSettings, + finalSettings, shouldCheck, validateOptions, includeRanges, segmenter, - lineValidator, + textValidator, localConfig, - localConfigFilepath: (_c = localConfig === null || localConfig === void 0 ? void 0 : localConfig.__importRef) === null || _c === void 0 ? void 0 : _c.filename, + localConfigFilepath: localConfig?.__importRef?.filename, }; this._ready = true; this._preparationTime = timer.elapsed(); } _updatePrep() { - var _a; (0, assert_1.default)(this._preparations, ERROR_NOT_PREPARED); const timer = (0, timer_1.createTimer)(); const prep = this._preparations; const docSettings = (0, determineTextDocumentSettings_1.determineTextDocumentSettings)(this._document, prep.config); const dict = (0, SpellingDictionary_1.getDictionaryInternalSync)(docSettings); - const shouldCheck = (_a = docSettings.enabled) !== null && _a !== void 0 ? _a : true; + const shouldCheck = docSettings.enabled ?? true; const finalSettings = (0, Settings_1.finalizeSettings)(docSettings); const validateOptions = (0, validator_1.settingsToValidateOptions)(finalSettings); const includeRanges = (0, textValidator_1.calcTextInclusionRanges)(this._document.text, validateOptions); - const segmenter = (0, textValidator_1.mapLineSegmentAgainstRangesFactory)(includeRanges); - const lineValidator = (0, textValidator_1.lineValidatorFactory)(dict, validateOptions); + const segmenter = (0, parsedText_1.createMappedTextSegmenter)(includeRanges); + const textValidator = (0, lineValidatorFactory_1.textValidatorFactory)(dict, validateOptions); this._preparations = { ...prep, dictionary: dict, @@ -151,7 +152,7 @@ class DocumentValidator { validateOptions, includeRanges, segmenter, - lineValidator, + textValidator, }; this._preparationTime = timer.elapsed(); } @@ -163,27 +164,28 @@ class DocumentValidator { } checkText(range, _text, scope) { const text = this._document.text.slice(range[0], range[1]); - return this.check({ text, range, scope }); + return this.check({ text, range, scope: scope.join(' ') }); } check(parsedText) { (0, assert_1.default)(this._ready); (0, assert_1.default)(this._preparations, ERROR_NOT_PREPARED); - const { range, text } = parsedText; - const { segmenter, lineValidator } = this._preparations; + const { segmenter, textValidator } = this._preparations; // Determine settings for text range // Slice text based upon include ranges // Check text against dictionaries. - const offset = range[0]; - const line = this._document.lineAt(offset); - const lineSeg = { - line, - segment: { - text, - offset, - }, - }; - const aIssues = (0, cspell_pipe_1.pipeSync)(segmenter(lineSeg), (0, cspell_pipe_1.opConcatMap)(lineValidator)); - const issues = [...aIssues]; + const document = this._document; + let line = undefined; + function mapToIssue(issue) { + const { range, text, isFlagged, isFound } = issue; + const offset = range[0]; + const length = range[1] - range[0]; + (0, assert_1.default)(!line || line.offset <= offset); + if (!line || line.offset + line.text.length <= offset) { + line = document.lineAt(offset); + } + return { text, offset, line, length, isFlagged, isFound }; + } + const issues = [...(0, cspell_pipe_1.pipeSync)(segmenter(parsedText), (0, cspell_pipe_1.opConcatMap)(textValidator), (0, cspell_pipe_1.opMap)(mapToIssue))]; if (!this.options.generateSuggestions) { return issues; } @@ -198,7 +200,7 @@ class DocumentValidator { checkDocument(forceCheck = false) { (0, assert_1.default)(this._ready); (0, assert_1.default)(this._preparations, ERROR_NOT_PREPARED); - return forceCheck || this.shouldCheckDocument() ? [...this.checkDocumentLines()] : []; + return forceCheck || this.shouldCheckDocument() ? [...this._checkParsedText(this._parse())] : []; } get document() { return this._document; @@ -207,15 +209,20 @@ class DocumentValidator { (0, TextDocument_1.updateTextDocument)(this._document, [{ text }]); this._updatePrep(); } - *checkDocumentLines() { + defaultParser() { + return (0, cspell_pipe_1.pipeSync)(this.document.getLines(), (0, cspell_pipe_1.opMap)((line) => { + const { text, offset } = line; + const range = [offset, offset + text.length]; + return { text, range }; + })); + } + *_checkParsedText(parsedTexts) { (0, assert_1.default)(this._preparations, ERROR_NOT_PREPARED); const { maxNumberOfProblems = textValidator_1.defaultMaxNumberOfProblems, maxDuplicateProblems = textValidator_1.defaultMaxDuplicateProblems } = this._preparations.validateOptions; let numProblems = 0; const mapOfProblems = new Map(); - for (const line of this.document.getLines()) { - const { text, offset } = line; - const range = [offset, offset + text.length]; - for (const issue of this.check({ text, range })) { + for (const pText of parsedTexts) { + for (const issue of this.check(pText)) { const { text } = issue; const n = (mapOfProblems.get(text) || 0) + 1; mapOfProblems.set(text, n); @@ -247,11 +254,17 @@ class DocumentValidator { } return undefined; } + _parse() { + (0, assert_1.default)(this._preparations, ERROR_NOT_PREPARED); + const parser = this._preparations.finalSettings.parser; + if (typeof parser !== 'object') + return this.defaultParser(); + return parser.parse(this.document.text, this.document.uri.path).parsedTexts; + } suggest(text) { return this._suggestions.get(text); } genSuggestions(text) { - var _a; (0, assert_1.default)(this._preparations, ERROR_NOT_PREPARED); const settings = this._preparations.docSettings; const dict = this._preparations.dictionary; @@ -259,7 +272,7 @@ class DocumentValidator { compoundMethod: 0, numSuggestions: this.options.numSuggestions, includeTies: false, - ignoreCase: !((_a = settings.caseSensitive) !== null && _a !== void 0 ? _a : false), + ignoreCase: !(settings.caseSensitive ?? false), timeout: settings.suggestionsTimeout, numChanges: settings.suggestionNumChanges, }); diff --git a/action/node_modules/cspell-lib/dist/textValidation/isWordValid.js b/action/node_modules/cspell-lib/dist/textValidation/isWordValid.js new file mode 100644 index 000000000..9ac64cdcf --- /dev/null +++ b/action/node_modules/cspell-lib/dist/textValidation/isWordValid.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.__testing__ = exports.isWordValidWithEscapeRetry = exports.hasWordCheck = void 0; +function hasWordCheck(dict, word, options) { + word = word.replace(/\\/g, ''); + return dict.has(word, options); +} +exports.hasWordCheck = hasWordCheck; +function isWordValidWithEscapeRetry(dict, wo, line, options) { + const firstTry = hasWordCheck(dict, wo.text, options); + return (firstTry || + // Drop the first letter if it is preceded by a '\'. + (line.text[wo.offset - line.offset - 1] === '\\' && hasWordCheck(dict, wo.text.slice(1), options))); +} +exports.isWordValidWithEscapeRetry = isWordValidWithEscapeRetry; +exports.__testing__ = { + hasWordCheck, +}; +//# sourceMappingURL=isWordValid.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-lib/dist/textValidation/lineValidatorFactory.js b/action/node_modules/cspell-lib/dist/textValidation/lineValidatorFactory.js new file mode 100644 index 000000000..ca1b706b2 --- /dev/null +++ b/action/node_modules/cspell-lib/dist/textValidation/lineValidatorFactory.js @@ -0,0 +1,145 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.textValidatorFactory = exports.lineValidatorFactory = void 0; +const cspell_pipe_1 = require("@cspell/cspell-pipe"); +const gensequence_1 = require("gensequence"); +const RxPat = __importStar(require("../Settings/RegExpPatterns")); +const Text = __importStar(require("../util/text")); +const util_1 = require("../util/util"); +const wordSplitter_1 = require("../util/wordSplitter"); +const textValidator_1 = require("./textValidator"); +const isWordValid_1 = require("./isWordValid"); +const parsedText_1 = require("./parsedText"); +function lineValidatorFactory(dict, options) { + const { minWordLength = textValidator_1.defaultMinWordLength, flagWords = [], allowCompoundWords = false, ignoreCase = true, } = options; + const hasWordOptions = { + ignoreCase, + useCompounds: allowCompoundWords || undefined, // let the dictionaries decide on useCompounds if allow is false + }; + const dictCol = dict; + const setOfFlagWords = new Set(flagWords); + const setOfKnownSuccessfulWords = new Set(); + const rememberFilter = (fn) => (v) => { + const keep = fn(v); + if (!keep) { + setOfKnownSuccessfulWords.add(v.text); + } + return keep; + }; + const filterAlreadyChecked = (wo) => { + return !setOfKnownSuccessfulWords.has(wo.text); + }; + function testForFlaggedWord(wo) { + const text = wo.text; + return setOfFlagWords.has(text) || setOfFlagWords.has(text.toLowerCase()) || dictCol.isForbidden(text); + } + function isWordIgnored(word) { + return dict.isNoSuggestWord(word, options); + } + function isWordFlagged(word) { + const isIgnored = isWordIgnored(word.text); + const isFlagged = !isIgnored && testForFlaggedWord(word); + return isFlagged; + } + function checkFlagWords(word) { + word.isFlagged = isWordFlagged(word); + return word; + } + function checkWord(word, options) { + const isIgnored = isWordIgnored(word.text); + const { isFlagged = !isIgnored && testForFlaggedWord(word) } = word; + const isFound = isFlagged + ? undefined + : isIgnored || (0, isWordValid_1.isWordValidWithEscapeRetry)(dictCol, word, word.line, options); + return (0, util_1.clean)({ ...word, isFlagged, isFound }); + } + const fn = (lineSegment) => { + function splitterIsValid(word) { + return (setOfKnownSuccessfulWords.has(word.text) || + (!testForFlaggedWord(word) && + (0, isWordValid_1.isWordValidWithEscapeRetry)(dictCol, word, lineSegment.line, hasWordOptions))); + } + function checkFullWord(vr) { + if (vr.isFlagged) { + return [vr]; + } + const codeWordResults = (0, cspell_pipe_1.toArray)((0, cspell_pipe_1.pipeSync)(Text.extractWordsFromCodeTextOffset(vr), (0, cspell_pipe_1.opFilter)(filterAlreadyChecked), (0, cspell_pipe_1.opMap)((t) => ({ ...t, line: vr.line })), (0, cspell_pipe_1.opMap)(checkFlagWords), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => wo.text.length >= minWordLength || !!wo.isFlagged)), (0, cspell_pipe_1.opMap)((wo) => (wo.isFlagged ? wo : checkWord(wo, hasWordOptions))), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => wo.isFlagged || !wo.isFound)), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => !RxPat.regExRepeatedChar.test(wo.text))), + // get back the original text. + (0, cspell_pipe_1.opMap)((wo) => ({ + ...wo, + text: Text.extractText(lineSegment.segment, wo.offset, wo.offset + wo.text.length), + })))); + if (!codeWordResults.length || isWordIgnored(vr.text) || checkWord(vr, hasWordOptions).isFound) { + rememberFilter((_) => false)(vr); + return []; + } + return codeWordResults; + } + function checkPossibleWords(possibleWord) { + if (isWordFlagged(possibleWord)) { + const vr = { + ...possibleWord, + line: lineSegment.line, + isFlagged: true, + }; + return [vr]; + } + const mismatches = (0, cspell_pipe_1.toArray)((0, cspell_pipe_1.pipeSync)(Text.extractWordsFromTextOffset(possibleWord), (0, cspell_pipe_1.opFilter)(filterAlreadyChecked), (0, cspell_pipe_1.opMap)((wo) => ({ ...wo, line: lineSegment.line })), (0, cspell_pipe_1.opMap)(checkFlagWords), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => wo.text.length >= minWordLength || !!wo.isFlagged)), (0, cspell_pipe_1.opConcatMap)(checkFullWord))); + if (mismatches.length) { + // Try the more expensive word splitter + const splitResult = (0, wordSplitter_1.split)(lineSegment.segment, possibleWord.offset, splitterIsValid); + const nonMatching = splitResult.words.filter((w) => !w.isFound); + if (nonMatching.length < mismatches.length) { + return nonMatching.map((w) => ({ ...w, line: lineSegment.line })).map(checkFlagWords); + } + } + return mismatches; + } + const checkedPossibleWords = (0, gensequence_1.genSequence)((0, cspell_pipe_1.pipeSync)(Text.extractPossibleWordsFromTextOffset(lineSegment.segment), (0, cspell_pipe_1.opFilter)(filterAlreadyChecked), (0, cspell_pipe_1.opConcatMap)(checkPossibleWords))); + return checkedPossibleWords; + }; + return fn; +} +exports.lineValidatorFactory = lineValidatorFactory; +function textValidatorFactory(dict, options) { + const lineValidator = lineValidatorFactory(dict, options); + function validator(pText) { + const { text, range: srcRange, map } = pText; + const srcOffset = srcRange[0]; + const segment = { text, offset: 0 }; + const lineSegment = { line: segment, segment }; + function mapBackToOriginSimple(vr) { + const { text, offset, isFlagged, isFound } = vr; + const r = (0, parsedText_1.mapRangeBackToOriginalPos)([offset, offset + text.length], map); + const range = [r[0] + srcOffset, r[1] + srcOffset]; + return { text, range, isFlagged, isFound }; + } + return [...lineValidator(lineSegment)].map(mapBackToOriginSimple); + } + return validator; +} +exports.textValidatorFactory = textValidatorFactory; +//# sourceMappingURL=lineValidatorFactory.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-lib/dist/textValidation/parsedText.js b/action/node_modules/cspell-lib/dist/textValidation/parsedText.js index b5fcbeb06..968a61f28 100644 --- a/action/node_modules/cspell-lib/dist/textValidation/parsedText.js +++ b/action/node_modules/cspell-lib/dist/textValidation/parsedText.js @@ -1,25 +1,25 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.mapRangeBackToOriginalPos = exports.mapIssueBackToOriginalPos = void 0; -function mapIssueBackToOriginalPos(parsedText, issue) { - if (!parsedText.map || parsedText.map.length === 0) +exports.createMappedTextSegmenter = exports.mapRangeToLocal = exports.mapRangeBackToOriginalPos = exports.mapIssueBackToOriginalPos = void 0; +const TextMap_1 = require("../util/TextMap"); +function mapIssueBackToOriginalPos(mappedText, issue) { + if (!mappedText.map || mappedText.map.length === 0) return issue; - const textOff = mapTextOffsetBackToOriginalPos(parsedText, issue); + const textOff = mapTextOffsetBackToOriginalPos(mappedText, issue); return { ...issue, ...textOff, }; } exports.mapIssueBackToOriginalPos = mapIssueBackToOriginalPos; -function mapTextOffsetBackToOriginalPos(parsedText, textOff) { - var _a; - if (!parsedText.map || !parsedText.map.length) +function mapTextOffsetBackToOriginalPos(mappedText, textOff) { + if (!mappedText.map || !mappedText.map.length) return textOff; - const off = textOff.offset - parsedText.range[0]; - const range = mapRangeBackToOriginalPos([off, off + ((_a = textOff.length) !== null && _a !== void 0 ? _a : textOff.text.length)], parsedText.map); + const off = textOff.offset - mappedText.range[0]; + const range = mapRangeBackToOriginalPos([off, off + (textOff.length ?? textOff.text.length)], mappedText.map); return { text: textOff.text, - offset: parsedText.range[0] + range[0], + offset: mappedText.range[0] + range[0], length: range[1] - range[0], }; } @@ -43,4 +43,68 @@ function mapRangeBackToOriginalPos(offRange, map) { return [iA, iB]; } exports.mapRangeBackToOriginalPos = mapRangeBackToOriginalPos; +function mapRangeToLocal(rangeOrig, map) { + if (!map || !map.length) + return rangeOrig; + const [start, end] = rangeOrig; + let i = 0, j = 0, p = 0; + while (p < map.length && map[p] < start) { + i = map[p]; + j = map[p + 1]; + p += 2; + } + const jA = start - i + j; + while (p < map.length && map[p] < end) { + i = map[p]; + j = map[p + 1]; + p += 2; + } + const jB = end - i + j; + return [jA, jB]; +} +exports.mapRangeToLocal = mapRangeToLocal; +/** + * Factory to create a segmentation function that will segment MappedText against a set of includeRanges. + * The function produced is optimized for forward scanning. It will perform poorly for randomly ordered offsets. + * @param includeRanges Allowed ranges for words. + */ +function createMappedTextSegmenter(includeRanges) { + let rangePos = 0; + function* segmenter(pText) { + if (!includeRanges.length) { + return; + } + const range = pText.range; + const textEndPos = range[1]; + let textStartPos = range[0]; + while (rangePos && (rangePos >= includeRanges.length || includeRanges[rangePos].startPos > textStartPos)) { + rangePos -= 1; + } + const cur = includeRanges[rangePos]; + if (textEndPos <= cur.endPos && textStartPos >= cur.startPos) { + yield pText; + return; + } + while (textStartPos < textEndPos) { + while (includeRanges[rangePos] && includeRanges[rangePos].endPos <= textStartPos) { + rangePos += 1; + } + if (!includeRanges[rangePos]) { + break; + } + const { startPos, endPos } = includeRanges[rangePos]; + if (textEndPos < startPos) { + break; + } + const a = Math.max(textStartPos, startPos); + const b = Math.min(textEndPos, endPos); + if (a !== b) { + yield (0, TextMap_1.extractTextMapRangeOrigin)(pText, [a, b]); + } + textStartPos = b; + } + } + return segmenter; +} +exports.createMappedTextSegmenter = createMappedTextSegmenter; //# sourceMappingURL=parsedText.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-lib/dist/textValidation/textValidator.js b/action/node_modules/cspell-lib/dist/textValidation/textValidator.js index 56a85bd3e..b70907eb2 100644 --- a/action/node_modules/cspell-lib/dist/textValidation/textValidator.js +++ b/action/node_modules/cspell-lib/dist/textValidation/textValidator.js @@ -23,23 +23,25 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports._testMethods = exports.mapLineSegmentAgainstRangesFactory = exports.hasWordCheck = exports.isWordValid = exports.lineValidatorFactory = exports.calcTextInclusionRanges = exports.validateText = exports.minWordSplitLen = exports.defaultMinWordLength = exports.defaultMaxDuplicateProblems = exports.defaultMaxNumberOfProblems = void 0; +exports._testMethods = exports.mapLineSegmentAgainstRangesFactory = exports.calcTextInclusionRanges = exports.validateText = exports.minWordSplitLen = exports.defaultMinWordLength = exports.defaultMaxDuplicateProblems = exports.defaultMaxNumberOfProblems = void 0; const cspell_pipe_1 = require("@cspell/cspell-pipe"); const gensequence_1 = require("gensequence"); -const RxPat = __importStar(require("../Settings/RegExpPatterns")); const Text = __importStar(require("../util/text")); const TextRange = __importStar(require("../util/TextRange")); -const util_1 = require("../util/util"); -const wordSplitter_1 = require("../util/wordSplitter"); +const lineValidatorFactory_1 = require("./lineValidatorFactory"); exports.defaultMaxNumberOfProblems = 200; exports.defaultMaxDuplicateProblems = 5; exports.defaultMinWordLength = 4; exports.minWordSplitLen = 3; +/** + * @deprecated + * @deprecation Use spellCheckDocument + */ function validateText(text, dict, options) { const { maxNumberOfProblems = exports.defaultMaxNumberOfProblems, maxDuplicateProblems = exports.defaultMaxDuplicateProblems } = options; const mapOfProblems = new Map(); const includeRanges = calcTextInclusionRanges(text, options); - const validator = lineValidatorFactory(dict, options); + const validator = (0, lineValidatorFactory_1.lineValidatorFactory)(dict, options); const iter = (0, cspell_pipe_1.pipeSync)(Text.extractLinesOfText(text), (0, cspell_pipe_1.opConcatMap)(mapLineToLineSegments(includeRanges)), (0, cspell_pipe_1.opConcatMap)(validator), (0, cspell_pipe_1.opFilter)((wo) => { const word = wo.text; // Keep track of the number of times we have seen the same problem @@ -59,114 +61,6 @@ function calcTextInclusionRanges(text, options) { return includeRanges; } exports.calcTextInclusionRanges = calcTextInclusionRanges; -function lineValidatorFactory(dict, options) { - const { minWordLength = exports.defaultMinWordLength, flagWords = [], allowCompoundWords = false, ignoreCase = true, } = options; - const hasWordOptions = { - ignoreCase, - useCompounds: allowCompoundWords || undefined, // let the dictionaries decide on useCompounds if allow is false - }; - const dictCol = dict; - const setOfFlagWords = new Set(flagWords); - const setOfKnownSuccessfulWords = new Set(); - const rememberFilter = (fn) => (v) => { - const keep = fn(v); - if (!keep) { - setOfKnownSuccessfulWords.add(v.text); - } - return keep; - }; - const filterAlreadyChecked = (wo) => { - return !setOfKnownSuccessfulWords.has(wo.text); - }; - function testForFlaggedWord(wo) { - const text = wo.text; - return setOfFlagWords.has(text) || setOfFlagWords.has(text.toLowerCase()) || dictCol.isForbidden(text); - } - function isWordIgnored(word) { - return dict.isNoSuggestWord(word, options); - } - function isWordFlagged(word) { - const isIgnored = isWordIgnored(word.text); - const isFlagged = !isIgnored && testForFlaggedWord(word); - return isFlagged; - } - function checkFlagWords(word) { - word.isFlagged = isWordFlagged(word); - return word; - } - function checkWord(word, options) { - const isIgnored = isWordIgnored(word.text); - const { isFlagged = !isIgnored && testForFlaggedWord(word) } = word; - const isFound = isFlagged ? undefined : isIgnored || isWordValid(dictCol, word, word.line, options); - return (0, util_1.clean)({ ...word, isFlagged, isFound }); - } - const fn = (lineSegment) => { - function splitterIsValid(word) { - return (setOfKnownSuccessfulWords.has(word.text) || - (!testForFlaggedWord(word) && isWordValid(dictCol, word, lineSegment.line, hasWordOptions))); - } - function checkFullWord(vr) { - if (vr.isFlagged) { - return [vr]; - } - const codeWordResults = (0, cspell_pipe_1.toArray)((0, cspell_pipe_1.pipeSync)(Text.extractWordsFromCodeTextOffset(vr), (0, cspell_pipe_1.opFilter)(filterAlreadyChecked), (0, cspell_pipe_1.opMap)((t) => ({ ...t, line: vr.line })), (0, cspell_pipe_1.opMap)(checkFlagWords), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => wo.text.length >= minWordLength || !!wo.isFlagged)), (0, cspell_pipe_1.opMap)((wo) => (wo.isFlagged ? wo : checkWord(wo, hasWordOptions))), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => wo.isFlagged || !wo.isFound)), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => !RxPat.regExRepeatedChar.test(wo.text))), // Filter out any repeated characters like xxxxxxxxxx - // get back the original text. - (0, cspell_pipe_1.opMap)((wo) => ({ - ...wo, - text: Text.extractText(lineSegment.segment, wo.offset, wo.offset + wo.text.length), - })))); - if (!codeWordResults.length || isWordIgnored(vr.text) || checkWord(vr, hasWordOptions).isFound) { - rememberFilter((_) => false)(vr); - return []; - } - return codeWordResults; - } - function checkPossibleWords(possibleWord) { - if (isWordFlagged(possibleWord)) { - const vr = { - ...possibleWord, - line: lineSegment.line, - isFlagged: true, - }; - return [vr]; - } - const mismatches = (0, cspell_pipe_1.toArray)((0, cspell_pipe_1.pipeSync)(Text.extractWordsFromTextOffset(possibleWord), (0, cspell_pipe_1.opFilter)(filterAlreadyChecked), (0, cspell_pipe_1.opMap)((wo) => ({ ...wo, line: lineSegment.line })), (0, cspell_pipe_1.opMap)(checkFlagWords), (0, cspell_pipe_1.opFilter)(rememberFilter((wo) => wo.text.length >= minWordLength || !!wo.isFlagged)), (0, cspell_pipe_1.opConcatMap)(checkFullWord))); - if (mismatches.length) { - // Try the more expensive word splitter - const splitResult = (0, wordSplitter_1.split)(lineSegment.segment, possibleWord.offset, splitterIsValid); - const nonMatching = splitResult.words.filter((w) => !w.isFound); - if (nonMatching.length < mismatches.length) { - return nonMatching.map((w) => ({ ...w, line: lineSegment.line })).map(checkFlagWords); - } - } - return mismatches; - } - const checkedPossibleWords = (0, gensequence_1.genSequence)((0, cspell_pipe_1.pipeSync)(Text.extractPossibleWordsFromTextOffset(lineSegment.segment), (0, cspell_pipe_1.opFilter)(filterAlreadyChecked), (0, cspell_pipe_1.opConcatMap)(checkPossibleWords))); - return checkedPossibleWords; - }; - return fn; -} -exports.lineValidatorFactory = lineValidatorFactory; -function isWordValid(dict, wo, line, options) { - const firstTry = hasWordCheck(dict, wo.text, options); - return (firstTry || - // Drop the first letter if it is preceded by a '\'. - (line.text[wo.offset - line.offset - 1] === '\\' && hasWordCheck(dict, wo.text.slice(1), options))); -} -exports.isWordValid = isWordValid; -function hasWordCheck(dict, word, options) { - word = word.replace(/\\/g, ''); - // Do not pass allowCompounds down if it is false, that allows for the dictionary to override the value based upon its own settings. - return dict.has(word, convertCheckOptionsToHasOptions(options)); -} -exports.hasWordCheck = hasWordCheck; -function convertCheckOptionsToHasOptions(opt) { - const { ignoreCase, useCompounds } = opt; - return (0, util_1.clean)({ - ignoreCase, - useCompounds, - }); -} function mapLineToLineSegments(includeRanges) { const mapAgainstRanges = mapLineSegmentAgainstRangesFactory(includeRanges); return (line) => { @@ -188,7 +82,7 @@ function mapLineSegmentAgainstRangesFactory(includeRanges) { const parts = []; const { segment, line } = lineSeg; const { text, offset, length } = segment; - const textEndPos = offset + (length !== null && length !== void 0 ? length : text.length); + const textEndPos = offset + (length ?? text.length); let textStartPos = offset; while (rangePos && (rangePos >= includeRanges.length || includeRanges[rangePos].startPos > textStartPos)) { rangePos -= 1; diff --git a/action/node_modules/cspell-lib/dist/textValidation/validator.js b/action/node_modules/cspell-lib/dist/textValidation/validator.js index 911b3a92c..ecdfe4330 100644 --- a/action/node_modules/cspell-lib/dist/textValidation/validator.js +++ b/action/node_modules/cspell-lib/dist/textValidation/validator.js @@ -30,8 +30,11 @@ const Memorizer_1 = require("../util/Memorizer"); const util_1 = require("../util/util"); const textValidator_1 = require("./textValidator"); exports.diagSource = 'cSpell Checker'; +/** + * @deprecated + * @deprecationMessage Use spellCheckDocument + */ async function validateText(text, settings, options = {}) { - var _a; const finalSettings = Settings.finalizeSettings(settings); const dict = await (0, SpellingDictionary_1.getDictionaryInternal)(finalSettings); const issues = [...(0, textValidator_1.validateText)(text, dict, settingsToValidateOptions(finalSettings))]; @@ -42,7 +45,7 @@ async function validateText(text, settings, options = {}) { numSuggestions: options.numSuggestions, compoundMethod: SpellingDictionary_1.CompoundWordsMethod.NONE, includeTies: false, - ignoreCase: !((_a = settings.caseSensitive) !== null && _a !== void 0 ? _a : false), + ignoreCase: !(settings.caseSensitive ?? false), timeout: settings.suggestionsTimeout, numChanges: settings.suggestionNumChanges, }); @@ -56,10 +59,9 @@ async function validateText(text, settings, options = {}) { } exports.validateText = validateText; function settingsToValidateOptions(settings) { - var _a; const opt = { ...settings, - ignoreCase: !((_a = settings.caseSensitive) !== null && _a !== void 0 ? _a : false), + ignoreCase: !(settings.caseSensitive ?? false), }; return opt; } diff --git a/action/node_modules/cspell-lib/dist/trace.js b/action/node_modules/cspell-lib/dist/trace.js index 565cc2f51..e3491f4f5 100644 --- a/action/node_modules/cspell-lib/dist/trace.js +++ b/action/node_modules/cspell-lib/dist/trace.js @@ -41,12 +41,11 @@ exports.traceWords = traceWords; async function* traceWordsAsync(words, settings, options) { const { languageId, locale: language, ignoreCase = true, allowCompoundWords } = options || {}; async function finalize(config) { - var _a; const withLocale = (0, Settings_1.mergeSettings)(config, util.clean({ language: language || config.language, - allowCompoundWords: allowCompoundWords !== null && allowCompoundWords !== void 0 ? allowCompoundWords : config.allowCompoundWords, + allowCompoundWords: allowCompoundWords ?? config.allowCompoundWords, })); - const withLanguageId = (0, LanguageSettings_1.calcSettingsForLanguageId)(withLocale, (_a = languageId !== null && languageId !== void 0 ? languageId : withLocale.languageId) !== null && _a !== void 0 ? _a : 'plaintext'); + const withLanguageId = (0, LanguageSettings_1.calcSettingsForLanguageId)(withLocale, languageId ?? withLocale.languageId ?? 'plaintext'); const settings = (0, Settings_1.finalizeSettings)(withLanguageId); const dictionaries = (settings.dictionaries || []) .concat((settings.dictionaryDefinitions || []).map((d) => d.name)) @@ -66,28 +65,25 @@ async function* traceWordsAsync(words, settings, options) { const setOfActiveDicts = new Set(activeDictionaries); const opts = util.clean({ ignoreCase, useCompounds: config.allowCompoundWords }); function normalizeErrors(errors) { - if (!(errors === null || errors === void 0 ? void 0 : errors.length)) + if (!errors?.length) return undefined; return errors; } function processWord(word) { return dicts.dictionaries .map((dict) => ({ dict, findResult: dict.find(word, opts) })) - .map(({ dict, findResult }) => { - var _a; - return ({ - word, - found: !!(findResult === null || findResult === void 0 ? void 0 : findResult.found), - foundWord: (findResult === null || findResult === void 0 ? void 0 : findResult.found) || undefined, - forbidden: (findResult === null || findResult === void 0 ? void 0 : findResult.forbidden) || false, - noSuggest: (findResult === null || findResult === void 0 ? void 0 : findResult.noSuggest) || false, - dictName: dict.name, - dictSource: dict.source, - dictActive: setOfActiveDicts.has(dict.name), - configSource: config.name || '', - errors: normalizeErrors((_a = dict.getErrors) === null || _a === void 0 ? void 0 : _a.call(dict)), - }); - }); + .map(({ dict, findResult }) => ({ + word, + found: !!findResult?.found, + foundWord: findResult?.found || undefined, + forbidden: findResult?.forbidden || false, + noSuggest: findResult?.noSuggest || false, + dictName: dict.name, + dictSource: dict.source, + dictActive: setOfActiveDicts.has(dict.name), + configSource: config.name || '', + errors: normalizeErrors(dict.getErrors?.()), + })); } for await (const word of words) { yield processWord(word); diff --git a/action/node_modules/cspell-lib/dist/util/Memorizer.js b/action/node_modules/cspell-lib/dist/util/Memorizer.js index f01db5bfe..9c9aabaf7 100644 --- a/action/node_modules/cspell-lib/dist/util/Memorizer.js +++ b/action/node_modules/cspell-lib/dist/util/Memorizer.js @@ -74,7 +74,8 @@ function memorizeLastCall(fn) { } exports.memorizeLastCall = memorizeLastCall; /** - * calls a function exactly once and always returns the same value. + * Creates a function that will call `fn` exactly once when invoked and remember the value returned. + * All subsequent calls will return exactly same value. * @param fn - function to call * @returns a new function */ @@ -91,24 +92,27 @@ function callOnce(fn) { }; } exports.callOnce = callOnce; -// eslint-disable-next-line @typescript-eslint/no-explicit-any +/** + * Create a function that will memorize all calls to `fn` to ensure that `fn` is + * called exactly once for each unique set of arguments. + * @param fn - function to memorize + * @returns a function + */ function memorizerAll(fn) { const r = {}; function find(p) { - var _a; let n = r; for (const k of p) { if (!n) break; - n = (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(k); + n = n.c?.get(k); } return n; } function set(p, v) { - var _a; let n = r; for (const k of p) { - const c = (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(k); + const c = n.c?.get(k); if (c) { n = c; continue; diff --git a/action/node_modules/cspell-lib/dist/util/PairingHeap.js b/action/node_modules/cspell-lib/dist/util/PairingHeap.js index 0e54c0894..5b7213cd9 100644 --- a/action/node_modules/cspell-lib/dist/util/PairingHeap.js +++ b/action/node_modules/cspell-lib/dist/util/PairingHeap.js @@ -33,8 +33,7 @@ class PairingHeap { return { value }; } peek() { - var _a; - return (_a = this._heap) === null || _a === void 0 ? void 0 : _a.v; + return this._heap?.v; } [Symbol.iterator]() { return this; diff --git a/action/node_modules/cspell-lib/dist/util/TextMap.js b/action/node_modules/cspell-lib/dist/util/TextMap.js new file mode 100644 index 000000000..4b0c6388d --- /dev/null +++ b/action/node_modules/cspell-lib/dist/util/TextMap.js @@ -0,0 +1,62 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.doesIntersect = exports.extractTextMapRangeOrigin = void 0; +const assert_1 = __importDefault(require("assert")); +/** + * Extract a substring from a TextMap. + * @param textMap - A text range with an optional map + * @param extractRange - The range in the original document to extract + * @returns The TextMap covering extractRange + */ +function extractTextMapRangeOrigin(textMap, extractRange) { + const { text: srcTxt, range: srcRange, map: srcMap } = textMap; + const [r0, r1] = srcRange; + const startOrig = Math.min(Math.max(extractRange[0], r0), r1); + const endOrig = Math.min(Math.max(extractRange[1], r0), r1); + const a = startOrig - r0; + const b = endOrig - r0; + const range = [startOrig, endOrig]; + if (!srcMap || !srcMap.length || a === b) { + const text = srcTxt.slice(a, b); + return { text, range }; + } + (0, assert_1.default)((srcMap.length & 1) === 0, 'Map must be pairs of values.'); + const mapLen = srcMap.length; + const mapEndSrc = srcMap[mapLen - 2]; + const mapEndDst = srcMap[mapLen - 1]; + const endDiff = srcTxt.length - mapEndDst; + const head = !srcMap[0] && !srcMap[1] ? [] : [0, 0]; + const tail = [mapEndSrc + endDiff, mapEndDst + endDiff]; + const sMap = head.concat(srcMap).concat(tail); + let idx = 0; + for (; idx < sMap.length && a >= sMap[idx]; idx += 2) { + // empty + } + const aIdx = idx; + idx -= 2; + const a0 = a - sMap[idx]; + const a1 = a0 + sMap[idx + 1]; + for (; idx < sMap.length && b > sMap[idx]; idx += 2) { + // empty + } + const bIdx = idx; + const b0 = b - sMap[idx]; + const b1 = b0 + sMap[idx + 1]; + const text = srcTxt.slice(a1, b1); + if (bIdx === aIdx) { + return { text, range }; + } + const ab = [a0, a1]; + const map = sMap.slice(aIdx, bIdx + 2).map((v, i) => v - ab[i & 1]); + return { text, range, map }; +} +exports.extractTextMapRangeOrigin = extractTextMapRangeOrigin; +function doesIntersect(textMap, rangeOrigin) { + const r = textMap.range; + return r[0] < rangeOrigin[1] && r[1] > rangeOrigin[0]; +} +exports.doesIntersect = doesIntersect; +//# sourceMappingURL=TextMap.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-lib/dist/util/memorizerWeak.js b/action/node_modules/cspell-lib/dist/util/memorizerWeak.js index 1a86d470b..ee9822789 100644 --- a/action/node_modules/cspell-lib/dist/util/memorizerWeak.js +++ b/action/node_modules/cspell-lib/dist/util/memorizerWeak.js @@ -5,20 +5,18 @@ exports.memorizerWeak = void 0; function memorizerWeak(fn) { const r = {}; function find(p) { - var _a; let n = r; for (const k of p) { if (!n) break; - n = (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(k); + n = n.c?.get(k); } return n; } function set(p, v) { - var _a; let n = r; for (const k of p) { - const c = (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(k); + const c = n.c?.get(k); if (c) { n = c; continue; diff --git a/action/node_modules/cspell-lib/dist/util/search.js b/action/node_modules/cspell-lib/dist/util/search.js index cad4ee51a..58d941942 100644 --- a/action/node_modules/cspell-lib/dist/util/search.js +++ b/action/node_modules/cspell-lib/dist/util/search.js @@ -6,8 +6,8 @@ exports.binarySearch = void 0; * The value returned is either the position of the item or where it should be inserted. */ function binarySearch(arr, item, leftOffset, rightOffset) { - let left = Math.max(leftOffset !== null && leftOffset !== void 0 ? leftOffset : 0, 0); - let right = Math.min(rightOffset !== null && rightOffset !== void 0 ? rightOffset : arr.length, arr.length); + let left = Math.max(leftOffset ?? 0, 0); + let right = Math.min(rightOffset ?? arr.length, arr.length); while (left < right) { const pos = (left + right) >> 1; if (arr[pos] < item) { diff --git a/action/node_modules/cspell-lib/dist/util/text.js b/action/node_modules/cspell-lib/dist/util/text.js index bec455341..69e9c258a 100644 --- a/action/node_modules/cspell-lib/dist/util/text.js +++ b/action/node_modules/cspell-lib/dist/util/text.js @@ -199,7 +199,7 @@ function calculateTextDocumentOffsets(uri, doc, wordOffsets) { function calcLine(row) { const last = lastLineRow === row ? lastLine : undefined; lastLineRow = row; - const r = last !== null && last !== void 0 ? last : extractLine(row); + const r = last ?? extractLine(row); lastLine = r; return r; } diff --git a/action/node_modules/cspell-lib/dist/util/timer.js b/action/node_modules/cspell-lib/dist/util/timer.js index a9b480b41..7ff137493 100644 --- a/action/node_modules/cspell-lib/dist/util/timer.js +++ b/action/node_modules/cspell-lib/dist/util/timer.js @@ -1,7 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLapRecorder = exports.polyHrTime = exports.toMilliseconds = exports.createTimer = void 0; -const _hrTime = (process === null || process === void 0 ? void 0 : process.hrtime) || polyHrTime; +const _hrTime = process?.hrtime || polyHrTime; function createTimer(hrTimeFn = _hrTime) { let start = hrTimeFn(); let lastLap = 0; diff --git a/action/node_modules/cspell-lib/dist/util/wordSplitter.js b/action/node_modules/cspell-lib/dist/util/wordSplitter.js index b08d30d0b..9ce140c86 100644 --- a/action/node_modules/cspell-lib/dist/util/wordSplitter.js +++ b/action/node_modules/cspell-lib/dist/util/wordSplitter.js @@ -186,7 +186,6 @@ function genSymbolBreaks(line) { ]; } function splitIntoWords(lineSeg, breaks, has) { - var _a; const maxIndex = lineSeg.relEnd; const maxAttempts = 1000; const knownPathsByIndex = new Map(); @@ -242,11 +241,10 @@ function splitIntoWords(lineSeg, breaks, has) { return results; } function addToKnownPaths(candidate, path) { - var _a; for (let can = candidate; can !== undefined; can = can.p) { const t = can.text; const i = can.i; - const cost = (!t || t.isFound ? 0 : t.text.length) + ((_a = path === null || path === void 0 ? void 0 : path.c) !== null && _a !== void 0 ? _a : 0); + const cost = (!t || t.isFound ? 0 : t.text.length) + (path?.c ?? 0); const exitingPath = knownPathsByIndex.get(i); // Keep going only if this is a better candidate than the existing path if (exitingPath && exitingPath.c <= cost) { @@ -307,7 +305,7 @@ function splitIntoWords(lineSeg, breaks, has) { best.c += cost; best.ec = best.c; best.text = t; - const segText = t || ((_a = best.p) === null || _a === void 0 ? void 0 : _a.text) || toTextOffset('', best.i); + const segText = t || best.p?.text || toTextOffset('', best.i); const can = t ? { ...best, text: segText } : { ...best, ...best.p, text: segText }; const f = addToKnownPaths(can, undefined); bestPath = !bestPath || (f && f.c < bestPath.c) ? f : bestPath; diff --git a/action/node_modules/cspell-lib/package.json b/action/node_modules/cspell-lib/package.json index 59ec462ce..1c17cc960 100644 --- a/action/node_modules/cspell-lib/package.json +++ b/action/node_modules/cspell-lib/package.json @@ -1,6 +1,6 @@ { "name": "cspell-lib", - "version": "6.1.2", + "version": "6.1.3", "description": "A library of useful functions used across various cspell tools.", "main": "dist/index.js", "typings": "dist/index.d.ts", @@ -48,16 +48,16 @@ }, "homepage": "https://github.com/streetsidesoftware/cspell#readme", "dependencies": { - "@cspell/cspell-bundled-dicts": "^6.1.2", - "@cspell/cspell-pipe": "^6.1.2", - "@cspell/cspell-types": "^6.1.2", + "@cspell/cspell-bundled-dicts": "^6.1.3", + "@cspell/cspell-pipe": "^6.1.3", + "@cspell/cspell-types": "^6.1.3", "clear-module": "^4.1.2", "comment-json": "^4.2.2", "configstore": "^5.0.1", "cosmiconfig": "^7.0.1", - "cspell-glob": "^6.1.2", - "cspell-io": "^6.1.2", - "cspell-trie-lib": "^6.1.2", + "cspell-glob": "^6.1.3", + "cspell-io": "^6.1.3", + "cspell-trie-lib": "^6.1.3", "fast-equals": "^4.0.1", "find-up": "^5.0.0", "fs-extra": "^10.1.0", @@ -82,15 +82,15 @@ "@cspell/dict-python": "^2.0.6", "@types/configstore": "^5.0.1", "@types/fs-extra": "^9.0.13", - "@types/jest": "^28.1.1", - "@types/node": "^17.0.40", + "@types/jest": "^28.1.3", + "@types/node": "^18.0.0", "cspell-dict-nl-nl": "^1.1.2", "jest": "^28.1.1", - "lorem-ipsum": "^2.0.4", + "lorem-ipsum": "^2.0.8", "rimraf": "^3.0.2", - "rollup": "^2.75.5", + "rollup": "^2.75.7", "rollup-plugin-dts": "^4.2.2", - "ts-jest": "^28.0.4" + "ts-jest": "^28.0.5" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/cspell-trie-lib/dist/lib/TrieBuilder.js b/action/node_modules/cspell-trie-lib/dist/lib/TrieBuilder.js index 6fabf4e67..793a66d98 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/TrieBuilder.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/TrieBuilder.js @@ -100,20 +100,18 @@ class TrieBuilder { return n; } storeTransform(src, s, result) { - var _a; if (!Object.isFrozen(result) || !Object.isFrozen(src)) return; - const t = (_a = this.transforms.get(src)) !== null && _a !== void 0 ? _a : new Map(); + const t = this.transforms.get(src) ?? new Map(); t.set(s, result); this.transforms.set(src, t); } addChild(node, head, child) { - var _a, _b, _c; - if (((_a = node.c) === null || _a === void 0 ? void 0 : _a.get(head)) !== child) { + if (node.c?.get(head) !== child) { if (!node.c || Object.isFrozen(node)) { - node = { ...node, c: new Map((_b = node.c) !== null && _b !== void 0 ? _b : []) }; + node = { ...node, c: new Map(node.c ?? []) }; } - (_c = node.c) === null || _c === void 0 ? void 0 : _c.set(head, child); + node.c?.set(head, child); } return Object.isFrozen(child) ? this.tryToCache(node) : node; } @@ -134,10 +132,9 @@ class TrieBuilder { return cachedNode; } _insert(node, s, d) { - var _a, _b; const orig = node; if (Object.isFrozen(node)) { - const n = (_a = this.transforms.get(node)) === null || _a === void 0 ? void 0 : _a.get(s); + const n = this.transforms.get(node)?.get(s); if (n) { return this.tryCacheFrozen(n); } @@ -154,7 +151,7 @@ class TrieBuilder { } const head = s[0]; const tail = s.slice(1); - const cNode = (_b = node.c) === null || _b === void 0 ? void 0 : _b.get(head); + const cNode = node.c?.get(head); const child = cNode ? this._insert(cNode, tail, d + 1) : this.buildTail(tail); node = this.addChild(node, head, child); this.storeTransform(orig, s, node); @@ -165,7 +162,7 @@ class TrieBuilder { let d = 1; for (const s of word.split('')) { const p = this.lastPath[d]; - if ((p === null || p === void 0 ? void 0 : p.s) !== s) + if (p?.s !== s) break; d++; } diff --git a/action/node_modules/cspell-trie-lib/dist/lib/compoundWalker.js b/action/node_modules/cspell-trie-lib/dist/lib/compoundWalker.js index 3e1f62e1c..6b15bbf50 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/compoundWalker.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/compoundWalker.js @@ -10,12 +10,10 @@ exports.compoundWords = exports.compoundWalker = void 0; * @param trie the compound Trie to walk */ function* compoundWalker(trie, caseSensitive = true) { - var _a; const { compoundCharacter: cc, forbiddenWordPrefix: forbidden, stripCaseAndAccentsPrefix } = trie.options; const blockNode = new Set([cc, forbidden, stripCaseAndAccentsPrefix]); - const root = (!caseSensitive && ((_a = trie.root.c) === null || _a === void 0 ? void 0 : _a.get(stripCaseAndAccentsPrefix))) || trie.root; + const root = (!caseSensitive && trie.root.c?.get(stripCaseAndAccentsPrefix)) || trie.root; function* walk(n, s, c, d) { - var _a; const deeper = yield { n, s, c, d }; if (deeper !== false && n.c) { for (const [k, cn] of n.c) { @@ -24,7 +22,7 @@ function* compoundWalker(trie, caseSensitive = true) { yield* walk(cn, s + k, false, d); } if (n.c.has(cc)) { - const compoundNodes = (_a = root.c) === null || _a === void 0 ? void 0 : _a.get(cc); + const compoundNodes = root.c?.get(cc); if (compoundNodes) { yield* walk(compoundNodes, s, true, d + 1); } diff --git a/action/node_modules/cspell-trie-lib/dist/lib/convertToTrieRefNodes.js b/action/node_modules/cspell-trie-lib/dist/lib/convertToTrieRefNodes.js index b4d2704ff..afdf33aaa 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/convertToTrieRefNodes.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/convertToTrieRefNodes.js @@ -15,7 +15,6 @@ function convertToTrieRefNodes(root) { const cached = new Map(); const rollupTally = new Map(); function tally(n) { - var _a; if (n.f && !n.c) { tallies.set(eow, (tallies.get(eow) || 0) + 1); return; @@ -26,7 +25,7 @@ function convertToTrieRefNodes(root) { return; } tallies.set(n, 1); - for (const c of ((_a = n.c) === null || _a === void 0 ? void 0 : _a.values()) || []) { + for (const c of n.c?.values() || []) { tally(c); } } @@ -51,7 +50,6 @@ function convertToTrieRefNodes(root) { } } function* walkByRollup(n) { - var _a; if (cached.has(n)) return; if (n.f && !n.c) { @@ -59,7 +57,7 @@ function convertToTrieRefNodes(root) { cached.set(n, cached.get(eow)); return; } - const children = [...(((_a = n.c) === null || _a === void 0 ? void 0 : _a.values()) || [])].sort((a, b) => (rollupTally.get(b) || 0) - (rollupTally.get(a) || 0)); + const children = [...(n.c?.values() || [])].sort((a, b) => (rollupTally.get(b) || 0) - (rollupTally.get(a) || 0)); for (const c of children) { yield* walkByRollup(c); } diff --git a/action/node_modules/cspell-trie-lib/dist/lib/distance/distanceAStar.js b/action/node_modules/cspell-trie-lib/dist/lib/distance/distanceAStar.js index 9c0b08b31..0c114f09d 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/distance/distanceAStar.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/distance/distanceAStar.js @@ -8,7 +8,6 @@ const PairingHeap_1 = require("../utils/PairingHeap"); * Using basic weights, this algorithm has the same results as the Damerau-Levenshtein algorithm. */ function distanceAStar(a, b) { - var _a; const aN = a.length; const bN = b.length; const cost = 100; @@ -49,7 +48,7 @@ function distanceAStar(a, b) { opDel(best); opSub(best); } - return (_a = best === null || best === void 0 ? void 0 : best.c) !== null && _a !== void 0 ? _a : -1; + return best?.c ?? -1; } exports.distanceAStar = distanceAStar; function compare(a, b) { diff --git a/action/node_modules/cspell-trie-lib/dist/lib/distance/weightedMaps.js b/action/node_modules/cspell-trie-lib/dist/lib/distance/weightedMaps.js index 0bb7fda6a..4a9578089 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/distance/weightedMaps.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/distance/weightedMaps.js @@ -272,19 +272,18 @@ function prettyPrintWeightMap(map) { } exports.prettyPrintWeightMap = prettyPrintWeightMap; function lookupReplaceCost(map, a, b) { - var _a, _b; const trie = map.replace; let tt = trie; for (let ai = 0; ai < a.length && tt; ++ai) { - tt = (_a = tt.n) === null || _a === void 0 ? void 0 : _a[a[ai]]; + tt = tt.n?.[a[ai]]; } if (!tt) return undefined; let t = tt.t; for (let bi = 0; bi < b.length && t; ++bi) { - t = (_b = t.n) === null || _b === void 0 ? void 0 : _b[b[bi]]; + t = t.n?.[b[bi]]; } - return t === null || t === void 0 ? void 0 : t.c; + return t?.c; } exports.lookupReplaceCost = lookupReplaceCost; function normalizeDef(def) { diff --git a/action/node_modules/cspell-trie-lib/dist/lib/find.js b/action/node_modules/cspell-trie-lib/dist/lib/find.js index 4da243a51..0347d19df 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/find.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/find.js @@ -52,10 +52,9 @@ function _findWord(root, word, options) { * @param options */ function _findWordNode(root, word, options) { - var _a, _b; const compoundMode = knownCompoundModes.get(options.compoundMode) || _defaultFindOptions.compoundMode; - const compoundPrefix = options.compoundMode === 'compound' ? (_a = root.compoundCharacter) !== null && _a !== void 0 ? _a : options.compoundFix : ''; - const ignoreCasePrefix = options.matchCase ? '' : (_b = root.stripCaseAndAccentsPrefix) !== null && _b !== void 0 ? _b : options.caseInsensitivePrefix; + const compoundPrefix = options.compoundMode === 'compound' ? root.compoundCharacter ?? options.compoundFix : ''; + const ignoreCasePrefix = options.matchCase ? '' : root.stripCaseAndAccentsPrefix ?? options.caseInsensitivePrefix; function __findCompound() { const f = findCompoundWord(root, word, compoundPrefix, ignoreCasePrefix); const result = { ...f }; @@ -97,7 +96,6 @@ function findLegacyCompound(root, word, options) { } exports.findLegacyCompound = findLegacyCompound; function findCompoundNode(root, word, compoundCharacter, ignoreCasePrefix) { - var _a, _b, _c; // Approach - do a depth first search for the matching word. const stack = [ // { n: root, compoundPrefix: '', cr: undefined, caseMatched: true }, @@ -107,12 +105,11 @@ function findCompoundNode(root, word, compoundCharacter, ignoreCasePrefix) { const possibleCompoundPrefix = ignoreCasePrefix && compoundCharacter ? ignoreCasePrefix + compoundCharacter : ''; const w = word.normalize(); function determineRoot(s) { - var _a; const prefix = s.compoundPrefix; let r = root; let i; for (i = 0; i < prefix.length && r; ++i) { - r = (_a = r.c) === null || _a === void 0 ? void 0 : _a.get(prefix[i]); + r = r.c?.get(prefix[i]); } const caseMatched = s.caseMatched && prefix[0] !== ignoreCasePrefix; return { @@ -131,7 +128,7 @@ function findCompoundNode(root, word, compoundCharacter, ignoreCasePrefix) { const s = stack[i]; const h = w[i++]; const n = s.cr || s.n; - const c = (_a = n === null || n === void 0 ? void 0 : n.c) === null || _a === void 0 ? void 0 : _a.get(h); + const c = n?.c?.get(h); if (c && i < word.length) { // Go deeper. caseMatched = s.caseMatched; @@ -141,7 +138,7 @@ function findCompoundNode(root, word, compoundCharacter, ignoreCasePrefix) { // Remember the first matching node for possible auto completion. node = node || c; // We did not find the word backup and take the first unused compound branch - while (--i > 0 && (!stack[i].compoundPrefix || !((_c = (_b = stack[i].n) === null || _b === void 0 ? void 0 : _b.c) === null || _c === void 0 ? void 0 : _c.has(compoundCharacter)))) { + while (--i > 0 && (!stack[i].compoundPrefix || !stack[i].n?.c?.has(compoundCharacter))) { /* empty */ } if (i >= 0 && stack[i].compoundPrefix) { @@ -186,22 +183,20 @@ function findWordExact(root, word) { } exports.findWordExact = findWordExact; function isEndOfWordNode(n) { - return (n === null || n === void 0 ? void 0 : n.f) === TrieNode_1.FLAG_WORD; + return n?.f === TrieNode_1.FLAG_WORD; } exports.isEndOfWordNode = isEndOfWordNode; function walk(root, word) { - var _a; const w = word; let n = root; let i = 0; while (n && i < word.length) { const h = w[i++]; - n = (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(h); + n = n.c?.get(h); } return n; } function findLegacyCompoundNode(roots, word, minCompoundLength) { - var _a, _b; const root = roots[0]; const numRoots = roots.length; // Approach - do a depth first search for the matching word. @@ -219,7 +214,7 @@ function findLegacyCompoundNode(roots, word, minCompoundLength) { const s = stack[i]; const h = w[i++]; const n = s.cr || s.n; - const c = (_a = n === null || n === void 0 ? void 0 : n.c) === null || _a === void 0 ? void 0 : _a.get(h); + const c = n?.c?.get(h); if (c && i < wLen) { // Go deeper. stack[i] = { @@ -236,7 +231,7 @@ function findLegacyCompoundNode(roots, word, minCompoundLength) { while (--i > 0) { const s = stack[i]; if (s.usedRoots < numRoots && - ((_b = s.n) === null || _b === void 0 ? void 0 : _b.f) && + s.n?.f && (s.subLength >= minCompoundLength || !s.subLength) && wLen - i >= minCompoundLength) { break; @@ -284,8 +279,7 @@ function findLegacyCompoundWord(roots, word, minCompoundLength) { return { found, compoundUsed, caseMatched }; } function isForbiddenWord(root, word, forbiddenPrefix) { - var _a; - return findWordExact((_a = root === null || root === void 0 ? void 0 : root.c) === null || _a === void 0 ? void 0 : _a.get(forbiddenPrefix), word); + return findWordExact(root?.c?.get(forbiddenPrefix), word); } exports.isForbiddenWord = isForbiddenWord; function createFindOptions(options) { diff --git a/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV2.js b/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV2.js index 3a580a0f1..8a1cd296b 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV2.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV2.js @@ -8,9 +8,8 @@ const EOW = '*'; exports.DATA = '__DATA__'; function leaves(node) { function toRefNode(node, k) { - var _a; const refNode = node; - refNode.s = (_a = refNode.s) !== null && _a !== void 0 ? _a : k; + refNode.s = refNode.s ?? k; return refNode; } function* walk(node, k, p) { diff --git a/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV3.js b/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV3.js index ae6c67f55..77e01e1a1 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV3.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/io/importExportV3.js @@ -148,13 +148,12 @@ function parseStream(radix) { function parseReference(acc, _) { let ref = ''; function parser(acc, s) { - var _a; if (s === EOR) { const { root, nodes, stack } = acc; const r = parseInt(ref, radix); const top = stack[stack.length - 1]; const p = stack[stack.length - 2].node; - (_a = p.c) === null || _a === void 0 ? void 0 : _a.set(top.s, nodes[r]); + p.c?.set(top.s, nodes[r]); return { root, nodes, stack, parser: undefined }; } ref = ref + s; @@ -180,12 +179,11 @@ function parseStream(radix) { return { ...acc, parser }; } function parseCharacter(acc, s) { - var _a; const parser = undefined; const { root, nodes, stack } = acc; const top = stack[stack.length - 1]; const node = top.node; - node.c = (_a = node.c) !== null && _a !== void 0 ? _a : new Map(); + node.c = node.c ?? new Map(); const n = { f: undefined, c: undefined, n: nodes.length }; node.c.set(s, n); stack.push({ node: n, s }); @@ -193,7 +191,6 @@ function parseStream(radix) { return { root, nodes, stack, parser }; } function parseEOW(acc, _) { - var _a; const parser = parseBack; const { root, nodes, stack } = acc; const top = stack[stack.length - 1]; @@ -202,7 +199,7 @@ function parseStream(radix) { if (!node.c) { top.node = eow; const p = stack[stack.length - 2].node; - (_a = p.c) === null || _a === void 0 ? void 0 : _a.set(top.s, eow); + p.c?.set(top.s, eow); nodes.pop(); } stack.pop(); @@ -232,8 +229,7 @@ function parseStream(radix) { [LF, parseIgnore], ]); function parserMain(acc, s) { - var _a, _b; - const parser = (_b = (_a = acc.parser) !== null && _a !== void 0 ? _a : parsers.get(s)) !== null && _b !== void 0 ? _b : parseCharacter; + const parser = acc.parser ?? parsers.get(s) ?? parseCharacter; return parser(acc, s); } return parserMain; diff --git a/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapDictionaryInfo.js b/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapDictionaryInfo.js index 8b50fa91d..6598da2e8 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapDictionaryInfo.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapDictionaryInfo.js @@ -10,7 +10,7 @@ const mapToSuggestionCostDef_1 = require("./mapToSuggestionCostDef"); function mapDictionaryInformation(dictInfo) { const _locale = dictInfo.locale; const locale = _locale ? (0, locale_1.parseLocale)(_locale).filter((loc) => loc.isValid()) : undefined; - const locales = locale === null || locale === void 0 ? void 0 : locale.map((loc) => loc.locale); + const locales = locale?.map((loc) => loc.locale); const costs = (0, mapCosts_1.mapEditCosts)(dictInfo.costs); const defsEC = dictInfo.suggestionEditCosts || []; const defsHI = dictInfo.hunspellInformation @@ -32,7 +32,7 @@ function processAlphabet(alphabet, locale, editCost) { ]; } function toCharSets(cs, defaultValue, cost, penalty) { - cs = cs !== null && cs !== void 0 ? cs : defaultValue; + cs = cs ?? defaultValue; if (!cs) return []; if (typeof cs === 'string') { diff --git a/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapHunspellInformation.js b/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapHunspellInformation.js index b0ea9201a..b76b1573b 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapHunspellInformation.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/mappers/mapHunspellInformation.js @@ -37,7 +37,7 @@ function hunspellInformationToSuggestionCostDef(hunInfo, locales) { } exports.hunspellInformationToSuggestionCostDef = hunspellInformationToSuggestionCostDef; function calcCosts(costs = {}, locale) { - const useLocale = (locale === null || locale === void 0 ? void 0 : locale.length) ? locale.map((loc) => loc.locale) : undefined; + const useLocale = locale?.length ? locale.map((loc) => loc.locale) : undefined; const hunCosts = (0, mapCosts_1.mapHunspellCosts)(costs); const c = { ...hunCosts, diff --git a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/genSuggestionsOptions.js b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/genSuggestionsOptions.js index c4eb4204f..8469795e2 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/genSuggestionsOptions.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/genSuggestionsOptions.js @@ -44,7 +44,6 @@ function createSuggestionOptions(...opts) { } exports.createSuggestionOptions = createSuggestionOptions; function assign(dest, src, k) { - var _a; - dest[k] = (_a = src[k]) !== null && _a !== void 0 ? _a : dest[k]; + dest[k] = src[k] ?? dest[k]; } //# sourceMappingURL=genSuggestionsOptions.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestAStar.js b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestAStar.js index 8cc4ac535..c4ea618bb 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestAStar.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestAStar.js @@ -150,14 +150,12 @@ function* genCompoundableSuggestions(root, word, options) { } } function opCompoundWord(best) { - var _a; - if (!((_a = best.n.c) === null || _a === void 0 ? void 0 : _a.get(compoundIndicator))) + if (!best.n.c?.get(compoundIndicator)) return; const i = best.i; const s = ''; nodes.forEach((node) => { - var _a; - const n = (_a = node.c) === null || _a === void 0 ? void 0 : _a.get(compoundIndicator); + const n = node.c?.get(compoundIndicator); if (!n) return; const e = { p: best, n, i, s, c: opCosts.wordBreak, a: Action.CompoundWord }; @@ -189,9 +187,8 @@ function* genCompoundableSuggestions(root, word, options) { return addEdge(best, e); } function opIdentity(best) { - var _a; const s = word[best.i]; - const n = (_a = best.n.c) === null || _a === void 0 ? void 0 : _a.get(s); + const n = best.n.c?.get(s); if (!n) return; const i = best.i + 1; @@ -216,7 +213,6 @@ function* genCompoundableSuggestions(root, word, options) { } } function opSwap(best) { - var _a, _b; const children = best.n.c; const i = best.i; const i2 = i + 1; @@ -226,8 +222,8 @@ function* genCompoundableSuggestions(root, word, options) { const wc2 = word[i2]; if (wc1 === wc2) return; - const n = (_a = best.n.c) === null || _a === void 0 ? void 0 : _a.get(wc2); - const n2 = (_b = n === null || n === void 0 ? void 0 : n.c) === null || _b === void 0 ? void 0 : _b.get(wc1); + const n = best.n.c?.get(wc2); + const n2 = n?.c?.get(wc1); if (!n || !n2) return; const e = { @@ -242,7 +238,6 @@ function* genCompoundableSuggestions(root, word, options) { addEdge(best, e); } function opDuplicate(best) { - var _a, _b; const children = best.n.c; const i = best.i; const i2 = i + 1; @@ -250,7 +245,7 @@ function* genCompoundableSuggestions(root, word, options) { return; const wc1 = word[i]; const wc2 = word[i2]; - const n = (_a = best.n.c) === null || _a === void 0 ? void 0 : _a.get(wc1); + const n = best.n.c?.get(wc1); if (!n) return; if (wc1 === wc2) { @@ -259,7 +254,7 @@ function* genCompoundableSuggestions(root, word, options) { addEdge(best, e); return; } - const n2 = (_b = n === null || n === void 0 ? void 0 : n.c) === null || _b === void 0 ? void 0 : _b.get(wc1); + const n2 = n?.c?.get(wc1); if (!n2) return; // convert single to double letter @@ -278,9 +273,8 @@ function* genCompoundableSuggestions(root, word, options) { } } function resolveEdge({ edge, suffixes }) { - var _a; const { p, s: es, c: ec } = edge; - if (!((_a = p.r) === null || _a === void 0 ? void 0 : _a.has(edge))) + if (!p.r?.has(edge)) return; const edgeSuffixes = suffixes.map((sfx) => ({ s: es + sfx.s, c: ec + sfx.c })); for (const { s, c } of edgeSuffixes) { @@ -292,7 +286,7 @@ function* genCompoundableSuggestions(root, word, options) { } p.r.delete(edge); const location = pathToLocation.get(p); - if ((location === null || location === void 0 ? void 0 : location.p) === p) { + if (location?.p === p) { location.sfx = location.sfx.concat(edgeSuffixes); if (!p.r.size) { location.sbc = p.g; @@ -416,7 +410,7 @@ function determineInitialNodes(root, ignoreCase) { const noCaseNodes = ignoreCase ? roots .filter((r) => r.stripCaseAndAccentsPrefix) - .map((n) => { var _a; return (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(n.stripCaseAndAccentsPrefix); }) + .map((n) => n.c?.get(n.stripCaseAndAccentsPrefix)) .filter(isDefined) : []; const nodes = rootNodes.concat(noCaseNodes); diff --git a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestCollector.js b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestCollector.js index e94f82f64..9132c3ddf 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestCollector.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/suggestCollector.js @@ -101,7 +101,7 @@ function suggestionCollector(wordToMatch, options) { */ function collect(src, timeout, filter) { let stop = false; - timeout = timeout !== null && timeout !== void 0 ? timeout : timeRemaining; + timeout = timeout ?? timeRemaining; timeout = Math.min(timeout, timeRemaining); if (timeout < 0) return; @@ -202,7 +202,7 @@ function impersonateCollector(collector, word) { exports.impersonateCollector = impersonateCollector; function isSuggestionResult(s) { const r = s; - return (r === null || r === void 0 ? void 0 : r.cost) !== undefined && r.word != undefined; + return r?.cost !== undefined && r.word != undefined; } exports.isSuggestionResult = isSuggestionResult; //# sourceMappingURL=suggestCollector.js.map \ No newline at end of file diff --git a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/walker/hintedWalker.js b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/walker/hintedWalker.js index e107dbb53..019066354 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/suggestions/walker/hintedWalker.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/suggestions/walker/hintedWalker.js @@ -12,21 +12,20 @@ exports.hintedWalker = hintedWalker; * next(goDeeper: boolean): */ function* hintedWalkerNext(root, ignoreCase, hint, compoundingMethod, emitWordSeparator = '') { - const _compoundingMethod = compoundingMethod !== null && compoundingMethod !== void 0 ? compoundingMethod : walkerTypes_1.CompoundWordsMethod.NONE; + const _compoundingMethod = compoundingMethod ?? walkerTypes_1.CompoundWordsMethod.NONE; const compoundCharacter = root.compoundCharacter; const noCaseCharacter = root.stripCaseAndAccentsPrefix; const rawRoots = [root, ignoreCase ? root.c.get(noCaseCharacter) : undefined].filter(trie_util_1.isDefined); const specialRootsPrefix = existMap([compoundCharacter, noCaseCharacter, root.forbiddenWordPrefix]); function filterRoot(root) { - var _a; - const children = (_a = root.c) === null || _a === void 0 ? void 0 : _a.entries(); + const children = root.c?.entries(); const c = children && [...children].filter(([v]) => !(v in specialRootsPrefix)); return { c: c && new Map(c), }; } const roots = rawRoots.map(filterRoot); - const compoundRoots = rawRoots.map((r) => { var _a; return (_a = r.c) === null || _a === void 0 ? void 0 : _a.get(compoundCharacter); }).filter(trie_util_1.isDefined); + const compoundRoots = rawRoots.map((r) => r.c?.get(compoundCharacter)).filter(trie_util_1.isDefined); const setOfCompoundRoots = new Set(compoundRoots); const rootsForCompoundMethods = roots.concat(compoundRoots); const compoundMethodRoots = { diff --git a/action/node_modules/cspell-trie-lib/dist/lib/trie-util.js b/action/node_modules/cspell-trie-lib/dist/lib/trie-util.js index 5780fe1cf..57353c9b6 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/trie-util.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/trie-util.js @@ -175,7 +175,7 @@ function mergeDefaults(value, defaultValue) { // eslint-disable-next-line @typescript-eslint/no-explicit-any for (const [k, v] of Object.entries(value)) { if (k in result) { - result[k] = v !== null && v !== void 0 ? v : result[k]; + result[k] = v ?? result[k]; } } } diff --git a/action/node_modules/cspell-trie-lib/dist/lib/trie.js b/action/node_modules/cspell-trie-lib/dist/lib/trie.js index 2555853f7..7441c0626 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/trie.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/trie.js @@ -35,8 +35,7 @@ class Trie { * Number of words in the Trie */ size() { - var _a; - this.count = (_a = this.count) !== null && _a !== void 0 ? _a : (0, trie_util_1.countWords)(this.root); + this.count = this.count ?? (0, trie_util_1.countWords)(this.root); return this.count; } isSizeKnown() { @@ -96,7 +95,7 @@ class Trie { return !!f.found && !f.forbidden; } findWord(word, options) { - if (options === null || options === void 0 ? void 0 : options.useLegacyWordCompounds) { + if (options?.useLegacyWordCompounds) { const len = options.useLegacyWordCompounds !== true ? options.useLegacyWordCompounds : defaultLegacyMinCompoundLength; @@ -106,7 +105,7 @@ class Trie { }); return (0, find_1.findLegacyCompound)(this.root, word, findOptions); } - const findOptions = this.createFindOptions({ matchCase: options === null || options === void 0 ? void 0 : options.caseSensitive }); + const findOptions = this.createFindOptions({ matchCase: options?.caseSensitive }); return (0, find_1.findWord)(this.root, word, findOptions); } /** @@ -185,9 +184,9 @@ class Trie { } calcIsLegacy() { const c = this.root.c; - return !((c === null || c === void 0 ? void 0 : c.get(this._options.compoundCharacter)) || - (c === null || c === void 0 ? void 0 : c.get(this._options.stripCaseAndAccentsPrefix)) || - (c === null || c === void 0 ? void 0 : c.get(this._options.forbiddenWordPrefix))); + return !(c?.get(this._options.compoundCharacter) || + c?.get(this._options.stripCaseAndAccentsPrefix) || + c?.get(this._options.forbiddenWordPrefix)); } static create(words, options) { const root = (0, trie_util_1.createTriFromList)(words, options); diff --git a/action/node_modules/cspell-trie-lib/dist/lib/utils/PairingHeap.js b/action/node_modules/cspell-trie-lib/dist/lib/utils/PairingHeap.js index 0e54c0894..5b7213cd9 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/utils/PairingHeap.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/utils/PairingHeap.js @@ -33,8 +33,7 @@ class PairingHeap { return { value }; } peek() { - var _a; - return (_a = this._heap) === null || _a === void 0 ? void 0 : _a.v; + return this._heap?.v; } [Symbol.iterator]() { return this; diff --git a/action/node_modules/cspell-trie-lib/dist/lib/utils/memorizer.js b/action/node_modules/cspell-trie-lib/dist/lib/utils/memorizer.js index 8e34f2c49..acb52a0e0 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/utils/memorizer.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/utils/memorizer.js @@ -5,20 +5,18 @@ exports.memorizer = void 0; function memorizer(fn) { const r = {}; function find(p) { - var _a; let n = r; for (const k of p) { if (!n) break; - n = (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(k); + n = n.c?.get(k); } return n; } function set(p, v) { - var _a; let n = r; for (const k of p) { - const c = (_a = n.c) === null || _a === void 0 ? void 0 : _a.get(k); + const c = n.c?.get(k); if (c) { n = c; continue; diff --git a/action/node_modules/cspell-trie-lib/dist/lib/utils/secondChanceCache.js b/action/node_modules/cspell-trie-lib/dist/lib/utils/secondChanceCache.js index 5432440af..db2b00f28 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/utils/secondChanceCache.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/utils/secondChanceCache.js @@ -18,8 +18,7 @@ class SecondChanceCache { return false; } get(key) { - var _a; - return (_a = this.map0.get(key)) !== null && _a !== void 0 ? _a : this.get1(key); + return this.map0.get(key) ?? this.get1(key); } set(key, value) { if (this.map0.size >= this.maxL0Size && !this.map0.has(key)) { diff --git a/action/node_modules/cspell-trie-lib/dist/lib/utils/timer.js b/action/node_modules/cspell-trie-lib/dist/lib/utils/timer.js index c10d7b838..e9b53022c 100644 --- a/action/node_modules/cspell-trie-lib/dist/lib/utils/timer.js +++ b/action/node_modules/cspell-trie-lib/dist/lib/utils/timer.js @@ -1,7 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.polyHrTime = exports.toMilliseconds = exports.createTimer = void 0; -const _hrTime = (process === null || process === void 0 ? void 0 : process.hrtime) || polyHrTime; +const _hrTime = process?.hrtime || polyHrTime; function createTimer(hrTimeFn = _hrTime) { let start = hrTimeFn(); return { diff --git a/action/node_modules/cspell-trie-lib/package.json b/action/node_modules/cspell-trie-lib/package.json index 0df8291bd..7847d013e 100644 --- a/action/node_modules/cspell-trie-lib/package.json +++ b/action/node_modules/cspell-trie-lib/package.json @@ -1,6 +1,6 @@ { "name": "cspell-trie-lib", - "version": "6.1.2", + "version": "6.1.3", "description": "Trie Data Structure to support cspell.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -37,7 +37,7 @@ }, "homepage": "https://github.com/streetsidesoftware/cspell#readme", "dependencies": { - "@cspell/cspell-pipe": "^6.1.2", + "@cspell/cspell-pipe": "^6.1.3", "fs-extra": "^10.1.0", "gensequence": "^3.1.1" }, @@ -45,13 +45,13 @@ "node": ">=14" }, "devDependencies": { - "@cspell/cspell-types": "^6.1.2", - "@cspell/dict-en_us": "^2.2.5", + "@cspell/cspell-types": "^6.1.3", + "@cspell/dict-en_us": "^2.2.8", "@cspell/dict-es-es": "^2.2.0", "@types/fs-extra": "^9.0.13", - "@types/node": "^17.0.40", + "@types/node": "^18.0.0", "jest": "^28.1.1", "rimraf": "^3.0.2" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/cspell/dist/application.js b/action/node_modules/cspell/dist/application.js index 0abe22b98..10f98abf2 100644 --- a/action/node_modules/cspell/dist/application.js +++ b/action/node_modules/cspell/dist/application.js @@ -43,12 +43,11 @@ function lint(fileGlobs, options, emitters) { } exports.lint = lint; async function* trace(words, options) { - var _a, _b; options = (0, options_1.fixLegacy)(options); const iWords = options.stdin ? (0, cspell_pipe_1.toAsyncIterable)(words, (0, stdin_1.readStdin)()) : words; const { languageId, locale, allowCompoundWords, ignoreCase } = options; const configFile = await (0, fileHelper_1.readConfig)(options.config, undefined); - const loadDefault = (_b = (_a = options.defaultConfiguration) !== null && _a !== void 0 ? _a : configFile.config.loadDefaultConfiguration) !== null && _b !== void 0 ? _b : true; + const loadDefault = options.defaultConfiguration ?? configFile.config.loadDefaultConfiguration ?? true; const config = (0, cspell_lib_1.mergeSettings)((0, cspell_lib_1.getDefaultSettings)(loadDefault), (0, cspell_lib_1.getGlobalSettings)(), configFile.config); yield* (0, cspell_lib_1.traceWordsAsync)(iWords, config, { languageId, locale, ignoreCase, allowCompoundWords }); } @@ -78,7 +77,7 @@ async function* suggestions(words, options) { return v; } function mapEnd(v) { - const elapsedTimeMs = timer === null || timer === void 0 ? void 0 : timer(); + const elapsedTimeMs = timer?.(); return { ...v, elapsedTimeMs }; } const iWords = options.repl diff --git a/action/node_modules/cspell/dist/cli-reporter.js b/action/node_modules/cspell/dist/cli-reporter.js index e7d2043c9..6d8ed6f08 100644 --- a/action/node_modules/cspell/dist/cli-reporter.js +++ b/action/node_modules/cspell/dist/cli-reporter.js @@ -117,8 +117,7 @@ function getReporter(options) { Warning: (s) => console.info(chalk.yellow(s)), }; function infoEmitter(message, msgType) { - var _a; - (_a = emitters[msgType]) === null || _a === void 0 ? void 0 : _a.call(emitters, message); + emitters[msgType]?.(message); } const root = vscode_uri_1.URI.file(options.root || process.cwd()); const fsPathRoot = root.fsPath; @@ -153,7 +152,6 @@ function getReporter(options) { } exports.getReporter = getReporter; function formatIssue(templateStr, issue, maxIssueTextWidth) { - var _a; function clean(t) { return t.replace(/\s+/, ' '); } @@ -165,7 +163,7 @@ function formatIssue(templateStr, issue, maxIssueTextWidth) { const rowText = row.toString(); const colText = col.toString(); const padRowCol = ' '.repeat(Math.max(1, 8 - (rowText.length + colText.length))); - const suggestions = ((_a = issue.suggestions) === null || _a === void 0 ? void 0 : _a.join(', ')) || ''; + const suggestions = issue.suggestions?.join(', ') || ''; const message = issue.isFlagged ? '{yellow Forbidden word}' : 'Unknown word'; const substitutions = { $col: colText, diff --git a/action/node_modules/cspell/dist/commandSuggestion.js b/action/node_modules/cspell/dist/commandSuggestion.js index 3b2b28444..2df8e0b59 100644 --- a/action/node_modules/cspell/dist/commandSuggestion.js +++ b/action/node_modules/cspell/dist/commandSuggestion.js @@ -39,8 +39,7 @@ function count(_, previous) { return (previous || 0) + 1; } function asNumber(value, prev) { - var _a; - return (_a = parseInt(value, 10)) !== null && _a !== void 0 ? _a : prev; + return parseInt(value, 10) ?? prev; } function commandSuggestion(prog) { const suggestionCommand = prog.command('suggestions'); diff --git a/action/node_modules/cspell/dist/commandTrace.js b/action/node_modules/cspell/dist/commandTrace.js index f7d5a2229..4f83c4e06 100644 --- a/action/node_modules/cspell/dist/commandTrace.js +++ b/action/node_modules/cspell/dist/commandTrace.js @@ -51,7 +51,7 @@ function commandTrace(prog) { for await (const results of App.trace(words, options)) { (0, traceEmitter_1.emitTraceResults)(results, { cwd: process.cwd() }); numFound += results.reduce((n, r) => n + (r.found ? 1 : 0), 0); - const numErrors = results.map((r) => { var _a; return ((_a = r.errors) === null || _a === void 0 ? void 0 : _a.length) || 0; }).reduce((n, r) => n + r, 0); + const numErrors = results.map((r) => r.errors?.length || 0).reduce((n, r) => n + r, 0); if (numErrors) { console.error('Dictionary Errors.'); throw new errors_1.CheckFailed('dictionary errors', 1); diff --git a/action/node_modules/cspell/dist/emitters/traceEmitter.js b/action/node_modules/cspell/dist/emitters/traceEmitter.js index fe4a14ef7..f1c35e375 100644 --- a/action/node_modules/cspell/dist/emitters/traceEmitter.js +++ b/action/node_modules/cspell/dist/emitters/traceEmitter.js @@ -33,14 +33,13 @@ const util_1 = require("../util/util"); const chalk = require("chalk"); const colWidthDictionaryName = 20; function emitTraceResults(results, options) { - var _a; const maxWordLength = results .map((r) => r.foundWord || r.word) .reduce((a, b) => Math.max(a, (0, util_1.width)(b)), 'Word'.length); const cols = { word: maxWordLength, dictName: colWidthDictionaryName, - terminalWidth: (_a = options.lineWidth) !== null && _a !== void 0 ? _a : (process.stdout.columns || 120), + terminalWidth: options.lineWidth ?? (process.stdout.columns || 120), }; const col = new Intl.Collator(); results.sort((a, b) => col.compare(a.dictName, b.dictName)); @@ -58,9 +57,8 @@ function emitHeader(colWidths) { console.log(chalk.underline(line.join(' ').slice(0, colWidths.terminalWidth))); } function emitTraceResult(r, colWidths, options) { - var _a, _b; const { word: wordColWidth, terminalWidth, dictName: widthName } = colWidths; - const errors = ((_b = (_a = r.errors) === null || _a === void 0 ? void 0 : _a.map((e) => e.message)) === null || _b === void 0 ? void 0 : _b.join('\n\t')) || ''; + const errors = r.errors?.map((e) => e.message)?.join('\n\t') || ''; const word = (0, util_1.pad)(r.foundWord || r.word, wordColWidth); const cWord = word.replace(/[+]/g, chalk.yellow('+')); const w = r.forbidden ? chalk.red(cWord) : chalk.green(cWord); @@ -90,8 +88,7 @@ function trimMid(s, w) { return s.slice(0, l) + '...' + s.slice(-r); } function calcFoundChar(r) { - var _a, _b; - const errors = ((_b = (_a = r.errors) === null || _a === void 0 ? void 0 : _a.map((e) => e.message)) === null || _b === void 0 ? void 0 : _b.join('\n\t')) || ''; + const errors = r.errors?.map((e) => e.message)?.join('\n\t') || ''; let color = chalk.dim; color = r.found ? chalk.whiteBright : color; color = r.forbidden ? chalk.red : color; diff --git a/action/node_modules/cspell/dist/link.js b/action/node_modules/cspell/dist/link.js index 173861735..08f3e3461 100644 --- a/action/node_modules/cspell/dist/link.js +++ b/action/node_modules/cspell/dist/link.js @@ -13,13 +13,12 @@ function listGlobalImportsResultToTable(results) { const header = ['id', 'package', 'name', 'filename', 'dictionaries', 'errors']; const decorate = (isError) => (isError ? (s) => chalk_1.default.red(s) : (s) => s); function toColumns(r) { - var _a, _b; return [ r.id, - (_a = r.package) === null || _a === void 0 ? void 0 : _a.name, + r.package?.name, r.name, r.filename, - (_b = r.dictionaryDefinitions) === null || _b === void 0 ? void 0 : _b.map((def) => def.name).join(', '), + r.dictionaryDefinitions?.map((def) => def.name).join(', '), r.error ? 'Failed to read file.' : '', ] .map((c) => c || '') diff --git a/action/node_modules/cspell/dist/lint/lint.js b/action/node_modules/cspell/dist/lint/lint.js index cf282537e..0b8ac55c3 100644 --- a/action/node_modules/cspell/dist/lint/lint.js +++ b/action/node_modules/cspell/dist/lint/lint.js @@ -52,7 +52,6 @@ async function runLint(cfg) { await reporter.result(lintResult); return lintResult; async function processFile(filename, configInfo, cache) { - var _a, _b, _c, _d, _e; const getElapsedTimeMs = (0, timer_1.getTimeMeasurer)(); const cachedResult = await cache.getCachedLintResults(filename); if (cachedResult) { @@ -82,7 +81,7 @@ async function runLint(cfg) { const { text } = fileInfo; result.fileInfo = fileInfo; let spellResult = {}; - reporter.info(`Checking: ${filename}, File type: ${(_a = doc.languageId) !== null && _a !== void 0 ? _a : 'auto'}, Language: ${(_b = doc.locale) !== null && _b !== void 0 ? _b : 'default'}`, cspell_types_1.MessageTypes.Info); + reporter.info(`Checking: ${filename}, File type: ${doc.languageId ?? 'auto'}, Language: ${doc.locale ?? 'default'}`, cspell_types_1.MessageTypes.Info); try { const validateOptions = { generateSuggestions: cfg.options.showSuggestions, numSuggestions: 5 }; const r = await cspell.spellCheckDocument(doc, validateOptions, configInfo.config); @@ -95,7 +94,7 @@ async function runLint(cfg) { result.errors += 1; } result.elapsedTimeMs = getElapsedTimeMs(); - const config = (_c = spellResult.settingsUsed) !== null && _c !== void 0 ? _c : {}; + const config = spellResult.settingsUsed ?? {}; result.configErrors += await reportConfigurationErrors(config); const elapsed = result.elapsedTimeMs / 1000.0; const dictionaries = config.dictionaries || []; @@ -106,7 +105,7 @@ async function runLint(cfg) { const { id: _id, name: _name, __imports, __importRef, ...cfg } = config; const debugCfg = { filename, - languageId: (_e = (_d = doc.languageId) !== null && _d !== void 0 ? _d : cfg.languageId) !== null && _e !== void 0 ? _e : 'default', + languageId: doc.languageId ?? cfg.languageId ?? 'default', config: { ...cfg, source: null }, source: spellResult.localConfigFilepath, }; @@ -123,14 +122,13 @@ async function runLint(cfg) { return { ...tdo, context }; } async function processFiles(files, configInfo, cacheSettings) { - var _a, _b; const fileCount = files instanceof Array ? files.length : undefined; const status = runResult(); const cache = (0, cache_1.createCache)(cacheSettings); if (cfg.options.cacheReset) { cache.reset(); } - const failFast = (_b = (_a = cfg.options.failFast) !== null && _a !== void 0 ? _a : configInfo.config.failFast) !== null && _b !== void 0 ? _b : false; + const failFast = cfg.options.failFast ?? configInfo.config.failFast ?? false; const emitProgressBegin = (filename, fileNum, fileCount) => reporter.progress({ type: 'ProgressFileBegin', fileNum, @@ -142,16 +140,16 @@ async function runLint(cfg) { fileNum, fileCount, filename, - elapsedTimeMs: result === null || result === void 0 ? void 0 : result.elapsedTimeMs, - processed: result === null || result === void 0 ? void 0 : result.processed, - numErrors: (result === null || result === void 0 ? void 0 : result.issues.length) || (result === null || result === void 0 ? void 0 : result.errors), - cached: result === null || result === void 0 ? void 0 : result.cached, + elapsedTimeMs: result?.elapsedTimeMs, + processed: result?.processed, + numErrors: result?.issues.length || result?.errors, + cached: result?.cached, }); async function* loadAndProcessFiles() { let i = 0; for await (const filename of files) { ++i; - emitProgressBegin(filename, i, fileCount !== null && fileCount !== void 0 ? fileCount : i); + emitProgressBegin(filename, i, fileCount ?? i); const result = await processFile(filename, configInfo, cache); yield { filename, fileNum: i, result }; } @@ -160,7 +158,7 @@ async function runLint(cfg) { const { filename, fileNum, result } = await fileP; status.files += 1; status.cachedFiles = (status.cachedFiles || 0) + (result.cached ? 1 : 0); - emitProgressComplete(filename, fileNum, fileCount !== null && fileCount !== void 0 ? fileCount : fileNum, result); + emitProgressComplete(filename, fileNum, fileCount ?? fileNum, result); // Show the spelling errors after emitting the progress. result.issues.filter(cfg.uniqueFilter).forEach((issue) => reporter.issue(issue)); if (result.issues.length || result.errors) { @@ -193,8 +191,7 @@ async function runLint(cfg) { }); const dictCollection = await cspell.getDictionary(config); dictCollection.dictionaries.forEach((dict) => { - var _a; - const dictErrors = ((_a = dict.getErrors) === null || _a === void 0 ? void 0 : _a.call(dict)) || []; + const dictErrors = dict.getErrors?.() || []; const msg = `Dictionary Error with (${dict.name})`; dictErrors.forEach((error) => { const key = msg + error.toString(); @@ -269,9 +266,8 @@ function checkGlobs(globs, reporter) { .forEach((glob) => reporter.error('Linter', new errors_1.CheckFailed(`Glob starting or ending with ' (single quote) is not likely to match any files: ${glob}.`))); } async function determineGlobs(configInfo, cfg) { - var _a, _b, _c; - const useGitignore = (_b = (_a = cfg.options.gitignore) !== null && _a !== void 0 ? _a : configInfo.config.useGitignore) !== null && _b !== void 0 ? _b : false; - const gitignoreRoots = (_c = cfg.options.gitignoreRoot) !== null && _c !== void 0 ? _c : configInfo.config.gitignoreRoot; + const useGitignore = cfg.options.gitignore ?? configInfo.config.useGitignore ?? false; + const gitignoreRoots = cfg.options.gitignoreRoot ?? configInfo.config.gitignoreRoot; const gitIgnore = useGitignore ? await generateGitIgnore(gitignoreRoots) : undefined; const cliGlobs = cfg.fileGlobs; const allGlobs = cliGlobs.length ? cliGlobs : configInfo.config.files || []; @@ -285,7 +281,6 @@ async function determineGlobs(configInfo, cfg) { } async function determineFilesToCheck(configInfo, cfg, reporter, globInfo) { async function _determineFilesToCheck() { - var _a; const { fileLists } = cfg; const hasFileLists = !!fileLists.length; const { allGlobs, gitIgnore, fileGlobs, excludeGlobs, normalizedExcludes } = globInfo; @@ -301,7 +296,7 @@ async function determineFilesToCheck(configInfo, cfg, reporter, globInfo) { ignore: ignoreGlobs.concat(normalizedExcludes), nodir: true, }; - const enableGlobDot = (_a = cfg.enableGlobDot) !== null && _a !== void 0 ? _a : configInfo.config.enableGlobDot; + const enableGlobDot = cfg.enableGlobDot ?? configInfo.config.enableGlobDot; if (enableGlobDot !== undefined) { globOptions.dot = enableGlobDot; } @@ -403,12 +398,12 @@ function getLoggerFromReporter(reporter) { } async function generateGitIgnore(roots) { const root = (typeof roots === 'string' ? [roots].filter((r) => !!r) : roots) || []; - if (!(root === null || root === void 0 ? void 0 : root.length)) { + if (!root?.length) { const cwd = process.cwd(); const repo = (await (0, cspell_gitignore_1.findRepoRoot)(cwd)) || cwd; root.push(repo); } - return new cspell_gitignore_1.GitIgnore(root === null || root === void 0 ? void 0 : root.map((p) => path.resolve(p))); + return new cspell_gitignore_1.GitIgnore(root?.map((p) => path.resolve(p))); } async function useFileLists(fileListFiles, includeGlobPatterns, root, dot) { includeGlobPatterns = includeGlobPatterns.length ? includeGlobPatterns : ['**']; diff --git a/action/node_modules/cspell/dist/util/cache/DiskCache.js b/action/node_modules/cspell/dist/util/cache/DiskCache.js index 85e5b91ac..dab228029 100644 --- a/action/node_modules/cspell/dist/util/cache/DiskCache.js +++ b/action/node_modules/cspell/dist/util/cache/DiskCache.js @@ -58,9 +58,9 @@ class DiskCache { async getCachedLintResults(filename) { const fileDescriptor = this.fileEntryCache.getFileDescriptor(filename); const meta = fileDescriptor.meta; - const data = meta === null || meta === void 0 ? void 0 : meta.data; - const result = data === null || data === void 0 ? void 0 : data.r; - const versionMatches = this.version === (data === null || data === void 0 ? void 0 : data.v); + const data = meta?.data; + const result = data?.r; + const versionMatches = this.version === data?.v; // Cached lint results are valid if and only if: // 1. The file is present in the filesystem // 2. The file has not changed since the time it was previously linted @@ -124,7 +124,7 @@ class DiskCache { calcDependencyHashes(dependsUponFiles) { dependsUponFiles.sort(); const c = getTreeEntry(this.dependencyCacheTree, dependsUponFiles); - if (c === null || c === void 0 ? void 0 : c.d) { + if (c?.d) { return c.d; } const dependencies = dependsUponFiles.map((f) => this.getDependency(f)); @@ -179,10 +179,9 @@ class DiskCache { } exports.DiskCache = DiskCache; function getTreeEntry(tree, keys) { - var _a; let r = tree; for (const k of keys) { - r = (_a = r.c) === null || _a === void 0 ? void 0 : _a.get(k); + r = r.c?.get(k); if (!r) return r; } @@ -196,7 +195,7 @@ function setTreeEntry(tree, deps, update = false) { r.c = new Map(); } const cn = r.c.get(k); - const n = cn !== null && cn !== void 0 ? cn : {}; + const n = cn ?? {}; if (!cn) { r.c.set(k, n); } diff --git a/action/node_modules/cspell/dist/util/cache/ObjectCollection.js b/action/node_modules/cspell/dist/util/cache/ObjectCollection.js index 19b21f382..dd137b458 100644 --- a/action/node_modules/cspell/dist/util/cache/ObjectCollection.js +++ b/action/node_modules/cspell/dist/util/cache/ObjectCollection.js @@ -62,10 +62,9 @@ exports.Collection = Collection; function addToCollection(root, v) { const known = root.contains; function addValToCol(c, v) { - var _a; const t = toValueType(v); const val = c.v || Object.create(null); - const r = (_a = val[t]) !== null && _a !== void 0 ? _a : v; + const r = val[t] ?? v; val[t] = r; c.v = val; return val[t]; diff --git a/action/node_modules/cspell/dist/util/cache/createCache.js b/action/node_modules/cspell/dist/util/cache/createCache.js index a9cdec657..7d05a30ca 100644 --- a/action/node_modules/cspell/dist/util/cache/createCache.js +++ b/action/node_modules/cspell/dist/util/cache/createCache.js @@ -24,11 +24,10 @@ function createCache(options) { } exports.createCache = createCache; async function calcCacheSettings(config, cacheOptions, root) { - var _a, _b, _c, _d, _e, _f, _g; - const cs = (_a = config.cache) !== null && _a !== void 0 ? _a : {}; - const useCache = (_c = (_b = cacheOptions.cache) !== null && _b !== void 0 ? _b : cs.useCache) !== null && _c !== void 0 ? _c : false; - const cacheLocation = await resolveCacheLocation(path_1.default.resolve(root, (_e = (_d = cacheOptions.cacheLocation) !== null && _d !== void 0 ? _d : cs.cacheLocation) !== null && _e !== void 0 ? _e : exports.DEFAULT_CACHE_LOCATION)); - const cacheStrategy = (_g = (_f = cacheOptions.cacheStrategy) !== null && _f !== void 0 ? _f : cs.cacheStrategy) !== null && _g !== void 0 ? _g : 'metadata'; + const cs = config.cache ?? {}; + const useCache = cacheOptions.cache ?? cs.useCache ?? false; + const cacheLocation = await resolveCacheLocation(path_1.default.resolve(root, cacheOptions.cacheLocation ?? cs.cacheLocation ?? exports.DEFAULT_CACHE_LOCATION)); + const cacheStrategy = cacheOptions.cacheStrategy ?? cs.cacheStrategy ?? 'metadata'; return { useCache, cacheLocation, diff --git a/action/node_modules/cspell/dist/util/errors.js b/action/node_modules/cspell/dist/util/errors.js index f3edbeb1c..1ec859436 100644 --- a/action/node_modules/cspell/dist/util/errors.js +++ b/action/node_modules/cspell/dist/util/errors.js @@ -54,7 +54,7 @@ function toApplicationError(e, message) { if (e instanceof ApplicationError && !message) return e; const err = toError(e); - return new ApplicationError(message !== null && message !== void 0 ? message : err.message, undefined, err); + return new ApplicationError(message ?? err.message, undefined, err); } exports.toApplicationError = toApplicationError; //# sourceMappingURL=errors.js.map \ No newline at end of file diff --git a/action/node_modules/cspell/dist/util/fileHelper.js b/action/node_modules/cspell/dist/util/fileHelper.js index 26dfbe140..4df371912 100644 --- a/action/node_modules/cspell/dist/util/fileHelper.js +++ b/action/node_modules/cspell/dist/util/fileHelper.js @@ -39,13 +39,12 @@ const stdin_1 = require("./stdin"); const UTF8 = 'utf8'; const STDIN = 'stdin'; async function readConfig(configFile, root) { - var _a; if (configFile) { const config = (await cspell.loadConfig(configFile)) || {}; return { source: configFile, config }; } const config = await cspell.searchForConfig(root); - return { source: ((_a = config === null || config === void 0 ? void 0 : config.__importRef) === null || _a === void 0 ? void 0 : _a.filename) || 'None found', config: config || {} }; + return { source: config?.__importRef?.filename || 'None found', config: config || {} }; } exports.readConfig = readConfig; function fileInfoToDocument(fileInfo, languageId, locale) { @@ -92,10 +91,12 @@ async function findFiles(globPatterns, options) { } exports.findFiles = findFiles; function calcFinalConfigInfo(configInfo, settingsFromCommandLine, filename, text) { - var _a, _b, _c; const ext = path.extname(filename); const fileSettings = cspell.calcOverrideSettings(configInfo.config, path.resolve(filename)); - const loadDefault = (_c = (_b = (_a = settingsFromCommandLine.loadDefaultConfiguration) !== null && _a !== void 0 ? _a : configInfo.config.loadDefaultConfiguration) !== null && _b !== void 0 ? _b : fileSettings.loadDefaultConfiguration) !== null && _c !== void 0 ? _c : true; + const loadDefault = settingsFromCommandLine.loadDefaultConfiguration ?? + configInfo.config.loadDefaultConfiguration ?? + fileSettings.loadDefaultConfiguration ?? + true; const settings = cspell.mergeSettings(cspell.getDefaultSettings(loadDefault), cspell.getGlobalSettings(), fileSettings, settingsFromCommandLine); const languageIds = settings.languageId ? [settings.languageId] : cspell.getLanguagesForExt(ext); const config = cspell.constructSettingsForText(settings, text, languageIds); diff --git a/action/node_modules/cspell/dist/util/glob.js b/action/node_modules/cspell/dist/util/glob.js index 8b410acdc..b1009adf3 100644 --- a/action/node_modules/cspell/dist/util/glob.js +++ b/action/node_modules/cspell/dist/util/glob.js @@ -39,7 +39,7 @@ const useJoinPatterns = process.env['CSPELL_SINGLE_GLOB']; * @param options - search options. */ async function globP(pattern, options) { - const root = (options === null || options === void 0 ? void 0 : options.root) || process.cwd(); + const root = options?.root || process.cwd(); const opts = options || { root }; const rawPatterns = typeof pattern === 'string' ? [pattern] : pattern; const normPatterns = useJoinPatterns ? joinPatterns(rawPatterns) : rawPatterns; diff --git a/action/node_modules/cspell/package.json b/action/node_modules/cspell/package.json index 66f7249d9..208f4f9ad 100644 --- a/action/node_modules/cspell/package.json +++ b/action/node_modules/cspell/package.json @@ -1,6 +1,6 @@ { "name": "cspell", - "version": "6.1.2", + "version": "6.1.3", "description": "A Spelling Checker for Code!", "funding": "https://github.com/streetsidesoftware/cspell?sponsor=1", "main": "dist/index.js", @@ -70,12 +70,12 @@ }, "homepage": "https://streetsidesoftware.github.io/cspell/", "dependencies": { - "@cspell/cspell-pipe": "^6.1.2", + "@cspell/cspell-pipe": "^6.1.3", "chalk": "^4.1.2", "commander": "^9.3.0", - "cspell-gitignore": "^6.1.2", - "cspell-glob": "^6.1.2", - "cspell-lib": "^6.1.2", + "cspell-gitignore": "^6.1.3", + "cspell-glob": "^6.1.3", + "cspell-lib": "^6.1.3", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^6.0.1", "fs-extra": "^10.1.0", @@ -90,21 +90,21 @@ "node": ">=14" }, "devDependencies": { - "@cspell/cspell-json-reporter": "^6.1.2", - "@cspell/cspell-types": "^6.1.2", + "@cspell/cspell-json-reporter": "^6.1.3", + "@cspell/cspell-types": "^6.1.3", "@types/file-entry-cache": "^5.0.2", "@types/fs-extra": "^9.0.13", "@types/glob": "^7.2.0", "@types/imurmurhash": "^0.1.1", "@types/micromatch": "^4.0.2", "@types/minimatch": "^3.0.5", - "@types/semver": "^7.3.9", + "@types/semver": "^7.3.10", "jest": "^28.1.1", "micromatch": "^4.0.5", "minimatch": "^5.1.0", "rimraf": "^3.0.2", - "rollup": "^2.75.5", + "rollup": "^2.75.7", "rollup-plugin-dts": "^4.2.2" }, - "gitHead": "5ef579108a81bf7206cf53e301374467a3bbde06" + "gitHead": "e96b313542f2ec0a38ac04d1422d97e724ded3a6" } diff --git a/action/node_modules/flatted/esm.js b/action/node_modules/flatted/esm.js new file mode 100644 index 000000000..c20ae09e9 --- /dev/null +++ b/action/node_modules/flatted/esm.js @@ -0,0 +1,2 @@ +/*! (c) 2020 Andrea Giammarchi */ +const{parse:t,stringify:e}=JSON,{keys:n}=Object,o=String,c={},r=(t,e)=>e,s=t=>t instanceof o?o(t):t,l=(t,e)=>"string"==typeof e?new o(e):e,a=(t,e,r,s)=>{const l=[];for(let a=n(r),{length:f}=a,i=0;i{const c=o(e.push(n)-1);return t.set(n,c),c},i=(e,n)=>{const o=t(e,l).map(s),c=o[0],f=n||r,i="object"==typeof c&&c?a(o,new Set,c,f):c;return f.call({"":i},"",i)},p=(t,n,o)=>{const c=n&&"object"==typeof n?(t,e)=>""===t||-1t(p(e)),g=t=>i(e(t));export{g as fromJSON,i as parse,p as stringify,u as toJSON}; diff --git a/action/node_modules/flatted/index.js b/action/node_modules/flatted/index.js index 9cc910701..afb193dc4 100644 --- a/action/node_modules/flatted/index.js +++ b/action/node_modules/flatted/index.js @@ -1,7 +1,15 @@ self.Flatted = (function (exports) { 'use strict'; - + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } /*! (c) 2020 Andrea Giammarchi */ var $parse = JSON.parse, @@ -23,7 +31,7 @@ self.Flatted = (function (exports) { }; var Primitives = function Primitives(_, value) { - return typeof(value) === primitive ? new Primitive(value) : value; + return _typeof(value) === primitive ? new Primitive(value) : value; }; var revive = function revive(input, parsed, output, $) { @@ -36,7 +44,7 @@ self.Flatted = (function (exports) { if (value instanceof Primitive) { var tmp = input[value]; - if (typeof(tmp) === object && !parsed.has(tmp)) { + if (_typeof(tmp) === object && !parsed.has(tmp)) { parsed.add(tmp); output[k] = ignore; lazy.push({ @@ -67,13 +75,13 @@ self.Flatted = (function (exports) { var input = $parse(text, Primitives).map(primitives); var value = input[0]; var $ = reviver || noop; - var tmp = typeof(value) === object && value ? revive(input, new Set(), value, $) : value; + var tmp = _typeof(value) === object && value ? revive(input, new Set(), value, $) : value; return $.call({ '': tmp }, '', tmp); }; var stringify = function stringify(value, replacer, space) { - var $ = replacer && typeof(replacer) === object ? function (k, v) { + var $ = replacer && _typeof(replacer) === object ? function (k, v) { return k === '' || -1 < replacer.indexOf(k) ? v : void 0; } : replacer || noop; var known = new Map(); @@ -99,7 +107,7 @@ self.Flatted = (function (exports) { var after = $.call(this, key, value); - switch (typeof(after)) { + switch (_typeof(after)) { case object: if (after === null) return after; diff --git a/action/node_modules/flatted/min.js b/action/node_modules/flatted/min.js index a822de224..b7a8efc10 100644 --- a/action/node_modules/flatted/min.js +++ b/action/node_modules/flatted/min.js @@ -1,2 +1,2 @@ -self.Flatted=function(n){"use strict"; -/*! (c) 2020 Andrea Giammarchi */var t=JSON.parse,r=JSON.stringify,e=Object.keys,u=String,a="string",f={},i="object",o=function(n,t){return t},c=function(n){return n instanceof u?u(n):n},l=function(n,t){return typeof t===a?new u(t):t},s=function n(t,r,a,o){for(var c=[],l=e(a),s=l.length,p=0;p ./coverage/lcov.info" @@ -34,28 +35,29 @@ }, "homepage": "https://github.com/WebReflection/flatted#readme", "devDependencies": { - "@babel/core": "^7.16.0", - "@babel/preset-env": "^7.16.0", - "@ungap/structured-clone": "^0.3.4", + "@babel/core": "^7.18.5", + "@babel/preset-env": "^7.18.2", + "@ungap/structured-clone": "^1.0.1", "ascjs": "^5.0.1", - "c8": "^7.10.0", + "c8": "^7.11.3", "circular-json": "^0.5.9", "circular-json-es6": "^2.0.2", - "drop-babel-typeof": "^1.0.3", - "jsan": "^3.1.13", - "rollup": "^2.59.0", + "jsan": "^3.1.14", + "rollup": "^2.75.7", "rollup-plugin-babel": "^4.4.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-terser": "^7.0.2", - "terser": "^5.9.0" + "terser": "^5.14.1" }, "module": "./esm/index.js", "type": "module", "exports": { ".": { + "types": "./types.d.ts", "import": "./esm/index.js", "default": "./cjs/index.js" }, + "./esm": "./esm.js", "./package.json": "./package.json" } } diff --git a/action/package.json b/action/package.json index 1ab54c7cc..c51061e64 100644 --- a/action/package.json +++ b/action/package.json @@ -12,10 +12,10 @@ "@actions/core": "^1.9.0", "@actions/github": "^5.0.3", "@octokit/core": "^3.6.0", - "@octokit/plugin-rest-endpoint-methods": "^5.15.0", + "@octokit/plugin-rest-endpoint-methods": "^5.16.0", "@octokit/rest": "^18.12.0", - "cspell": "^6.1.2", - "cspell-glob": "^6.1.2", + "cspell": "^6.1.3", + "cspell-glob": "^6.1.3", "vscode-uri": "^3.0.3" } } diff --git a/package.json b/package.json index 0864e354f..b71ecb42f 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,8 @@ "homepage": "https://github.com/streetsidesoftware/cspell-action#readme", "devDependencies": { "@tsconfig/node12": "^1.0.11", - "@typescript-eslint/eslint-plugin": "^5.29.0", - "@typescript-eslint/parser": "^5.29.0", + "@typescript-eslint/eslint-plugin": "^5.30.0", + "@typescript-eslint/parser": "^5.30.0", "env-cmd": "^10.1.0", "eslint": "^8.18.0", "prettier": "^2.7.1", diff --git a/yarn.lock b/yarn.lock index 9a1bc2cc8..db589390e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,150 +34,150 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/highlight" "^7.16.7" + "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.10": - version "7.18.5" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" - integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== +"@babel/compat-data@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" + integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.18.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" - integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d" + integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== dependencies: "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.5" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.5" - "@babel/types" "^7.18.4" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helpers" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== +"@babel/generator@^7.18.6", "@babel/generator@^7.7.2": + version "7.18.7" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz#2aa78da3c05aadfc82dbac16c99552fc802284bd" + integrity sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A== dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" + "@babel/types" "^7.18.7" + "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.18.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" - integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== +"@babel/helper-compilation-targets@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" + integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-validator-option" "^7.16.7" + "@babel/compat-data" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== - -"@babel/helper-simple-access@^7.17.7": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helpers@^7.18.2": - version "7.18.2" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" - integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" +"@babel/helper-environment-visitor@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" + integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== + +"@babel/helper-function-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz#8334fecb0afba66e6d87a7e8c6bb7fed79926b83" + integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz#57e3ca669e273d55c3cda55e6ebf552f37f483c8" + integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" + integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helpers@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" + integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5": - version "7.18.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" - integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" + integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -264,43 +264,43 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.17.12" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" - integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.2": - version "7.18.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" - integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.5" - "@babel/types" "^7.18.4" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/traverse@^7.18.6", "@babel/traverse@^7.7.2": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz#a228562d2f46e89258efa4ddd0416942e2fd671d" + integrity sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.18.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.18.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz#a4a2c910c15040ea52cdd1ddb1614a65c8041726" + integrity sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -308,36 +308,36 @@ resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cspell/cspell-bundled-dicts@^6.1.2": - version "6.1.2" - resolved "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.1.2.tgz#40a2af61152f5e68097be206dbb0dfc512f79e32" - integrity sha512-vMS15jKPNH93Fv0bu/lrTSmXKt6hDCEEwOIyajO84cJMuKRVuR9Vw0ZtkFsVAwHyTNZ8mGxposQ20TbAL/SUlw== +"@cspell/cspell-bundled-dicts@^6.1.3": + version "6.1.3" + resolved "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.1.3.tgz#820b37c360c9b2593ad8b3bc35199993ed3f3eac" + integrity sha512-z8shZiDlOz5x3XiUuH683kuwSyNZlLQFMSl8urslvhUXOmOuG5MGQb2ZX5MeNK+mGb+kDXF3BmccXpYBV5QE8w== dependencies: "@cspell/dict-ada" "^2.0.0" "@cspell/dict-aws" "^2.0.0" "@cspell/dict-bash" "^2.0.3" - "@cspell/dict-companies" "^2.0.5" + "@cspell/dict-companies" "^2.0.6" "@cspell/dict-cpp" "^3.1.0" "@cspell/dict-cryptocurrencies" "^2.0.0" "@cspell/dict-csharp" "^3.0.1" "@cspell/dict-css" "^2.0.0" "@cspell/dict-dart" "^1.1.1" "@cspell/dict-django" "^2.0.0" - "@cspell/dict-docker" "^1.1.0" + "@cspell/dict-docker" "^1.1.1" "@cspell/dict-dotnet" "^2.0.1" "@cspell/dict-elixir" "^2.0.1" "@cspell/dict-en-gb" "^1.1.33" - "@cspell/dict-en_us" "^2.2.5" - "@cspell/dict-filetypes" "^2.0.1" - "@cspell/dict-fonts" "^2.0.0" + "@cspell/dict-en_us" "^2.2.8" + "@cspell/dict-filetypes" "^2.0.2" + "@cspell/dict-fonts" "^2.0.1" "@cspell/dict-fullstack" "^2.0.6" "@cspell/dict-git" "^1.0.1" "@cspell/dict-golang" "^3.0.1" "@cspell/dict-haskell" "^2.0.0" - "@cspell/dict-html" "^3.0.1" + "@cspell/dict-html" "^3.0.2" "@cspell/dict-html-symbol-entities" "^3.0.0" - "@cspell/dict-java" "^3.0.2" - "@cspell/dict-latex" "^2.0.5" + "@cspell/dict-java" "^3.0.4" + "@cspell/dict-latex" "^2.0.6" "@cspell/dict-lorem-ipsum" "^2.0.0" "@cspell/dict-lua" "^2.0.0" "@cspell/dict-node" "^3.0.1" @@ -348,22 +348,23 @@ "@cspell/dict-python" "^3.0.6" "@cspell/dict-r" "^1.0.3" "@cspell/dict-ruby" "^2.0.1" - "@cspell/dict-rust" "^2.0.0" + "@cspell/dict-rust" "^2.0.1" "@cspell/dict-scala" "^2.0.0" - "@cspell/dict-software-terms" "^2.1.8" + "@cspell/dict-software-terms" "^2.1.9" "@cspell/dict-swift" "^1.0.3" "@cspell/dict-typescript" "^2.0.0" "@cspell/dict-vue" "^2.0.2" + cspell-grammar "^6.1.3" -"@cspell/cspell-pipe@^6.1.2": - version "6.1.2" - resolved "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.1.2.tgz#8c2cc03c5e146a0eec4b03f936d6598f6509680e" - integrity sha512-QPbRsumSbu2h6Sdls2bv6FeLFBvs+XSSOmBwVXTaRu6Vl0hEi3P69BiHIWTYQqWTe2NYZnW8lpXUh5/J8/nolw== +"@cspell/cspell-pipe@^6.1.3": + version "6.1.3" + resolved "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.1.3.tgz#e67be526d6676a04e03b3a2b97b60afbd95902c7" + integrity sha512-FEaCs8P4xMNJxvKX6frT/9OoOBdG+liHOdIzStpziNoLCXGogLpBzQFFoujXAmOLidmkH4Y+cGH9ACb9EJwrpw== -"@cspell/cspell-types@^6.1.2": - version "6.1.2" - resolved "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.1.2.tgz#5689a6656160052d5a9d60f0d2316c894e885a09" - integrity sha512-EENGQ469e3mTpSWfMF/GS29eOAAONiavdVF/uiV8kcxf8SqfkMJvVjFZ1w0KgC80pnCVUzRzMBO4HKmXPj6Ncg== +"@cspell/cspell-types@^6.1.3": + version "6.1.3" + resolved "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.1.3.tgz#93195f239bbee90ebe8732a8363189436fee993b" + integrity sha512-2tqawc3lCobvpMzJdZ/Plk3PvZ7u2HIc7w7bp3U78KKzXxOtvnJx5VC/Ja3/8zyAu4IE+XukYdM1Dstr+/YL2A== "@cspell/dict-ada@^2.0.0": version "2.0.0" @@ -380,15 +381,15 @@ resolved "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-2.0.3.tgz#a54d6b8899569e348fcd33c95daaeef42075d75b" integrity sha512-iw78lmxm49q2LhHTQCSu9zs85E8Sm6ui82OvxajU9rdhckFzZoj/KCQi9P0gFuL+w3WmQObHqdH2/sxK4oi2wA== -"@cspell/dict-companies@^2.0.5": +"@cspell/dict-companies@^2.0.6": version "2.0.6" resolved "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-2.0.6.tgz#55bd1c0bb48cd10682ea023506503fcba82c3de7" integrity sha512-S1U+ZqvwDwiMYEFPKNxRmH0z7YlmOj93xadga4U0LMa3S4ORSf192uMB0w0AFBwXUPnXHM5uqIGP0LTt0b4Ygg== "@cspell/dict-cpp@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-3.1.0.tgz#0b2983dbd942ae77c7cf0b349786344a1ba7974e" - integrity sha512-lav99zUQ+iPq6dkQRnTN0+KE9th0UG6Nwl34afyEGJ8CN5Dcq/RJjCVvOkLw6vPvs505xrvQcZW1huftQK8WVg== + version "3.1.1" + resolved "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-3.1.1.tgz#e17b6e1d35893c6684074ab3a94a9a88540e7bca" + integrity sha512-ZWK3xxv5HCXvfjxxm2kEqeiMzTtuG3xWquGGAds5655Dd3D0HONSRcIuxzbO0QQMz1PsgCZKQZQu1uGlXk7MUQ== "@cspell/dict-cryptocurrencies@^2.0.0": version "2.0.0" @@ -415,7 +416,7 @@ resolved "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-2.0.0.tgz#a5f5f693a686e5873f9dfb547ee3b3142ef760b1" integrity sha512-GkJdJv6cmzrKcmq2/oxTXjKF5uv71r4eTqnFmgPbNBW1t+G4VYpzOf0QrVQrhx2RC4DdW5XfcTf+iS0FxHOTmw== -"@cspell/dict-docker@^1.1.0": +"@cspell/dict-docker@^1.1.1": version "1.1.1" resolved "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.1.tgz#f9cc1c732a9be2f31a5a4aa079d045798b97b01d" integrity sha512-UEYoeRDm7oUN9yz1mYSozz6D4+2N14S/cd2Re9et6Xzq6yi62s4ky3knF92Of2weelADjnN41UA22VBhRAf7Sw== @@ -435,17 +436,17 @@ resolved "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e" integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== -"@cspell/dict-en_us@^2.2.5": - version "2.2.7" - resolved "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-2.2.7.tgz#c3451a00310e785b875b5d3420fdfadbb8eb8668" - integrity sha512-IoKP/LvQZ+ftKSSPRGHLvI/KCh9pqbEY2nSzp6pZEylqJEh/6o3L44MY2R2wG6HN4bYQuQjsJ3ffrPGGnZRBgA== +"@cspell/dict-en_us@^2.2.8": + version "2.2.8" + resolved "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-2.2.8.tgz#44b1f0003e668197e17abf43749c8bd2c5d75802" + integrity sha512-qJS3yXuuui8/SQ/PHn2fyi54duL/Cn0vTsxRcVdYz2+MS8ayjIAauxgRkU4M2BrhJTasacN08j8CP9/udm+kLA== -"@cspell/dict-filetypes@^2.0.1": +"@cspell/dict-filetypes@^2.0.2": version "2.0.2" resolved "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-2.0.2.tgz#4b05efbbaeab86f4f69c995d52c4b76803ed2ec0" integrity sha512-do7/Iwxjx+FHybe6UTocsWNRF1ar4cwhQoV2K2YzYTm73CoU5LMEwi2LY0Mwp/mn90TKbpPPQGCJ0sRpvaZ4AA== -"@cspell/dict-fonts@^2.0.0": +"@cspell/dict-fonts@^2.0.1": version "2.0.1" resolved "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-2.0.1.tgz#16a99591fef8ba616d09db8973494e9d9ecdd3c9" integrity sha512-UX9evXp7IPZ55G1NxVLADoRgGa+6MPSFx4zWveT6vHIVI9k50yZZY2QkIgQIOEPgk8RNrNe1Tf6HLfndgFL2kQ== @@ -475,20 +476,20 @@ resolved "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-3.0.0.tgz#55d5d96c37ecbde00492c4238e229908eea9cedb" integrity sha512-04K7cPTcbYXmHICfiob4gZA1yaj4hpfM+Nl5WIJ1EAZsSGHdqmGEF28GuCjyQ8ZeKiJAsPt/vXuLBbjxkHqZyQ== -"@cspell/dict-html@^3.0.1": +"@cspell/dict-html@^3.0.2": version "3.0.2" resolved "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-3.0.2.tgz#acd0a06a9adcbff85d1ed6044c0636fb5294b078" integrity sha512-ugMVQHZTvpYA/w8/E2dbSx2hdfFU9y91Omx40VUC6cNyF7jx00VKueK6gcRF3QZoB1PUhjla2YzxqRxuXI908A== -"@cspell/dict-java@^3.0.2": - version "3.0.4" - resolved "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-3.0.4.tgz#d09647cc07368523004b4be015a402a3ac883cce" - integrity sha512-GcGDec6tW+mVQRCik4IJOtL1pjrcensBqXwhurwib+JUO9Ik1MJ/bzIK6JeuSrhgoDIsB7HobHGPOqA4jY78LQ== +"@cspell/dict-java@^3.0.4": + version "3.0.5" + resolved "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-3.0.5.tgz#f15c30ce34884cd76eeffed626237c0bbea012cb" + integrity sha512-8ztQSshk5EmPuHWvjolHp8KVKNWHnHZ5Pxo+bTcWuluDnUscRkEPALmjcom7i702LvXPo5ojvJsHyf8lHJI40g== -"@cspell/dict-latex@^2.0.5": - version "2.0.6" - resolved "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-2.0.6.tgz#9ebbb8087b0a0cee5e7e784633a17ce7c491c472" - integrity sha512-DCe/YlUMnY+/BaaHLIs2LYPgpWF4to5V9lggEkJy4CsHyD0WPqV4JpoaOMrcsK/jbUrD39T91NruwlcPJoo7xQ== +"@cspell/dict-latex@^2.0.6": + version "2.0.7" + resolved "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-2.0.7.tgz#2305efa2c2c808f954acb4e9700c7c8466526d17" + integrity sha512-cSLN6Q/fs4F7a9bUvr5Ipe8f6sDrigjKWyvsbtp1lIcGMeNjmcop7V9bMChO+oZOvuYaA5e1BYl67NNh98z/LA== "@cspell/dict-lorem-ipsum@^2.0.0": version "2.0.0" @@ -540,7 +541,7 @@ resolved "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-2.0.1.tgz#1cbd4d8803428bd421a5562b2d2bb4b3bae80bce" integrity sha512-qGqhYfFeoBOashv/l0Kj5o4ilyvfq0s+t+r32juPOkOnbHz+hzxnJo2tMMg/L/UdjVV7Y8ovg4LDBC/seVrMYQ== -"@cspell/dict-rust@^2.0.0": +"@cspell/dict-rust@^2.0.1": version "2.0.1" resolved "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-2.0.1.tgz#2923392a41784e76ee00b9456d581f86a83097fb" integrity sha512-ATDpIh0VWpQdUIZa8zqqJY4wQz3q00BTXlQCodeOmObYSb23+L6KWWzJ8mKLgpbc1lqTkogWrqxiCxlrCmqNmg== @@ -550,10 +551,10 @@ resolved "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-2.0.0.tgz#b8098103bb03a13406c1c79f1769052353aafac4" integrity sha512-MUwA2YKpqaQOSR4V1/CVGRNk8Ii5kf6I8Ch+4/BhRZRQXuwWbi21rDRYWPqdQWps7VNzAbbMA+PQDWsD5YY38g== -"@cspell/dict-software-terms@^2.1.8": - version "2.1.8" - resolved "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-2.1.8.tgz#2db1d3ce7c125552e86503bb09379041787e1a07" - integrity sha512-D9ECefkdbr5B0yLimy7nmEBl3AHPsweMG1wHatlCIT9uFwwqaq5e+ngbYrntEhMa6afkYY+LGOLbZ1L1dfpLVg== +"@cspell/dict-software-terms@^2.1.9": + version "2.1.9" + resolved "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-2.1.9.tgz#742eff186a8ff11b3505ca164b1cd9740d904361" + integrity sha512-OoAY2i8G3u0fdH3keoB71Ljd5SCH/zmESESs4cBZeq8XascAxtntaB103qt0tuwkjxLfMC7+2FTuirJszVUyRw== "@cspell/dict-swift@^1.0.3": version "1.0.3" @@ -632,15 +633,15 @@ jest-util "^28.1.1" slash "^3.0.0" -"@jest/core@^28.1.1": - version "28.1.1" - resolved "https://registry.npmjs.org/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092" - integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw== +"@jest/core@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/core/-/core-28.1.2.tgz#eac519b9acbd154313854b8823a47b5c645f785a" + integrity sha512-Xo4E+Sb/nZODMGOPt2G3cMmCBqL4/W2Ijwr7/mrXlq4jdJwcFQ/9KrrJZT2adQRk2otVBXXOz1GRQ4Z5iOgvRQ== dependencies: "@jest/console" "^28.1.1" - "@jest/reporters" "^28.1.1" + "@jest/reporters" "^28.1.2" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" ansi-escapes "^4.2.1" @@ -649,15 +650,15 @@ exit "^0.1.2" graceful-fs "^4.2.9" jest-changed-files "^28.0.2" - jest-config "^28.1.1" + jest-config "^28.1.2" jest-haste-map "^28.1.1" jest-message-util "^28.1.1" jest-regex-util "^28.0.2" jest-resolve "^28.1.1" - jest-resolve-dependencies "^28.1.1" - jest-runner "^28.1.1" - jest-runtime "^28.1.1" - jest-snapshot "^28.1.1" + jest-resolve-dependencies "^28.1.2" + jest-runner "^28.1.2" + jest-runtime "^28.1.2" + jest-snapshot "^28.1.2" jest-util "^28.1.1" jest-validate "^28.1.1" jest-watcher "^28.1.1" @@ -667,12 +668,12 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.1.1": - version "28.1.1" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f" - integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw== +"@jest/environment@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-28.1.2.tgz#94a052c0c5f9f8c8e6d13ea6da78dbc5d7d9b85b" + integrity sha512-I0CR1RUMmOzd0tRpz10oUfaChBWs+/Hrvn5xYhMEF/ZqrDaaeHwS8yDBqEWCrEnkH2g+WE/6g90oBv3nKpcm8Q== dependencies: - "@jest/fake-timers" "^28.1.1" + "@jest/fake-timers" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" jest-mock "^28.1.1" @@ -684,46 +685,46 @@ dependencies: jest-get-type "^28.0.2" -"@jest/expect@^28.1.1": - version "28.1.1" - resolved "https://registry.npmjs.org/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326" - integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg== +"@jest/expect@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-28.1.2.tgz#0b25acedff46e1e1e5606285306c8a399c12534f" + integrity sha512-HBzyZBeFBiOelNbBKN0pilWbbrGvwDUwAqMC46NVJmWm8AVkuE58NbG1s7DR4cxFt4U5cVLxofAoHxgvC5MyOw== dependencies: expect "^28.1.1" - jest-snapshot "^28.1.1" + jest-snapshot "^28.1.2" -"@jest/fake-timers@^28.1.1": - version "28.1.1" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1" - integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA== +"@jest/fake-timers@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.2.tgz#d49e8ee4e02ba85a6e844a52a5e7c59c23e3b76f" + integrity sha512-xSYEI7Y0D5FbZN2LsCUj/EKRR1zfQYmGuAUVh6xTqhx7V5JhjgMcK5Pa0iR6WIk0GXiHDe0Ke4A+yERKE9saqg== dependencies: "@jest/types" "^28.1.1" - "@sinonjs/fake-timers" "^9.1.1" + "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" jest-message-util "^28.1.1" jest-mock "^28.1.1" jest-util "^28.1.1" -"@jest/globals@^28.1.1": - version "28.1.1" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061" - integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg== +"@jest/globals@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-28.1.2.tgz#92fab296e337c7309c25e4202fb724f62249d83f" + integrity sha512-cz0lkJVDOtDaYhvT3Fv2U1B6FtBnV+OpEyJCzTHM1fdoTsU4QNLAt/H4RkiwEUU+dL4g/MFsoTuHeT2pvbo4Hg== dependencies: - "@jest/environment" "^28.1.1" - "@jest/expect" "^28.1.1" + "@jest/environment" "^28.1.2" + "@jest/expect" "^28.1.2" "@jest/types" "^28.1.1" -"@jest/reporters@^28.1.1": - version "28.1.1" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662" - integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg== +"@jest/reporters@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.2.tgz#0327be4ce4d0d9ae49e7908656f89669d0c2a260" + integrity sha512-/whGLhiwAqeCTmQEouSigUZJPVl7sW8V26EiboImL+UyXznnr1a03/YZ2BX8OlFw0n+Zlwu+EZAITZtaeRTxyA== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^28.1.1" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.13" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -742,7 +743,7 @@ string-length "^4.0.1" strip-ansi "^6.0.0" terminal-link "^2.0.0" - v8-to-istanbul "^9.0.0" + v8-to-istanbul "^9.0.1" "@jest/schemas@^28.0.2": version "28.0.2" @@ -751,12 +752,12 @@ dependencies: "@sinclair/typebox" "^0.23.3" -"@jest/source-map@^28.0.2": - version "28.0.2" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" - integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== +"@jest/source-map@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" + integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.13" callsites "^3.0.0" graceful-fs "^4.2.9" @@ -780,14 +781,14 @@ jest-haste-map "^28.1.1" slash "^3.0.0" -"@jest/transform@^28.1.1": - version "28.1.1" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27" - integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ== +"@jest/transform@^28.1.2": + version "28.1.2" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-28.1.2.tgz#b367962c53fd53821269bde050ce373e111327c1" + integrity sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg== dependencies: "@babel/core" "^7.11.6" "@jest/types" "^28.1.1" - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.13" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" @@ -821,34 +822,34 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@jridgewell/set-array" "^1.0.0" + "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + version "3.0.8" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz#687cc2bbf243f4e9a868ecf2262318e2658873a1" + integrity sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w== -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -912,29 +913,29 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^12.4.0": - version "12.4.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.4.0.tgz#fd8bf5db72bd566c5ba2cb76754512a9ebe66e71" - integrity sha512-Npcb7Pv30b33U04jvcD7l75yLU0mxhuX2Xqrn51YyZ5WTkF04bpbxLaZ6GcaTqu03WZQHoO/Gbfp95NGRueDUA== +"@octokit/openapi-types@^12.5.0": + version "12.5.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.5.0.tgz#e10b256237c877fa6f0a21922151dc03d9c57510" + integrity sha512-VatvE5wtRkJq6hAWGTBZ62WkrdlCiy0G0u27cVOYTfAWVZi7QqTurVcjpsyc5+9hXLPRP5O/DaNEs4TgAp4Mqg== "@octokit/plugin-paginate-rest@^2.16.8", "@octokit/plugin-paginate-rest@^2.17.0": - version "2.19.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.19.0.tgz#b52eae6ecacfa1f5583dc2cc0985cfbed3ca78b0" - integrity sha512-hQ4Qysg2hNmEMuZeJkvyzM4eSZiTifOKqYAMsW8FnxFKowhuwWICSgBQ9Gn9GpUmgKB7qaf1hFvMjYaTAg5jQA== + version "2.21.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.0.tgz#ddd425eaa09214dfdfdc9cc411fcf676b8985e65" + integrity sha512-MoGEKjvDpTOCVb5gbeiW7kZm/cRfT256UJwHEuy+y+gTUuKziyXaiOkt5rM/4nzhp8UxVgvok9Tu7dMMpUybiQ== dependencies: - "@octokit/types" "^6.36.0" + "@octokit/types" "^6.38.1" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^5.12.0", "@octokit/plugin-rest-endpoint-methods@^5.13.0", "@octokit/plugin-rest-endpoint-methods@^5.15.0": - version "5.15.0" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.15.0.tgz#6c8251b55c33315a6e53e5b55654f72023ed5049" - integrity sha512-Gsw9+Xm56jVhfbJoy4pt6eOOyf8/3K6CAnx1Sl7U2GhZWcg8MR6YgXWnpfdF69S2ViMXLA7nfvTDAsZpFlkLRw== +"@octokit/plugin-rest-endpoint-methods@^5.12.0", "@octokit/plugin-rest-endpoint-methods@^5.13.0", "@octokit/plugin-rest-endpoint-methods@^5.16.0": + version "5.16.0" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.0.tgz#e0a774d78bb17fb9b6b9ae48d5517940f7f61e90" + integrity sha512-mvdwq+LvhR2GRDY82FgSZ52xX6wkOCpjiI3amiKbzKHd9nyKeFdXLsIQ3Go12tWRtvo+HwqoypLHDjRrgMFDQA== dependencies: - "@octokit/types" "^6.36.0" + "@octokit/types" "^6.38.0" deprecation "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": @@ -968,12 +969,12 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.36.0": - version "6.37.1" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.37.1.tgz#600a9c9643f696ba68f229c8d71abbc1040ad6a6" - integrity sha512-Q1hXSP2YumHkDdD+V4wFKr7vJ9+8tjocixrTSb75JzJ4GpjSyu5B4kpgrXxO6GOs4nOmVyRwRgS4/RO/Lf9oEA== +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.38.0", "@octokit/types@^6.38.1": + version "6.38.1" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.38.1.tgz#03d70745564954dfdae32df23d5f1578f958474f" + integrity sha512-kWMohLCIvnwApRmxRFDOqve7puiNNdtVfgwdDOm6QyJNorWOgKv2/AodCcGqx63o28kF7Dr4/nJCatrwwqhULg== dependencies: - "@octokit/openapi-types" "^12.4.0" + "@octokit/openapi-types" "^12.5.0" "@pollyjs/adapter-node-http@^6.0.5": version "6.0.5" @@ -1067,7 +1068,7 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^9.1.1": +"@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== @@ -1205,14 +1206,14 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz#c67794d2b0fd0b4a47f50266088acdc52a08aab6" - integrity sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w== +"@typescript-eslint/eslint-plugin@^5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.0.tgz#524a11e15c09701733033c96943ecf33f55d9ca1" + integrity sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow== dependencies: - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/type-utils" "5.29.0" - "@typescript-eslint/utils" "5.29.0" + "@typescript-eslint/scope-manager" "5.30.0" + "@typescript-eslint/type-utils" "5.30.0" + "@typescript-eslint/utils" "5.30.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -1220,69 +1221,69 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.29.0.tgz#41314b195b34d44ff38220caa55f3f93cfca43cf" - integrity sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw== +"@typescript-eslint/parser@^5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.0.tgz#a2184fb5f8ef2bf1db0ae61a43907e2e32aa1b8f" + integrity sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA== dependencies: - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/typescript-estree" "5.29.0" + "@typescript-eslint/scope-manager" "5.30.0" + "@typescript-eslint/types" "5.30.0" + "@typescript-eslint/typescript-estree" "5.30.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" - integrity sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA== +"@typescript-eslint/scope-manager@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.0.tgz#bf585ee801ab4ad84db2f840174e171a6bb002c7" + integrity sha512-3TZxvlQcK5fhTBw5solQucWSJvonXf5yua5nx8OqK94hxdrT7/6W3/CS42MLd/f1BmlmmbGEgQcTHHCktUX5bQ== dependencies: - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/visitor-keys" "5.29.0" + "@typescript-eslint/types" "5.30.0" + "@typescript-eslint/visitor-keys" "5.30.0" -"@typescript-eslint/type-utils@5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz#241918001d164044020b37d26d5b9f4e37cc3d5d" - integrity sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg== +"@typescript-eslint/type-utils@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.0.tgz#98f3af926a5099153f092d4dad87148df21fbaae" + integrity sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg== dependencies: - "@typescript-eslint/utils" "5.29.0" + "@typescript-eslint/utils" "5.30.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" - integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== +"@typescript-eslint/types@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.0.tgz#db7d81d585a3da3801432a9c1d2fafbff125e110" + integrity sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag== -"@typescript-eslint/typescript-estree@5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" - integrity sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ== +"@typescript-eslint/typescript-estree@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.0.tgz#4565ee8a6d2ac368996e20b2344ea0eab1a8f0bb" + integrity sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw== dependencies: - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/visitor-keys" "5.29.0" + "@typescript-eslint/types" "5.30.0" + "@typescript-eslint/visitor-keys" "5.30.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz#775046effd5019667bd086bcf326acbe32cd0082" - integrity sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A== +"@typescript-eslint/utils@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.0.tgz#1dac771fead5eab40d31860716de219356f5f754" + integrity sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/typescript-estree" "5.29.0" + "@typescript-eslint/scope-manager" "5.30.0" + "@typescript-eslint/types" "5.30.0" + "@typescript-eslint/typescript-estree" "5.30.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.29.0": - version "5.29.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" - integrity sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ== +"@typescript-eslint/visitor-keys@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.0.tgz#07721d23daca2ec4c2da7f1e660d41cd78bacac3" + integrity sha512-6WcIeRk2DQ3pHKxU1Ni0qMXJkjO/zLjBymlYBy/53qxe7yjEFSvzKLDToJjURUhSl2Fzhkl4SMXQoETauF74cw== dependencies: - "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/types" "5.30.0" eslint-visitor-keys "^3.3.0" JSONStream@^1.0.4: @@ -1402,12 +1403,12 @@ arrify@^1.0.1: resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== -babel-jest@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586" - integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw== +babel-jest@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.2.tgz#2b37fb81439f14d34d8b2cc4a4bd7efabf9acbfe" + integrity sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q== dependencies: - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^28.1.1" @@ -1530,14 +1531,14 @@ braces@^3.0.2: fill-range "^7.0.1" browserslist@^4.20.2: - version "4.21.0" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" - integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== + version "4.21.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz#c9b9b0a54c7607e8dc3e01a0d311727188011a00" + integrity sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ== dependencies: - caniuse-lite "^1.0.30001358" - electron-to-chromium "^1.4.164" + caniuse-lite "^1.0.30001359" + electron-to-chromium "^1.4.172" node-releases "^2.0.5" - update-browserslist-db "^1.0.0" + update-browserslist-db "^1.0.4" bs-logger@0.x: version "0.2.6" @@ -1595,10 +1596,10 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001358: - version "1.0.30001359" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz#a1c1cbe1c2da9e689638813618b4219acbd4925e" - integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw== +caniuse-lite@^1.0.30001359: + version "1.0.30001361" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz#ba2adb2527566fb96f3ac7c67698ae7fc495a28d" + integrity sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ== chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" @@ -1969,41 +1970,49 @@ crypto-random-string@^2.0.0: resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -cspell-gitignore@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.1.2.tgz#9ce6f6465c1e800d7d0bd9eec432e59ebed0c9c5" - integrity sha512-9P4ltD5DF/Dogz/+IgW8BZjqvgbOghg2OKk165+ilKgoQc73zHQy8bZRdJsDo2NBevmT8Z9RswEN37pQvzmMqQ== +cspell-gitignore@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.1.3.tgz#f25e3333e2656c27fb8c35367c9cc98c6108f802" + integrity sha512-cVWRHX2+DVK8aPiBZEMgeCGwuYWGVQrn79p5TGibkwfVnfMaxCDokW/XsWIP6EL9+Dzl3Xqrd97uUeZe+BxqCQ== dependencies: - cspell-glob "^6.1.2" + cspell-glob "^6.1.3" find-up "^5.0.0" -cspell-glob@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.1.2.tgz#1081bce9a480f6de61dec7058a6faa31dbff248e" - integrity sha512-+EN4DEyK8ohwZLShPw9vhU6114fnGYi8q4IQAGc5qCCcnMTgb1H3N840YyG+EuP0Q1o3TwMYMA+B+tw4w+yQSg== +cspell-glob@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.1.3.tgz#22db4842b0e92aa135af84216225f528ef1f4ebc" + integrity sha512-W/rFDgrD+ZCqbUxdQG87XOXslmZNR9SWvBb4l+0Hun2KE6r+SR2ZxV1cNl9iXFMpq36BhA8LTULbJJLdQyzkrw== dependencies: micromatch "^4.0.5" -cspell-io@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cspell-io/-/cspell-io-6.1.2.tgz#64fa2b8728532f5e04dc463bfc161a2df93b90bc" - integrity sha512-WVRKjOzB3BgwJPk4hWH19jiqXzbtWGzJ1yNLaB2r3KYCDh+FYT4jVaHb5DWERASahvukb05go7G623FuYeoY3Q== +cspell-grammar@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.1.3.tgz#1d370e4fc261ac6fdde9982f8870f01e6823196c" + integrity sha512-znd+lNDfOHbVy+zEn2lfo7BmonBtOvpYfD33G2JT0nhwOi9eZfkY9jY9B15PzKuYK/VvzpMPq8ybkAUEC9Bp2A== + dependencies: + "@cspell/cspell-pipe" "^6.1.3" + "@cspell/cspell-types" "^6.1.3" + +cspell-io@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/cspell-io/-/cspell-io-6.1.3.tgz#38e854ff74ac168633c77865c18872fdedcb8ee6" + integrity sha512-kl26L/Ofgtl11D8v4XKpoT6yQBofJ5xEDlpUM2hL5FQLaudtCYaUDhJ9HrEaECGY7BchKC5QlJS1ts6s4cpQmQ== -cspell-lib@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.1.2.tgz#9c61c4501835452ce632c005ece7d07b6a8ee6bc" - integrity sha512-oJVAvxnP6jsiglLIdFy9agO5vfArTQdLweRjkR8SbVPoYQ8vyDfrbQT9J+K+ekKpCvpzKKzjleOJHHwJFeltGQ== +cspell-lib@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.1.3.tgz#5598d6008bf031590a0babf87a6ebe145b18e68f" + integrity sha512-mAoBCyozibTVH+QUgtWE6kEMr9TAyiPPGwZh6Ucc261+5DXFny5UWONI48KvoIXebb88DKdst3PdJK2bHI0+SA== dependencies: - "@cspell/cspell-bundled-dicts" "^6.1.2" - "@cspell/cspell-pipe" "^6.1.2" - "@cspell/cspell-types" "^6.1.2" + "@cspell/cspell-bundled-dicts" "^6.1.3" + "@cspell/cspell-pipe" "^6.1.3" + "@cspell/cspell-types" "^6.1.3" clear-module "^4.1.2" comment-json "^4.2.2" configstore "^5.0.1" cosmiconfig "^7.0.1" - cspell-glob "^6.1.2" - cspell-io "^6.1.2" - cspell-trie-lib "^6.1.2" + cspell-glob "^6.1.3" + cspell-io "^6.1.3" + cspell-trie-lib "^6.1.3" fast-equals "^4.0.1" find-up "^5.0.0" fs-extra "^10.1.0" @@ -2014,26 +2023,26 @@ cspell-lib@^6.1.2: vscode-languageserver-textdocument "^1.0.5" vscode-uri "^3.0.3" -cspell-trie-lib@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.1.2.tgz#aaa933b7c7af2b58eff920179cfdaf4e435357ec" - integrity sha512-VQasYB6WYQZz71Uo0Z4K/i6qOZpBqOh0SbKQr6n0lkejnmoAv324SKJqKyXyizWCQQvWDq+ax18bW+KBFNBzxQ== +cspell-trie-lib@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.1.3.tgz#1c0c63b6e0452fdc4cd52d74bd517cd619769a6b" + integrity sha512-P7CY1gtkQAd2lhiaSzmwoennDM/0H1rhSdw5aT9gtAD113/vmx/adCfUfK5mxs6E7EMb7UXWHIVdVrJtGzgkHA== dependencies: - "@cspell/cspell-pipe" "^6.1.2" + "@cspell/cspell-pipe" "^6.1.3" fs-extra "^10.1.0" gensequence "^3.1.1" -cspell@^6.1.2: - version "6.1.2" - resolved "https://registry.npmjs.org/cspell/-/cspell-6.1.2.tgz#b17be28dda221867627973840dc83447c84ff537" - integrity sha512-w4lGfzNl3m1dfagyZvr28V1nK/E+y8zoKVlE158JI/iVNGO/R2okrcNB1s+9xXSmYjJ8Xx6dhupO0XxKuagDSQ== +cspell@^6.1.3: + version "6.1.3" + resolved "https://registry.npmjs.org/cspell/-/cspell-6.1.3.tgz#deb018eabad90e0a63cb48feb8d1092feba15e94" + integrity sha512-9dB73ehWLXKTav4G9V1s/QitS1KzKF46sy9WtemVFevU6fenXt5Kdo77bTGNHHpmgugQk7yFyWq2dAeS0gZDAw== dependencies: - "@cspell/cspell-pipe" "^6.1.2" + "@cspell/cspell-pipe" "^6.1.3" chalk "^4.1.2" commander "^9.3.0" - cspell-gitignore "^6.1.2" - cspell-glob "^6.1.2" - cspell-lib "^6.1.2" + cspell-gitignore "^6.1.3" + cspell-glob "^6.1.3" + cspell-lib "^6.1.3" fast-json-stable-stringify "^2.1.0" file-entry-cache "^6.0.1" fs-extra "^10.1.0" @@ -2160,10 +2169,10 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.164: - version "1.4.170" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz#0415fc489402e09bfbe1f0c99bbf4d73f31d48d4" - integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw== +electron-to-chromium@^1.4.172: + version "1.4.174" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.174.tgz#ffdf57f26dd4558c5aabdb4b190c47af1c4e443b" + integrity sha512-JER+w+9MV2MBVFOXxP036bLlNOnzbYAWrWU8sNUwoOO69T3w4564WhM5H5atd8VVS8U4vpi0i0kdoYzm1NPQgQ== emittery@^0.10.2: version "0.10.2" @@ -2528,9 +2537,9 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.2.6" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" + integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== forwarded@0.2.0: version "0.2.0" @@ -3008,13 +3017,13 @@ jest-changed-files@^28.0.2: execa "^5.0.0" throat "^6.0.1" -jest-circus@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4" - integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw== +jest-circus@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.2.tgz#0d5a5623eccb244efe87d1edc365696e4fcf80ce" + integrity sha512-E2vdPIJG5/69EMpslFhaA46WkcrN74LI5V/cSJ59L7uS8UNoXbzTxmwhpi9XrIL3zqvMt5T0pl5k2l2u2GwBNQ== dependencies: - "@jest/environment" "^28.1.1" - "@jest/expect" "^28.1.1" + "@jest/environment" "^28.1.2" + "@jest/expect" "^28.1.2" "@jest/test-result" "^28.1.1" "@jest/types" "^28.1.1" "@types/node" "*" @@ -3025,52 +3034,52 @@ jest-circus@^28.1.1: jest-each "^28.1.1" jest-matcher-utils "^28.1.1" jest-message-util "^28.1.1" - jest-runtime "^28.1.1" - jest-snapshot "^28.1.1" + jest-runtime "^28.1.2" + jest-snapshot "^28.1.2" jest-util "^28.1.1" pretty-format "^28.1.1" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe" - integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ== +jest-cli@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.2.tgz#b89012e5bad14135e71b1628b85475d3773a1bbc" + integrity sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw== dependencies: - "@jest/core" "^28.1.1" + "@jest/core" "^28.1.2" "@jest/test-result" "^28.1.1" "@jest/types" "^28.1.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^28.1.1" + jest-config "^28.1.2" jest-util "^28.1.1" jest-validate "^28.1.1" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f" - integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA== +jest-config@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-28.1.2.tgz#ba00ad30caf62286c86e7c1099e915218a0ac8c6" + integrity sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA== dependencies: "@babel/core" "^7.11.6" "@jest/test-sequencer" "^28.1.1" "@jest/types" "^28.1.1" - babel-jest "^28.1.1" + babel-jest "^28.1.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^28.1.1" - jest-environment-node "^28.1.1" + jest-circus "^28.1.2" + jest-environment-node "^28.1.2" jest-get-type "^28.0.2" jest-regex-util "^28.0.2" jest-resolve "^28.1.1" - jest-runner "^28.1.1" + jest-runner "^28.1.2" jest-util "^28.1.1" jest-validate "^28.1.1" micromatch "^4.0.4" @@ -3107,13 +3116,13 @@ jest-each@^28.1.1: jest-util "^28.1.1" pretty-format "^28.1.1" -jest-environment-node@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67" - integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA== +jest-environment-node@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.2.tgz#3e2eb47f6d173b0648d5f7c717cb1c26651d5c8a" + integrity sha512-oYsZz9Qw27XKmOgTtnl0jW7VplJkN2oeof+SwAwKFQacq3CLlG9u4kTGuuLWfvu3J7bVutWlrbEQMOCL/jughw== dependencies: - "@jest/environment" "^28.1.1" - "@jest/fake-timers" "^28.1.1" + "@jest/environment" "^28.1.2" + "@jest/fake-timers" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" jest-mock "^28.1.1" @@ -3194,13 +3203,13 @@ jest-regex-util@^28.0.2: resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== -jest-resolve-dependencies@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27" - integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ== +jest-resolve-dependencies@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.2.tgz#ca528858e0c6642d5a1dda8fc7cda10230c275bc" + integrity sha512-OXw4vbOZuyRTBi3tapWBqdyodU+T33ww5cPZORuTWkg+Y8lmsxQlVu3MWtJh6NMlKRTHQetF96yGPv01Ye7Mbg== dependencies: jest-regex-util "^28.0.2" - jest-snapshot "^28.1.1" + jest-snapshot "^28.1.2" jest-resolve@^28.1.1: version "28.1.1" @@ -3217,44 +3226,44 @@ jest-resolve@^28.1.1: resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c" - integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA== +jest-runner@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.2.tgz#f293409592a62234285a71237e38499a3554e350" + integrity sha512-6/k3DlAsAEr5VcptCMdhtRhOoYClZQmxnVMZvZ/quvPGRpN7OBQYPIC32tWSgOnbgqLXNs5RAniC+nkdFZpD4A== dependencies: "@jest/console" "^28.1.1" - "@jest/environment" "^28.1.1" + "@jest/environment" "^28.1.2" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.10.2" graceful-fs "^4.2.9" jest-docblock "^28.1.1" - jest-environment-node "^28.1.1" + jest-environment-node "^28.1.2" jest-haste-map "^28.1.1" jest-leak-detector "^28.1.1" jest-message-util "^28.1.1" jest-resolve "^28.1.1" - jest-runtime "^28.1.1" + jest-runtime "^28.1.2" jest-util "^28.1.1" jest-watcher "^28.1.1" jest-worker "^28.1.1" source-map-support "0.5.13" throat "^6.0.1" -jest-runtime@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf" - integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg== +jest-runtime@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.2.tgz#d68f34f814a848555a345ceda23289f14d59a688" + integrity sha512-i4w93OsWzLOeMXSi9epmakb2+3z0AchZtUQVF1hesBmcQQy4vtaql5YdVe9KexdJaVRyPDw8DoBR0j3lYsZVYw== dependencies: - "@jest/environment" "^28.1.1" - "@jest/fake-timers" "^28.1.1" - "@jest/globals" "^28.1.1" - "@jest/source-map" "^28.0.2" + "@jest/environment" "^28.1.2" + "@jest/fake-timers" "^28.1.2" + "@jest/globals" "^28.1.2" + "@jest/source-map" "^28.1.2" "@jest/test-result" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" chalk "^4.0.0" cjs-module-lexer "^1.0.0" @@ -3267,15 +3276,15 @@ jest-runtime@^28.1.1: jest-mock "^28.1.1" jest-regex-util "^28.0.2" jest-resolve "^28.1.1" - jest-snapshot "^28.1.1" + jest-snapshot "^28.1.2" jest-util "^28.1.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848" - integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A== +jest-snapshot@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.2.tgz#93d31b87b11b384f5946fe0767541496135f8d52" + integrity sha512-wzrieFttZYfLvrCVRJxX+jwML2YTArOUqFpCoSVy1QUapx+LlV9uLbV/mMEhYj4t7aMeE9aSQFHSvV/oNoDAMA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -3283,7 +3292,7 @@ jest-snapshot@^28.1.1: "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" "@jest/expect-utils" "^28.1.1" - "@jest/transform" "^28.1.1" + "@jest/transform" "^28.1.2" "@jest/types" "^28.1.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" @@ -3348,15 +3357,15 @@ jest-worker@^28.1.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^28.1.1: - version "28.1.1" - resolved "https://registry.npmjs.org/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e" - integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA== +jest@^28.1.2: + version "28.1.2" + resolved "https://registry.npmjs.org/jest/-/jest-28.1.2.tgz#451ff24081ce31ca00b07b60c61add13aa96f8eb" + integrity sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg== dependencies: - "@jest/core" "^28.1.1" + "@jest/core" "^28.1.2" "@jest/types" "^28.1.1" import-local "^3.0.2" - jest-cli "^28.1.1" + jest-cli "^28.1.2" js-tokens@^4.0.0: version "4.0.0" @@ -4065,9 +4074,9 @@ qs@6.10.3: side-channel "^1.0.4" qs@^6.10.1: - version "6.10.5" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" @@ -4764,7 +4773,7 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.0.0: +update-browserslist-db@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== @@ -4807,7 +4816,7 @@ v8-compile-cache@^2.0.3: resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-to-istanbul@^9.0.0: +v8-to-istanbul@^9.0.1: version "9.0.1" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==