@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.
Files changed (398) hide show
  1. package/dist/analyzer/analyzerNodeInfo.d.ts +123 -24
  2. package/dist/analyzer/analyzerNodeInfo.js +429 -89
  3. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  4. package/dist/analyzer/backgroundAnalysisProgram.d.ts +2 -1
  5. package/dist/analyzer/backgroundAnalysisProgram.js +4 -8
  6. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  7. package/dist/analyzer/binder.d.ts +6 -3
  8. package/dist/analyzer/binder.js +70 -69
  9. package/dist/analyzer/binder.js.map +1 -1
  10. package/dist/analyzer/checker.d.ts +4 -2
  11. package/dist/analyzer/checker.js +86 -59
  12. package/dist/analyzer/checker.js.map +1 -1
  13. package/dist/analyzer/codeFlowEngine.d.ts +2 -1
  14. package/dist/analyzer/codeFlowEngine.js +12 -10
  15. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  16. package/dist/analyzer/codeFlowUtils.d.ts +2 -1
  17. package/dist/analyzer/codeFlowUtils.js +2 -3
  18. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  19. package/dist/analyzer/constructorTransform.js +8 -0
  20. package/dist/analyzer/constructorTransform.js.map +1 -1
  21. package/dist/analyzer/dataClasses.d.ts +5 -4
  22. package/dist/analyzer/dataClasses.js +30 -59
  23. package/dist/analyzer/dataClasses.js.map +1 -1
  24. package/dist/analyzer/declarationUtils.d.ts +2 -1
  25. package/dist/analyzer/declarationUtils.js +2 -2
  26. package/dist/analyzer/declarationUtils.js.map +1 -1
  27. package/dist/analyzer/decorators.d.ts +5 -4
  28. package/dist/analyzer/decorators.js +20 -21
  29. package/dist/analyzer/decorators.js.map +1 -1
  30. package/dist/analyzer/enums.d.ts +5 -4
  31. package/dist/analyzer/enums.js +11 -10
  32. package/dist/analyzer/enums.js.map +1 -1
  33. package/dist/analyzer/importResolver.d.ts +1 -1
  34. package/dist/analyzer/importResolver.js +5 -3
  35. package/dist/analyzer/importResolver.js.map +1 -1
  36. package/dist/analyzer/importStatementUtils.d.ts +3 -1
  37. package/dist/analyzer/importStatementUtils.js +14 -7
  38. package/dist/analyzer/importStatementUtils.js.map +1 -1
  39. package/dist/analyzer/namedTuples.d.ts +2 -1
  40. package/dist/analyzer/namedTuples.js +3 -4
  41. package/dist/analyzer/namedTuples.js.map +1 -1
  42. package/dist/analyzer/operations.d.ts +3 -2
  43. package/dist/analyzer/operations.js +8 -8
  44. package/dist/analyzer/operations.js.map +1 -1
  45. package/dist/analyzer/packageTypeVerifier.js +2 -2
  46. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  47. package/dist/analyzer/parseTreeUtils.d.ts +13 -11
  48. package/dist/analyzer/parseTreeUtils.js +62 -36
  49. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  50. package/dist/analyzer/parseTreeWalker.d.ts +7 -2
  51. package/dist/analyzer/parseTreeWalker.js +29 -175
  52. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  53. package/dist/analyzer/patternMatching.d.ts +4 -3
  54. package/dist/analyzer/patternMatching.js +47 -43
  55. package/dist/analyzer/patternMatching.js.map +1 -1
  56. package/dist/analyzer/program.d.ts +12 -0
  57. package/dist/analyzer/program.js +238 -29
  58. package/dist/analyzer/program.js.map +1 -1
  59. package/dist/analyzer/properties.d.ts +4 -3
  60. package/dist/analyzer/properties.js +7 -8
  61. package/dist/analyzer/properties.js.map +1 -1
  62. package/dist/analyzer/protocols.js +14 -2
  63. package/dist/analyzer/protocols.js.map +1 -1
  64. package/dist/analyzer/scopeUtils.d.ts +4 -3
  65. package/dist/analyzer/scopeUtils.js +8 -8
  66. package/dist/analyzer/scopeUtils.js.map +1 -1
  67. package/dist/analyzer/sentinel.d.ts +3 -2
  68. package/dist/analyzer/sentinel.js +4 -5
  69. package/dist/analyzer/sentinel.js.map +1 -1
  70. package/dist/analyzer/service.d.ts +5 -10
  71. package/dist/analyzer/service.js +36 -96
  72. package/dist/analyzer/service.js.map +1 -1
  73. package/dist/analyzer/sourceEnumerator.d.ts +5 -0
  74. package/dist/analyzer/sourceEnumerator.js +57 -3
  75. package/dist/analyzer/sourceEnumerator.js.map +1 -1
  76. package/dist/analyzer/sourceFile.d.ts +12 -6
  77. package/dist/analyzer/sourceFile.js +74 -50
  78. package/dist/analyzer/sourceFile.js.map +1 -1
  79. package/dist/analyzer/sourceFileInfoUtils.d.ts +1 -0
  80. package/dist/analyzer/sourceFileInfoUtils.js +8 -0
  81. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  82. package/dist/analyzer/sourceMapper.d.ts +4 -1
  83. package/dist/analyzer/sourceMapper.js +14 -8
  84. package/dist/analyzer/sourceMapper.js.map +1 -1
  85. package/dist/analyzer/testWalker.js +2 -1
  86. package/dist/analyzer/testWalker.js.map +1 -1
  87. package/dist/analyzer/tracePrinter.d.ts +2 -1
  88. package/dist/analyzer/tracePrinter.js +2 -2
  89. package/dist/analyzer/tracePrinter.js.map +1 -1
  90. package/dist/analyzer/tuples.d.ts +3 -2
  91. package/dist/analyzer/tuples.js +5 -5
  92. package/dist/analyzer/tuples.js.map +1 -1
  93. package/dist/analyzer/typeDocStringUtils.d.ts +5 -7
  94. package/dist/analyzer/typeDocStringUtils.js +229 -132
  95. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  96. package/dist/analyzer/typeEvaluator.d.ts +2 -0
  97. package/dist/analyzer/typeEvaluator.js +418 -229
  98. package/dist/analyzer/typeEvaluator.js.map +1 -1
  99. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -0
  100. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  101. package/dist/analyzer/typeGuards.d.ts +3 -2
  102. package/dist/analyzer/typeGuards.js +159 -35
  103. package/dist/analyzer/typeGuards.js.map +1 -1
  104. package/dist/analyzer/typeStubGeneration.d.ts +64 -0
  105. package/dist/analyzer/typeStubGeneration.js +226 -0
  106. package/dist/analyzer/typeStubGeneration.js.map +1 -0
  107. package/dist/analyzer/typeStubMessages.d.ts +4 -0
  108. package/dist/analyzer/typeStubMessages.js +25 -0
  109. package/dist/analyzer/typeStubMessages.js.map +1 -0
  110. package/dist/analyzer/typeStubOutput.d.ts +9 -0
  111. package/dist/analyzer/typeStubOutput.js +52 -0
  112. package/dist/analyzer/typeStubOutput.js.map +1 -0
  113. package/dist/analyzer/typeStubRenderer.d.ts +5 -0
  114. package/dist/analyzer/{typeStubWriter.js → typeStubRenderer.js} +20 -99
  115. package/dist/analyzer/typeStubRenderer.js.map +1 -0
  116. package/dist/analyzer/typeUtils.d.ts +1 -0
  117. package/dist/analyzer/typeUtils.js +115 -1
  118. package/dist/analyzer/typeUtils.js.map +1 -1
  119. package/dist/analyzer/typedDicts.d.ts +4 -3
  120. package/dist/analyzer/typedDicts.js +15 -14
  121. package/dist/analyzer/typedDicts.js.map +1 -1
  122. package/dist/analyzer/types.d.ts +2 -0
  123. package/dist/analyzer/types.js +84 -58
  124. package/dist/analyzer/types.js.map +1 -1
  125. package/dist/backgroundAnalysisBase.d.ts +5 -4
  126. package/dist/backgroundAnalysisBase.js +11 -19
  127. package/dist/backgroundAnalysisBase.js.map +1 -1
  128. package/dist/commands/createTypeStub.d.ts +2 -6
  129. package/dist/commands/createTypeStub.js +14 -27
  130. package/dist/commands/createTypeStub.js.map +1 -1
  131. package/dist/commands/dumpFileDebugInfoCommand.js +1 -1
  132. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  133. package/dist/common/collectionUtils.js +15 -6
  134. package/dist/common/collectionUtils.js.map +1 -1
  135. package/dist/common/commandLineOptions.d.ts +1 -1
  136. package/dist/common/commandLineOptions.js.map +1 -1
  137. package/dist/common/configOptions.d.ts +4 -1
  138. package/dist/common/configOptions.js +68 -12
  139. package/dist/common/configOptions.js.map +1 -1
  140. package/dist/common/envVarUtils.d.ts +1 -0
  141. package/dist/common/envVarUtils.js +41 -10
  142. package/dist/common/envVarUtils.js.map +1 -1
  143. package/dist/common/extensibility.d.ts +3 -1
  144. package/dist/common/extensibility.js.map +1 -1
  145. package/dist/common/extraPathGlob.d.ts +12 -0
  146. package/dist/common/extraPathGlob.js +315 -0
  147. package/dist/common/extraPathGlob.js.map +1 -0
  148. package/dist/common/host.d.ts +2 -0
  149. package/dist/common/host.js.map +1 -1
  150. package/dist/common/languageServerInterface.d.ts +2 -1
  151. package/dist/common/languageServerInterface.js.map +1 -1
  152. package/dist/common/pathConsts.d.ts +1 -0
  153. package/dist/common/pathConsts.js +11 -1
  154. package/dist/common/pathConsts.js.map +1 -1
  155. package/dist/common/processUtils.d.ts +4 -2
  156. package/dist/common/processUtils.js +3 -0
  157. package/dist/common/processUtils.js.map +1 -1
  158. package/dist/common/stringUtils.d.ts +6 -0
  159. package/dist/common/stringUtils.js +87 -5
  160. package/dist/common/stringUtils.js.map +1 -1
  161. package/dist/common/textEditTracker.d.ts +3 -1
  162. package/dist/common/textEditTracker.js +8 -6
  163. package/dist/common/textEditTracker.js.map +1 -1
  164. package/dist/common/textRangeCollection.d.ts +1 -0
  165. package/dist/common/textRangeCollection.js +32 -1
  166. package/dist/common/textRangeCollection.js.map +1 -1
  167. package/dist/common/uri/uriUtils.d.ts +3 -0
  168. package/dist/common/uri/uriUtils.js +65 -15
  169. package/dist/common/uri/uriUtils.js.map +1 -1
  170. package/dist/fileSystemMapping.d.ts +10 -0
  171. package/dist/fileSystemMapping.js +176 -0
  172. package/dist/fileSystemMapping.js.map +1 -0
  173. package/dist/languageServerBase.d.ts +1 -1
  174. package/dist/languageServerBase.js +2 -2
  175. package/dist/languageServerBase.js.map +1 -1
  176. package/dist/languageService/analyzerServiceExecutor.d.ts +1 -3
  177. package/dist/languageService/analyzerServiceExecutor.js +10 -29
  178. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  179. package/dist/languageService/autoImporter.d.ts +1 -0
  180. package/dist/languageService/autoImporter.js +32 -5
  181. package/dist/languageService/autoImporter.js.map +1 -1
  182. package/dist/languageService/callHierarchyProvider.d.ts +7 -0
  183. package/dist/languageService/callHierarchyProvider.js +97 -11
  184. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  185. package/dist/languageService/completionProvider.d.ts +30 -8
  186. package/dist/languageService/completionProvider.js +298 -93
  187. package/dist/languageService/completionProvider.js.map +1 -1
  188. package/dist/languageService/definitionProvider.js +7 -6
  189. package/dist/languageService/definitionProvider.js.map +1 -1
  190. package/dist/languageService/documentHighlightProvider.js +2 -1
  191. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  192. package/dist/languageService/documentSymbolCollector.d.ts +3 -1
  193. package/dist/languageService/documentSymbolCollector.js +78 -14
  194. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  195. package/dist/languageService/documentSymbolProvider.js +3 -2
  196. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  197. package/dist/languageService/fileWatcherDynamicFeature.js +28 -1
  198. package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
  199. package/dist/languageService/hoverProvider.d.ts +2 -1
  200. package/dist/languageService/hoverProvider.js +48 -16
  201. package/dist/languageService/hoverProvider.js.map +1 -1
  202. package/dist/languageService/importSorter.d.ts +3 -1
  203. package/dist/languageService/importSorter.js +4 -2
  204. package/dist/languageService/importSorter.js.map +1 -1
  205. package/dist/languageService/importStatementCandidates.js +4 -2
  206. package/dist/languageService/importStatementCandidates.js.map +1 -1
  207. package/dist/languageService/quickActions.js +2 -1
  208. package/dist/languageService/quickActions.js.map +1 -1
  209. package/dist/languageService/referencesProvider.js +12 -5
  210. package/dist/languageService/referencesProvider.js.map +1 -1
  211. package/dist/languageService/signatureHelpProvider.d.ts +3 -0
  212. package/dist/languageService/signatureHelpProvider.js +56 -18
  213. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  214. package/dist/languageService/symbolIndexer.d.ts +2 -1
  215. package/dist/languageService/symbolIndexer.js +7 -7
  216. package/dist/languageService/symbolIndexer.js.map +1 -1
  217. package/dist/languageService/tooltipUtils.d.ts +1 -1
  218. package/dist/languageService/tooltipUtils.js +103 -35
  219. package/dist/languageService/tooltipUtils.js.map +1 -1
  220. package/dist/languageService/workspaceSymbolProvider.js +3 -2
  221. package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
  222. package/dist/localization/localize.d.ts +6 -0
  223. package/dist/localization/localize.js +10 -0
  224. package/dist/localization/localize.js.map +1 -1
  225. package/dist/localization/package.nls.cs.json +15 -0
  226. package/dist/localization/package.nls.de.json +15 -0
  227. package/dist/localization/package.nls.en-us.json +5 -0
  228. package/dist/localization/package.nls.es.json +15 -0
  229. package/dist/localization/package.nls.fr.json +15 -0
  230. package/dist/localization/package.nls.it.json +15 -0
  231. package/dist/localization/package.nls.ja.json +15 -0
  232. package/dist/localization/package.nls.ko.json +15 -0
  233. package/dist/localization/package.nls.pl.json +15 -0
  234. package/dist/localization/package.nls.pt-br.json +15 -0
  235. package/dist/localization/package.nls.qps-ploc.json +15 -0
  236. package/dist/localization/package.nls.ru.json +15 -0
  237. package/dist/localization/package.nls.tr.json +15 -0
  238. package/dist/localization/package.nls.zh-cn.json +16 -1
  239. package/dist/localization/package.nls.zh-tw.json +17 -2
  240. package/dist/parser/parseNodes.d.ts +85 -80
  241. package/dist/parser/parseNodes.js +182 -159
  242. package/dist/parser/parseNodes.js.map +1 -1
  243. package/dist/parser/parseTreeUtils.d.ts +3 -0
  244. package/dist/parser/parseTreeUtils.js +209 -0
  245. package/dist/parser/parseTreeUtils.js.map +1 -0
  246. package/dist/parser/parser.d.ts +16 -6
  247. package/dist/parser/parser.js +210 -144
  248. package/dist/parser/parser.js.map +1 -1
  249. package/dist/parser/stringAnnotationInfo.d.ts +16 -0
  250. package/dist/parser/stringAnnotationInfo.js +26 -0
  251. package/dist/parser/stringAnnotationInfo.js.map +1 -0
  252. package/dist/pyright.js +30 -17
  253. package/dist/pyright.js.map +1 -1
  254. package/dist/readonlyAugmentedFileSystem.d.ts +2 -9
  255. package/dist/readonlyAugmentedFileSystem.js +17 -144
  256. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  257. package/dist/server.js +2 -2
  258. package/dist/server.js.map +1 -1
  259. package/dist/tests/analyzerNodeInfo.test.d.ts +1 -0
  260. package/dist/tests/analyzerNodeInfo.test.js +145 -0
  261. package/dist/tests/analyzerNodeInfo.test.js.map +1 -0
  262. package/dist/tests/collectionUtils.test.js +46 -0
  263. package/dist/tests/collectionUtils.test.js.map +1 -1
  264. package/dist/tests/completions.test.js +34 -0
  265. package/dist/tests/completions.test.js.map +1 -1
  266. package/dist/tests/config.test.js +131 -7
  267. package/dist/tests/config.test.js.map +1 -1
  268. package/dist/tests/extraPathGlob.test.d.ts +1 -0
  269. package/dist/tests/extraPathGlob.test.js +434 -0
  270. package/dist/tests/extraPathGlob.test.js.map +1 -0
  271. package/dist/tests/fileSystemMapping.test.d.ts +1 -0
  272. package/dist/tests/fileSystemMapping.test.js +458 -0
  273. package/dist/tests/fileSystemMapping.test.js.map +1 -0
  274. package/dist/tests/fourslash/completions.call.typedDict.fourslash.js +23 -0
  275. package/dist/tests/fourslash/completions.call.typedDict.fourslash.js.map +1 -1
  276. package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js +14 -0
  277. package/dist/tests/fourslash/completions.call.typedDict.list.fourslash.js.map +1 -1
  278. package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js +7 -0
  279. package/dist/tests/fourslash/completions.call.typedDict.states.fourslash.js.map +1 -1
  280. package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.d.ts +1 -0
  281. package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js +41 -0
  282. package/dist/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.js.map +1 -0
  283. package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js +2 -0
  284. package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js.map +1 -1
  285. package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js +5 -0
  286. package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js.map +1 -1
  287. package/dist/tests/fourslash/completions.stringLiteral.fourslash.js +4 -0
  288. package/dist/tests/fourslash/completions.stringLiteral.fourslash.js.map +1 -1
  289. package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.d.ts +1 -0
  290. package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js +48 -0
  291. package/dist/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.js.map +1 -0
  292. package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js +0 -1
  293. package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js.map +1 -1
  294. package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js +8 -2
  295. package/dist/tests/fourslash/hover.inherited.docFromSrc.fourslash.js.map +1 -1
  296. package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js +5 -2
  297. package/dist/tests/fourslash/hover.inherited.docFromStub.fourslash.js.map +1 -1
  298. package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js +2 -2
  299. package/dist/tests/fourslash/signature.docstrings.overloaded.fourslash.js.map +1 -1
  300. package/dist/tests/harness/fourslash/testState.js +1 -1
  301. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  302. package/dist/tests/hoverProvider.test.js +38 -0
  303. package/dist/tests/hoverProvider.test.js.map +1 -1
  304. package/dist/tests/importStatementUtils.test.js +6 -3
  305. package/dist/tests/importStatementUtils.test.js.map +1 -1
  306. package/dist/tests/ipythonMode.test.js +38 -0
  307. package/dist/tests/ipythonMode.test.js.map +1 -1
  308. package/dist/tests/parseTreeUtils.test.js +88 -0
  309. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  310. package/dist/tests/parser.test.js +60 -3
  311. package/dist/tests/parser.test.js.map +1 -1
  312. package/dist/tests/positionUtils.test.js +23 -0
  313. package/dist/tests/positionUtils.test.js.map +1 -1
  314. package/dist/tests/pyrightCli.test.d.ts +1 -0
  315. package/dist/tests/pyrightCli.test.js +205 -0
  316. package/dist/tests/pyrightCli.test.js.map +1 -0
  317. package/dist/tests/pyrightFileSystem.test.js +41 -0
  318. package/dist/tests/pyrightFileSystem.test.js.map +1 -1
  319. package/dist/tests/service.test.js +183 -0
  320. package/dist/tests/service.test.js.map +1 -1
  321. package/dist/tests/sourceEnumeratorSymlink.test.d.ts +1 -0
  322. package/dist/tests/sourceEnumeratorSymlink.test.js +203 -0
  323. package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -0
  324. package/dist/tests/stringUtils.test.js +84 -0
  325. package/dist/tests/stringUtils.test.js.map +1 -1
  326. package/dist/tests/symlinkAliasInvalidation.test.d.ts +1 -0
  327. package/dist/tests/symlinkAliasInvalidation.test.js +471 -0
  328. package/dist/tests/symlinkAliasInvalidation.test.js.map +1 -0
  329. package/dist/tests/testUtils.d.ts +2 -0
  330. package/dist/tests/testUtils.js +7 -1
  331. package/dist/tests/testUtils.js.map +1 -1
  332. package/dist/tests/textEditUtil.test.js +2 -2
  333. package/dist/tests/textEditUtil.test.js.map +1 -1
  334. package/dist/tests/textRangeCollection.test.d.ts +1 -0
  335. package/dist/tests/textRangeCollection.test.js +137 -0
  336. package/dist/tests/textRangeCollection.test.js.map +1 -0
  337. package/dist/tests/typeEquality.test.d.ts +1 -0
  338. package/dist/tests/typeEquality.test.js +95 -0
  339. package/dist/tests/typeEquality.test.js.map +1 -0
  340. package/dist/tests/typeEvaluator1.test.js +24 -3
  341. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  342. package/dist/tests/typeEvaluator2.test.js +4 -0
  343. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  344. package/dist/tests/typeEvaluator3.test.js +8 -0
  345. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  346. package/dist/tests/typeEvaluator4.test.js +8 -0
  347. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  348. package/dist/tests/typeEvaluator5.test.js +1 -1
  349. package/dist/tests/typeEvaluator6.test.js +5 -1
  350. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  351. package/dist/tests/typeEvaluator7.test.js +4 -0
  352. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  353. package/dist/tests/typeEvaluator8.test.js +4 -0
  354. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  355. package/dist/tests/typeServer/typeCache.test.d.ts +1 -0
  356. package/dist/tests/typeServer/typeCache.test.js +69 -0
  357. package/dist/tests/typeServer/typeCache.test.js.map +1 -0
  358. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js +18 -0
  359. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js.map +1 -1
  360. package/dist/tests/typeStubGeneration.test.d.ts +1 -0
  361. package/dist/tests/typeStubGeneration.test.js +397 -0
  362. package/dist/tests/typeStubGeneration.test.js.map +1 -0
  363. package/dist/tests/typeStubOutput.test.d.ts +1 -0
  364. package/dist/tests/typeStubOutput.test.js +136 -0
  365. package/dist/tests/typeStubOutput.test.js.map +1 -0
  366. package/dist/tests/typeUtils.test.d.ts +1 -0
  367. package/dist/tests/typeUtils.test.js +133 -0
  368. package/dist/tests/typeUtils.test.js.map +1 -0
  369. package/dist/tests/uri.test.js +51 -0
  370. package/dist/tests/uri.test.js.map +1 -1
  371. package/dist/typeServer/notebookDocumentHandler.d.ts +9 -2
  372. package/dist/typeServer/notebookDocumentHandler.js +16 -6
  373. package/dist/typeServer/notebookDocumentHandler.js.map +1 -1
  374. package/dist/typeServer/programWrapper.d.ts +1 -0
  375. package/dist/typeServer/programWrapper.js +28 -15
  376. package/dist/typeServer/programWrapper.js.map +1 -1
  377. package/dist/typeServer/protocol/tspSupplemental.d.ts +1 -1
  378. package/dist/typeServer/protocol/tspSupplemental.js +2 -2
  379. package/dist/typeServer/server.d.ts +13 -2
  380. package/dist/typeServer/server.js +36 -23
  381. package/dist/typeServer/server.js.map +1 -1
  382. package/dist/typeServer/typeCache.d.ts +8 -4
  383. package/dist/typeServer/typeCache.js +33 -5
  384. package/dist/typeServer/typeCache.js.map +1 -1
  385. package/dist/typeServer/typeEvalUtils.d.ts +2 -1
  386. package/dist/typeServer/typeEvalUtils.js +7 -3
  387. package/dist/typeServer/typeEvalUtils.js.map +1 -1
  388. package/dist/typeServer/typeGuards.js +3 -4
  389. package/dist/typeServer/typeGuards.js.map +1 -1
  390. package/dist/typeServer/typeServerFileSystem.d.ts +10 -9
  391. package/dist/typeServer/typeServerFileSystem.js +16 -12
  392. package/dist/typeServer/typeServerFileSystem.js.map +1 -1
  393. package/package.json +7 -5
  394. package/dist/analyzer/parseTreeCleaner.d.ts +0 -8
  395. package/dist/analyzer/parseTreeCleaner.js +0 -65
  396. package/dist/analyzer/parseTreeCleaner.js.map +0 -1
  397. package/dist/analyzer/typeStubWriter.d.ts +0 -17
  398. 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 {};