@cplieger/deadset-ts 8.0.0-dev.2 → 8.0.0-dev.21

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 (431) hide show
  1. package/README.md +3 -1
  2. package/THIRD_PARTY_NOTICES.md +27 -0
  3. package/dist/bin/mapper-connection.js +2 -1
  4. package/dist/bin/node-host.js +24 -5
  5. package/dist/src/alias-chain.js +35 -9
  6. package/dist/src/amd.js +81 -0
  7. package/dist/src/analysis.js +274 -496
  8. package/dist/src/augmentations.js +64 -3
  9. package/dist/src/automatic-types.js +10 -29
  10. package/dist/src/bindings.js +382 -0
  11. package/dist/src/commands/held.js +499 -0
  12. package/dist/src/commands/read.js +161 -0
  13. package/dist/src/commands/shell.js +169 -0
  14. package/dist/src/commands/tools.js +1847 -0
  15. package/dist/src/component-files.js +3 -2
  16. package/dist/src/component-layer.js +4 -2
  17. package/dist/src/config.js +6 -82
  18. package/dist/src/conformance-record.js +2 -2
  19. package/dist/src/consumers.js +10 -38
  20. package/dist/src/contextual-uses.js +57 -26
  21. package/dist/src/contract/config.generated.js +561 -0
  22. package/dist/src/contract/contract.generated.js +1370 -0
  23. package/dist/src/contract/report.generated.js +866 -0
  24. package/dist/src/dependencies.js +165 -122
  25. package/dist/src/destructuring.js +1 -19
  26. package/dist/src/edges.js +38 -122
  27. package/dist/src/element-access.js +181 -168
  28. package/dist/src/entries/build-scripts.js +222 -0
  29. package/dist/src/{configuration-files.js → entries/configuration-files.js} +52 -256
  30. package/dist/src/{convention-rows.js → entries/convention-rows.js} +170 -30
  31. package/dist/src/entries/conventions.js +740 -0
  32. package/dist/src/{html-entries.js → entries/html-entries.js} +12 -42
  33. package/dist/src/{mdx-entries.js → entries/mdx-entries.js} +5 -28
  34. package/dist/src/entries/run-directories.js +77 -0
  35. package/dist/src/entries/sources.js +144 -0
  36. package/dist/src/entries/static-module.js +670 -0
  37. package/dist/src/entries/test-runners.js +650 -0
  38. package/dist/src/entries/workflow-steps.js +345 -0
  39. package/dist/src/exemptions/argument-places.js +131 -0
  40. package/dist/src/exemptions/calls.js +338 -0
  41. package/dist/src/exemptions/classes.js +13 -0
  42. package/dist/src/{decorator.js → exemptions/decorator.js} +19 -30
  43. package/dist/src/exemptions/detectors.js +48 -0
  44. package/dist/src/{enum-group.js → exemptions/enum-group.js} +9 -16
  45. package/dist/src/{erased-stores.js → exemptions/erased-stores.js} +7 -11
  46. package/dist/src/{framework-lifecycle.js → exemptions/framework-lifecycle.js} +76 -54
  47. package/dist/src/exemptions/generated-file.js +241 -0
  48. package/dist/src/{injection-container.js → exemptions/injection-container.js} +20 -26
  49. package/dist/src/exemptions/installed-globals.js +173 -0
  50. package/dist/src/{interface-satisfaction.js → exemptions/interface-satisfaction.js} +52 -121
  51. package/dist/src/exemptions/lifecycle.js +150 -0
  52. package/dist/src/{reflective-lookup.js → exemptions/reflective-lookup.js} +3 -3
  53. package/dist/src/exemptions/serialization-contract.js +1276 -0
  54. package/dist/src/exemptions/sites.js +182 -0
  55. package/dist/src/{template-field.js → exemptions/template-field.js} +13 -23
  56. package/dist/src/{value-reach.js → exemptions/value-reach.js} +14 -7
  57. package/dist/src/exposure.js +400 -0
  58. package/dist/src/extensions.js +37 -0
  59. package/dist/src/facts.js +38 -0
  60. package/dist/src/failure.js +36 -0
  61. package/dist/src/file-facts.js +3 -26
  62. package/dist/src/findings/completion.js +109 -56
  63. package/dist/src/findings/dependencies-and-module-machinery.js +4 -5
  64. package/dist/src/findings/emitters.js +27 -41
  65. package/dist/src/{implementations.js → findings/implementations.js} +3 -3
  66. package/dist/src/{in-operands.js → findings/in-operands.js} +3 -2
  67. package/dist/src/findings/interfaces.js +4 -5
  68. package/dist/src/findings/intra-function.js +16 -13
  69. package/dist/src/findings/non-code-artifacts.js +17 -12
  70. package/dist/src/findings/reads-and-writes.js +86 -27
  71. package/dist/src/findings/self-check.js +44 -30
  72. package/dist/src/findings/unused-declarations.js +29 -45
  73. package/dist/src/findings/visibility-narrowing.js +23 -31
  74. package/dist/src/findings-pass.js +13 -21
  75. package/dist/src/fs/document.js +52 -0
  76. package/dist/src/fs/manifest.js +67 -0
  77. package/dist/src/fs/tree.js +88 -0
  78. package/dist/src/git-ignore.js +39 -26
  79. package/dist/src/import-bindings.js +73 -28
  80. package/dist/src/index/sites.js +557 -0
  81. package/dist/src/index/values.js +124 -0
  82. package/dist/src/index.js +2 -2
  83. package/dist/src/indexed-access.js +523 -478
  84. package/dist/src/intra-function-parts.js +63 -43
  85. package/dist/src/inventory/commonjs.js +507 -0
  86. package/dist/src/inventory/enumerate.js +167 -0
  87. package/dist/src/inventory/syntax.js +236 -0
  88. package/dist/src/inventory.js +323 -724
  89. package/dist/src/javascript-file.js +48 -0
  90. package/dist/src/json-document.js +198 -67
  91. package/dist/src/keyof-comparisons.js +126 -107
  92. package/dist/src/kinds.js +3 -366
  93. package/dist/src/{components.js → liveness/components.js} +2 -3
  94. package/dist/src/{graph.js → liveness/graph.js} +52 -28
  95. package/dist/src/liveness/matrix.js +99 -0
  96. package/dist/src/liveness/sweep.js +558 -0
  97. package/dist/src/load/classify.js +289 -0
  98. package/dist/src/load/diagnostics.js +87 -0
  99. package/dist/src/load/discover.js +285 -0
  100. package/dist/src/{emit-map.js → load/emit-map.js} +1 -1
  101. package/dist/src/load/expected-module.js +136 -0
  102. package/dist/src/load/load.js +27 -0
  103. package/dist/src/load/module-lookup.js +37 -0
  104. package/dist/src/load/package-scope.js +56 -0
  105. package/dist/src/load/plan.js +313 -0
  106. package/dist/src/load/specifiers.js +113 -0
  107. package/dist/src/load/synthesize.js +152 -0
  108. package/dist/src/load/test-globals.js +207 -0
  109. package/dist/src/load/test-joins.js +82 -0
  110. package/dist/src/{workspace-manifests.js → load/workspace-manifests.js} +4 -4
  111. package/dist/src/{workspace-programs.js → load/workspace-programs.js} +89 -66
  112. package/dist/src/{workspace-resolution.js → load/workspace-resolution.js} +24 -66
  113. package/dist/src/{workspace-run.js → load/workspace-run.js} +7 -7
  114. package/dist/src/{workspace.js → load/workspace.js} +62 -124
  115. package/dist/src/module-declarations.js +70 -85
  116. package/dist/src/overrides.js +134 -112
  117. package/dist/src/partial.js +2 -1
  118. package/dist/src/paths.js +82 -16
  119. package/dist/src/platform-calls.js +78 -0
  120. package/dist/src/platform-symbols.js +134 -0
  121. package/dist/src/position.js +43 -1
  122. package/dist/src/print.js +11 -79
  123. package/dist/src/product.js +13 -0
  124. package/dist/src/query.js +95 -0
  125. package/dist/src/ref.js +12 -20
  126. package/dist/src/references/read-rule.js +1 -0
  127. package/dist/src/references/read-rules.js +48 -0
  128. package/dist/src/references/sink.js +237 -0
  129. package/dist/src/references/sources.js +450 -0
  130. package/dist/src/references.js +117 -1074
  131. package/dist/src/report-schema.js +51 -0
  132. package/dist/src/report.js +57 -41
  133. package/dist/src/reporters/annotations.js +15 -8
  134. package/dist/src/reporters/sarif.js +16 -10
  135. package/dist/src/reporters/template.js +4 -19
  136. package/dist/src/resolve.js +246 -730
  137. package/dist/src/{configured-declarations.js → roots/configured-declarations.js} +22 -24
  138. package/dist/src/{entry-point-gaps.js → roots/entry-point-gaps.js} +6 -15
  139. package/dist/src/roots/manifest.js +216 -0
  140. package/dist/src/roots/published-reach.js +412 -0
  141. package/dist/src/roots/root-set.js +487 -0
  142. package/dist/src/roots/unseen-loads.js +236 -0
  143. package/dist/src/run.js +66 -77
  144. package/dist/src/schema.js +320 -343
  145. package/dist/src/scope.js +38 -115
  146. package/dist/src/session.js +37 -29
  147. package/dist/src/source-files.js +6 -10
  148. package/dist/src/stores.js +4 -2
  149. package/dist/src/suppress-file.js +25 -28
  150. package/dist/src/suppress-inline.js +36 -83
  151. package/dist/src/suppress.js +50 -71
  152. package/dist/src/symbol-keys.js +92 -88
  153. package/dist/src/tests/file-class.js +76 -0
  154. package/dist/src/{outside-tests.js → tests/outside.js} +7 -7
  155. package/dist/src/{test-support.js → tests/support.js} +5 -12
  156. package/dist/src/text/compare.js +26 -0
  157. package/dist/src/text/glob.js +194 -0
  158. package/dist/src/text/named-files.js +298 -0
  159. package/dist/src/text/yaml.js +684 -0
  160. package/dist/src/type-errors.js +11 -232
  161. package/dist/src/type-parameter-reads.js +178 -139
  162. package/dist/src/unimplemented-callees.js +262 -242
  163. package/dist/src/unwrap.js +23 -0
  164. package/dist/src/usage.js +10 -0
  165. package/dist/src/vendor/unbash/ansi-c.js +132 -0
  166. package/dist/src/vendor/unbash/arithmetic-parts.js +37 -0
  167. package/dist/src/vendor/unbash/arithmetic.js +591 -0
  168. package/dist/src/vendor/unbash/assignment.js +131 -0
  169. package/dist/src/vendor/unbash/chars.js +48 -0
  170. package/dist/src/vendor/unbash/command.js +41 -0
  171. package/dist/src/vendor/unbash/expansion.js +80 -0
  172. package/dist/src/vendor/unbash/glob.js +268 -0
  173. package/dist/src/vendor/unbash/heredoc.js +27 -0
  174. package/dist/src/vendor/unbash/internal-types.js +1 -0
  175. package/dist/src/vendor/unbash/lexer.js +4274 -0
  176. package/dist/src/vendor/unbash/limits.js +3 -0
  177. package/dist/src/vendor/unbash/parser.js +1366 -0
  178. package/dist/src/vendor/unbash/parts.js +57 -0
  179. package/dist/src/vendor/unbash/substitution-context.js +8 -0
  180. package/dist/src/vendor/unbash/traversal.js +212 -0
  181. package/dist/src/vendor/unbash/types.js +1 -0
  182. package/dist/src/vendor/unbash/word-value.js +61 -0
  183. package/dist/src/vendor/unbash/word.js +40 -0
  184. package/dist/src/verbs/analyze.js +194 -127
  185. package/dist/src/verbs/describe.js +13 -18
  186. package/dist/src/verbs/explain.js +85 -139
  187. package/dist/src/verbs/print-config.js +2 -1
  188. package/dist/src/verbs/print-projects.js +6 -4
  189. package/dist/src/verbs/print-retained.js +30 -6
  190. package/dist/src/verbs/print-roots.js +4 -2
  191. package/dist/src/verbs/verb.js +1 -5
  192. package/dist/src/verbs/version.js +14 -3
  193. package/jsr.json +2 -1
  194. package/package.json +14 -8
  195. package/src/alias-chain.ts +40 -11
  196. package/src/amd.ts +130 -0
  197. package/src/analysis.ts +426 -733
  198. package/src/augmentations.ts +93 -4
  199. package/src/automatic-types.ts +12 -30
  200. package/src/bindings.ts +460 -0
  201. package/src/commands/held.ts +632 -0
  202. package/src/commands/read.ts +242 -0
  203. package/src/commands/shell.ts +228 -0
  204. package/src/commands/tools.ts +2382 -0
  205. package/src/component-files.ts +4 -2
  206. package/src/component-layer.ts +4 -2
  207. package/src/config.ts +31 -302
  208. package/src/conformance-record.ts +2 -2
  209. package/src/consumers.ts +16 -66
  210. package/src/contextual-uses.ts +66 -34
  211. package/src/contract/config.generated.ts +821 -0
  212. package/src/contract/contract.generated.ts +1453 -0
  213. package/src/contract/report.generated.ts +1241 -0
  214. package/src/dependencies.ts +223 -128
  215. package/src/destructuring.ts +1 -31
  216. package/src/edges.ts +41 -140
  217. package/src/element-access.ts +190 -187
  218. package/src/entries/build-scripts.ts +292 -0
  219. package/src/{configuration-files.ts → entries/configuration-files.ts} +68 -278
  220. package/src/{convention-rows.ts → entries/convention-rows.ts} +227 -31
  221. package/src/{conventions.ts → entries/conventions.ts} +367 -583
  222. package/src/{html-entries.ts → entries/html-entries.ts} +22 -48
  223. package/src/{mdx-entries.ts → entries/mdx-entries.ts} +7 -30
  224. package/src/entries/run-directories.ts +108 -0
  225. package/src/entries/sources.ts +266 -0
  226. package/src/entries/static-module.ts +858 -0
  227. package/src/entries/test-runners.ts +835 -0
  228. package/src/entries/workflow-steps.ts +432 -0
  229. package/src/exemptions/argument-places.ts +198 -0
  230. package/src/exemptions/calls.ts +483 -0
  231. package/src/exemptions/classes.ts +49 -0
  232. package/src/exemptions/decorator.ts +56 -0
  233. package/src/exemptions/detectors.ts +75 -0
  234. package/src/{enum-group.ts → exemptions/enum-group.ts} +10 -19
  235. package/src/{erased-stores.ts → exemptions/erased-stores.ts} +7 -14
  236. package/src/{framework-lifecycle.ts → exemptions/framework-lifecycle.ts} +85 -66
  237. package/src/exemptions/generated-file.ts +318 -0
  238. package/src/{injection-container.ts → exemptions/injection-container.ts} +29 -34
  239. package/src/exemptions/installed-globals.ts +255 -0
  240. package/src/{interface-satisfaction.ts → exemptions/interface-satisfaction.ts} +69 -160
  241. package/src/exemptions/lifecycle.ts +286 -0
  242. package/src/{reflective-lookup.ts → exemptions/reflective-lookup.ts} +5 -5
  243. package/src/exemptions/serialization-contract.ts +1729 -0
  244. package/src/exemptions/sites.ts +293 -0
  245. package/src/{template-field.ts → exemptions/template-field.ts} +22 -32
  246. package/src/{value-reach.ts → exemptions/value-reach.ts} +16 -8
  247. package/src/exposure.ts +492 -0
  248. package/src/extensions.ts +45 -0
  249. package/src/facts.ts +46 -0
  250. package/src/failure.ts +63 -0
  251. package/src/file-facts.ts +15 -25
  252. package/src/finding.ts +10 -10
  253. package/src/findings/boundary.ts +11 -0
  254. package/src/findings/completion.ts +133 -64
  255. package/src/findings/dependencies-and-module-machinery.ts +4 -7
  256. package/src/findings/emitter.ts +9 -10
  257. package/src/findings/emitters.ts +38 -52
  258. package/src/{implementations.ts → findings/implementations.ts} +4 -4
  259. package/src/{in-operands.ts → findings/in-operands.ts} +4 -3
  260. package/src/findings/interfaces.ts +7 -9
  261. package/src/findings/intra-function.ts +16 -14
  262. package/src/findings/non-code-artifacts.ts +24 -15
  263. package/src/findings/reads-and-writes.ts +118 -41
  264. package/src/findings/self-check.ts +51 -38
  265. package/src/findings/unused-declarations.ts +31 -49
  266. package/src/findings/visibility-narrowing.ts +36 -40
  267. package/src/findings-pass.ts +15 -31
  268. package/src/fs/document.ts +70 -0
  269. package/src/fs/manifest.ts +96 -0
  270. package/src/fs/tree.ts +110 -0
  271. package/src/git-ignore.ts +50 -26
  272. package/src/host.ts +12 -5
  273. package/src/import-bindings.ts +98 -29
  274. package/src/index/sites.ts +781 -0
  275. package/src/index/values.ts +170 -0
  276. package/src/index.ts +2 -2
  277. package/src/indexed-access.ts +570 -527
  278. package/src/intra-function-parts.ts +73 -44
  279. package/src/inventory/commonjs.ts +696 -0
  280. package/src/inventory/enumerate.ts +203 -0
  281. package/src/inventory/syntax.ts +311 -0
  282. package/src/inventory.ts +442 -895
  283. package/src/javascript-file.ts +54 -0
  284. package/src/json-document.ts +241 -76
  285. package/src/keyof-comparisons.ts +133 -122
  286. package/src/kinds.ts +5 -413
  287. package/src/{components.ts → liveness/components.ts} +4 -6
  288. package/src/{graph.ts → liveness/graph.ts} +100 -35
  289. package/src/liveness/matrix.ts +162 -0
  290. package/src/liveness/sweep.ts +855 -0
  291. package/src/load/classify.ts +433 -0
  292. package/src/load/diagnostics.ts +154 -0
  293. package/src/load/discover.ts +471 -0
  294. package/src/{emit-map.ts → load/emit-map.ts} +1 -1
  295. package/src/load/expected-module.ts +194 -0
  296. package/src/load/load.ts +73 -0
  297. package/src/load/module-lookup.ts +50 -0
  298. package/src/load/package-scope.ts +74 -0
  299. package/src/load/plan.ts +513 -0
  300. package/src/load/specifiers.ts +171 -0
  301. package/src/load/synthesize.ts +230 -0
  302. package/src/load/test-globals.ts +251 -0
  303. package/src/load/test-joins.ts +98 -0
  304. package/src/{workspace-manifests.ts → load/workspace-manifests.ts} +5 -5
  305. package/src/{workspace-programs.ts → load/workspace-programs.ts} +128 -85
  306. package/src/{workspace-resolution.ts → load/workspace-resolution.ts} +41 -77
  307. package/src/{workspace-run.ts → load/workspace-run.ts} +18 -16
  308. package/src/{workspace.ts → load/workspace.ts} +90 -134
  309. package/src/module-declarations.ts +74 -98
  310. package/src/overrides.ts +162 -134
  311. package/src/partial.ts +3 -2
  312. package/src/paths.ts +92 -16
  313. package/src/platform-calls.ts +119 -0
  314. package/src/platform-symbols.ts +189 -0
  315. package/src/position.ts +44 -1
  316. package/src/print.ts +12 -92
  317. package/src/product.ts +18 -0
  318. package/src/query.ts +201 -10
  319. package/src/ref.ts +12 -20
  320. package/src/references/read-rule.ts +60 -0
  321. package/src/references/read-rules.ts +55 -0
  322. package/src/references/sink.ts +314 -0
  323. package/src/references/sources.ts +632 -0
  324. package/src/references.ts +187 -1450
  325. package/src/report-schema.ts +68 -0
  326. package/src/report.ts +103 -226
  327. package/src/reporters/annotations.ts +22 -11
  328. package/src/reporters/json.ts +1 -1
  329. package/src/reporters/reporter.ts +2 -4
  330. package/src/reporters/reporters.ts +1 -1
  331. package/src/reporters/sarif.ts +29 -16
  332. package/src/reporters/template.ts +4 -20
  333. package/src/reporters/text.ts +3 -3
  334. package/src/resolve.ts +284 -1115
  335. package/src/{configured-declarations.ts → roots/configured-declarations.ts} +26 -29
  336. package/src/{entry-point-gaps.ts → roots/entry-point-gaps.ts} +7 -16
  337. package/src/roots/manifest.ts +303 -0
  338. package/src/roots/published-reach.ts +486 -0
  339. package/src/{roots.ts → roots/root-set.ts} +286 -469
  340. package/src/roots/unseen-loads.ts +345 -0
  341. package/src/run.ts +75 -91
  342. package/src/schema.ts +391 -388
  343. package/src/scope.ts +46 -138
  344. package/src/session.ts +87 -55
  345. package/src/source-files.ts +6 -11
  346. package/src/stores.ts +15 -3
  347. package/src/suppress-file.ts +24 -33
  348. package/src/suppress-inline.ts +55 -91
  349. package/src/suppress.ts +78 -79
  350. package/src/symbol-keys.ts +104 -107
  351. package/src/tests/file-class.ts +135 -0
  352. package/src/{outside-tests.ts → tests/outside.ts} +16 -10
  353. package/src/{test-support.ts → tests/support.ts} +15 -21
  354. package/src/text/compare.ts +27 -0
  355. package/src/text/glob.ts +210 -0
  356. package/src/text/named-files.ts +388 -0
  357. package/src/text/yaml.ts +747 -0
  358. package/src/type-errors.ts +18 -288
  359. package/src/type-parameter-reads.ts +187 -158
  360. package/src/unimplemented-callees.ts +297 -280
  361. package/src/unwrap.ts +34 -0
  362. package/src/usage.ts +10 -0
  363. package/src/vendor/unbash/LICENSE +15 -0
  364. package/src/vendor/unbash/VENDORED.md +16 -0
  365. package/src/vendor/unbash/ansi-c.ts +132 -0
  366. package/src/vendor/unbash/arithmetic-parts.ts +53 -0
  367. package/src/vendor/unbash/arithmetic.ts +641 -0
  368. package/src/vendor/unbash/assignment.ts +163 -0
  369. package/src/vendor/unbash/chars.ts +48 -0
  370. package/src/vendor/unbash/command.ts +47 -0
  371. package/src/vendor/unbash/expansion.ts +144 -0
  372. package/src/vendor/unbash/glob.ts +284 -0
  373. package/src/vendor/unbash/heredoc.ts +34 -0
  374. package/src/vendor/unbash/internal-types.ts +94 -0
  375. package/src/vendor/unbash/lexer.ts +4352 -0
  376. package/src/vendor/unbash/limits.ts +3 -0
  377. package/src/vendor/unbash/parser.ts +1612 -0
  378. package/src/vendor/unbash/parts.ts +96 -0
  379. package/src/vendor/unbash/substitution-context.ts +20 -0
  380. package/src/vendor/unbash/traversal.ts +182 -0
  381. package/src/vendor/unbash/types.ts +660 -0
  382. package/src/vendor/unbash/word-value.ts +64 -0
  383. package/src/vendor/unbash/word.ts +50 -0
  384. package/src/verbs/analyze.ts +255 -164
  385. package/src/verbs/describe.ts +19 -17
  386. package/src/verbs/explain.ts +93 -169
  387. package/src/verbs/print-config.ts +2 -1
  388. package/src/verbs/print-projects.ts +6 -4
  389. package/src/verbs/print-retained.ts +36 -6
  390. package/src/verbs/print-roots.ts +4 -2
  391. package/src/verbs/verb.ts +2 -8
  392. package/src/verbs/version.ts +15 -3
  393. package/dist/src/base-url.js +0 -18
  394. package/dist/src/calls.js +0 -155
  395. package/dist/src/conventions.js +0 -937
  396. package/dist/src/discover.js +0 -468
  397. package/dist/src/entry-points.js +0 -529
  398. package/dist/src/exempt-classes.js +0 -75
  399. package/dist/src/exempt.js +0 -209
  400. package/dist/src/generated-file.js +0 -95
  401. package/dist/src/glob.js +0 -65
  402. package/dist/src/manifest.js +0 -165
  403. package/dist/src/matrix.js +0 -246
  404. package/dist/src/pnpm-workspace.js +0 -120
  405. package/dist/src/roots.js +0 -672
  406. package/dist/src/serialization-contract.js +0 -611
  407. package/dist/src/setup-failure.js +0 -23
  408. package/dist/src/sweep.js +0 -224
  409. package/dist/src/test-joins.js +0 -101
  410. package/dist/src/value-flow.js +0 -74
  411. package/dist/src/version.js +0 -7
  412. package/dist/src/workflow-steps.js +0 -185
  413. package/src/base-url.ts +0 -24
  414. package/src/calls.ts +0 -225
  415. package/src/decorator.ts +0 -78
  416. package/src/discover.ts +0 -653
  417. package/src/entry-points.ts +0 -687
  418. package/src/exempt-classes.ts +0 -123
  419. package/src/exempt.ts +0 -323
  420. package/src/generated-file.ts +0 -111
  421. package/src/glob.ts +0 -67
  422. package/src/manifest.ts +0 -234
  423. package/src/matrix.ts +0 -423
  424. package/src/pnpm-workspace.ts +0 -135
  425. package/src/serialization-contract.ts +0 -849
  426. package/src/setup-failure.ts +0 -39
  427. package/src/sweep.ts +0 -347
  428. package/src/test-joins.ts +0 -120
  429. package/src/value-flow.ts +0 -104
  430. package/src/version.ts +0 -7
  431. package/src/workflow-steps.ts +0 -216
@@ -0,0 +1,660 @@
1
+ // Code generated by scripts/vendor-unbash.ts from unbash 6.0.0 (968c14992a43dc06ce29c9f51858abd4a87851ea). DO NOT EDIT.
2
+ // @ts-nocheck
3
+ export interface Word {
4
+ readonly type: "Word";
5
+ readonly text: string;
6
+ readonly value: string;
7
+ readonly pos: number;
8
+ readonly end: number;
9
+ readonly parts?: readonly WordPart[] | undefined;
10
+ }
11
+
12
+ export interface LiteralPart {
13
+ readonly type: "Literal";
14
+ readonly pos: number;
15
+ readonly end: number;
16
+ readonly value: string;
17
+ readonly text: string;
18
+ }
19
+
20
+ interface GlobPartBase {
21
+ readonly type: "Glob";
22
+ readonly pos: number;
23
+ readonly end: number;
24
+ readonly text: string;
25
+ readonly value: string;
26
+ }
27
+
28
+ export interface StarGlobPart extends GlobPartBase {
29
+ readonly kind: "star";
30
+ readonly parts?: undefined;
31
+ }
32
+
33
+ export interface QuestionGlobPart extends GlobPartBase {
34
+ readonly kind: "question";
35
+ readonly parts?: undefined;
36
+ }
37
+
38
+ export interface BracketGlobPart extends GlobPartBase {
39
+ readonly kind: "bracket";
40
+ readonly parts: readonly WordPart[];
41
+ }
42
+
43
+ export type GlobPart = StarGlobPart | QuestionGlobPart | BracketGlobPart;
44
+
45
+ export interface SingleQuotedPart {
46
+ readonly type: "SingleQuoted";
47
+ readonly pos: number;
48
+ readonly end: number;
49
+ readonly value: string;
50
+ readonly text: string;
51
+ }
52
+
53
+ export interface DoubleQuotedPart {
54
+ readonly type: "DoubleQuoted";
55
+ readonly pos: number;
56
+ readonly end: number;
57
+ readonly text: string;
58
+ readonly parts: readonly DoubleQuotedChild[];
59
+ }
60
+
61
+ export interface AnsiCQuotedPart {
62
+ readonly type: "AnsiCQuoted";
63
+ readonly pos: number;
64
+ readonly end: number;
65
+ readonly text: string;
66
+ readonly value: string;
67
+ }
68
+
69
+ export interface LocaleStringPart {
70
+ readonly type: "LocaleString";
71
+ readonly pos: number;
72
+ readonly end: number;
73
+ readonly text: string;
74
+ readonly parts: readonly DoubleQuotedChild[];
75
+ }
76
+
77
+ export interface SimpleExpansionPart {
78
+ readonly type: "SimpleExpansion";
79
+ readonly pos: number;
80
+ readonly end: number;
81
+ readonly text: string;
82
+ }
83
+
84
+ export interface ParameterExpansionPart {
85
+ readonly type: "ParameterExpansion";
86
+ readonly pos: number;
87
+ readonly end: number;
88
+ readonly text: string;
89
+ readonly parameter: string;
90
+ readonly parameterPos: number;
91
+ readonly parameterEnd: number;
92
+ readonly prefix: "!" | "#" | undefined;
93
+ readonly index: Word | undefined;
94
+ readonly operation: ParameterOperation | undefined;
95
+ }
96
+
97
+ interface ParameterOperationBase {
98
+ readonly pos: number;
99
+ readonly end: number;
100
+ readonly operatorEnd: number;
101
+ }
102
+
103
+ export interface ParameterDefaultOperation extends ParameterOperationBase {
104
+ readonly type: "Default";
105
+ readonly operator: "-" | ":-" | "=" | ":=" | "+" | ":+" | "?" | ":?";
106
+ readonly operand: Word;
107
+ }
108
+
109
+ export interface ParameterRemoveOperation extends ParameterOperationBase {
110
+ readonly type: "Remove";
111
+ readonly operator: "#" | "##" | "%" | "%%";
112
+ readonly operand: Word;
113
+ }
114
+
115
+ export interface ParameterReplaceOperation extends ParameterOperationBase {
116
+ readonly type: "Replace";
117
+ readonly operator: "/" | "//" | "/#" | "/%";
118
+ readonly pattern: Word;
119
+ readonly replacement: Word;
120
+ }
121
+
122
+ export interface ParameterSliceOperation extends ParameterOperationBase {
123
+ readonly type: "Slice";
124
+ readonly operator: ":";
125
+ readonly offset: Word;
126
+ readonly length: Word | undefined;
127
+ }
128
+
129
+ export interface ParameterCaseOperation extends ParameterOperationBase {
130
+ readonly type: "CaseModification";
131
+ readonly operator: "^" | "^^" | "," | ",,";
132
+ readonly operand: Word | undefined;
133
+ }
134
+
135
+ export interface ParameterTransformOperation extends ParameterOperationBase {
136
+ readonly type: "Transform";
137
+ readonly operator: "@";
138
+ readonly operand: Word;
139
+ }
140
+
141
+ export interface ParameterNamesOperation extends ParameterOperationBase {
142
+ readonly type: "Names";
143
+ readonly operator: "@" | "*";
144
+ }
145
+
146
+ export interface ParameterUnknownOperation extends ParameterOperationBase {
147
+ readonly type: "Unknown";
148
+ readonly operator: string;
149
+ }
150
+
151
+ export type ParameterOperation =
152
+ | ParameterDefaultOperation
153
+ | ParameterRemoveOperation
154
+ | ParameterReplaceOperation
155
+ | ParameterSliceOperation
156
+ | ParameterCaseOperation
157
+ | ParameterTransformOperation
158
+ | ParameterNamesOperation
159
+ | ParameterUnknownOperation;
160
+
161
+ export interface CommandExpansionPart {
162
+ readonly type: "CommandExpansion";
163
+ readonly pos: number;
164
+ readonly end: number;
165
+ readonly text: string;
166
+ readonly script: ParsedScript | undefined;
167
+ }
168
+
169
+ export interface ArithmeticExpansionPart {
170
+ readonly type: "ArithmeticExpansion";
171
+ readonly pos: number;
172
+ readonly end: number;
173
+ readonly text: string;
174
+ readonly expression: ArithmeticExpression | undefined;
175
+ }
176
+
177
+ export interface ProcessSubstitutionPart {
178
+ readonly type: "ProcessSubstitution";
179
+ readonly pos: number;
180
+ readonly end: number;
181
+ readonly text: string;
182
+ readonly operator: "<" | ">";
183
+ readonly script: ParsedScript | undefined;
184
+ }
185
+
186
+ export type ExtGlobOperator = "?" | "*" | "+" | "@" | "!";
187
+
188
+ export interface ExtendedGlobPart {
189
+ readonly type: "ExtendedGlob";
190
+ readonly pos: number;
191
+ readonly end: number;
192
+ readonly text: string;
193
+ readonly operator: ExtGlobOperator;
194
+ readonly pattern: string;
195
+ readonly parts?: readonly WordPart[] | undefined;
196
+ }
197
+
198
+ export interface BraceExpansionPart {
199
+ readonly type: "BraceExpansion";
200
+ readonly pos: number;
201
+ readonly end: number;
202
+ readonly text: string;
203
+ readonly parts?: readonly WordPart[] | undefined;
204
+ }
205
+
206
+ export type ArithmeticExpression =
207
+ | ArithmeticBinary
208
+ | ArithmeticUnary
209
+ | ArithmeticTernary
210
+ | ArithmeticGroup
211
+ | ArithmeticWord
212
+ | ArithmeticCommandExpansion;
213
+
214
+ export interface ArithmeticBinary {
215
+ readonly type: "ArithmeticBinary";
216
+ readonly pos: number;
217
+ readonly end: number;
218
+ readonly operator: string;
219
+ readonly left: ArithmeticExpression;
220
+ readonly right: ArithmeticExpression;
221
+ }
222
+
223
+ export interface ArithmeticUnary {
224
+ readonly type: "ArithmeticUnary";
225
+ readonly pos: number;
226
+ readonly end: number;
227
+ readonly operator: string;
228
+ readonly operand: ArithmeticExpression;
229
+ readonly prefix: boolean;
230
+ }
231
+
232
+ export interface ArithmeticTernary {
233
+ readonly type: "ArithmeticTernary";
234
+ readonly pos: number;
235
+ readonly end: number;
236
+ readonly test: ArithmeticExpression;
237
+ readonly consequent: ArithmeticExpression;
238
+ readonly alternate: ArithmeticExpression;
239
+ }
240
+
241
+ export interface ArithmeticGroup {
242
+ readonly type: "ArithmeticGroup";
243
+ readonly pos: number;
244
+ readonly end: number;
245
+ readonly expression: ArithmeticExpression;
246
+ }
247
+
248
+ export interface ArithmeticWord {
249
+ readonly type: "ArithmeticWord";
250
+ readonly pos: number;
251
+ readonly end: number;
252
+ readonly value: string;
253
+ readonly parts?: readonly WordPart[] | undefined;
254
+ }
255
+
256
+ export interface ArithmeticCommandExpansion {
257
+ readonly type: "ArithmeticCommandExpansion";
258
+ readonly pos: number;
259
+ readonly end: number;
260
+ readonly text: string; // e.g., "$(cmd)"
261
+ readonly script: ParsedScript | undefined; // set after resolution
262
+ }
263
+
264
+ export type DoubleQuotedChild =
265
+ | LiteralPart
266
+ | SimpleExpansionPart
267
+ | ParameterExpansionPart
268
+ | CommandExpansionPart
269
+ | ArithmeticExpansionPart;
270
+
271
+ export type WordPart =
272
+ | LiteralPart
273
+ | GlobPart
274
+ | SingleQuotedPart
275
+ | DoubleQuotedPart
276
+ | AnsiCQuotedPart
277
+ | LocaleStringPart
278
+ | SimpleExpansionPart
279
+ | ParameterExpansionPart
280
+ | CommandExpansionPart
281
+ | ArithmeticExpansionPart
282
+ | ProcessSubstitutionPart
283
+ | ExtendedGlobPart
284
+ | BraceExpansionPart;
285
+
286
+ export interface Assignment {
287
+ readonly type: "Assignment";
288
+ readonly pos: number;
289
+ readonly end: number;
290
+ readonly text: string;
291
+ readonly name: string;
292
+ readonly value: Word | ArrayValue;
293
+ readonly append: boolean | undefined;
294
+ readonly index: Word | undefined;
295
+ }
296
+
297
+ export interface ArrayValue {
298
+ readonly type: "ArrayValue";
299
+ readonly pos: number;
300
+ readonly end: number;
301
+ readonly elements: readonly Word[];
302
+ }
303
+
304
+ export type AssignmentPrefix = Assignment;
305
+
306
+ export type CommandArgument = Word | Assignment;
307
+
308
+ export type RedirectOperator = ">" | ">>" | "<" | "<>" | "<&" | ">&" | ">|" | "&>" | "&>>";
309
+
310
+ export type Redirection = Redirect | HereString | HereDoc;
311
+
312
+ export type RedirectDescriptor =
313
+ | { readonly type: "FileDescriptor"; readonly pos: number; readonly end: number; readonly value: number }
314
+ | { readonly type: "FileDescriptorVariable"; readonly pos: number; readonly end: number; readonly name: string };
315
+
316
+ export interface Redirect {
317
+ readonly type: "Redirect";
318
+ readonly pos: number;
319
+ readonly end: number;
320
+ readonly operator: RedirectOperator;
321
+ readonly descriptor: RedirectDescriptor | undefined;
322
+ readonly target: Word | undefined;
323
+ }
324
+
325
+ export interface HereString {
326
+ readonly type: "HereString";
327
+ readonly pos: number;
328
+ readonly end: number;
329
+ readonly operator: "<<<";
330
+ readonly descriptor: RedirectDescriptor | undefined;
331
+ readonly target: Word | undefined;
332
+ }
333
+
334
+ export interface HereDoc {
335
+ readonly type: "HereDoc";
336
+ readonly pos: number;
337
+ readonly end: number;
338
+ readonly operator: "<<" | "<<-";
339
+ readonly descriptor: RedirectDescriptor | undefined;
340
+ readonly delimiter: HereDocDelimiter | undefined;
341
+ readonly body: HereDocBody;
342
+ readonly closing: { readonly pos: number; readonly end: number } | undefined;
343
+ }
344
+
345
+ export interface HereDocDelimiter {
346
+ readonly type: "HereDocDelimiter";
347
+ readonly pos: number;
348
+ readonly end: number;
349
+ readonly text: string;
350
+ readonly value: string;
351
+ readonly quoted: boolean;
352
+ }
353
+
354
+ export interface HereDocBody {
355
+ readonly type: "HereDocBody";
356
+ readonly pos: number;
357
+ readonly end: number;
358
+ readonly text: string;
359
+ readonly parts: readonly WordPart[] | undefined;
360
+ }
361
+
362
+ export interface Command {
363
+ readonly type: "Command";
364
+ readonly pos: number;
365
+ readonly end: number;
366
+ readonly name: Word | undefined;
367
+ readonly prefix: readonly (Assignment | Redirection)[];
368
+ readonly suffix: readonly (CommandArgument | Redirection)[];
369
+ /** Suffix words and assignments in source order; derived from suffix, lazy, cached, not serialized. */
370
+ readonly args: readonly CommandArgument[];
371
+ /** Redirections from prefix then suffix in source order; derived, lazy, cached, not serialized. */
372
+ readonly redirects: readonly Redirection[];
373
+ }
374
+
375
+ export interface Redirected {
376
+ readonly type: "Redirected";
377
+ readonly pos: number;
378
+ readonly end: number;
379
+ readonly command: CompoundCommand;
380
+ readonly redirects: readonly Redirection[];
381
+ }
382
+
383
+ export type CompoundCommand =
384
+ | If
385
+ | For
386
+ | ArithmeticFor
387
+ | Select
388
+ | While
389
+ | Subshell
390
+ | BraceGroup
391
+ | Case
392
+ | TestCommand
393
+ | ArithmeticCommand;
394
+
395
+ export type PipeOperator = "|" | "|&";
396
+
397
+ export type CommandNode = Command | CompoundCommand | Redirected | Function | Coproc;
398
+
399
+ export type PipelineNode = CommandNode | Pipeline;
400
+
401
+ export interface Pipeline {
402
+ readonly type: "Pipeline";
403
+ readonly pos: number;
404
+ readonly end: number;
405
+ readonly prefixes: readonly PipelinePrefix[];
406
+ readonly commands: readonly CommandNode[];
407
+ readonly operators: readonly PipeOperator[];
408
+ }
409
+
410
+ export type PipelinePrefix = Time | Negation;
411
+
412
+ export interface Time {
413
+ readonly type: "Time";
414
+ readonly pos: number;
415
+ readonly end: number;
416
+ readonly keywordEnd: number;
417
+ readonly posix: { readonly pos: number; readonly end: number } | undefined;
418
+ readonly endOfOptions: { readonly pos: number; readonly end: number } | undefined;
419
+ }
420
+
421
+ export interface Negation {
422
+ readonly type: "Negation";
423
+ readonly pos: number;
424
+ readonly end: number;
425
+ }
426
+
427
+ export type LogicalOperator = "&&" | "||";
428
+
429
+ export interface AndOr {
430
+ readonly type: "AndOr";
431
+ readonly pos: number;
432
+ readonly end: number;
433
+ readonly commands: readonly PipelineNode[];
434
+ readonly operators: readonly LogicalOperator[];
435
+ }
436
+
437
+ export interface If {
438
+ readonly type: "If";
439
+ readonly pos: number;
440
+ readonly end: number;
441
+ readonly clause: CompoundList;
442
+ readonly then: CompoundList;
443
+ readonly elif: readonly Elif[];
444
+ readonly else: CompoundList | undefined;
445
+ }
446
+
447
+ export interface Elif {
448
+ readonly type: "Elif";
449
+ readonly pos: number;
450
+ readonly end: number;
451
+ readonly clause: CompoundList;
452
+ readonly then: CompoundList;
453
+ }
454
+
455
+ export interface For {
456
+ readonly type: "For";
457
+ readonly pos: number;
458
+ readonly end: number;
459
+ readonly name: Word;
460
+ readonly wordlist: readonly Word[] | undefined;
461
+ readonly body: CompoundList;
462
+ }
463
+
464
+ export type WhileKind = "while" | "until";
465
+
466
+ export interface While {
467
+ readonly type: "While";
468
+ readonly pos: number;
469
+ readonly end: number;
470
+ readonly kind: WhileKind;
471
+ readonly clause: CompoundList;
472
+ readonly body: CompoundList;
473
+ }
474
+
475
+ export interface Function {
476
+ readonly type: "Function";
477
+ readonly pos: number;
478
+ readonly end: number;
479
+ readonly name: Word;
480
+ /** A CompoundList body only occurs in recovery and is accompanied by an error. */
481
+ readonly body: CompoundCommand | Redirected | CompoundList;
482
+ }
483
+
484
+ export interface Subshell {
485
+ readonly type: "Subshell";
486
+ readonly pos: number;
487
+ readonly end: number;
488
+ readonly body: CompoundList;
489
+ }
490
+
491
+ export interface BraceGroup {
492
+ readonly type: "BraceGroup";
493
+ readonly pos: number;
494
+ readonly end: number;
495
+ readonly body: CompoundList;
496
+ }
497
+
498
+ export interface CompoundList {
499
+ readonly type: "CompoundList";
500
+ readonly pos: number;
501
+ readonly end: number;
502
+ readonly commands: readonly Statement[];
503
+ }
504
+
505
+ export interface Case {
506
+ readonly type: "Case";
507
+ readonly pos: number;
508
+ readonly end: number;
509
+ readonly word: Word;
510
+ readonly items: readonly CaseItem[];
511
+ }
512
+
513
+ export type CaseTerminator = ";;" | ";&" | ";;&";
514
+
515
+ export interface CaseItem {
516
+ readonly type: "CaseItem";
517
+ readonly pos: number;
518
+ readonly end: number;
519
+ readonly pattern: readonly Word[];
520
+ readonly body: CompoundList;
521
+ readonly terminator: CaseTerminator | undefined;
522
+ }
523
+
524
+ export interface Select {
525
+ readonly type: "Select";
526
+ readonly pos: number;
527
+ readonly end: number;
528
+ readonly name: Word;
529
+ readonly wordlist: readonly Word[] | undefined;
530
+ readonly body: CompoundList;
531
+ }
532
+
533
+ export interface Coproc {
534
+ readonly type: "Coproc";
535
+ readonly pos: number;
536
+ readonly end: number;
537
+ readonly name: Word | undefined;
538
+ /** A CompoundList body only occurs in recovery and is accompanied by an error. */
539
+ readonly body: Command | CompoundCommand | Redirected | CompoundList;
540
+ }
541
+
542
+ export interface ArithmeticFor {
543
+ readonly type: "ArithmeticFor";
544
+ readonly pos: number;
545
+ readonly end: number;
546
+ readonly initialize: ArithmeticExpression | undefined;
547
+ readonly test: ArithmeticExpression | undefined;
548
+ readonly update: ArithmeticExpression | undefined;
549
+ readonly body: CompoundList;
550
+ }
551
+
552
+ export type TestExpression =
553
+ | TestUnaryExpression
554
+ | TestBinaryExpression
555
+ | TestLogicalExpression
556
+ | TestNotExpression
557
+ | TestGroupExpression;
558
+
559
+ export interface TestUnaryExpression {
560
+ readonly type: "TestUnary";
561
+ readonly pos: number;
562
+ readonly end: number;
563
+ readonly operator: string;
564
+ readonly operand: Word;
565
+ }
566
+
567
+ export interface TestBinaryExpression {
568
+ readonly type: "TestBinary";
569
+ readonly pos: number;
570
+ readonly end: number;
571
+ readonly operator: string;
572
+ readonly left: Word;
573
+ readonly right: Word;
574
+ }
575
+
576
+ export interface TestLogicalExpression {
577
+ readonly type: "TestLogical";
578
+ readonly pos: number;
579
+ readonly end: number;
580
+ readonly operator: "&&" | "||";
581
+ readonly operands: readonly TestExpression[];
582
+ }
583
+
584
+ export interface TestNotExpression {
585
+ readonly type: "TestNot";
586
+ readonly pos: number;
587
+ readonly end: number;
588
+ readonly negations: readonly Negation[];
589
+ readonly operand: TestExpression;
590
+ }
591
+
592
+ export interface TestGroupExpression {
593
+ readonly type: "TestGroup";
594
+ readonly pos: number;
595
+ readonly end: number;
596
+ readonly expression: TestExpression;
597
+ }
598
+
599
+ export interface TestCommand {
600
+ readonly type: "TestCommand";
601
+ readonly pos: number;
602
+ readonly end: number;
603
+ readonly expression: TestExpression;
604
+ }
605
+
606
+ export interface ArithmeticCommand {
607
+ readonly type: "ArithmeticCommand";
608
+ readonly pos: number;
609
+ readonly end: number;
610
+ readonly expression: ArithmeticExpression | undefined;
611
+ readonly body: string;
612
+ }
613
+
614
+ export interface Statement {
615
+ readonly type: "Statement";
616
+ readonly pos: number;
617
+ readonly end: number;
618
+ readonly command: PipelineNode | AndOr;
619
+ readonly background: boolean | undefined;
620
+ }
621
+
622
+ export type SyntaxNode =
623
+ | ParsedScript
624
+ | Statement
625
+ | CompoundList
626
+ | CaseItem
627
+ | Elif
628
+ | PipelineNode
629
+ | PipelinePrefix
630
+ | AndOr
631
+ | Word
632
+ | WordPart
633
+ | Assignment
634
+ | ArrayValue
635
+ | Redirection
636
+ | RedirectDescriptor
637
+ | HereDocDelimiter
638
+ | HereDocBody
639
+ | ArithmeticExpression
640
+ | TestExpression
641
+ | ParameterOperation;
642
+
643
+ export interface Script {
644
+ readonly type: "Script";
645
+ readonly pos: number;
646
+ readonly end: number;
647
+ readonly shebang: string | undefined;
648
+ readonly commands: readonly Statement[];
649
+ /** Decoded source owned by escaped-backtick scripts; descendant positions index this string. */
650
+ readonly source?: string;
651
+ }
652
+
653
+ export interface ParsedScript extends Script {
654
+ readonly errors?: readonly ParseError[] | undefined;
655
+ }
656
+
657
+ export interface ParseError {
658
+ readonly message: string;
659
+ readonly pos: number;
660
+ }
@@ -0,0 +1,64 @@
1
+ // Code generated by scripts/vendor-unbash.ts from unbash 6.0.0 (968c14992a43dc06ce29c9f51858abd4a87851ea). DO NOT EDIT.
2
+ // @ts-nocheck
3
+ import type { DoubleQuotedChild, WordPart } from "./internal-types.ts";
4
+
5
+ function dequoteValue(parts: DoubleQuotedChild[]): string {
6
+ let s = "";
7
+ for (const c of parts) s += c.type === "Literal" ? c.value : c.text;
8
+ return s;
9
+ }
10
+
11
+ export function unescapeBareValue(text: string): string {
12
+ const first = text.indexOf("\\");
13
+ if (first === -1) return text;
14
+
15
+ let s = "";
16
+ let start = 0;
17
+ for (let i = first; i < text.length; i++) {
18
+ if (text.charCodeAt(i) !== 92) continue;
19
+ s += text.slice(start, i);
20
+ i++;
21
+ if (i >= text.length) {
22
+ s += "\\";
23
+ start = i;
24
+ break;
25
+ }
26
+ if (text.charCodeAt(i) !== 10) s += text[i];
27
+ start = i + 1;
28
+ }
29
+ return s + text.slice(start);
30
+ }
31
+
32
+ function continuedExpansionValue(text: string): string {
33
+ let pos = 1;
34
+ while (text[pos] === "\\" && text[pos + 1] === "\n") pos += 2;
35
+ return pos === 1 || text[pos] !== "(" ? text : text[0] + text.slice(pos);
36
+ }
37
+
38
+ export function wordPartsValue(parts: WordPart[]): string {
39
+ let value = "";
40
+ for (const part of parts) {
41
+ switch (part.type) {
42
+ case "Literal":
43
+ case "Glob":
44
+ case "SingleQuoted":
45
+ case "AnsiCQuoted":
46
+ value += part.value;
47
+ break;
48
+ case "DoubleQuoted":
49
+ case "LocaleString":
50
+ value += dequoteValue(part.parts);
51
+ break;
52
+ case "CommandExpansion":
53
+ value += part.text[0] === "$" ? continuedExpansionValue(part.text) : part.text;
54
+ break;
55
+ case "ExtendedGlob":
56
+ value += continuedExpansionValue(part.text);
57
+ break;
58
+ default:
59
+ value += part.text;
60
+ break;
61
+ }
62
+ }
63
+ return value;
64
+ }