@zzzen/pyright-internal 1.2.0-dev.20260816 → 1.2.0-dev.20260830
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/dist/analyzer/analyzerNodeInfo.d.ts +123 -24
- package/dist/analyzer/analyzerNodeInfo.js +429 -89
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +2 -1
- package/dist/analyzer/backgroundAnalysisProgram.js +4 -8
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.d.ts +6 -3
- package/dist/analyzer/binder.js +70 -69
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +4 -2
- package/dist/analyzer/checker.js +86 -59
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +2 -1
- package/dist/analyzer/codeFlowEngine.js +12 -10
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowUtils.d.ts +2 -1
- package/dist/analyzer/codeFlowUtils.js +2 -3
- package/dist/analyzer/codeFlowUtils.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +8 -0
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/dataClasses.d.ts +5 -4
- package/dist/analyzer/dataClasses.js +30 -59
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +2 -1
- package/dist/analyzer/declarationUtils.js +2 -2
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.d.ts +5 -4
- package/dist/analyzer/decorators.js +20 -21
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/enums.d.ts +5 -4
- package/dist/analyzer/enums.js +11 -10
- package/dist/analyzer/enums.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +1 -1
- package/dist/analyzer/importResolver.js +5 -3
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +3 -1
- package/dist/analyzer/importStatementUtils.js +14 -7
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/namedTuples.d.ts +2 -1
- package/dist/analyzer/namedTuples.js +3 -4
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.d.ts +3 -2
- package/dist/analyzer/operations.js +8 -8
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +2 -2
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +13 -11
- package/dist/analyzer/parseTreeUtils.js +62 -36
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.d.ts +7 -2
- package/dist/analyzer/parseTreeWalker.js +29 -175
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.d.ts +4 -3
- package/dist/analyzer/patternMatching.js +47 -43
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +12 -0
- package/dist/analyzer/program.js +238 -29
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.d.ts +4 -3
- package/dist/analyzer/properties.js +7 -8
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +14 -2
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/scopeUtils.d.ts +4 -3
- package/dist/analyzer/scopeUtils.js +8 -8
- package/dist/analyzer/scopeUtils.js.map +1 -1
- package/dist/analyzer/sentinel.d.ts +3 -2
- package/dist/analyzer/sentinel.js +4 -5
- package/dist/analyzer/sentinel.js.map +1 -1
- package/dist/analyzer/service.d.ts +5 -10
- package/dist/analyzer/service.js +36 -96
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceEnumerator.d.ts +5 -0
- package/dist/analyzer/sourceEnumerator.js +57 -3
- package/dist/analyzer/sourceEnumerator.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +12 -6
- package/dist/analyzer/sourceFile.js +74 -50
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -0
- package/dist/analyzer/sourceFileInfoUtils.js +8 -0
- package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +4 -1
- package/dist/analyzer/sourceMapper.js +14 -8
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/testWalker.js +2 -1
- package/dist/analyzer/testWalker.js.map +1 -1
- package/dist/analyzer/tracePrinter.d.ts +2 -1
- package/dist/analyzer/tracePrinter.js +2 -2
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/tuples.d.ts +3 -2
- package/dist/analyzer/tuples.js +5 -5
- package/dist/analyzer/tuples.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.d.ts +5 -7
- package/dist/analyzer/typeDocStringUtils.js +229 -132
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +2 -0
- package/dist/analyzer/typeEvaluator.js +418 -229
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +3 -2
- package/dist/analyzer/typeGuards.js +159 -35
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubGeneration.d.ts +64 -0
- package/dist/analyzer/typeStubGeneration.js +226 -0
- package/dist/analyzer/typeStubGeneration.js.map +1 -0
- package/dist/analyzer/typeStubMessages.d.ts +4 -0
- package/dist/analyzer/typeStubMessages.js +25 -0
- package/dist/analyzer/typeStubMessages.js.map +1 -0
- package/dist/analyzer/typeStubOutput.d.ts +9 -0
- package/dist/analyzer/typeStubOutput.js +52 -0
- package/dist/analyzer/typeStubOutput.js.map +1 -0
- package/dist/analyzer/typeStubRenderer.d.ts +5 -0
- package/dist/analyzer/{typeStubWriter.js → typeStubRenderer.js} +20 -99
- package/dist/analyzer/typeStubRenderer.js.map +1 -0
- package/dist/analyzer/typeUtils.d.ts +1 -0
- package/dist/analyzer/typeUtils.js +115 -1
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +4 -3
- package/dist/analyzer/typedDicts.js +15 -14
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +2 -0
- package/dist/analyzer/types.js +84 -58
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +5 -4
- package/dist/backgroundAnalysisBase.js +11 -19
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/commands/createTypeStub.d.ts +2 -6
- package/dist/commands/createTypeStub.js +14 -27
- package/dist/commands/createTypeStub.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
- package/dist/common/collectionUtils.js +15 -6
- package/dist/common/collectionUtils.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +1 -1
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +4 -1
- package/dist/common/configOptions.js +68 -12
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/envVarUtils.d.ts +1 -0
- package/dist/common/envVarUtils.js +41 -10
- package/dist/common/envVarUtils.js.map +1 -1
- package/dist/common/extensibility.d.ts +3 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/extraPathGlob.d.ts +12 -0
- package/dist/common/extraPathGlob.js +315 -0
- package/dist/common/extraPathGlob.js.map +1 -0
- package/dist/common/host.d.ts +2 -0
- package/dist/common/host.js.map +1 -1
- package/dist/common/languageServerInterface.d.ts +2 -1
- package/dist/common/languageServerInterface.js.map +1 -1
- package/dist/common/pathConsts.d.ts +1 -0
- package/dist/common/pathConsts.js +11 -1
- package/dist/common/pathConsts.js.map +1 -1
- package/dist/common/processUtils.d.ts +4 -2
- package/dist/common/processUtils.js +3 -0
- package/dist/common/processUtils.js.map +1 -1
- package/dist/common/stringUtils.d.ts +6 -0
- package/dist/common/stringUtils.js +87 -5
- package/dist/common/stringUtils.js.map +1 -1
- package/dist/common/textEditTracker.d.ts +3 -1
- package/dist/common/textEditTracker.js +8 -6
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/textRangeCollection.d.ts +1 -0
- package/dist/common/textRangeCollection.js +32 -1
- package/dist/common/textRangeCollection.js.map +1 -1
- package/dist/common/uri/uriUtils.d.ts +3 -0
- package/dist/common/uri/uriUtils.js +65 -15
- package/dist/common/uri/uriUtils.js.map +1 -1
- package/dist/fileSystemMapping.d.ts +10 -0
- package/dist/fileSystemMapping.js +176 -0
- package/dist/fileSystemMapping.js.map +1 -0
- package/dist/languageServerBase.d.ts +1 -1
- package/dist/languageServerBase.js +2 -2
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +1 -3
- package/dist/languageService/analyzerServiceExecutor.js +10 -29
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/autoImporter.d.ts +1 -0
- package/dist/languageService/autoImporter.js +32 -5
- package/dist/languageService/autoImporter.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.d.ts +7 -0
- package/dist/languageService/callHierarchyProvider.js +97 -11
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +30 -8
- package/dist/languageService/completionProvider.js +298 -93
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +7 -6
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentHighlightProvider.js +2 -1
- package/dist/languageService/documentHighlightProvider.js.map +1 -1
- package/dist/languageService/documentSymbolCollector.d.ts +3 -1
- package/dist/languageService/documentSymbolCollector.js +78 -14
- package/dist/languageService/documentSymbolCollector.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +3 -2
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/fileWatcherDynamicFeature.js +28 -1
- package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +2 -1
- package/dist/languageService/hoverProvider.js +48 -16
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importSorter.d.ts +3 -1
- package/dist/languageService/importSorter.js +4 -2
- package/dist/languageService/importSorter.js.map +1 -1
- package/dist/languageService/importStatementCandidates.js +4 -2
- package/dist/languageService/importStatementCandidates.js.map +1 -1
- package/dist/languageService/quickActions.js +2 -1
- package/dist/languageService/quickActions.js.map +1 -1
- package/dist/languageService/referencesProvider.js +12 -5
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.d.ts +3 -0
- package/dist/languageService/signatureHelpProvider.js +56 -18
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.d.ts +2 -1
- package/dist/languageService/symbolIndexer.js +7 -7
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/languageService/tooltipUtils.d.ts +1 -1
- package/dist/languageService/tooltipUtils.js +103 -35
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/languageService/workspaceSymbolProvider.js +3 -2
- package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +6 -0
- package/dist/localization/localize.js +10 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +15 -0
- package/dist/localization/package.nls.de.json +15 -0
- package/dist/localization/package.nls.en-us.json +5 -0
- package/dist/localization/package.nls.es.json +15 -0
- package/dist/localization/package.nls.fr.json +15 -0
- package/dist/localization/package.nls.it.json +15 -0
- package/dist/localization/package.nls.ja.json +15 -0
- package/dist/localization/package.nls.ko.json +15 -0
- package/dist/localization/package.nls.pl.json +15 -0
- package/dist/localization/package.nls.pt-br.json +15 -0
- package/dist/localization/package.nls.qps-ploc.json +15 -0
- package/dist/localization/package.nls.ru.json +15 -0
- package/dist/localization/package.nls.tr.json +15 -0
- package/dist/localization/package.nls.zh-cn.json +16 -1
- package/dist/localization/package.nls.zh-tw.json +17 -2
- package/dist/parser/parseNodes.d.ts +85 -80
- package/dist/parser/parseNodes.js +182 -159
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parseTreeUtils.d.ts +3 -0
- package/dist/parser/parseTreeUtils.js +209 -0
- package/dist/parser/parseTreeUtils.js.map +1 -0
- package/dist/parser/parser.d.ts +16 -6
- package/dist/parser/parser.js +210 -144
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/stringAnnotationInfo.d.ts +16 -0
- package/dist/parser/stringAnnotationInfo.js +26 -0
- package/dist/parser/stringAnnotationInfo.js.map +1 -0
- package/dist/pyright.js +30 -17
- package/dist/pyright.js.map +1 -1
- package/dist/readonlyAugmentedFileSystem.d.ts +2 -9
- package/dist/readonlyAugmentedFileSystem.js +17 -144
- package/dist/readonlyAugmentedFileSystem.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tests/analyzerNodeInfo.test.d.ts +1 -0
- package/dist/tests/analyzerNodeInfo.test.js +145 -0
- package/dist/tests/analyzerNodeInfo.test.js.map +1 -0
- package/dist/tests/collectionUtils.test.js +46 -0
- package/dist/tests/collectionUtils.test.js.map +1 -1
- package/dist/tests/completions.test.js +34 -0
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +131 -7
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/extraPathGlob.test.d.ts +1 -0
- package/dist/tests/extraPathGlob.test.js +434 -0
- package/dist/tests/extraPathGlob.test.js.map +1 -0
- package/dist/tests/fileSystemMapping.test.d.ts +1 -0
- package/dist/tests/fileSystemMapping.test.js +458 -0
- package/dist/tests/fileSystemMapping.test.js.map +1 -0
- package/dist/tests/fourslash/completions.call.typedDict.fourslash.js +23 -0
- package/dist/tests/fourslash/completions.call.typedDict.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js +14 -0
- package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js +7 -0
- package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js +41 -0
- package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js +2 -0
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js +5 -0
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.stringLiteral.fourslash.js +4 -0
- package/dist/tests/fourslash/completions.stringLiteral.fourslash.js.map +1 -1
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js +48 -0
- package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js +0 -1
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js +8 -2
- package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js +5 -2
- package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js.map +1 -1
- package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js +2 -2
- package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.js +1 -1
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/hoverProvider.test.js +38 -0
- package/dist/tests/hoverProvider.test.js.map +1 -1
- package/dist/tests/importStatementUtils.test.js +6 -3
- package/dist/tests/importStatementUtils.test.js.map +1 -1
- package/dist/tests/ipythonMode.test.js +38 -0
- package/dist/tests/ipythonMode.test.js.map +1 -1
- package/dist/tests/parseTreeUtils.test.js +88 -0
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/parser.test.js +60 -3
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/positionUtils.test.js +23 -0
- package/dist/tests/positionUtils.test.js.map +1 -1
- package/dist/tests/pyrightCli.test.d.ts +1 -0
- package/dist/tests/pyrightCli.test.js +205 -0
- package/dist/tests/pyrightCli.test.js.map +1 -0
- package/dist/tests/pyrightFileSystem.test.js +41 -0
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/service.test.js +183 -0
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/sourceEnumeratorSymlink.test.d.ts +1 -0
- package/dist/tests/sourceEnumeratorSymlink.test.js +203 -0
- package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -0
- package/dist/tests/stringUtils.test.js +84 -0
- package/dist/tests/stringUtils.test.js.map +1 -1
- package/dist/tests/symlinkAliasInvalidation.test.d.ts +1 -0
- package/dist/tests/symlinkAliasInvalidation.test.js +471 -0
- package/dist/tests/symlinkAliasInvalidation.test.js.map +1 -0
- package/dist/tests/testUtils.d.ts +2 -0
- package/dist/tests/testUtils.js +7 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.js +2 -2
- package/dist/tests/textEditUtil.test.js.map +1 -1
- package/dist/tests/textRangeCollection.test.d.ts +1 -0
- package/dist/tests/textRangeCollection.test.js +137 -0
- package/dist/tests/textRangeCollection.test.js.map +1 -0
- package/dist/tests/typeEquality.test.d.ts +1 -0
- package/dist/tests/typeEquality.test.js +95 -0
- package/dist/tests/typeEquality.test.js.map +1 -0
- package/dist/tests/typeEvaluator1.test.js +24 -3
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +4 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +8 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +8 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +1 -1
- package/dist/tests/typeEvaluator6.test.js +5 -1
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +4 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +4 -0
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/tests/typeServer/typeCache.test.d.ts +1 -0
- package/dist/tests/typeServer/typeCache.test.js +69 -0
- package/dist/tests/typeServer/typeCache.test.js.map +1 -0
- package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js +18 -0
- package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js.map +1 -1
- package/dist/tests/typeStubGeneration.test.d.ts +1 -0
- package/dist/tests/typeStubGeneration.test.js +397 -0
- package/dist/tests/typeStubGeneration.test.js.map +1 -0
- package/dist/tests/typeStubOutput.test.d.ts +1 -0
- package/dist/tests/typeStubOutput.test.js +136 -0
- package/dist/tests/typeStubOutput.test.js.map +1 -0
- package/dist/tests/typeUtils.test.d.ts +1 -0
- package/dist/tests/typeUtils.test.js +133 -0
- package/dist/tests/typeUtils.test.js.map +1 -0
- package/dist/tests/uri.test.js +51 -0
- package/dist/tests/uri.test.js.map +1 -1
- package/dist/typeServer/notebookDocumentHandler.d.ts +9 -2
- package/dist/typeServer/notebookDocumentHandler.js +16 -6
- package/dist/typeServer/notebookDocumentHandler.js.map +1 -1
- package/dist/typeServer/programWrapper.d.ts +1 -0
- package/dist/typeServer/programWrapper.js +28 -15
- package/dist/typeServer/programWrapper.js.map +1 -1
- package/dist/typeServer/protocol/tspSupplemental.d.ts +1 -1
- package/dist/typeServer/protocol/tspSupplemental.js +2 -2
- package/dist/typeServer/server.d.ts +13 -2
- package/dist/typeServer/server.js +36 -23
- package/dist/typeServer/server.js.map +1 -1
- package/dist/typeServer/typeCache.d.ts +8 -4
- package/dist/typeServer/typeCache.js +33 -5
- package/dist/typeServer/typeCache.js.map +1 -1
- package/dist/typeServer/typeEvalUtils.d.ts +2 -1
- package/dist/typeServer/typeEvalUtils.js +7 -3
- package/dist/typeServer/typeEvalUtils.js.map +1 -1
- package/dist/typeServer/typeGuards.js +3 -4
- package/dist/typeServer/typeGuards.js.map +1 -1
- package/dist/typeServer/typeServerFileSystem.d.ts +10 -9
- package/dist/typeServer/typeServerFileSystem.js +16 -12
- package/dist/typeServer/typeServerFileSystem.js.map +1 -1
- package/package.json +7 -5
- package/dist/analyzer/parseTreeCleaner.d.ts +0 -8
- package/dist/analyzer/parseTreeCleaner.js +0 -65
- package/dist/analyzer/parseTreeCleaner.js.map +0 -1
- package/dist/analyzer/typeStubWriter.d.ts +0 -17
- package/dist/analyzer/typeStubWriter.js.map +0 -1
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* extraPathGlob.test.ts
|
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
|
5
|
+
* Licensed under the MIT license.
|
|
6
|
+
*
|
|
7
|
+
* Unit tests for glob expansion of `extraPaths` entries.
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const assert_1 = __importDefault(require("assert"));
|
|
14
|
+
const configOptions_1 = require("../common/configOptions");
|
|
15
|
+
const console_1 = require("../common/console");
|
|
16
|
+
const extraPathGlob_1 = require("../common/extraPathGlob");
|
|
17
|
+
const pathUtils_1 = require("../common/pathUtils");
|
|
18
|
+
const serviceProviderExtensions_1 = require("../common/serviceProviderExtensions");
|
|
19
|
+
const uri_1 = require("../common/uri/uri");
|
|
20
|
+
const testAccessHost_1 = require("./harness/testAccessHost");
|
|
21
|
+
const filesystem_1 = require("./harness/vfs/filesystem");
|
|
22
|
+
describe('extraPath glob expansion', () => {
|
|
23
|
+
test('containsWildcard detects glob characters', () => {
|
|
24
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.containsWildcard)('libs/shared/src'), false);
|
|
25
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.containsWildcard)('libs/*/src'), true);
|
|
26
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.containsWildcard)('external/**/site-packages'), true);
|
|
27
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.containsWildcard)('pkg?/x'), true);
|
|
28
|
+
});
|
|
29
|
+
test('single glob expands to matching directories, sorted ascending', () => {
|
|
30
|
+
const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']);
|
|
31
|
+
assert_1.default.deepStrictEqual(expand(fs, ['libs/*/src']), [
|
|
32
|
+
'/proj/libs/auth/src',
|
|
33
|
+
'/proj/libs/core/src',
|
|
34
|
+
'/proj/libs/shared/src',
|
|
35
|
+
]);
|
|
36
|
+
});
|
|
37
|
+
test('glob results use a culture- and OS-invariant ordinal sort', () => {
|
|
38
|
+
// These names sort differently under an ordinal comparison of the decoded
|
|
39
|
+
// path than under (a) a locale-aware comparison or (b) an ordinal
|
|
40
|
+
// comparison of the percent-encoded URI string:
|
|
41
|
+
// - Ordinal-by-path orders all uppercase ASCII before lowercase, places
|
|
42
|
+
// `_` (U+005F) between `Z` (U+005A) and `a` (U+0061), and places the
|
|
43
|
+
// non-ASCII `é` (U+00E9) after every ASCII character.
|
|
44
|
+
// - Locale-aware collation is roughly case-insensitive and reorders
|
|
45
|
+
// punctuation/accents.
|
|
46
|
+
// - Sorting the encoded URI string would place `é` FIRST, because it
|
|
47
|
+
// encodes to `%C3%A9` and `%` (U+0025) precedes every ASCII letter.
|
|
48
|
+
// Expected ordinal-by-path order of the leaf names is B < Z < _ < a < é.
|
|
49
|
+
// Pinning this guards against a switch to a culture-sensitive comparison
|
|
50
|
+
// or back to the encoded-string key, either of which would make the
|
|
51
|
+
// expanded extra-path list depend on the user's locale/OS.
|
|
52
|
+
const fs = makeFs([
|
|
53
|
+
'/proj/pkgs/Zebra/src',
|
|
54
|
+
'/proj/pkgs/_internal/src',
|
|
55
|
+
'/proj/pkgs/apple/src',
|
|
56
|
+
'/proj/pkgs/Beta/src',
|
|
57
|
+
'/proj/pkgs/\u00e9moji/src',
|
|
58
|
+
]);
|
|
59
|
+
assert_1.default.deepStrictEqual(expand(fs, ['pkgs/*/src']), [
|
|
60
|
+
'/proj/pkgs/Beta/src',
|
|
61
|
+
'/proj/pkgs/Zebra/src',
|
|
62
|
+
'/proj/pkgs/_internal/src',
|
|
63
|
+
'/proj/pkgs/apple/src',
|
|
64
|
+
'/proj/pkgs/\u00e9moji/src',
|
|
65
|
+
]);
|
|
66
|
+
});
|
|
67
|
+
test('sort is invariant to Unicode normalization form (NFD vs NFC)', () => {
|
|
68
|
+
// macOS stores file names as NFD (decomposed) while Linux/Windows commonly
|
|
69
|
+
// use NFC (composed). The same logical name `café` is `caf\u00e9` in NFC but
|
|
70
|
+
// `cafe\u0301` (e + combining acute) in NFD. Without NFC normalization the
|
|
71
|
+
// decomposed form would sort BEFORE `cafz` (its 4th code unit `e` U+0065 <
|
|
72
|
+
// `z` U+007A); with NFC normalization it sorts AFTER `cafz` (composed `é`
|
|
73
|
+
// U+00E9 > `z`). Pinning the composed ordering proves the sort key is
|
|
74
|
+
// normalized so directory order does not depend on the on-disk form.
|
|
75
|
+
const fs = makeFs(['/proj/pkgs/cafz/src', '/proj/pkgs/cafe\u0301/src']);
|
|
76
|
+
assert_1.default.deepStrictEqual(expand(fs, ['pkgs/*/src']), ['/proj/pkgs/cafz/src', '/proj/pkgs/cafe\u0301/src']);
|
|
77
|
+
});
|
|
78
|
+
test('NFC-equal but byte-distinct sibling directories get a deterministic total order', () => {
|
|
79
|
+
// Both an NFD (`cafe` + U+0301) and an NFC (`caf` + U+00E9) spelling of `café`
|
|
80
|
+
// exist as separate directories. They are byte-distinct (so both are kept),
|
|
81
|
+
// but their NFC-normalized sort keys are equal, so ordering falls back to the
|
|
82
|
+
// raw decoded path (NFD `e` U+0065 < NFC `é` U+00E9). Pinning this proves the
|
|
83
|
+
// order is a deterministic total order rather than dependent on directory
|
|
84
|
+
// enumeration order.
|
|
85
|
+
const fs = makeFs(['/proj/pkgs/caf\u00e9/src', '/proj/pkgs/cafe\u0301/src']);
|
|
86
|
+
assert_1.default.deepStrictEqual(expand(fs, ['pkgs/*/src']), ['/proj/pkgs/cafe\u0301/src', '/proj/pkgs/caf\u00e9/src']);
|
|
87
|
+
});
|
|
88
|
+
test('literal entry wins over a glob that covers it and keeps its front position', () => {
|
|
89
|
+
const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']);
|
|
90
|
+
assert_1.default.deepStrictEqual(expand(fs, ['libs/shared/src', 'libs/*/src']), [
|
|
91
|
+
'/proj/libs/shared/src',
|
|
92
|
+
'/proj/libs/auth/src',
|
|
93
|
+
'/proj/libs/core/src',
|
|
94
|
+
]);
|
|
95
|
+
});
|
|
96
|
+
test('literal after a glob keeps its own (later) slot', () => {
|
|
97
|
+
const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']);
|
|
98
|
+
assert_1.default.deepStrictEqual(expand(fs, ['libs/*/src', 'libs/shared/src']), [
|
|
99
|
+
'/proj/libs/auth/src',
|
|
100
|
+
'/proj/libs/core/src',
|
|
101
|
+
'/proj/libs/shared/src',
|
|
102
|
+
]);
|
|
103
|
+
});
|
|
104
|
+
test('two overlapping globs: the earlier glob wins the overlap', () => {
|
|
105
|
+
const fs = makeFs([
|
|
106
|
+
'/proj/external/pip310_numpy/site-packages',
|
|
107
|
+
'/proj/external/pip310_pandas/site-packages',
|
|
108
|
+
'/proj/external/pip311_numpy/site-packages',
|
|
109
|
+
]);
|
|
110
|
+
assert_1.default.deepStrictEqual(expand(fs, ['external/pip310_*/site-packages', 'external/pip3??_numpy/site-packages']), [
|
|
111
|
+
'/proj/external/pip310_numpy/site-packages',
|
|
112
|
+
'/proj/external/pip310_pandas/site-packages',
|
|
113
|
+
'/proj/external/pip311_numpy/site-packages',
|
|
114
|
+
]);
|
|
115
|
+
});
|
|
116
|
+
test('multiple literals mixed with multiple globs (documented example)', () => {
|
|
117
|
+
const fs = makeFs([
|
|
118
|
+
'/proj/stubs',
|
|
119
|
+
'/proj/packages/api/src',
|
|
120
|
+
'/proj/packages/auth/src',
|
|
121
|
+
'/proj/packages/core/src',
|
|
122
|
+
'/proj/packages/shared/src',
|
|
123
|
+
'/proj/vendor/grpc/python',
|
|
124
|
+
'/proj/vendor/legacy/python',
|
|
125
|
+
'/proj/vendor/proto/python',
|
|
126
|
+
]);
|
|
127
|
+
assert_1.default.deepStrictEqual(expand(fs, ['stubs', 'packages/core/src', 'packages/*/src', 'vendor/proto/python', 'vendor/*/python']), [
|
|
128
|
+
'/proj/stubs',
|
|
129
|
+
'/proj/packages/core/src',
|
|
130
|
+
'/proj/packages/api/src',
|
|
131
|
+
'/proj/packages/auth/src',
|
|
132
|
+
'/proj/packages/shared/src',
|
|
133
|
+
'/proj/vendor/proto/python',
|
|
134
|
+
'/proj/vendor/grpc/python',
|
|
135
|
+
'/proj/vendor/legacy/python',
|
|
136
|
+
]);
|
|
137
|
+
});
|
|
138
|
+
test('** matches any number of segments', () => {
|
|
139
|
+
const fs = makeFs(['/proj/external/a/site-packages', '/proj/external/b/c/site-packages']);
|
|
140
|
+
assert_1.default.deepStrictEqual(expand(fs, ['external/**/site-packages']), [
|
|
141
|
+
'/proj/external/a/site-packages',
|
|
142
|
+
'/proj/external/b/c/site-packages',
|
|
143
|
+
]);
|
|
144
|
+
});
|
|
145
|
+
test('? matches exactly one character', () => {
|
|
146
|
+
const fs = makeFs(['/proj/pkg1/x', '/proj/pkg2/x', '/proj/pkg10/x']);
|
|
147
|
+
assert_1.default.deepStrictEqual(expand(fs, ['pkg?/x']), ['/proj/pkg1/x', '/proj/pkg2/x']);
|
|
148
|
+
});
|
|
149
|
+
test('a glob that matches nothing contributes nothing', () => {
|
|
150
|
+
const fs = makeFs(['/proj/libs/auth/src']);
|
|
151
|
+
assert_1.default.deepStrictEqual(expand(fs, ['nope/*/src']), []);
|
|
152
|
+
});
|
|
153
|
+
test('a literal entry is emitted even if it does not exist', () => {
|
|
154
|
+
const fs = makeFs(['/proj/libs/auth/src']);
|
|
155
|
+
assert_1.default.deepStrictEqual(expand(fs, ['does/not/exist']), ['/proj/does/not/exist']);
|
|
156
|
+
});
|
|
157
|
+
test('de-duplication is case-sensitive: case-variant paths both survive', () => {
|
|
158
|
+
// Real directory uses a capital "S"; the literal entry uses lowercase.
|
|
159
|
+
const fs = makeFs(['/proj/libs/Shared/src'], /* ignoreCase */ false);
|
|
160
|
+
const result = expand(fs, ['libs/shared/src', 'libs/*/src']);
|
|
161
|
+
assert_1.default.deepStrictEqual(result, ['/proj/libs/shared/src', '/proj/libs/Shared/src']);
|
|
162
|
+
});
|
|
163
|
+
test('identical literal entries keep the first occurrence only', () => {
|
|
164
|
+
const fs = makeFs(['/proj/a/src']);
|
|
165
|
+
assert_1.default.deepStrictEqual(expand(fs, ['a/src', 'a/src']), ['/proj/a/src']);
|
|
166
|
+
});
|
|
167
|
+
test('symbolic-link cycles are guarded and do not cause infinite recursion', () => {
|
|
168
|
+
const fs = makeFs(['/proj/root/a']);
|
|
169
|
+
// Create a cycle: /proj/root/a/loop -> /proj/root
|
|
170
|
+
fs.symlinkSync('/proj/root', '/proj/root/a/loop');
|
|
171
|
+
const result = expand(fs, ['root/**']);
|
|
172
|
+
// The walk terminates and emits exactly the real directories: the cycle
|
|
173
|
+
// guard drops the "loop" symlink before it re-enters /proj/root. Pinning
|
|
174
|
+
// the full array catches a regression in the guard (extra entries or a
|
|
175
|
+
// broken ordering) that a partial `includes` check would miss.
|
|
176
|
+
assert_1.default.deepStrictEqual(result, ['/proj/root', '/proj/root/a']);
|
|
177
|
+
});
|
|
178
|
+
test('ensureDefaultExtraPaths expands globs for the settings origin', () => {
|
|
179
|
+
const fs = makeFs(['/proj/pkgs/a/src', '/proj/pkgs/b/src']);
|
|
180
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
181
|
+
configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['pkgs/*/src']);
|
|
182
|
+
const result = (configOptions.defaultExtraPaths ?? []).map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
183
|
+
assert_1.default.deepStrictEqual(result, ['/proj/pkgs/a/src', '/proj/pkgs/b/src']);
|
|
184
|
+
});
|
|
185
|
+
test('initializeFromJson retains config-file extraPaths glob specs for watching', () => {
|
|
186
|
+
const fs = makeFs(['/proj/pkgs/a/src', '/proj/pkgs/b/src']);
|
|
187
|
+
const rootUri = uri_1.Uri.file('/proj', fs);
|
|
188
|
+
const configOptions = new configOptions_1.ConfigOptions(rootUri);
|
|
189
|
+
configOptions.initializeFromJson({ extraPaths: ['pkgs/*/src', 'libs/shared'] }, rootUri, (0, serviceProviderExtensions_1.createServiceProvider)(fs, new console_1.NullConsole()), new testAccessHost_1.TestAccessHost());
|
|
190
|
+
// Only the wildcard entry is retained (as an absolute, glob-preserving spec) so a file
|
|
191
|
+
// watcher can be registered for it; the literal entry needs no glob watcher.
|
|
192
|
+
assert_1.default.deepStrictEqual(configOptions.extraPathGlobFileSpecs.map((s) => (0, pathUtils_1.normalizeSlashes)(s, '/')), ['/proj/pkgs/*/src']);
|
|
193
|
+
});
|
|
194
|
+
test('ensureDefaultExtraPaths de-duplicates realCasePath-collapsed entries on a case-insensitive FS', () => {
|
|
195
|
+
// On a case-insensitive file system, expandExtraPaths keeps case-variant
|
|
196
|
+
// entries distinct (case-sensitive de-dup), but realCasePath then collapses
|
|
197
|
+
// them to the same on-disk directory. The settings origin must not emit the
|
|
198
|
+
// resulting duplicate.
|
|
199
|
+
const fs = makeFs(['/proj/libs/foo'], /* ignoreCase */ true);
|
|
200
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
201
|
+
configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['libs/foo', 'Libs/*']);
|
|
202
|
+
const result = (configOptions.defaultExtraPaths ?? []).map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
203
|
+
assert_1.default.deepStrictEqual(result, ['/proj/libs/foo']);
|
|
204
|
+
});
|
|
205
|
+
test('initializeFromJson expands globs in the config-file extraPaths', () => {
|
|
206
|
+
const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']);
|
|
207
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
208
|
+
const serviceProvider = (0, serviceProviderExtensions_1.createServiceProvider)(fs);
|
|
209
|
+
configOptions.initializeFromJson({ extraPaths: ['libs/shared/src', 'libs/*/src'] }, uri_1.Uri.file('/proj', fs), serviceProvider, new testAccessHost_1.TestAccessHost());
|
|
210
|
+
const result = (configOptions.defaultExtraPaths ?? []).map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
211
|
+
assert_1.default.deepStrictEqual(result, ['/proj/libs/shared/src', '/proj/libs/auth/src', '/proj/libs/core/src']);
|
|
212
|
+
});
|
|
213
|
+
test('setupExecutionEnvironments expands globs in an execution environment', () => {
|
|
214
|
+
const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src']);
|
|
215
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
216
|
+
configOptions.setupExecutionEnvironments({ executionEnvironments: [{ root: 'app', extraPaths: ['libs/*/src'] }] }, uri_1.Uri.file('/proj', fs), new console_1.NullConsole(), fs);
|
|
217
|
+
assert_1.default.strictEqual(configOptions.executionEnvironments.length, 1);
|
|
218
|
+
const result = configOptions.executionEnvironments[0].extraPaths.map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
219
|
+
assert_1.default.deepStrictEqual(result, ['/proj/libs/auth/src', '/proj/libs/core/src']);
|
|
220
|
+
});
|
|
221
|
+
test('an execution environment extraPaths overrides (does not merge with) a non-empty default', () => {
|
|
222
|
+
// Establish a non-empty default first, then give the exec env its own
|
|
223
|
+
// extraPaths. The result must contain ONLY the exec env's expanded globs;
|
|
224
|
+
// `/proj/other` (the default) must be excluded. Without a non-empty default
|
|
225
|
+
// the override-vs-merge distinction is untestable (vacuous pass).
|
|
226
|
+
const fs = makeFs(['/proj/other', '/proj/libs/auth/src', '/proj/libs/core/src']);
|
|
227
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
228
|
+
configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['other']);
|
|
229
|
+
configOptions.setupExecutionEnvironments({ executionEnvironments: [{ root: 'app', extraPaths: ['libs/*/src'] }] }, uri_1.Uri.file('/proj', fs), new console_1.NullConsole(), fs);
|
|
230
|
+
const result = configOptions.executionEnvironments[0].extraPaths.map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
231
|
+
assert_1.default.deepStrictEqual(result, ['/proj/libs/auth/src', '/proj/libs/core/src']);
|
|
232
|
+
});
|
|
233
|
+
test('an execution environment without extraPaths inherits the expanded default', () => {
|
|
234
|
+
// The exec env omits `extraPaths`, so it inherits the default. The default
|
|
235
|
+
// is stored already-expanded, so the inherited list is the concrete
|
|
236
|
+
// directories, not the raw `libs/*/src` glob.
|
|
237
|
+
const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src']);
|
|
238
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
239
|
+
configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['libs/*/src']);
|
|
240
|
+
configOptions.setupExecutionEnvironments({ executionEnvironments: [{ root: 'app' }] }, uri_1.Uri.file('/proj', fs), new console_1.NullConsole(), fs);
|
|
241
|
+
const result = configOptions.executionEnvironments[0].extraPaths.map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
242
|
+
assert_1.default.deepStrictEqual(result, ['/proj/libs/auth/src', '/proj/libs/core/src']);
|
|
243
|
+
});
|
|
244
|
+
test('a literal that resolves via ".." to a glob match still wins and de-duplicates', () => {
|
|
245
|
+
// `libs/../libs/shared/src` normalizes to `/proj/libs/shared/src`, the same
|
|
246
|
+
// directory the glob matches. The literal keeps its front position and the
|
|
247
|
+
// glob-produced duplicate is dropped.
|
|
248
|
+
const fs = makeFs(['/proj/libs/shared/src', '/proj/libs/auth/src']);
|
|
249
|
+
assert_1.default.deepStrictEqual(expand(fs, ['libs/../libs/shared/src', 'libs/*/src']), [
|
|
250
|
+
'/proj/libs/shared/src',
|
|
251
|
+
'/proj/libs/auth/src',
|
|
252
|
+
]);
|
|
253
|
+
});
|
|
254
|
+
test('a zero-match settings glob records its watch spec exactly once across repeated calls', () => {
|
|
255
|
+
// A glob that currently matches nothing is still recorded so a watcher can
|
|
256
|
+
// observe directories that appear later. Because a zero-match glob leaves
|
|
257
|
+
// `defaultExtraPaths` unset, the caller's `!defaultExtraPaths` guard can invoke
|
|
258
|
+
// `ensureDefaultExtraPaths` again; the spec must be recorded only once.
|
|
259
|
+
const fs = makeFs(['/proj/other']); // nothing matches `pkgs/*/src`
|
|
260
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
261
|
+
configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['pkgs/*/src']);
|
|
262
|
+
configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['pkgs/*/src']);
|
|
263
|
+
assert_1.default.strictEqual(configOptions.defaultExtraPaths, undefined);
|
|
264
|
+
assert_1.default.deepStrictEqual(configOptions.extraPathGlobFileSpecs.map((s) => (0, pathUtils_1.normalizeSlashes)(s, '/')), ['/proj/pkgs/*/src']);
|
|
265
|
+
});
|
|
266
|
+
// ---- Adversarial / corner-case coverage ----
|
|
267
|
+
test('** matches zero segments (direct child of the base)', () => {
|
|
268
|
+
// The direct `/proj/external/site-packages` proves the zero-segment branch.
|
|
269
|
+
const fs = makeFs(['/proj/external/site-packages', '/proj/external/a/b/site-packages']);
|
|
270
|
+
assert_1.default.deepStrictEqual(expand(fs, ['external/**/site-packages']), [
|
|
271
|
+
'/proj/external/a/b/site-packages',
|
|
272
|
+
'/proj/external/site-packages',
|
|
273
|
+
]);
|
|
274
|
+
});
|
|
275
|
+
test('leading ** matches at the base and at any depth', () => {
|
|
276
|
+
const fs = makeFs(['/proj/site-packages', '/proj/a/site-packages']);
|
|
277
|
+
assert_1.default.deepStrictEqual(expand(fs, ['**/site-packages']), ['/proj/a/site-packages', '/proj/site-packages']);
|
|
278
|
+
});
|
|
279
|
+
test('trailing ** includes the base directory and every descendant', () => {
|
|
280
|
+
const fs = makeFs(['/proj/libs', '/proj/libs/a', '/proj/libs/a/b']);
|
|
281
|
+
assert_1.default.deepStrictEqual(expand(fs, ['libs/**']), ['/proj/libs', '/proj/libs/a', '/proj/libs/a/b']);
|
|
282
|
+
});
|
|
283
|
+
test('bare * matches only immediate child directories', () => {
|
|
284
|
+
const fs = makeFs(['/proj/libs', '/proj/libs/a', '/proj/other']);
|
|
285
|
+
assert_1.default.deepStrictEqual(expand(fs, ['*']), ['/proj/libs', '/proj/other']);
|
|
286
|
+
});
|
|
287
|
+
test('bare ** matches the base and all descendants', () => {
|
|
288
|
+
const fs = makeFs(['/proj/a', '/proj/a/b']);
|
|
289
|
+
assert_1.default.deepStrictEqual(expand(fs, ['**']), ['/proj', '/proj/a', '/proj/a/b']);
|
|
290
|
+
});
|
|
291
|
+
test('consecutive ** terminates and does not duplicate matches', () => {
|
|
292
|
+
const fs = makeFs(['/proj/a/x/b']);
|
|
293
|
+
assert_1.default.deepStrictEqual(expand(fs, ['a/**/**/b']), ['/proj/a/x/b']);
|
|
294
|
+
});
|
|
295
|
+
test('? matches exactly one character and not zero', () => {
|
|
296
|
+
const fs = makeFs(['/proj/pkg', '/proj/pkg1']);
|
|
297
|
+
assert_1.default.deepStrictEqual(expand(fs, ['pkg?']), ['/proj/pkg1']);
|
|
298
|
+
});
|
|
299
|
+
test('regex metacharacters and Bazel-style names are matched literally', () => {
|
|
300
|
+
const fs = makeFs([
|
|
301
|
+
'/proj/ext/rules_python~~pip~pip_310_numpy/site-packages',
|
|
302
|
+
'/proj/ext/rules_python~~pip~pip_311_pandas/site-packages',
|
|
303
|
+
'/proj/ext/a+b(c)',
|
|
304
|
+
]);
|
|
305
|
+
assert_1.default.deepStrictEqual(expand(fs, ['ext/rules_python~~pip~pip_*_numpy/site-packages']), [
|
|
306
|
+
'/proj/ext/rules_python~~pip~pip_310_numpy/site-packages',
|
|
307
|
+
]);
|
|
308
|
+
// `+` and `(` in the pattern must be treated literally, not as regex operators.
|
|
309
|
+
assert_1.default.deepStrictEqual(expand(fs, ['ext/a+b*']), ['/proj/ext/a+b(c)']);
|
|
310
|
+
});
|
|
311
|
+
test('symbolic links are followed but the matched path is not resolved', () => {
|
|
312
|
+
const fs = makeFs(['/proj/real/pkg']);
|
|
313
|
+
fs.symlinkSync('/proj/real', '/proj/link');
|
|
314
|
+
// The result keeps the symlink path "/proj/link/pkg" rather than "/proj/real/pkg".
|
|
315
|
+
assert_1.default.deepStrictEqual(expand(fs, ['link/*']), ['/proj/link/pkg']);
|
|
316
|
+
});
|
|
317
|
+
test('a symlink diamond emits each logical path (symlinks are not resolved)', () => {
|
|
318
|
+
const fs = makeFs(['/proj/real/pkg']);
|
|
319
|
+
fs.symlinkSync('/proj/real', '/proj/link1');
|
|
320
|
+
fs.symlinkSync('/proj/real', '/proj/link2');
|
|
321
|
+
assert_1.default.deepStrictEqual(expand(fs, ['link1/*', 'link2/*']), ['/proj/link1/pkg', '/proj/link2/pkg']);
|
|
322
|
+
});
|
|
323
|
+
test('a single glob over two symlinks to the same target emits both aliases', () => {
|
|
324
|
+
// Regression guard: the (logical directory, tailIndex) traversal memo must be
|
|
325
|
+
// keyed on the logical path, not the real path. Two symlink aliases that
|
|
326
|
+
// resolve to the same real directory at the same tail depth must both survive
|
|
327
|
+
// a single glob entry (the second must not be dropped as an already-visited
|
|
328
|
+
// real path). This is the Bazel `external/*/site-packages` symlink-forest case.
|
|
329
|
+
const fs = makeFs(['/proj/real']);
|
|
330
|
+
fs.symlinkSync('/proj/real', '/proj/link1');
|
|
331
|
+
fs.symlinkSync('/proj/real', '/proj/link2');
|
|
332
|
+
assert_1.default.deepStrictEqual(expand(fs, ['*']), ['/proj/link1', '/proj/link2', '/proj/real']);
|
|
333
|
+
});
|
|
334
|
+
test('a broken symlink is skipped during expansion', () => {
|
|
335
|
+
const fs = makeFs(['/proj/realdir']);
|
|
336
|
+
fs.symlinkSync('/proj/nonexistent', '/proj/broken');
|
|
337
|
+
assert_1.default.deepStrictEqual(expand(fs, ['*']), ['/proj/realdir']);
|
|
338
|
+
});
|
|
339
|
+
test('a directory claimed by an explicit entry is dropped from every glob', () => {
|
|
340
|
+
const fs = makeFs(['/proj/pkgs/a']);
|
|
341
|
+
assert_1.default.deepStrictEqual(expand(fs, ['pkgs/a', 'pkgs/*', 'pkgs/a*']), ['/proj/pkgs/a']);
|
|
342
|
+
});
|
|
343
|
+
test('normalized-equal literal entries de-duplicate to a single path', () => {
|
|
344
|
+
const fs = makeFs(['/proj/libs/shared/src']);
|
|
345
|
+
assert_1.default.deepStrictEqual(expand(fs, ['libs/shared/src/', './libs/shared/src', 'libs/../libs/shared/src']), [
|
|
346
|
+
'/proj/libs/shared/src',
|
|
347
|
+
]);
|
|
348
|
+
});
|
|
349
|
+
test('empty and whitespace-only entries are ignored; "." resolves to the base', () => {
|
|
350
|
+
const fs = makeFs(['/proj/x']);
|
|
351
|
+
assert_1.default.deepStrictEqual(expand(fs, ['']), []);
|
|
352
|
+
assert_1.default.deepStrictEqual(expand(fs, [' ']), []);
|
|
353
|
+
assert_1.default.deepStrictEqual(expand(fs, ['.']), ['/proj']);
|
|
354
|
+
assert_1.default.deepStrictEqual(expand(fs, ['', 'x', ' ']), ['/proj/x']);
|
|
355
|
+
});
|
|
356
|
+
test('an empty entries list produces an empty result', () => {
|
|
357
|
+
const fs = makeFs(['/proj/x']);
|
|
358
|
+
assert_1.default.deepStrictEqual(expand(fs, []), []);
|
|
359
|
+
});
|
|
360
|
+
test('KNOWN LIMITATION: on a case-insensitive file system a mis-cased glob root produces a duplicate', () => {
|
|
361
|
+
// De-duplication is intentionally case-sensitive (see the component docs).
|
|
362
|
+
// On a case-insensitive file system, a glob whose non-wildcard root is typed
|
|
363
|
+
// in a different case than on disk emits that typed case, which does not
|
|
364
|
+
// de-duplicate against a correctly-cased literal. This is an accepted
|
|
365
|
+
// limitation for now (import-root case-insensitivity is out of scope).
|
|
366
|
+
const fs = makeFs(['/proj/libs/foo'], /* ignoreCase */ true);
|
|
367
|
+
assert_1.default.deepStrictEqual(expand(fs, ['libs/foo', 'Libs/*']), ['/proj/libs/foo', '/proj/Libs/foo']);
|
|
368
|
+
});
|
|
369
|
+
test('initializeFromJson without a file system falls back to literal resolution', () => {
|
|
370
|
+
const fs = makeFs(['/proj/libs/auth/src']);
|
|
371
|
+
const configOptions = new configOptions_1.ConfigOptions(uri_1.Uri.file('/proj', fs));
|
|
372
|
+
// A service provider without a registered file system cannot expand globs;
|
|
373
|
+
// entries are resolved literally (the glob character is left in the path).
|
|
374
|
+
configOptions.initializeFromJson({ extraPaths: ['libs/*/src'] }, uri_1.Uri.file('/proj', fs), (0, serviceProviderExtensions_1.createServiceProvider)(), new testAccessHost_1.TestAccessHost());
|
|
375
|
+
const result = (configOptions.defaultExtraPaths ?? []).map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
376
|
+
assert_1.default.deepStrictEqual(result, ['/proj/libs/*/src']);
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
describe('extraPath glob watch targets', () => {
|
|
380
|
+
test('a non-wildcard URI produces no watch target', () => {
|
|
381
|
+
assert_1.default.deepStrictEqual(targetsOf(['/proj/libs/shared/src']), []);
|
|
382
|
+
});
|
|
383
|
+
test('a single-segment glob yields the non-wildcard root and the tail pattern', () => {
|
|
384
|
+
assert_1.default.deepStrictEqual(targetsOf(['/proj/libs/*/src']), [{ root: '/proj/libs', dirPattern: '*/src' }]);
|
|
385
|
+
});
|
|
386
|
+
test('a trailing wildcard yields the parent root and a "*" pattern', () => {
|
|
387
|
+
assert_1.default.deepStrictEqual(targetsOf(['/proj/libs/*']), [{ root: '/proj/libs', dirPattern: '*' }]);
|
|
388
|
+
});
|
|
389
|
+
test('a "**" glob preserves the recursive tail relative to the root', () => {
|
|
390
|
+
assert_1.default.deepStrictEqual(targetsOf(['/proj/packages/**/lib']), [
|
|
391
|
+
{ root: '/proj/packages', dirPattern: '**/lib' },
|
|
392
|
+
]);
|
|
393
|
+
});
|
|
394
|
+
test('a "?" glob is kept in the tail pattern', () => {
|
|
395
|
+
assert_1.default.deepStrictEqual(targetsOf(['/proj/env/pip3??/site-packages']), [
|
|
396
|
+
{ root: '/proj/env', dirPattern: 'pip3??/site-packages' },
|
|
397
|
+
]);
|
|
398
|
+
});
|
|
399
|
+
test('only wildcard URIs contribute targets; literals are skipped', () => {
|
|
400
|
+
assert_1.default.deepStrictEqual(targetsOf(['/proj/stubs', '/proj/libs/*/src', '/proj/vendor/**']), [
|
|
401
|
+
{ root: '/proj/libs', dirPattern: '*/src' },
|
|
402
|
+
{ root: '/proj/vendor', dirPattern: '**' },
|
|
403
|
+
]);
|
|
404
|
+
});
|
|
405
|
+
test('extraPathWatchTargetCovers matches directories the glob resolves to', () => {
|
|
406
|
+
const fs = new filesystem_1.TestFileSystem(/* ignoreCase */ false, { cwd: '/' });
|
|
407
|
+
const [target] = (0, extraPathGlob_1.getExtraPathWatchTargets)(['/proj/libs/*/src'], fs);
|
|
408
|
+
// Directories the glob matches (and those beneath them) are covered.
|
|
409
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.extraPathWatchTargetCovers)(target, uri_1.Uri.file('/proj/libs/auth/src', fs)), true);
|
|
410
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.extraPathWatchTargetCovers)(target, uri_1.Uri.file('/proj/libs/auth/src/nested', fs)), true);
|
|
411
|
+
// Sibling directories that the glob does not match are not covered.
|
|
412
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.extraPathWatchTargetCovers)(target, uri_1.Uri.file('/proj/libs/auth/docs', fs)), false);
|
|
413
|
+
assert_1.default.strictEqual((0, extraPathGlob_1.extraPathWatchTargetCovers)(target, uri_1.Uri.file('/proj/other', fs)), false);
|
|
414
|
+
});
|
|
415
|
+
function targetsOf(paths) {
|
|
416
|
+
const fs = new filesystem_1.TestFileSystem(/* ignoreCase */ false, { cwd: '/' });
|
|
417
|
+
return (0, extraPathGlob_1.getExtraPathWatchTargets)(paths, fs).map((t) => ({
|
|
418
|
+
root: (0, pathUtils_1.normalizeSlashes)(t.root.getFilePath(), '/'),
|
|
419
|
+
dirPattern: t.dirPattern,
|
|
420
|
+
}));
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
function makeFs(dirs, ignoreCase = false) {
|
|
424
|
+
const fs = new filesystem_1.TestFileSystem(ignoreCase, { cwd: '/' });
|
|
425
|
+
for (const dir of dirs) {
|
|
426
|
+
fs.mkdirpSync(dir);
|
|
427
|
+
}
|
|
428
|
+
return fs;
|
|
429
|
+
}
|
|
430
|
+
function expand(fs, entries, base = '/proj') {
|
|
431
|
+
const baseUri = uri_1.Uri.file(base, fs);
|
|
432
|
+
return (0, extraPathGlob_1.expandExtraPaths)(fs, baseUri, entries).map((uri) => (0, pathUtils_1.normalizeSlashes)(uri.getFilePath(), '/'));
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=extraPathGlob.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraPathGlob.test.js","sourceRoot":"","sources":["../../../../../src/tests/extraPathGlob.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|