@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
@@ -7,6 +7,17 @@
7
7
  * directory one of the row's moves resolves to.
8
8
  */
9
9
 
10
+ import { braced, MODULE_EXTENSIONS } from "../extensions.ts";
11
+ import {
12
+ AVA_6,
13
+ AVA_8,
14
+ JEST_29,
15
+ JEST_30,
16
+ MOCHA_10,
17
+ MOCHA_12,
18
+ type TestRunner,
19
+ } from "./test-runners.ts";
20
+
10
21
  /** A call whose first argument is the object a property is read from. */
11
22
  export interface OptionsCall {
12
23
  /** The module specifier the configuration file imports the callee from. */
@@ -17,7 +28,11 @@ export interface OptionsCall {
17
28
 
18
29
  /** One configuration property, and the configuration files it is read from. */
19
30
  export interface MoveReading {
20
- /** The property's path through nested object literals, its keys joined by `.`. */
31
+ /**
32
+ * The property's path through nested object literals, its keys joined by `.`; in a
33
+ * test-file property a `*` key stands for every element of an array and every member of
34
+ * an object, each read as an object of its own.
35
+ */
21
36
  readonly property: string;
22
37
  /** Globs naming the configuration files, matched in the manifest's directory alone. */
23
38
  readonly files: readonly string[];
@@ -79,6 +94,28 @@ export interface TestFileReading extends MoveReading {
79
94
  readonly roots: readonly string[];
80
95
  }
81
96
 
97
+ /**
98
+ * One configuration's test directory and test-file patterns, whose matching files the
99
+ * runner runs as tests. Each element of the projects property is read the same way, a
100
+ * member it does not write taken from the configuration's own.
101
+ */
102
+ export interface TestDirectoryReading {
103
+ /** Globs naming the configuration files, matched in the manifest's directory alone. */
104
+ readonly files: readonly string[];
105
+ /** The property naming the directory, read against the configuration file's directory. */
106
+ readonly directory: string;
107
+ /**
108
+ * The property naming the patterns, each matched as Playwright matches one: anywhere
109
+ * below the directory, so a pattern gains a leading `**` segment unless it starts with
110
+ * one, and without regard to case.
111
+ */
112
+ readonly match: string;
113
+ /** The pattern that holds where no object names one. */
114
+ readonly defaultMatch: string;
115
+ /** The property listing the projects. */
116
+ readonly projects: string;
117
+ }
118
+
82
119
  /** One member of the declaring `package.json` whose strings name the tool's entries. */
83
120
  export interface ManifestEntryKey {
84
121
  /** The member's path through nested objects, its keys joined by `.`, a `*` key standing for every member. */
@@ -129,6 +166,10 @@ export interface ConventionRow {
129
166
  readonly selections?: readonly MoveReading[];
130
167
  /** The properties whose strings name a file the test runner loads beside the tests, a test file. */
131
168
  readonly testFiles?: readonly TestFileReading[];
169
+ /** The configurations whose test directory and patterns name the test files the runner runs. */
170
+ readonly testDirectories?: readonly TestDirectoryReading[];
171
+ /** The reader of the files the row's test runner runs, from its configuration and the manifest's scripts. */
172
+ readonly testRunner?: TestRunner;
132
173
  /**
133
174
  * The members whose strings name a package the tool loads: the package itself, a
134
175
  * subpath of it, or the package followed by `:` and a name.
@@ -140,14 +181,16 @@ export interface ConventionRow {
140
181
  readonly manifestEntries?: readonly ManifestEntryKey[];
141
182
  /** The settings that make the tool's output import a runtime helper package. */
142
183
  readonly helpers?: readonly HelperReading[];
184
+ /** Whether the tool bundles the package's modules, so it resolves them as a bundler does. */
185
+ readonly bundles?: true;
143
186
  }
144
187
 
145
188
  const SCRIPT = "{js,jsx,ts,tsx}";
146
189
  const MODULE = "{js,mjs,ts,mts}";
147
- const ANY_MODULE = "{js,mjs,cjs,ts,mts,cts}";
190
+ const ANY_MODULE = braced(MODULE_EXTENSIONS);
148
191
  const VITE_CONFIG = `vite.config.${ANY_MODULE}`;
149
- /** The legacy configuration files of ESLint that hold JSON or a CommonJS module. */
150
- const ESLINTRC = [".eslintrc", ".eslintrc.json", ".eslintrc.{js,cjs}"];
192
+ /** The legacy configuration files of ESLint: JSON, YAML or a CommonJS module. */
193
+ const ESLINTRC = [".eslintrc", ".eslintrc.json", ".eslintrc.{yml,yaml}", ".eslintrc.{js,cjs}"];
151
194
 
152
195
  const SVELTEKIT_ROUTE_FILES = "+{page,layout,server,page.server,layout.server,error}";
153
196
 
@@ -193,6 +236,64 @@ const VITEST_CONFIG = `{vitest,vite}.config.${ANY_MODULE}`;
193
236
  */
194
237
  const VITEST_ROOTS = ["test.root", "root"] as const;
195
238
 
239
+ /** The members of a Vitest configuration's `test` object that name setup files. */
240
+ const VITEST_SETUP = ["setupFiles", "globalSetup"] as const;
241
+
242
+ /** Vitest's workspace files, which Vitest 4 no longer reads (https://vitest.dev/guide/workspace). */
243
+ const VITEST_WORKSPACE = `{vitest.workspace,vitest.projects}.${ANY_MODULE}`;
244
+
245
+ /**
246
+ * The Vitest row over one range: its configuration's setup files, those of each inline
247
+ * project of `test.projects`, and, where `workspace`, the workspace file with the setup
248
+ * files of each inline project it lists.
249
+ */
250
+ function vitestRow(range: string, workspace: boolean): ConventionRow {
251
+ const inline = (each: string, files: string): readonly TestFileReading[] =>
252
+ VITEST_SETUP.map((member) => ({
253
+ property: `${each}.test.${member}`,
254
+ files: [files],
255
+ roots: VITEST_ROOTS,
256
+ }));
257
+ return {
258
+ name: "vitest",
259
+ package: "vitest",
260
+ range,
261
+ entries: [
262
+ `**/{vitest,vite}.config.${ANY_MODULE}`,
263
+ `**/{vitest,vite}.config.*.${ANY_MODULE}`,
264
+ `**/{vitest,vite}.*.config.${ANY_MODULE}`,
265
+ ...(workspace ? [VITEST_WORKSPACE] : []),
266
+ ],
267
+ moves: [],
268
+ shortNames: [
269
+ {
270
+ property: "test.coverage.provider",
271
+ files: [VITEST_CONFIG],
272
+ package: "@vitest/coverage-{}",
273
+ },
274
+ ],
275
+ selections: [
276
+ { property: "test.coverage.include", files: [VITEST_CONFIG] },
277
+ { property: "test.coverage.exclude", files: [VITEST_CONFIG] },
278
+ ],
279
+ testFiles: [
280
+ ...VITEST_SETUP.map((member) => ({
281
+ property: `test.${member}`,
282
+ files: [VITEST_CONFIG],
283
+ roots: VITEST_ROOTS,
284
+ })),
285
+ ...inline("test.projects.*", VITEST_CONFIG),
286
+ ...(workspace ? inline("*", VITEST_WORKSPACE) : []),
287
+ ],
288
+ };
289
+ }
290
+
291
+ const PLAYWRIGHT_CONFIG = `playwright.config.${ANY_MODULE}`;
292
+
293
+ /** Playwright's own test-file pattern (https://playwright.dev/docs/api/class-testconfig#test-config-test-match). */
294
+ const PLAYWRIGHT_TEST_MATCH =
295
+ "**/*.{spec,test}.{js,ts,jsx,tsx,cjs,cts,cjsx,ctsx,mjs,mts,mjsx,mtsx}";
296
+
196
297
  /** The entry files of an Angular CLI project, at the workspace root or below `projects`. */
197
298
  const ANGULAR_ENTRIES = [
198
299
  "src/{main,main.server,server,polyfills,test}.ts",
@@ -209,6 +310,35 @@ const ANGULAR_PACKAGE_KEYS: readonly PackageKey[] = [
209
310
  "scripts",
210
311
  ].map((key) => ({ key, files: ["angular.json"] }));
211
312
 
313
+ /**
314
+ * The row of a code generator that writes its output below one directory its
315
+ * configuration's `property` sets, `fallback` where no configuration file sets it, so
316
+ * every file there is a generated file.
317
+ */
318
+ function outputDirectoryRow(row: {
319
+ readonly name: string;
320
+ readonly package: string;
321
+ readonly range: string;
322
+ readonly files: readonly string[];
323
+ readonly property: string;
324
+ readonly fallback: string;
325
+ }): ConventionRow {
326
+ return {
327
+ name: row.name,
328
+ package: row.package,
329
+ range: row.range,
330
+ entries: [],
331
+ generated: ["<output>"],
332
+ moves: [
333
+ {
334
+ id: "output",
335
+ defaults: [row.fallback],
336
+ readings: [{ property: row.property, files: row.files }],
337
+ },
338
+ ],
339
+ };
340
+ }
341
+
212
342
  /**
213
343
  * The test runners and the assertion, mock and runner libraries whose import is test
214
344
  * evidence beside each runner a row reads test files for. Each applies whether or not a
@@ -254,6 +384,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
254
384
  },
255
385
  {
256
386
  name: "astro",
387
+ bundles: true,
257
388
  package: "astro",
258
389
  range: ">=5.0.0 <8.0.0",
259
390
  entries: [
@@ -273,6 +404,22 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
273
404
  },
274
405
  ],
275
406
  },
407
+ {
408
+ name: "ava",
409
+ package: "ava",
410
+ range: ">=6.0.0 <8.0.0",
411
+ entries: [],
412
+ moves: [],
413
+ testRunner: AVA_6,
414
+ },
415
+ {
416
+ name: "ava",
417
+ package: "ava",
418
+ range: ">=8.0.0 <9.0.0",
419
+ entries: [],
420
+ moves: [],
421
+ testRunner: AVA_8,
422
+ },
276
423
  {
277
424
  name: "babel",
278
425
  package: "@babel/core",
@@ -299,6 +446,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
299
446
  range: ">=4.0.0 <10.0.0",
300
447
  entries: [],
301
448
  moves: [],
449
+ packageKeys: [{ key: "parser", files: ESLINTRC }],
302
450
  prefixedNames: [
303
451
  { property: "plugins", files: ESLINTRC, prefix: "eslint-plugin" },
304
452
  { property: "extends", files: ESLINTRC, prefix: "eslint-plugin", marker: "plugin:" },
@@ -322,12 +470,45 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
322
470
  {
323
471
  name: "expo-router",
324
472
  package: "expo-router",
325
- range: ">=3.0.0 <58.0.0",
473
+ range: ">=3.0.0 <59.0.0",
326
474
  entries: [`{,src/}app/**/*.${SCRIPT}`],
327
475
  moves: [],
328
476
  },
477
+ {
478
+ name: "jest",
479
+ package: "jest",
480
+ range: ">=29.0.0 <30.0.0",
481
+ entries: [],
482
+ moves: [],
483
+ testRunner: JEST_29,
484
+ },
485
+ {
486
+ name: "jest",
487
+ package: "jest",
488
+ range: ">=30.0.0 <31.0.0",
489
+ entries: [],
490
+ moves: [],
491
+ testRunner: JEST_30,
492
+ },
493
+ {
494
+ name: "mocha",
495
+ package: "mocha",
496
+ range: ">=10.0.0 <12.0.0",
497
+ entries: [],
498
+ moves: [],
499
+ testRunner: MOCHA_10,
500
+ },
501
+ {
502
+ name: "mocha",
503
+ package: "mocha",
504
+ range: ">=12.0.0 <13.0.0",
505
+ entries: [],
506
+ moves: [],
507
+ testRunner: MOCHA_12,
508
+ },
329
509
  {
330
510
  name: "next",
511
+ bundles: true,
331
512
  package: "next",
332
513
  range: ">=13.4.0 <17.0.0",
333
514
  generated: [".next"],
@@ -345,6 +526,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
345
526
  },
346
527
  {
347
528
  name: "nuxt",
529
+ bundles: true,
348
530
  package: "nuxt",
349
531
  range: ">=3.0.0 <5.0.0",
350
532
  generated: [".nuxt"],
@@ -414,8 +596,17 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
414
596
  { key: "oclif.hooks", directory: false },
415
597
  ],
416
598
  },
599
+ outputDirectoryRow({
600
+ name: "panda",
601
+ package: "@pandacss/dev",
602
+ range: ">=0.1.0 <2.0.0",
603
+ files: [`panda.config.${ANY_MODULE}`],
604
+ property: "outdir",
605
+ fallback: "styled-system",
606
+ }),
417
607
  {
418
608
  name: "parcel",
609
+ bundles: true,
419
610
  package: "parcel",
420
611
  range: ">=2.0.0 <3.0.0",
421
612
  entries: [],
@@ -425,6 +616,22 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
425
616
  { key: "targets.*.source", directory: false },
426
617
  ],
427
618
  },
619
+ {
620
+ name: "playwright",
621
+ package: "@playwright/test",
622
+ range: ">=1.0.0 <2.0.0",
623
+ entries: [PLAYWRIGHT_CONFIG],
624
+ moves: [],
625
+ testDirectories: [
626
+ {
627
+ files: [PLAYWRIGHT_CONFIG],
628
+ directory: "testDir",
629
+ match: "testMatch",
630
+ defaultMatch: PLAYWRIGHT_TEST_MATCH,
631
+ projects: "projects",
632
+ },
633
+ ],
634
+ },
428
635
  {
429
636
  name: "prettier",
430
637
  package: "prettier",
@@ -481,6 +688,13 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
481
688
  },
482
689
  ],
483
690
  },
691
+ {
692
+ name: "react-scripts",
693
+ package: "react-scripts",
694
+ range: ">=1.0.0 <6.0.0",
695
+ entries: [`src/index.${SCRIPT}`, "src/setupProxy.js", `src/setupTests.${SCRIPT}`],
696
+ moves: [],
697
+ },
484
698
  {
485
699
  name: "remix",
486
700
  package: "@remix-run/dev",
@@ -508,6 +722,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
508
722
  },
509
723
  {
510
724
  name: "rolldown",
725
+ bundles: true,
511
726
  package: "rolldown",
512
727
  range: ">=1.0.0 <2.0.0",
513
728
  entries: [],
@@ -553,6 +768,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
553
768
  },
554
769
  {
555
770
  name: "storybook",
771
+ bundles: true,
556
772
  package: "storybook",
557
773
  range: ">=7.0.0 <11.0.0",
558
774
  entries: [
@@ -586,6 +802,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
586
802
  },
587
803
  {
588
804
  name: "sveltekit",
805
+ bundles: true,
589
806
  package: "@sveltejs/kit",
590
807
  range: ">=2.0.0 <3.0.0",
591
808
  entries: [...SVELTEKIT_ENTRIES, "<params>/*.{js,ts}"],
@@ -651,6 +868,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
651
868
  },
652
869
  {
653
870
  name: "sveltekit",
871
+ bundles: true,
654
872
  package: "@sveltejs/kit",
655
873
  range: ">=3.0.0 <4.0.0",
656
874
  entries: [...SVELTEKIT_ENTRIES, "<params>.{js,ts}"],
@@ -743,6 +961,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
743
961
  },
744
962
  {
745
963
  name: "vite",
964
+ bundles: true,
746
965
  package: "vite",
747
966
  range: ">=8.0.0 <9.0.0",
748
967
  entries: [],
@@ -758,6 +977,7 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
758
977
  },
759
978
  {
760
979
  name: "vitepress",
980
+ bundles: true,
761
981
  package: "vitepress",
762
982
  range: ">=1.0.0 <2.0.0-0 || >=2.0.0-alpha.0 <3.0.0",
763
983
  entries: [
@@ -768,30 +988,6 @@ export const CONVENTION_ROWS: readonly ConventionRow[] = [
768
988
  ],
769
989
  moves: [],
770
990
  },
771
- {
772
- name: "vitest",
773
- package: "vitest",
774
- range: ">=3.2.0 <6.0.0",
775
- entries: [
776
- `**/{vitest,vite}.config.${ANY_MODULE}`,
777
- `**/{vitest,vite}.config.*.${ANY_MODULE}`,
778
- `**/{vitest,vite}.*.config.${ANY_MODULE}`,
779
- ],
780
- moves: [],
781
- shortNames: [
782
- {
783
- property: "test.coverage.provider",
784
- files: [VITEST_CONFIG],
785
- package: "@vitest/coverage-{}",
786
- },
787
- ],
788
- selections: [
789
- { property: "test.coverage.include", files: [VITEST_CONFIG] },
790
- { property: "test.coverage.exclude", files: [VITEST_CONFIG] },
791
- ],
792
- testFiles: [
793
- { property: "test.setupFiles", files: [VITEST_CONFIG], roots: VITEST_ROOTS },
794
- { property: "test.globalSetup", files: [VITEST_CONFIG], roots: VITEST_ROOTS },
795
- ],
796
- },
991
+ vitestRow(">=3.2.0 <4.0.0", true),
992
+ vitestRow(">=4.0.0 <6.0.0", false),
797
993
  ];