naider 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +884 -0
- package/SPEC-X.nx +276 -0
- package/SPEC.naide +431 -0
- package/bin/naide.js +519 -0
- package/examples/ai-app.naide +21 -0
- package/examples/ai-app.nx +21 -0
- package/examples/async.naide +50 -0
- package/examples/async.nx +40 -0
- package/examples/crud.naide +79 -0
- package/examples/crud.nx +64 -0
- package/examples/fullapp.naide +74 -0
- package/examples/fullapp.nx +74 -0
- package/examples/hello.naide +33 -0
- package/examples/hello.nx +29 -0
- package/examples/model.naide +44 -0
- package/examples/server.naide +28 -0
- package/examples/server.nx +27 -0
- package/examples/sql-app.naide +23 -0
- package/examples/sql-app.nx +23 -0
- package/examples/todo-api.naide +34 -0
- package/examples/todo-api.nx +31 -0
- package/lsp/server.js +172 -0
- package/package.json +56 -0
- package/src/generator.js +1313 -0
- package/src/index.js +41 -0
- package/src/lexer.js +402 -0
- package/src/parser.js +1671 -0
- package/src/preprocess.js +308 -0
- package/src/runtime.js +969 -0
- package/src/tokens.js +218 -0
- package/vscode-naide/README.md +38 -0
- package/vscode-naide/extension.js +41 -0
- package/vscode-naide/language-configuration-naide.json +32 -0
- package/vscode-naide/language-configuration-nx.json +32 -0
- package/vscode-naide/naide-lang-1.1.0.vsix +0 -0
- package/vscode-naide/node_modules/.bin/semver +16 -0
- package/vscode-naide/node_modules/.bin/semver.cmd +17 -0
- package/vscode-naide/node_modules/.bin/semver.ps1 +28 -0
- package/vscode-naide/node_modules/.package-lock.json +86 -0
- package/vscode-naide/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/vscode-naide/node_modules/balanced-match/LICENSE.md +21 -0
- package/vscode-naide/node_modules/balanced-match/README.md +97 -0
- package/vscode-naide/node_modules/balanced-match/index.js +62 -0
- package/vscode-naide/node_modules/balanced-match/package.json +48 -0
- package/vscode-naide/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
- package/vscode-naide/node_modules/brace-expansion/LICENSE +21 -0
- package/vscode-naide/node_modules/brace-expansion/README.md +157 -0
- package/vscode-naide/node_modules/brace-expansion/index.js +394 -0
- package/vscode-naide/node_modules/brace-expansion/package.json +49 -0
- package/vscode-naide/node_modules/minimatch/LICENSE +15 -0
- package/vscode-naide/node_modules/minimatch/README.md +296 -0
- package/vscode-naide/node_modules/minimatch/changelog.md +35 -0
- package/vscode-naide/node_modules/minimatch/lib/path.js +4 -0
- package/vscode-naide/node_modules/minimatch/minimatch.js +996 -0
- package/vscode-naide/node_modules/minimatch/package.json +35 -0
- package/vscode-naide/node_modules/semver/LICENSE +15 -0
- package/vscode-naide/node_modules/semver/README.md +680 -0
- package/vscode-naide/node_modules/semver/bin/semver.js +195 -0
- package/vscode-naide/node_modules/semver/classes/comparator.js +143 -0
- package/vscode-naide/node_modules/semver/classes/index.js +7 -0
- package/vscode-naide/node_modules/semver/classes/range.js +577 -0
- package/vscode-naide/node_modules/semver/classes/semver.js +350 -0
- package/vscode-naide/node_modules/semver/functions/clean.js +8 -0
- package/vscode-naide/node_modules/semver/functions/cmp.js +54 -0
- package/vscode-naide/node_modules/semver/functions/coerce.js +62 -0
- package/vscode-naide/node_modules/semver/functions/compare-build.js +9 -0
- package/vscode-naide/node_modules/semver/functions/compare-loose.js +5 -0
- package/vscode-naide/node_modules/semver/functions/compare.js +7 -0
- package/vscode-naide/node_modules/semver/functions/diff.js +60 -0
- package/vscode-naide/node_modules/semver/functions/eq.js +5 -0
- package/vscode-naide/node_modules/semver/functions/gt.js +5 -0
- package/vscode-naide/node_modules/semver/functions/gte.js +5 -0
- package/vscode-naide/node_modules/semver/functions/inc.js +21 -0
- package/vscode-naide/node_modules/semver/functions/lt.js +5 -0
- package/vscode-naide/node_modules/semver/functions/lte.js +5 -0
- package/vscode-naide/node_modules/semver/functions/major.js +5 -0
- package/vscode-naide/node_modules/semver/functions/minor.js +5 -0
- package/vscode-naide/node_modules/semver/functions/neq.js +5 -0
- package/vscode-naide/node_modules/semver/functions/parse.js +18 -0
- package/vscode-naide/node_modules/semver/functions/patch.js +5 -0
- package/vscode-naide/node_modules/semver/functions/prerelease.js +8 -0
- package/vscode-naide/node_modules/semver/functions/rcompare.js +5 -0
- package/vscode-naide/node_modules/semver/functions/rsort.js +5 -0
- package/vscode-naide/node_modules/semver/functions/satisfies.js +12 -0
- package/vscode-naide/node_modules/semver/functions/sort.js +5 -0
- package/vscode-naide/node_modules/semver/functions/truncate.js +48 -0
- package/vscode-naide/node_modules/semver/functions/valid.js +8 -0
- package/vscode-naide/node_modules/semver/index.js +93 -0
- package/vscode-naide/node_modules/semver/internal/constants.js +37 -0
- package/vscode-naide/node_modules/semver/internal/debug.js +11 -0
- package/vscode-naide/node_modules/semver/internal/identifiers.js +29 -0
- package/vscode-naide/node_modules/semver/internal/lrucache.js +42 -0
- package/vscode-naide/node_modules/semver/internal/parse-options.js +17 -0
- package/vscode-naide/node_modules/semver/internal/re.js +223 -0
- package/vscode-naide/node_modules/semver/package.json +78 -0
- package/vscode-naide/node_modules/semver/preload.js +4 -0
- package/vscode-naide/node_modules/semver/range.bnf +17 -0
- package/vscode-naide/node_modules/semver/ranges/gtr.js +6 -0
- package/vscode-naide/node_modules/semver/ranges/intersects.js +9 -0
- package/vscode-naide/node_modules/semver/ranges/ltr.js +6 -0
- package/vscode-naide/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/vscode-naide/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/vscode-naide/node_modules/semver/ranges/min-version.js +63 -0
- package/vscode-naide/node_modules/semver/ranges/outside.js +82 -0
- package/vscode-naide/node_modules/semver/ranges/simplify.js +49 -0
- package/vscode-naide/node_modules/semver/ranges/subset.js +249 -0
- package/vscode-naide/node_modules/semver/ranges/to-comparators.js +10 -0
- package/vscode-naide/node_modules/semver/ranges/valid.js +13 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/License.txt +11 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/README.md +69 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/browser.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/browser.js +7 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/main.js +76 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +12 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/browser/ril.js +156 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/api.d.ts +14 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/api.js +81 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/cancellation.js +96 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +358 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/connection.js +1212 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/disposable.js +16 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/encoding.js +70 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/events.d.ts +39 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/events.js +128 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/is.d.ts +7 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/is.js +35 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +53 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +398 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +152 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageReader.js +197 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +115 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/messages.js +306 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/ral.js +23 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/semaphore.js +68 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +76 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/main.d.ts +63 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/main.js +257 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +13 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/lib/node/ril.js +161 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/node.cmd +5 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/node.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/node.js +7 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/package.json +45 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/thirdpartynotices.txt +16 -0
- package/vscode-naide/node_modules/vscode-jsonrpc/typings/thenable.d.ts +5 -0
- package/vscode-naide/node_modules/vscode-languageclient/License.txt +11 -0
- package/vscode-naide/node_modules/vscode-languageclient/README.md +17 -0
- package/vscode-naide/node_modules/vscode-languageclient/browser.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageclient/browser.js +7 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/browser/main.d.ts +8 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/browser/main.js +37 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/api.d.ts +36 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/api.js +27 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/callHierarchy.d.ts +37 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/callHierarchy.js +97 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/client.d.ts +476 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/client.js +1600 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeAction.d.ts +19 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeAction.js +99 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeConverter.d.ts +78 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeConverter.js +876 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeLens.d.ts +23 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/codeLens.js +78 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/colorProvider.d.ts +25 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/colorProvider.js +74 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/completion.d.ts +20 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/completion.js +126 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/configuration.d.ts +69 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/configuration.js +209 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/declaration.d.ts +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/declaration.js +54 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/definition.d.ts +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/definition.js +55 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/diagnostic.d.ts +122 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/diagnostic.js +814 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentHighlight.d.ts +15 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentHighlight.js +50 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentLink.d.ts +19 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentLink.js +71 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentSymbol.d.ts +17 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/documentSymbol.js +104 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/executeCommand.d.ts +21 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/executeCommand.js +72 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/features.d.ts +418 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/features.js +291 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileOperations.d.ts +116 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileOperations.js +333 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileSystemWatcher.d.ts +18 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/fileSystemWatcher.js +95 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/foldingRange.d.ts +19 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/foldingRange.js +65 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/formatting.d.ts +39 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/formatting.js +182 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/hover.d.ts +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/hover.js +58 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/implementation.d.ts +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/implementation.js +54 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlayHint.d.ts +20 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlayHint.js +92 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineCompletion.d.ts +18 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineCompletion.js +54 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineValue.d.ts +18 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/inlineValue.js +65 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/linkedEditingRange.d.ts +21 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/linkedEditingRange.js +53 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/notebook.d.ts +96 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/notebook.js +851 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/progress.d.ts +11 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/progress.js +44 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/progressPart.d.ts +24 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/progressPart.js +96 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.js +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeAction.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeAction.js +14 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeLens.d.ts +5 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCodeLens.js +13 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCompletionItem.d.ts +11 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolCompletionItem.js +13 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolConverter.d.ts +167 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolConverter.js +1134 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDiagnostic.d.ts +18 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDiagnostic.js +25 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDocumentLink.d.ts +5 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolDocumentLink.js +13 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolInlayHint.d.ts +5 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolInlayHint.js +13 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.js +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.d.ts +7 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.js +18 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/reference.d.ts +20 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/reference.js +53 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/rename.d.ts +27 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/rename.js +113 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/selectionRange.d.ts +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/selectionRange.js +57 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/semanticTokens.d.ts +33 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/semanticTokens.js +179 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/signatureHelp.d.ts +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/signatureHelp.js +71 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/textSynchronization.d.ts +101 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/textSynchronization.js +402 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeDefinition.d.ts +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeDefinition.js +55 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeHierarchy.d.ts +31 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/typeHierarchy.js +96 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/async.d.ts +41 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/async.js +276 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/is.d.ts +12 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/is.js +57 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/uuid.d.ts +22 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/utils/uuid.js +97 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceFolder.d.ts +30 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceFolder.js +148 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceSymbol.d.ts +19 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/common/workspaceSymbol.js +79 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/node/main.d.ts +100 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/node/main.js +570 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/node/processes.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/node/processes.js +47 -0
- package/vscode-naide/node_modules/vscode-languageclient/lib/node/terminateProcess.sh +16 -0
- package/vscode-naide/node_modules/vscode-languageclient/node.cmd +5 -0
- package/vscode-naide/node_modules/vscode-languageclient/node.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageclient/node.js +7 -0
- package/vscode-naide/node_modules/vscode-languageclient/package.json +50 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/License.txt +11 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/README.md +16 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/browser.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/browser.js +7 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/browser/main.d.ts +4 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/browser/main.js +28 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/api.d.ts +58 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/api.js +77 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts +187 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/connection.js +15 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts +51 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/messages.js +44 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.d.ts +1 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.js +43 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.d.ts +86 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +42 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +66 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js +32 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts +35 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js +24 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +3252 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts +37 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js +22 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +341 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +74 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +306 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +101 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.d.ts +109 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js +30 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts +38 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js +21 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.d.ts +110 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js +43 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.d.ts +57 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js +22 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +86 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js +30 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.js +943 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.d.ts +52 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +19 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts +106 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +68 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts +400 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js +214 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts +107 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js +37 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.d.ts +41 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js +20 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.d.ts +223 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +57 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.d.ts +72 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +22 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.d.ts +38 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js +21 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.d.ts +83 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js +42 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.d.ts +74 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js +27 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/utils/is.d.ts +9 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js +46 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/node/main.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/lib/node/main.js +28 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/metaModel.schema.json +783 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/node.cmd +5 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/node.d.ts +6 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/node.js +7 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/package.json +45 -0
- package/vscode-naide/node_modules/vscode-languageserver-protocol/thirdpartynotices.txt +31 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/License.txt +11 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/README.md +17 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +3139 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/lib/esm/main.js +2222 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/lib/esm/package.json +3 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +3139 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/lib/umd/main.js +2272 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/package.json +38 -0
- package/vscode-naide/node_modules/vscode-languageserver-types/thirdpartynotices.txt +16 -0
- package/vscode-naide/package-lock.json +96 -0
- package/vscode-naide/package.json +59 -0
- package/vscode-naide/syntaxes/naide.tmLanguage.json +194 -0
- package/vscode-naide/syntaxes/naidex.tmLanguage.json +287 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
module.exports = balanced;
|
|
3
|
+
function balanced(a, b, str) {
|
|
4
|
+
if (a instanceof RegExp) a = maybeMatch(a, str);
|
|
5
|
+
if (b instanceof RegExp) b = maybeMatch(b, str);
|
|
6
|
+
|
|
7
|
+
var r = range(a, b, str);
|
|
8
|
+
|
|
9
|
+
return r && {
|
|
10
|
+
start: r[0],
|
|
11
|
+
end: r[1],
|
|
12
|
+
pre: str.slice(0, r[0]),
|
|
13
|
+
body: str.slice(r[0] + a.length, r[1]),
|
|
14
|
+
post: str.slice(r[1] + b.length)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function maybeMatch(reg, str) {
|
|
19
|
+
var m = str.match(reg);
|
|
20
|
+
return m ? m[0] : null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
balanced.range = range;
|
|
24
|
+
function range(a, b, str) {
|
|
25
|
+
var begs, beg, left, right, result;
|
|
26
|
+
var ai = str.indexOf(a);
|
|
27
|
+
var bi = str.indexOf(b, ai + 1);
|
|
28
|
+
var i = ai;
|
|
29
|
+
|
|
30
|
+
if (ai >= 0 && bi > 0) {
|
|
31
|
+
if(a===b) {
|
|
32
|
+
return [ai, bi];
|
|
33
|
+
}
|
|
34
|
+
begs = [];
|
|
35
|
+
left = str.length;
|
|
36
|
+
|
|
37
|
+
while (i >= 0 && !result) {
|
|
38
|
+
if (i == ai) {
|
|
39
|
+
begs.push(i);
|
|
40
|
+
ai = str.indexOf(a, i + 1);
|
|
41
|
+
} else if (begs.length == 1) {
|
|
42
|
+
result = [ begs.pop(), bi ];
|
|
43
|
+
} else {
|
|
44
|
+
beg = begs.pop();
|
|
45
|
+
if (beg < left) {
|
|
46
|
+
left = beg;
|
|
47
|
+
right = bi;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
bi = str.indexOf(b, i + 1);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
i = ai < bi && ai >= 0 ? ai : bi;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (begs.length) {
|
|
57
|
+
result = [ left, right ];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "balanced-match",
|
|
3
|
+
"description": "Match balanced character pairs, like \"{\" and \"}\"",
|
|
4
|
+
"version": "1.0.2",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git://github.com/juliangruber/balanced-match.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/juliangruber/balanced-match",
|
|
10
|
+
"main": "index.js",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"test": "tape test/test.js",
|
|
13
|
+
"bench": "matcha test/bench.js"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"matcha": "^0.7.0",
|
|
17
|
+
"tape": "^4.6.0"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"match",
|
|
21
|
+
"regexp",
|
|
22
|
+
"test",
|
|
23
|
+
"balanced",
|
|
24
|
+
"parse"
|
|
25
|
+
],
|
|
26
|
+
"author": {
|
|
27
|
+
"name": "Julian Gruber",
|
|
28
|
+
"email": "mail@juliangruber.com",
|
|
29
|
+
"url": "http://juliangruber.com"
|
|
30
|
+
},
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"testling": {
|
|
33
|
+
"files": "test/*.js",
|
|
34
|
+
"browsers": [
|
|
35
|
+
"ie/8..latest",
|
|
36
|
+
"firefox/20..latest",
|
|
37
|
+
"firefox/nightly",
|
|
38
|
+
"chrome/25..latest",
|
|
39
|
+
"chrome/canary",
|
|
40
|
+
"opera/12..latest",
|
|
41
|
+
"opera/next",
|
|
42
|
+
"safari/5.1..latest",
|
|
43
|
+
"ipad/6.0..latest",
|
|
44
|
+
"iphone/6.0..latest",
|
|
45
|
+
"android-browser/4.2..latest"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# brace-expansion
|
|
2
|
+
|
|
3
|
+
[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html),
|
|
4
|
+
as known from sh/bash, in JavaScript.
|
|
5
|
+
|
|
6
|
+
[](http://travis-ci.org/juliangruber/brace-expansion)
|
|
7
|
+
[](https://www.npmjs.org/package/brace-expansion)
|
|
8
|
+
[](https://greenkeeper.io/)
|
|
9
|
+
|
|
10
|
+
[](https://ci.testling.com/juliangruber/brace-expansion)
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```js
|
|
15
|
+
var expand = require('brace-expansion');
|
|
16
|
+
|
|
17
|
+
expand('file-{a,b,c}.jpg')
|
|
18
|
+
// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
|
|
19
|
+
|
|
20
|
+
expand('-v{,,}')
|
|
21
|
+
// => ['-v', '-v', '-v']
|
|
22
|
+
|
|
23
|
+
expand('file{0..2}.jpg')
|
|
24
|
+
// => ['file0.jpg', 'file1.jpg', 'file2.jpg']
|
|
25
|
+
|
|
26
|
+
expand('file-{a..c}.jpg')
|
|
27
|
+
// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
|
|
28
|
+
|
|
29
|
+
expand('file{2..0}.jpg')
|
|
30
|
+
// => ['file2.jpg', 'file1.jpg', 'file0.jpg']
|
|
31
|
+
|
|
32
|
+
expand('file{0..4..2}.jpg')
|
|
33
|
+
// => ['file0.jpg', 'file2.jpg', 'file4.jpg']
|
|
34
|
+
|
|
35
|
+
expand('file-{a..e..2}.jpg')
|
|
36
|
+
// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']
|
|
37
|
+
|
|
38
|
+
expand('file{00..10..5}.jpg')
|
|
39
|
+
// => ['file00.jpg', 'file05.jpg', 'file10.jpg']
|
|
40
|
+
|
|
41
|
+
expand('{{A..C},{a..c}}')
|
|
42
|
+
// => ['A', 'B', 'C', 'a', 'b', 'c']
|
|
43
|
+
|
|
44
|
+
expand('ppp{,config,oe{,conf}}')
|
|
45
|
+
// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## API
|
|
49
|
+
|
|
50
|
+
```js
|
|
51
|
+
var expand = require('brace-expansion');
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### var expanded = expand(str, [options])
|
|
55
|
+
|
|
56
|
+
Return an array of all possible and valid expansions of `str`. If none are
|
|
57
|
+
found, `[str]` is returned.
|
|
58
|
+
|
|
59
|
+
The `options` object can provide a `max` value to cap the number
|
|
60
|
+
of expansions allowed. This is limited to `100_000` by default,
|
|
61
|
+
to prevent DoS attacks.
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
const expansions = expand('{1..100}'.repeat(5), {
|
|
65
|
+
max: 100,
|
|
66
|
+
})
|
|
67
|
+
// expansions.length will be 100, not 100^5
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The `options` object can also provide a `maxLength` value to cap the
|
|
71
|
+
total number of characters across all expansions. This is limited to
|
|
72
|
+
`4_000_000` by default, to prevent memory exhaustion from inputs whose
|
|
73
|
+
result count stays under `max` while each result grows very long.
|
|
74
|
+
|
|
75
|
+
```js
|
|
76
|
+
const expansions = expand('{a,b}'.repeat(1500), {
|
|
77
|
+
maxLength: 10_000,
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Valid expansions are:
|
|
82
|
+
|
|
83
|
+
```js
|
|
84
|
+
/^(.*,)+(.+)?$/
|
|
85
|
+
// {a,b,...}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
|
|
89
|
+
|
|
90
|
+
```js
|
|
91
|
+
/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
|
|
92
|
+
// {x..y[..incr]}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
A numeric sequence from `x` to `y` inclusive, with optional increment.
|
|
96
|
+
If `x` or `y` start with a leading `0`, all the numbers will be padded
|
|
97
|
+
to have equal length. Negative numbers and backwards iteration work too.
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
|
|
101
|
+
// {x..y[..incr]}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
An alphabetic sequence from `x` to `y` inclusive, with optional increment.
|
|
105
|
+
`x` and `y` must be exactly one character, and if given, `incr` must be a
|
|
106
|
+
number.
|
|
107
|
+
|
|
108
|
+
For compatibility reasons, the string `${` is not eligible for brace expansion.
|
|
109
|
+
|
|
110
|
+
## Installation
|
|
111
|
+
|
|
112
|
+
With [npm](https://npmjs.org) do:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
npm install brace-expansion
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Contributors
|
|
119
|
+
|
|
120
|
+
- [Julian Gruber](https://github.com/juliangruber)
|
|
121
|
+
- [Isaac Z. Schlueter](https://github.com/isaacs)
|
|
122
|
+
|
|
123
|
+
## Sponsors
|
|
124
|
+
|
|
125
|
+
This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)!
|
|
126
|
+
|
|
127
|
+
Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)!
|
|
128
|
+
|
|
129
|
+
## Security contact information
|
|
130
|
+
|
|
131
|
+
To report a security vulnerability, please use the
|
|
132
|
+
[Tidelift security contact](https://tidelift.com/security).
|
|
133
|
+
Tidelift will coordinate the fix and disclosure.
|
|
134
|
+
|
|
135
|
+
## License
|
|
136
|
+
|
|
137
|
+
(MIT)
|
|
138
|
+
|
|
139
|
+
Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
|
|
140
|
+
|
|
141
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
142
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
143
|
+
the Software without restriction, including without limitation the rights to
|
|
144
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
145
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
146
|
+
so, subject to the following conditions:
|
|
147
|
+
|
|
148
|
+
The above copyright notice and this permission notice shall be included in all
|
|
149
|
+
copies or substantial portions of the Software.
|
|
150
|
+
|
|
151
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
152
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
153
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
154
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
155
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
156
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
157
|
+
SOFTWARE.
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
var balanced = require('balanced-match');
|
|
2
|
+
|
|
3
|
+
module.exports = expandTop;
|
|
4
|
+
|
|
5
|
+
var escSlash = '\0SLASH'+Math.random()+'\0';
|
|
6
|
+
var escOpen = '\0OPEN'+Math.random()+'\0';
|
|
7
|
+
var escClose = '\0CLOSE'+Math.random()+'\0';
|
|
8
|
+
var escComma = '\0COMMA'+Math.random()+'\0';
|
|
9
|
+
var escPeriod = '\0PERIOD'+Math.random()+'\0';
|
|
10
|
+
|
|
11
|
+
var EXPANSION_MAX = 100000
|
|
12
|
+
|
|
13
|
+
// `EXPANSION_MAX` caps the *number* of expansions, but not their length. An
|
|
14
|
+
// input like `'{a,b}'.repeat(1500)` stays under that count - its output is
|
|
15
|
+
// truncated to 100k results - while making every result ~1500 characters
|
|
16
|
+
// long. The result set, and the intermediate arrays built while combining
|
|
17
|
+
// brace sets, then grow large enough to exhaust memory and crash the process
|
|
18
|
+
// (CVE-2026-14257). `EXPANSION_MAX_LENGTH` bounds the total number of
|
|
19
|
+
// characters the accumulator may hold at any point, so memory stays flat no
|
|
20
|
+
// matter how many brace groups are chained. The limit sits well above any
|
|
21
|
+
// realistic expansion (100k results hitting `EXPANSION_MAX` measure ~1M
|
|
22
|
+
// characters) so legitimate input is unaffected.
|
|
23
|
+
var EXPANSION_MAX_LENGTH = 4000000
|
|
24
|
+
|
|
25
|
+
// `expand` recurses once per level of brace *nesting* - both when expanding a
|
|
26
|
+
// set's comma members and when re-wrapping a set whose body is a single part.
|
|
27
|
+
// The CVE-2026-14257 fix made the *tail* iterative (recursion on `m.post`, one
|
|
28
|
+
// level per chained group), which left nesting depth unbounded: about 3,100
|
|
29
|
+
// levels of `{{{...a,b...}}}` - only ~6KB of input - exhausted the native stack
|
|
30
|
+
// and crashed the process. `EXPANSION_MAX_DEPTH` bounds how deep the parser
|
|
31
|
+
// will follow nesting. It sits far above any realistic pattern and well below
|
|
32
|
+
// the depth at which the stack runs out.
|
|
33
|
+
var EXPANSION_MAX_DEPTH = 1000
|
|
34
|
+
|
|
35
|
+
// Bash keeps a quirk where a brace group followed by a comma set still expands
|
|
36
|
+
// (`{a},b}`). The parser implements it by rewriting the string and restarting
|
|
37
|
+
// the scan, absorbing one `}` per pass. `n` trailing braces therefore cost `n`
|
|
38
|
+
// full passes over a string that itself grows by one `escClose` sentinel each
|
|
39
|
+
// time - quadratic in `n`, with a ~26x constant from the sentinel's length.
|
|
40
|
+
// 128KB of `'{a}' + '}'.repeat(n) + ',z}'` blocked the event loop for 27
|
|
41
|
+
// seconds to produce two results. `EXPANSION_MAX_REWRITES` bounds how many
|
|
42
|
+
// times the scan may restart. Real `{a},b}` input needs a handful.
|
|
43
|
+
var EXPANSION_MAX_REWRITES = 1000
|
|
44
|
+
|
|
45
|
+
function numeric(str) {
|
|
46
|
+
return parseInt(str, 10) == str
|
|
47
|
+
? parseInt(str, 10)
|
|
48
|
+
: str.charCodeAt(0);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function escapeBraces(str) {
|
|
52
|
+
return str.split('\\\\').join(escSlash)
|
|
53
|
+
.split('\\{').join(escOpen)
|
|
54
|
+
.split('\\}').join(escClose)
|
|
55
|
+
.split('\\,').join(escComma)
|
|
56
|
+
.split('\\.').join(escPeriod);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function unescapeBraces(str) {
|
|
60
|
+
return str.split(escSlash).join('\\')
|
|
61
|
+
.split(escOpen).join('{')
|
|
62
|
+
.split(escClose).join('}')
|
|
63
|
+
.split(escComma).join(',')
|
|
64
|
+
.split(escPeriod).join('.');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
// Like `target.push(...items)` but doesn't overflow the stack
|
|
69
|
+
function pushAll(target, items) {
|
|
70
|
+
for (var i = 0; i < items.length; i++) {
|
|
71
|
+
target.push(items[i]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Basically just str.split(","), but handling cases
|
|
76
|
+
// where we have nested braced sections, which should be
|
|
77
|
+
// treated as individual members, like {a,{b,c},d}
|
|
78
|
+
function parseCommaParts(str) {
|
|
79
|
+
var parts = [];
|
|
80
|
+
|
|
81
|
+
// Walk the brace groups iteratively. Recursing on `post` once per group let a
|
|
82
|
+
// chain of them exhaust the stack - the parsing-side counterpart to
|
|
83
|
+
// the `expand` overflow fixed for CVE-2026-14257, and not something `max` or
|
|
84
|
+
// `maxLength` can bound, since it happens before expansion.
|
|
85
|
+
//
|
|
86
|
+
// The part the next chunk continues
|
|
87
|
+
var carry = '';
|
|
88
|
+
|
|
89
|
+
for (;;) {
|
|
90
|
+
var m = balanced('{', '}', str);
|
|
91
|
+
|
|
92
|
+
if (!m) {
|
|
93
|
+
var tail = str.split(',');
|
|
94
|
+
tail[0] = carry + tail[0];
|
|
95
|
+
pushAll(parts, tail);
|
|
96
|
+
return parts;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
var pre = m.pre;
|
|
100
|
+
var body = m.body;
|
|
101
|
+
var post = m.post;
|
|
102
|
+
var p = pre.split(',');
|
|
103
|
+
|
|
104
|
+
p[0] = carry + p[0];
|
|
105
|
+
p[p.length-1] += '{' + body + '}';
|
|
106
|
+
|
|
107
|
+
if (!post.length) {
|
|
108
|
+
pushAll(parts, p);
|
|
109
|
+
return parts;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
carry = p.pop();
|
|
113
|
+
pushAll(parts, p);
|
|
114
|
+
str = post;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function expandTop(str, options) {
|
|
119
|
+
if (!str)
|
|
120
|
+
return [];
|
|
121
|
+
|
|
122
|
+
options = options || {};
|
|
123
|
+
var max = options.max == null ? EXPANSION_MAX : options.max;
|
|
124
|
+
var maxLength = options.maxLength == null ? EXPANSION_MAX_LENGTH : options.maxLength;
|
|
125
|
+
var maxDepth = options.maxDepth == null ? EXPANSION_MAX_DEPTH : options.maxDepth;
|
|
126
|
+
var maxRewrites = options.maxRewrites == null ? EXPANSION_MAX_REWRITES : options.maxRewrites;
|
|
127
|
+
|
|
128
|
+
// I don't know why Bash 4.3 does this, but it does.
|
|
129
|
+
// Anything starting with {} will have the first two bytes preserved
|
|
130
|
+
// but *only* at the top level, so {},a}b will not expand to anything,
|
|
131
|
+
// but a{},b}c will be expanded to [a}c,abc].
|
|
132
|
+
// One could argue that this is a bug in Bash, but since the goal of
|
|
133
|
+
// this module is to match Bash's rules, we escape a leading {}
|
|
134
|
+
if (str.substr(0, 2) === '{}') {
|
|
135
|
+
str = '\\{\\}' + str.substr(2);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return expand(escapeBraces(str), max, maxLength, maxDepth, 0, maxRewrites, true).map(unescapeBraces);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function embrace(str) {
|
|
142
|
+
return '{' + str + '}';
|
|
143
|
+
}
|
|
144
|
+
function isPadded(el) {
|
|
145
|
+
return /^-?0\d/.test(el);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function lte(i, y) {
|
|
149
|
+
return i <= y;
|
|
150
|
+
}
|
|
151
|
+
function gte(i, y) {
|
|
152
|
+
return i >= y;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Build `{ acc[a] + pre + values[v] }` for every combination, capping the
|
|
156
|
+
// number of results at `max` and the total number of characters at `maxLength`.
|
|
157
|
+
// This is the one place output grows, so bounding it here keeps the single
|
|
158
|
+
// accumulator - and therefore memory - flat regardless of how many brace groups
|
|
159
|
+
// are combined (CVE-2026-14257).
|
|
160
|
+
function combine(
|
|
161
|
+
acc,
|
|
162
|
+
pre,
|
|
163
|
+
values,
|
|
164
|
+
max,
|
|
165
|
+
maxLength,
|
|
166
|
+
dropEmpties
|
|
167
|
+
) {
|
|
168
|
+
var out = []
|
|
169
|
+
var length = 0
|
|
170
|
+
for (var a = 0; a < acc.length; a++) {
|
|
171
|
+
for (var v = 0; v < values.length; v++) {
|
|
172
|
+
if (out.length >= max) return out
|
|
173
|
+
var expansion = acc[a] + pre + values[v]
|
|
174
|
+
// Bash drops empty results at the top level. Skip them before they count
|
|
175
|
+
// against `max`, so `max` bounds the number of *kept* results.
|
|
176
|
+
if (dropEmpties && !expansion) continue
|
|
177
|
+
if (length + expansion.length > maxLength) return out
|
|
178
|
+
out.push(expansion)
|
|
179
|
+
length += expansion.length
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return out
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// The expansion values of a single numeric (`1..5`) or alphabetic (`a..e..2`)
|
|
186
|
+
// sequence body.
|
|
187
|
+
function expandSequence(
|
|
188
|
+
body,
|
|
189
|
+
isAlphaSequence,
|
|
190
|
+
max,
|
|
191
|
+
maxLength
|
|
192
|
+
) {
|
|
193
|
+
var n = body.split(/\.\./)
|
|
194
|
+
var N = []
|
|
195
|
+
// A sequence body always splits into two or three parts, but the compiler
|
|
196
|
+
// can't know that.
|
|
197
|
+
/* c8 ignore start */
|
|
198
|
+
if (n[0] === undefined || n[1] === undefined) {
|
|
199
|
+
return N
|
|
200
|
+
}
|
|
201
|
+
/* c8 ignore stop */
|
|
202
|
+
var x = numeric(n[0])
|
|
203
|
+
var y = numeric(n[1])
|
|
204
|
+
var width = Math.max(n[0].length, n[1].length)
|
|
205
|
+
var incr =
|
|
206
|
+
n.length === 3 && n[2] !== undefined ?
|
|
207
|
+
Math.max(Math.abs(numeric(n[2])), 1)
|
|
208
|
+
: 1
|
|
209
|
+
var test = lte
|
|
210
|
+
var reverse = y < x
|
|
211
|
+
if (reverse) {
|
|
212
|
+
incr *= -1
|
|
213
|
+
test = gte
|
|
214
|
+
}
|
|
215
|
+
var pad = n.some(isPadded)
|
|
216
|
+
|
|
217
|
+
var length = 0
|
|
218
|
+
for (var i = x; test(i, y) && N.length < max; i += incr) {
|
|
219
|
+
var c
|
|
220
|
+
if (isAlphaSequence) {
|
|
221
|
+
c = String.fromCharCode(i)
|
|
222
|
+
if (c === '\\') {
|
|
223
|
+
c = ''
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
c = String(i)
|
|
227
|
+
if (pad) {
|
|
228
|
+
var need = width - c.length
|
|
229
|
+
if (need > 0) {
|
|
230
|
+
var z = new Array(need + 1).join('0')
|
|
231
|
+
if (i < 0) {
|
|
232
|
+
c = '-' + z + c.slice(1)
|
|
233
|
+
} else {
|
|
234
|
+
c = z + c
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (length + c.length > maxLength) break
|
|
240
|
+
N.push(c)
|
|
241
|
+
length += c.length
|
|
242
|
+
}
|
|
243
|
+
return N
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function expand(
|
|
247
|
+
str,
|
|
248
|
+
max,
|
|
249
|
+
maxLength,
|
|
250
|
+
maxDepth,
|
|
251
|
+
depth,
|
|
252
|
+
maxRewrites,
|
|
253
|
+
isTop
|
|
254
|
+
) {
|
|
255
|
+
// Too deeply nested to keep following: treat the rest as literal, the same
|
|
256
|
+
// way a group that cannot expand is already handled. Truncating rather than
|
|
257
|
+
// throwing keeps expansion total, matching `max` and `maxLength`.
|
|
258
|
+
if (depth > maxDepth) {
|
|
259
|
+
return [str];
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Consume the string's top-level brace groups left to right, threading a
|
|
263
|
+
// running set of combined prefixes (`acc`). Expanding the tail iteratively -
|
|
264
|
+
// rather than recursing on `m.post` once per group - keeps the native stack
|
|
265
|
+
// depth constant, so deeply chained input (`'{a,b}'.repeat(3000)`) can no
|
|
266
|
+
// longer overflow the stack, and leaves a single accumulator whose size
|
|
267
|
+
// `maxLength` bounds directly (CVE-2026-14257).
|
|
268
|
+
var acc = ['']
|
|
269
|
+
|
|
270
|
+
// Bash drops empty results, but only when the *first* top-level group is a
|
|
271
|
+
// comma set - a sequence like `{a..\}` may legitimately yield ''. The drop
|
|
272
|
+
// is on the final strings, so it is applied to whichever `combine` produces
|
|
273
|
+
// them (the one with no brace set left in the tail).
|
|
274
|
+
// How many times the `{a},b}` rewrite below has restarted the scan. Each pass
|
|
275
|
+
// re-reads the whole string, so leaving this unbounded is quadratic.
|
|
276
|
+
var rewrites = 0
|
|
277
|
+
var dropEmpties = false
|
|
278
|
+
var firstGroup = true
|
|
279
|
+
|
|
280
|
+
for (;;) {
|
|
281
|
+
const m = balanced('{', '}', str)
|
|
282
|
+
|
|
283
|
+
// No brace set left: the rest of the string is literal.
|
|
284
|
+
if (!m) {
|
|
285
|
+
return combine(acc, str, [''], max, maxLength, dropEmpties)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// no need to expand pre, since it is guaranteed to be free of brace-sets
|
|
289
|
+
const pre = m.pre
|
|
290
|
+
|
|
291
|
+
if (/\$$/.test(pre)) {
|
|
292
|
+
acc = combine(
|
|
293
|
+
acc,
|
|
294
|
+
pre + '{' + m.body + '}',
|
|
295
|
+
[''],
|
|
296
|
+
max,
|
|
297
|
+
maxLength,
|
|
298
|
+
dropEmpties && !m.post.length
|
|
299
|
+
)
|
|
300
|
+
firstGroup = false
|
|
301
|
+
if (!m.post.length) break
|
|
302
|
+
str = m.post
|
|
303
|
+
continue
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
|
|
307
|
+
var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
|
|
308
|
+
var isSequence = isNumericSequence || isAlphaSequence;
|
|
309
|
+
var isOptions = m.body.indexOf(',') >= 0;
|
|
310
|
+
if (!isSequence && !isOptions) {
|
|
311
|
+
// {a},b}
|
|
312
|
+
if (rewrites < maxRewrites && m.post.match(/,(?!,).*\}/)) {
|
|
313
|
+
rewrites++;
|
|
314
|
+
str = m.pre + '{' + m.body + escClose + m.post;
|
|
315
|
+
isTop = true;
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
// Nothing here expands, so the whole remaining string is literal.
|
|
319
|
+
return combine(
|
|
320
|
+
acc,
|
|
321
|
+
pre + '{' + m.body + '}' + m.post,
|
|
322
|
+
[''],
|
|
323
|
+
max,
|
|
324
|
+
maxLength,
|
|
325
|
+
dropEmpties
|
|
326
|
+
)
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if (firstGroup) {
|
|
330
|
+
dropEmpties = isTop && !isSequence
|
|
331
|
+
firstGroup = false
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
var values;
|
|
335
|
+
if (isSequence) {
|
|
336
|
+
values = expandSequence(m.body, isAlphaSequence, max, maxLength);
|
|
337
|
+
} else {
|
|
338
|
+
var n = parseCommaParts(m.body);
|
|
339
|
+
if (n.length === 1 && n[0] !== undefined) {
|
|
340
|
+
// x{{a,b}}y ==> x{a}y x{b}y
|
|
341
|
+
n = expand(n[0], max, maxLength, maxDepth, depth + 1, maxRewrites, false).map(embrace);
|
|
342
|
+
//XXX is this necessary? Can't seem to hit it in tests.
|
|
343
|
+
/* c8 ignore start */
|
|
344
|
+
if (n.length === 1) {
|
|
345
|
+
acc = combine(
|
|
346
|
+
acc,
|
|
347
|
+
pre + n[0],
|
|
348
|
+
[''],
|
|
349
|
+
max,
|
|
350
|
+
maxLength,
|
|
351
|
+
dropEmpties && !m.post.length
|
|
352
|
+
)
|
|
353
|
+
if (!m.post.length) break
|
|
354
|
+
str = m.post
|
|
355
|
+
continue
|
|
356
|
+
}
|
|
357
|
+
/* c8 ignore stop */
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Values that `combine` is going to drop as empty produce no result, so
|
|
361
|
+
// they must not count against `max` - otherwise `{a,,b}` with `max: 2`
|
|
362
|
+
// would stop at `['a', '']` and yield one result instead of two. Skipping
|
|
363
|
+
// them outright keeps `values` bounded while leaving `max` a bound on
|
|
364
|
+
// *kept* results.
|
|
365
|
+
var dropsEmpties = dropEmpties && !m.post.length && !pre
|
|
366
|
+
for (var d = 0; dropsEmpties && d < acc.length; d++) {
|
|
367
|
+
if (acc[d]) {
|
|
368
|
+
dropsEmpties = false
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
values = []
|
|
373
|
+
var valuesLength = 0
|
|
374
|
+
outer: for (var j = 0; j < n.length; j++) {
|
|
375
|
+
var expanded = expand(n[j], max, maxLength, maxDepth, depth + 1, maxRewrites, false)
|
|
376
|
+
for (var k = 0; k < expanded.length; k++) {
|
|
377
|
+
var v = expanded[k]
|
|
378
|
+
if (dropsEmpties && !v) continue
|
|
379
|
+
if (values.length >= max || valuesLength + v.length > maxLength) {
|
|
380
|
+
break outer
|
|
381
|
+
}
|
|
382
|
+
values.push(v)
|
|
383
|
+
valuesLength += v.length
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
acc = combine(acc, pre, values, max, maxLength, dropEmpties && !m.post.length)
|
|
389
|
+
if (!m.post.length) break
|
|
390
|
+
str = m.post
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
return acc
|
|
394
|
+
}
|