@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.
- package/README.md +3 -1
- package/THIRD_PARTY_NOTICES.md +27 -0
- package/dist/bin/mapper-connection.js +2 -1
- package/dist/bin/node-host.js +24 -5
- package/dist/src/alias-chain.js +35 -9
- package/dist/src/amd.js +81 -0
- package/dist/src/analysis.js +274 -496
- package/dist/src/augmentations.js +64 -3
- package/dist/src/automatic-types.js +10 -29
- package/dist/src/bindings.js +382 -0
- package/dist/src/commands/held.js +499 -0
- package/dist/src/commands/read.js +161 -0
- package/dist/src/commands/shell.js +169 -0
- package/dist/src/commands/tools.js +1847 -0
- package/dist/src/component-files.js +3 -2
- package/dist/src/component-layer.js +4 -2
- package/dist/src/config.js +6 -82
- package/dist/src/conformance-record.js +2 -2
- package/dist/src/consumers.js +10 -38
- package/dist/src/contextual-uses.js +57 -26
- package/dist/src/contract/config.generated.js +561 -0
- package/dist/src/contract/contract.generated.js +1370 -0
- package/dist/src/contract/report.generated.js +866 -0
- package/dist/src/dependencies.js +165 -122
- package/dist/src/destructuring.js +1 -19
- package/dist/src/edges.js +38 -122
- package/dist/src/element-access.js +181 -168
- package/dist/src/entries/build-scripts.js +222 -0
- package/dist/src/{configuration-files.js → entries/configuration-files.js} +52 -256
- package/dist/src/{convention-rows.js → entries/convention-rows.js} +170 -30
- package/dist/src/entries/conventions.js +740 -0
- package/dist/src/{html-entries.js → entries/html-entries.js} +12 -42
- package/dist/src/{mdx-entries.js → entries/mdx-entries.js} +5 -28
- package/dist/src/entries/run-directories.js +77 -0
- package/dist/src/entries/sources.js +144 -0
- package/dist/src/entries/static-module.js +670 -0
- package/dist/src/entries/test-runners.js +650 -0
- package/dist/src/entries/workflow-steps.js +345 -0
- package/dist/src/exemptions/argument-places.js +131 -0
- package/dist/src/exemptions/calls.js +338 -0
- package/dist/src/exemptions/classes.js +13 -0
- package/dist/src/{decorator.js → exemptions/decorator.js} +19 -30
- package/dist/src/exemptions/detectors.js +48 -0
- package/dist/src/{enum-group.js → exemptions/enum-group.js} +9 -16
- package/dist/src/{erased-stores.js → exemptions/erased-stores.js} +7 -11
- package/dist/src/{framework-lifecycle.js → exemptions/framework-lifecycle.js} +76 -54
- package/dist/src/exemptions/generated-file.js +241 -0
- package/dist/src/{injection-container.js → exemptions/injection-container.js} +20 -26
- package/dist/src/exemptions/installed-globals.js +173 -0
- package/dist/src/{interface-satisfaction.js → exemptions/interface-satisfaction.js} +52 -121
- package/dist/src/exemptions/lifecycle.js +150 -0
- package/dist/src/{reflective-lookup.js → exemptions/reflective-lookup.js} +3 -3
- package/dist/src/exemptions/serialization-contract.js +1276 -0
- package/dist/src/exemptions/sites.js +182 -0
- package/dist/src/{template-field.js → exemptions/template-field.js} +13 -23
- package/dist/src/{value-reach.js → exemptions/value-reach.js} +14 -7
- package/dist/src/exposure.js +400 -0
- package/dist/src/extensions.js +37 -0
- package/dist/src/facts.js +38 -0
- package/dist/src/failure.js +36 -0
- package/dist/src/file-facts.js +3 -26
- package/dist/src/findings/completion.js +109 -56
- package/dist/src/findings/dependencies-and-module-machinery.js +4 -5
- package/dist/src/findings/emitters.js +27 -41
- package/dist/src/{implementations.js → findings/implementations.js} +3 -3
- package/dist/src/{in-operands.js → findings/in-operands.js} +3 -2
- package/dist/src/findings/interfaces.js +4 -5
- package/dist/src/findings/intra-function.js +16 -13
- package/dist/src/findings/non-code-artifacts.js +17 -12
- package/dist/src/findings/reads-and-writes.js +86 -27
- package/dist/src/findings/self-check.js +44 -30
- package/dist/src/findings/unused-declarations.js +29 -45
- package/dist/src/findings/visibility-narrowing.js +23 -31
- package/dist/src/findings-pass.js +13 -21
- package/dist/src/fs/document.js +52 -0
- package/dist/src/fs/manifest.js +67 -0
- package/dist/src/fs/tree.js +88 -0
- package/dist/src/git-ignore.js +39 -26
- package/dist/src/import-bindings.js +73 -28
- package/dist/src/index/sites.js +557 -0
- package/dist/src/index/values.js +124 -0
- package/dist/src/index.js +2 -2
- package/dist/src/indexed-access.js +523 -478
- package/dist/src/intra-function-parts.js +63 -43
- package/dist/src/inventory/commonjs.js +507 -0
- package/dist/src/inventory/enumerate.js +167 -0
- package/dist/src/inventory/syntax.js +236 -0
- package/dist/src/inventory.js +323 -724
- package/dist/src/javascript-file.js +48 -0
- package/dist/src/json-document.js +198 -67
- package/dist/src/keyof-comparisons.js +126 -107
- package/dist/src/kinds.js +3 -366
- package/dist/src/{components.js → liveness/components.js} +2 -3
- package/dist/src/{graph.js → liveness/graph.js} +52 -28
- package/dist/src/liveness/matrix.js +99 -0
- package/dist/src/liveness/sweep.js +558 -0
- package/dist/src/load/classify.js +289 -0
- package/dist/src/load/diagnostics.js +87 -0
- package/dist/src/load/discover.js +285 -0
- package/dist/src/{emit-map.js → load/emit-map.js} +1 -1
- package/dist/src/load/expected-module.js +136 -0
- package/dist/src/load/load.js +27 -0
- package/dist/src/load/module-lookup.js +37 -0
- package/dist/src/load/package-scope.js +56 -0
- package/dist/src/load/plan.js +313 -0
- package/dist/src/load/specifiers.js +113 -0
- package/dist/src/load/synthesize.js +152 -0
- package/dist/src/load/test-globals.js +207 -0
- package/dist/src/load/test-joins.js +82 -0
- package/dist/src/{workspace-manifests.js → load/workspace-manifests.js} +4 -4
- package/dist/src/{workspace-programs.js → load/workspace-programs.js} +89 -66
- package/dist/src/{workspace-resolution.js → load/workspace-resolution.js} +24 -66
- package/dist/src/{workspace-run.js → load/workspace-run.js} +7 -7
- package/dist/src/{workspace.js → load/workspace.js} +62 -124
- package/dist/src/module-declarations.js +70 -85
- package/dist/src/overrides.js +134 -112
- package/dist/src/partial.js +2 -1
- package/dist/src/paths.js +82 -16
- package/dist/src/platform-calls.js +78 -0
- package/dist/src/platform-symbols.js +134 -0
- package/dist/src/position.js +43 -1
- package/dist/src/print.js +11 -79
- package/dist/src/product.js +13 -0
- package/dist/src/query.js +95 -0
- package/dist/src/ref.js +12 -20
- package/dist/src/references/read-rule.js +1 -0
- package/dist/src/references/read-rules.js +48 -0
- package/dist/src/references/sink.js +237 -0
- package/dist/src/references/sources.js +450 -0
- package/dist/src/references.js +117 -1074
- package/dist/src/report-schema.js +51 -0
- package/dist/src/report.js +57 -41
- package/dist/src/reporters/annotations.js +15 -8
- package/dist/src/reporters/sarif.js +16 -10
- package/dist/src/reporters/template.js +4 -19
- package/dist/src/resolve.js +246 -730
- package/dist/src/{configured-declarations.js → roots/configured-declarations.js} +22 -24
- package/dist/src/{entry-point-gaps.js → roots/entry-point-gaps.js} +6 -15
- package/dist/src/roots/manifest.js +216 -0
- package/dist/src/roots/published-reach.js +412 -0
- package/dist/src/roots/root-set.js +487 -0
- package/dist/src/roots/unseen-loads.js +236 -0
- package/dist/src/run.js +66 -77
- package/dist/src/schema.js +320 -343
- package/dist/src/scope.js +38 -115
- package/dist/src/session.js +37 -29
- package/dist/src/source-files.js +6 -10
- package/dist/src/stores.js +4 -2
- package/dist/src/suppress-file.js +25 -28
- package/dist/src/suppress-inline.js +36 -83
- package/dist/src/suppress.js +50 -71
- package/dist/src/symbol-keys.js +92 -88
- package/dist/src/tests/file-class.js +76 -0
- package/dist/src/{outside-tests.js → tests/outside.js} +7 -7
- package/dist/src/{test-support.js → tests/support.js} +5 -12
- package/dist/src/text/compare.js +26 -0
- package/dist/src/text/glob.js +194 -0
- package/dist/src/text/named-files.js +298 -0
- package/dist/src/text/yaml.js +684 -0
- package/dist/src/type-errors.js +11 -232
- package/dist/src/type-parameter-reads.js +178 -139
- package/dist/src/unimplemented-callees.js +262 -242
- package/dist/src/unwrap.js +23 -0
- package/dist/src/usage.js +10 -0
- package/dist/src/vendor/unbash/ansi-c.js +132 -0
- package/dist/src/vendor/unbash/arithmetic-parts.js +37 -0
- package/dist/src/vendor/unbash/arithmetic.js +591 -0
- package/dist/src/vendor/unbash/assignment.js +131 -0
- package/dist/src/vendor/unbash/chars.js +48 -0
- package/dist/src/vendor/unbash/command.js +41 -0
- package/dist/src/vendor/unbash/expansion.js +80 -0
- package/dist/src/vendor/unbash/glob.js +268 -0
- package/dist/src/vendor/unbash/heredoc.js +27 -0
- package/dist/src/vendor/unbash/internal-types.js +1 -0
- package/dist/src/vendor/unbash/lexer.js +4274 -0
- package/dist/src/vendor/unbash/limits.js +3 -0
- package/dist/src/vendor/unbash/parser.js +1366 -0
- package/dist/src/vendor/unbash/parts.js +57 -0
- package/dist/src/vendor/unbash/substitution-context.js +8 -0
- package/dist/src/vendor/unbash/traversal.js +212 -0
- package/dist/src/vendor/unbash/types.js +1 -0
- package/dist/src/vendor/unbash/word-value.js +61 -0
- package/dist/src/vendor/unbash/word.js +40 -0
- package/dist/src/verbs/analyze.js +194 -127
- package/dist/src/verbs/describe.js +13 -18
- package/dist/src/verbs/explain.js +85 -139
- package/dist/src/verbs/print-config.js +2 -1
- package/dist/src/verbs/print-projects.js +6 -4
- package/dist/src/verbs/print-retained.js +30 -6
- package/dist/src/verbs/print-roots.js +4 -2
- package/dist/src/verbs/verb.js +1 -5
- package/dist/src/verbs/version.js +14 -3
- package/jsr.json +2 -1
- package/package.json +14 -8
- package/src/alias-chain.ts +40 -11
- package/src/amd.ts +130 -0
- package/src/analysis.ts +426 -733
- package/src/augmentations.ts +93 -4
- package/src/automatic-types.ts +12 -30
- package/src/bindings.ts +460 -0
- package/src/commands/held.ts +632 -0
- package/src/commands/read.ts +242 -0
- package/src/commands/shell.ts +228 -0
- package/src/commands/tools.ts +2382 -0
- package/src/component-files.ts +4 -2
- package/src/component-layer.ts +4 -2
- package/src/config.ts +31 -302
- package/src/conformance-record.ts +2 -2
- package/src/consumers.ts +16 -66
- package/src/contextual-uses.ts +66 -34
- package/src/contract/config.generated.ts +821 -0
- package/src/contract/contract.generated.ts +1453 -0
- package/src/contract/report.generated.ts +1241 -0
- package/src/dependencies.ts +223 -128
- package/src/destructuring.ts +1 -31
- package/src/edges.ts +41 -140
- package/src/element-access.ts +190 -187
- package/src/entries/build-scripts.ts +292 -0
- package/src/{configuration-files.ts → entries/configuration-files.ts} +68 -278
- package/src/{convention-rows.ts → entries/convention-rows.ts} +227 -31
- package/src/{conventions.ts → entries/conventions.ts} +367 -583
- package/src/{html-entries.ts → entries/html-entries.ts} +22 -48
- package/src/{mdx-entries.ts → entries/mdx-entries.ts} +7 -30
- package/src/entries/run-directories.ts +108 -0
- package/src/entries/sources.ts +266 -0
- package/src/entries/static-module.ts +858 -0
- package/src/entries/test-runners.ts +835 -0
- package/src/entries/workflow-steps.ts +432 -0
- package/src/exemptions/argument-places.ts +198 -0
- package/src/exemptions/calls.ts +483 -0
- package/src/exemptions/classes.ts +49 -0
- package/src/exemptions/decorator.ts +56 -0
- package/src/exemptions/detectors.ts +75 -0
- package/src/{enum-group.ts → exemptions/enum-group.ts} +10 -19
- package/src/{erased-stores.ts → exemptions/erased-stores.ts} +7 -14
- package/src/{framework-lifecycle.ts → exemptions/framework-lifecycle.ts} +85 -66
- package/src/exemptions/generated-file.ts +318 -0
- package/src/{injection-container.ts → exemptions/injection-container.ts} +29 -34
- package/src/exemptions/installed-globals.ts +255 -0
- package/src/{interface-satisfaction.ts → exemptions/interface-satisfaction.ts} +69 -160
- package/src/exemptions/lifecycle.ts +286 -0
- package/src/{reflective-lookup.ts → exemptions/reflective-lookup.ts} +5 -5
- package/src/exemptions/serialization-contract.ts +1729 -0
- package/src/exemptions/sites.ts +293 -0
- package/src/{template-field.ts → exemptions/template-field.ts} +22 -32
- package/src/{value-reach.ts → exemptions/value-reach.ts} +16 -8
- package/src/exposure.ts +492 -0
- package/src/extensions.ts +45 -0
- package/src/facts.ts +46 -0
- package/src/failure.ts +63 -0
- package/src/file-facts.ts +15 -25
- package/src/finding.ts +10 -10
- package/src/findings/boundary.ts +11 -0
- package/src/findings/completion.ts +133 -64
- package/src/findings/dependencies-and-module-machinery.ts +4 -7
- package/src/findings/emitter.ts +9 -10
- package/src/findings/emitters.ts +38 -52
- package/src/{implementations.ts → findings/implementations.ts} +4 -4
- package/src/{in-operands.ts → findings/in-operands.ts} +4 -3
- package/src/findings/interfaces.ts +7 -9
- package/src/findings/intra-function.ts +16 -14
- package/src/findings/non-code-artifacts.ts +24 -15
- package/src/findings/reads-and-writes.ts +118 -41
- package/src/findings/self-check.ts +51 -38
- package/src/findings/unused-declarations.ts +31 -49
- package/src/findings/visibility-narrowing.ts +36 -40
- package/src/findings-pass.ts +15 -31
- package/src/fs/document.ts +70 -0
- package/src/fs/manifest.ts +96 -0
- package/src/fs/tree.ts +110 -0
- package/src/git-ignore.ts +50 -26
- package/src/host.ts +12 -5
- package/src/import-bindings.ts +98 -29
- package/src/index/sites.ts +781 -0
- package/src/index/values.ts +170 -0
- package/src/index.ts +2 -2
- package/src/indexed-access.ts +570 -527
- package/src/intra-function-parts.ts +73 -44
- package/src/inventory/commonjs.ts +696 -0
- package/src/inventory/enumerate.ts +203 -0
- package/src/inventory/syntax.ts +311 -0
- package/src/inventory.ts +442 -895
- package/src/javascript-file.ts +54 -0
- package/src/json-document.ts +241 -76
- package/src/keyof-comparisons.ts +133 -122
- package/src/kinds.ts +5 -413
- package/src/{components.ts → liveness/components.ts} +4 -6
- package/src/{graph.ts → liveness/graph.ts} +100 -35
- package/src/liveness/matrix.ts +162 -0
- package/src/liveness/sweep.ts +855 -0
- package/src/load/classify.ts +433 -0
- package/src/load/diagnostics.ts +154 -0
- package/src/load/discover.ts +471 -0
- package/src/{emit-map.ts → load/emit-map.ts} +1 -1
- package/src/load/expected-module.ts +194 -0
- package/src/load/load.ts +73 -0
- package/src/load/module-lookup.ts +50 -0
- package/src/load/package-scope.ts +74 -0
- package/src/load/plan.ts +513 -0
- package/src/load/specifiers.ts +171 -0
- package/src/load/synthesize.ts +230 -0
- package/src/load/test-globals.ts +251 -0
- package/src/load/test-joins.ts +98 -0
- package/src/{workspace-manifests.ts → load/workspace-manifests.ts} +5 -5
- package/src/{workspace-programs.ts → load/workspace-programs.ts} +128 -85
- package/src/{workspace-resolution.ts → load/workspace-resolution.ts} +41 -77
- package/src/{workspace-run.ts → load/workspace-run.ts} +18 -16
- package/src/{workspace.ts → load/workspace.ts} +90 -134
- package/src/module-declarations.ts +74 -98
- package/src/overrides.ts +162 -134
- package/src/partial.ts +3 -2
- package/src/paths.ts +92 -16
- package/src/platform-calls.ts +119 -0
- package/src/platform-symbols.ts +189 -0
- package/src/position.ts +44 -1
- package/src/print.ts +12 -92
- package/src/product.ts +18 -0
- package/src/query.ts +201 -10
- package/src/ref.ts +12 -20
- package/src/references/read-rule.ts +60 -0
- package/src/references/read-rules.ts +55 -0
- package/src/references/sink.ts +314 -0
- package/src/references/sources.ts +632 -0
- package/src/references.ts +187 -1450
- package/src/report-schema.ts +68 -0
- package/src/report.ts +103 -226
- package/src/reporters/annotations.ts +22 -11
- package/src/reporters/json.ts +1 -1
- package/src/reporters/reporter.ts +2 -4
- package/src/reporters/reporters.ts +1 -1
- package/src/reporters/sarif.ts +29 -16
- package/src/reporters/template.ts +4 -20
- package/src/reporters/text.ts +3 -3
- package/src/resolve.ts +284 -1115
- package/src/{configured-declarations.ts → roots/configured-declarations.ts} +26 -29
- package/src/{entry-point-gaps.ts → roots/entry-point-gaps.ts} +7 -16
- package/src/roots/manifest.ts +303 -0
- package/src/roots/published-reach.ts +486 -0
- package/src/{roots.ts → roots/root-set.ts} +286 -469
- package/src/roots/unseen-loads.ts +345 -0
- package/src/run.ts +75 -91
- package/src/schema.ts +391 -388
- package/src/scope.ts +46 -138
- package/src/session.ts +87 -55
- package/src/source-files.ts +6 -11
- package/src/stores.ts +15 -3
- package/src/suppress-file.ts +24 -33
- package/src/suppress-inline.ts +55 -91
- package/src/suppress.ts +78 -79
- package/src/symbol-keys.ts +104 -107
- package/src/tests/file-class.ts +135 -0
- package/src/{outside-tests.ts → tests/outside.ts} +16 -10
- package/src/{test-support.ts → tests/support.ts} +15 -21
- package/src/text/compare.ts +27 -0
- package/src/text/glob.ts +210 -0
- package/src/text/named-files.ts +388 -0
- package/src/text/yaml.ts +747 -0
- package/src/type-errors.ts +18 -288
- package/src/type-parameter-reads.ts +187 -158
- package/src/unimplemented-callees.ts +297 -280
- package/src/unwrap.ts +34 -0
- package/src/usage.ts +10 -0
- package/src/vendor/unbash/LICENSE +15 -0
- package/src/vendor/unbash/VENDORED.md +16 -0
- package/src/vendor/unbash/ansi-c.ts +132 -0
- package/src/vendor/unbash/arithmetic-parts.ts +53 -0
- package/src/vendor/unbash/arithmetic.ts +641 -0
- package/src/vendor/unbash/assignment.ts +163 -0
- package/src/vendor/unbash/chars.ts +48 -0
- package/src/vendor/unbash/command.ts +47 -0
- package/src/vendor/unbash/expansion.ts +144 -0
- package/src/vendor/unbash/glob.ts +284 -0
- package/src/vendor/unbash/heredoc.ts +34 -0
- package/src/vendor/unbash/internal-types.ts +94 -0
- package/src/vendor/unbash/lexer.ts +4352 -0
- package/src/vendor/unbash/limits.ts +3 -0
- package/src/vendor/unbash/parser.ts +1612 -0
- package/src/vendor/unbash/parts.ts +96 -0
- package/src/vendor/unbash/substitution-context.ts +20 -0
- package/src/vendor/unbash/traversal.ts +182 -0
- package/src/vendor/unbash/types.ts +660 -0
- package/src/vendor/unbash/word-value.ts +64 -0
- package/src/vendor/unbash/word.ts +50 -0
- package/src/verbs/analyze.ts +255 -164
- package/src/verbs/describe.ts +19 -17
- package/src/verbs/explain.ts +93 -169
- package/src/verbs/print-config.ts +2 -1
- package/src/verbs/print-projects.ts +6 -4
- package/src/verbs/print-retained.ts +36 -6
- package/src/verbs/print-roots.ts +4 -2
- package/src/verbs/verb.ts +2 -8
- package/src/verbs/version.ts +15 -3
- package/dist/src/base-url.js +0 -18
- package/dist/src/calls.js +0 -155
- package/dist/src/conventions.js +0 -937
- package/dist/src/discover.js +0 -468
- package/dist/src/entry-points.js +0 -529
- package/dist/src/exempt-classes.js +0 -75
- package/dist/src/exempt.js +0 -209
- package/dist/src/generated-file.js +0 -95
- package/dist/src/glob.js +0 -65
- package/dist/src/manifest.js +0 -165
- package/dist/src/matrix.js +0 -246
- package/dist/src/pnpm-workspace.js +0 -120
- package/dist/src/roots.js +0 -672
- package/dist/src/serialization-contract.js +0 -611
- package/dist/src/setup-failure.js +0 -23
- package/dist/src/sweep.js +0 -224
- package/dist/src/test-joins.js +0 -101
- package/dist/src/value-flow.js +0 -74
- package/dist/src/version.js +0 -7
- package/dist/src/workflow-steps.js +0 -185
- package/src/base-url.ts +0 -24
- package/src/calls.ts +0 -225
- package/src/decorator.ts +0 -78
- package/src/discover.ts +0 -653
- package/src/entry-points.ts +0 -687
- package/src/exempt-classes.ts +0 -123
- package/src/exempt.ts +0 -323
- package/src/generated-file.ts +0 -111
- package/src/glob.ts +0 -67
- package/src/manifest.ts +0 -234
- package/src/matrix.ts +0 -423
- package/src/pnpm-workspace.ts +0 -135
- package/src/serialization-contract.ts +0 -849
- package/src/setup-failure.ts +0 -39
- package/src/sweep.ts +0 -347
- package/src/test-joins.ts +0 -120
- package/src/value-flow.ts +0 -104
- package/src/version.ts +0 -7
- package/src/workflow-steps.ts +0 -216
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
deadset-ts finds dead code in TypeScript projects, down to class members, type members and dead stores inside functions, and writes a report your CI can fail on.
|
|
6
6
|
|
|
7
|
-
It reads your `tsconfig.json`
|
|
7
|
+
It reads your `tsconfig.json` and `jsconfig.json` projects, a JavaScript package with neither, and Vue, Svelte and Astro scripts, with the type information of TypeScript 7.1.0-dev.20261014.1, its one dependency. Your project keeps its own TypeScript version. A type error under that version skips the function or statement that holds it. deadset-ts reports and never edits your code. It is pre-release, tested only on Linux, needs Node.js 24 or later and is licensed under GPL-3.0-or-later.
|
|
8
8
|
|
|
9
9
|
## Why use it
|
|
10
10
|
|
|
@@ -116,3 +116,5 @@ This project was built with AI-assisted tooling using [Claude](https://claude.co
|
|
|
116
116
|
## License
|
|
117
117
|
|
|
118
118
|
GPL-3.0-or-later. See [LICENSE](LICENSE).
|
|
119
|
+
|
|
120
|
+
Third-party attributions are in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
deadset-ts includes source code from the following project.
|
|
4
|
+
|
|
5
|
+
## unbash
|
|
6
|
+
|
|
7
|
+
- Source: <https://github.com/webpro-nl/unbash>, release 6.0.0, commit `968c14992a43dc06ce29c9f51858abd4a87851ea`
|
|
8
|
+
- Location: `src/vendor/unbash/` (see `VENDORED.md` there)
|
|
9
|
+
- License: ISC
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
ISC License
|
|
13
|
+
|
|
14
|
+
Copyright (c) Lars Kappert
|
|
15
|
+
|
|
16
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
17
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
18
|
+
copyright notice and this permission notice appear in all copies.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
21
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
22
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
23
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
24
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
25
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
26
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
27
|
+
```
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { componentModule } from "../src/component-files.js";
|
|
9
9
|
import { extensionOf } from "../src/paths.js";
|
|
10
|
+
import { PRODUCT } from "../src/product.js";
|
|
10
11
|
/** The JSON-RPC code of a method this mapper does not serve. */
|
|
11
12
|
const METHOD_NOT_FOUND = -32601;
|
|
12
13
|
/** The JSON-RPC code of a request whose parameters are not the protocol's. */
|
|
@@ -37,7 +38,7 @@ function answer(message) {
|
|
|
37
38
|
});
|
|
38
39
|
switch (message.method) {
|
|
39
40
|
case "initialize":
|
|
40
|
-
return reply({ positionEncoding: "utf-16", diagnosticSource:
|
|
41
|
+
return reply({ positionEncoding: "utf-16", diagnosticSource: PRODUCT });
|
|
41
42
|
case "openProject":
|
|
42
43
|
return reply({});
|
|
43
44
|
case "closeProject":
|
package/dist/bin/node-host.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
|
-
import { closeSync, fchmodSync, fsyncSync, mkdtempSync, openSync, readdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeSync, } from "node:fs";
|
|
2
|
+
import { closeSync, fchmodSync, fsyncSync, mkdtempSync, openSync, readdirSync, readFileSync, readSync, realpathSync, renameSync, rmSync, statSync, writeSync, } from "node:fs";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { basename, dirname, extname, join } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { PRODUCT } from "../src/product.js";
|
|
6
7
|
/** The name the manifest of this package declares. */
|
|
7
|
-
const PACKAGE_NAME =
|
|
8
|
+
const PACKAGE_NAME = `@cplieger/${PRODUCT}`;
|
|
8
9
|
/** The version the walk found, read once per process. */
|
|
9
10
|
let found;
|
|
10
11
|
/**
|
|
@@ -76,9 +77,24 @@ function writeAtomically(path, pieces) {
|
|
|
76
77
|
throw error;
|
|
77
78
|
}
|
|
78
79
|
}
|
|
80
|
+
/** The text of a file's first `limit` bytes, or of all of it where it holds fewer. */
|
|
81
|
+
function readHead(path, limit) {
|
|
82
|
+
const bytes = Buffer.alloc(limit);
|
|
83
|
+
const fd = openSync(path, "r");
|
|
84
|
+
try {
|
|
85
|
+
let held = 0;
|
|
86
|
+
for (let got = -1; got !== 0 && held < limit; held += got) {
|
|
87
|
+
got = readSync(fd, bytes, held, limit - held, null);
|
|
88
|
+
}
|
|
89
|
+
return bytes.toString("utf8", 0, held);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
closeSync(fd);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
79
95
|
/** A new directory under the platform's temporary directory. */
|
|
80
96
|
function temporaryDirectory() {
|
|
81
|
-
const path = mkdtempSync(join(tmpdir(),
|
|
97
|
+
const path = mkdtempSync(join(tmpdir(), `${PRODUCT}-mapper-`));
|
|
82
98
|
return {
|
|
83
99
|
path,
|
|
84
100
|
remove: () => {
|
|
@@ -105,7 +121,7 @@ function componentMapperCommand() {
|
|
|
105
121
|
export function nodeHost() {
|
|
106
122
|
return {
|
|
107
123
|
workingDirectory: () => process.cwd(),
|
|
108
|
-
readFile: (path) => readFileSync(path, "utf8"),
|
|
124
|
+
readFile: (path, limit) => limit === undefined ? readFileSync(path, "utf8") : readHead(path, limit),
|
|
109
125
|
readDirectory: (path) => readdirSync(path, { withFileTypes: true }).map((entry) => ({
|
|
110
126
|
name: entry.name,
|
|
111
127
|
directory: entry.isDirectory(),
|
|
@@ -115,7 +131,10 @@ export function nodeHost() {
|
|
|
115
131
|
if (stat === undefined) {
|
|
116
132
|
return "absent";
|
|
117
133
|
}
|
|
118
|
-
|
|
134
|
+
if (stat.isDirectory()) {
|
|
135
|
+
return "directory";
|
|
136
|
+
}
|
|
137
|
+
return stat.isFile() ? "file" : "other";
|
|
119
138
|
},
|
|
120
139
|
realPath: (path) => realpathSync(path),
|
|
121
140
|
analyzerVersion: () => {
|
package/dist/src/alias-chain.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Where an import or export chain leads in one project: from one symbol to each
|
|
3
3
|
* declaration of the target it is, and along the chain of aliases it heads to each
|
|
4
|
-
* declaration every link of that chain is.
|
|
4
|
+
* declaration every link of that chain is, and what a name resolves to through them.
|
|
5
5
|
*/
|
|
6
6
|
import { isExportAssignment, isExportSpecifier, isIdentifier, isImportClause, isImportSpecifier, isNamespaceExport, isNamespaceImport, } from "@typescript/native/ast";
|
|
7
7
|
import { SymbolFlags } from "@typescript/native/sync";
|
|
8
|
-
import {
|
|
9
|
-
import { UNANSWERED } from "./query.js";
|
|
8
|
+
import { isParameterProperty, nodeKey } from "./inventory.js";
|
|
9
|
+
import { must, UNANSWERED } from "./query.js";
|
|
10
10
|
/**
|
|
11
11
|
* The chain walks over one project, against the declarations of `held`, the same
|
|
12
12
|
* project's inventory.
|
|
@@ -19,7 +19,6 @@ export function aliasChains(project, held) {
|
|
|
19
19
|
const ownFiles = project.ownPaths();
|
|
20
20
|
const steps = new Map();
|
|
21
21
|
const chains = new Map();
|
|
22
|
-
let asked = 0;
|
|
23
22
|
const declarationsOf = (symbol) => {
|
|
24
23
|
const ids = [];
|
|
25
24
|
for (const handle of symbol.declarations) {
|
|
@@ -52,7 +51,6 @@ export function aliasChains(project, held) {
|
|
|
52
51
|
return steps.get(symbol.id);
|
|
53
52
|
}
|
|
54
53
|
const next = project.aliasStepOf(symbol);
|
|
55
|
-
asked += 1;
|
|
56
54
|
steps.set(symbol.id, next);
|
|
57
55
|
return next;
|
|
58
56
|
};
|
|
@@ -83,7 +81,7 @@ export function aliasChains(project, held) {
|
|
|
83
81
|
names.add(node.expression.text);
|
|
84
82
|
}
|
|
85
83
|
}
|
|
86
|
-
const byName =
|
|
84
|
+
const byName = held.byName;
|
|
87
85
|
const ids = [...names].flatMap((name) => byName.get(name) ?? []);
|
|
88
86
|
return [...new Set([...ids, ...(module ? files : [])])].map((id) => ({
|
|
89
87
|
id,
|
|
@@ -145,8 +143,36 @@ export function aliasChains(project, held) {
|
|
|
145
143
|
declarationsOf,
|
|
146
144
|
chainOf,
|
|
147
145
|
nextDeclared,
|
|
148
|
-
get steps() {
|
|
149
|
-
return asked;
|
|
150
|
-
},
|
|
151
146
|
};
|
|
152
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* What each of a batch of nodes resolves to, every alias followed to the declaration
|
|
150
|
+
* it stands for. A node the checker resolves to nothing, and an alias that resolves
|
|
151
|
+
* to nothing, are absent from the answer. Each alias is followed once. A question the
|
|
152
|
+
* checker does not answer stops the pass, as {@link must} stops.
|
|
153
|
+
*/
|
|
154
|
+
export function resolvedTargets(project, nodes) {
|
|
155
|
+
const followed = new Map();
|
|
156
|
+
const targets = new Map();
|
|
157
|
+
project
|
|
158
|
+
.symbolsAt(nodes.map((node) => project.handle(node)))
|
|
159
|
+
.map(must)
|
|
160
|
+
.forEach((symbol, index) => {
|
|
161
|
+
const node = nodes[index];
|
|
162
|
+
if (symbol === undefined || node === undefined) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
let target = symbol;
|
|
166
|
+
if ((symbol.flags & SymbolFlags.Alias) !== 0) {
|
|
167
|
+
if (!followed.has(symbol.id)) {
|
|
168
|
+
const aliased = must(project.queries.aliased(symbol));
|
|
169
|
+
followed.set(symbol.id, aliased.declarations.length === 0 ? undefined : aliased);
|
|
170
|
+
}
|
|
171
|
+
target = followed.get(symbol.id);
|
|
172
|
+
}
|
|
173
|
+
if (target !== undefined) {
|
|
174
|
+
targets.set(node, target);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
return targets;
|
|
178
|
+
}
|
package/dist/src/amd.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AMD's module forms (references-ts.37), read from the syntax because the binder declares
|
|
3
|
+
* none of them: `define([<ids>], factory)`, `define("<name>", [<ids>], factory)` and
|
|
4
|
+
* `require([<ids>], callback)` (https://github.com/amdjs/amdjs-api/blob/master/AMD.md).
|
|
5
|
+
*/
|
|
6
|
+
import { isArrayLiteralExpression, isArrowFunction, isFunctionExpression, isCallExpression, isIdentifier, isNoSubstitutionTemplateLiteral, isStringLiteral, } from "@typescript/native/ast";
|
|
7
|
+
import { hasURLScheme, isAbsolutePath, resolvePath, startsRelativePath } from "./paths.js";
|
|
8
|
+
import { parenthesesRemoved } from "./unwrap.js";
|
|
9
|
+
/** The ids AMD binds to the factory's CommonJS parameters, which load no module. */
|
|
10
|
+
const FREE_VARIABLES = new Set(["require", "exports", "module"]);
|
|
11
|
+
/** The platform function `callee` is written as. */
|
|
12
|
+
export function amdPlatform(callee) {
|
|
13
|
+
return callee.text === "define" ? "define" : "require";
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The dependency list one call writes, where it is a call of a bare `define` or `require` in
|
|
17
|
+
* one of AMD's forms. A `define` with no list, of a factory or a value alone, loads nothing;
|
|
18
|
+
* a `require` whose first argument is no array literal is CommonJS's.
|
|
19
|
+
*/
|
|
20
|
+
export function amdLoadOf(node) {
|
|
21
|
+
if (!isCallExpression(node)) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
const callee = parenthesesRemoved(node.expression);
|
|
25
|
+
if (!isIdentifier(callee) || (callee.text !== "define" && callee.text !== "require")) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const written = node.arguments.map((one) => parenthesesRemoved(one));
|
|
29
|
+
const [first] = written;
|
|
30
|
+
if (first === undefined) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const define = callee.text === "define";
|
|
34
|
+
const named = define && isLiteralText(first);
|
|
35
|
+
const list = written[named ? 1 : 0];
|
|
36
|
+
if (list !== undefined && isArrayLiteralExpression(list)) {
|
|
37
|
+
const elements = list.elements.map((one) => parenthesesRemoved(one));
|
|
38
|
+
const factory = written[named ? 2 : 1];
|
|
39
|
+
const ids = elements.flatMap((one, at) => isLiteralText(one) && !FREE_VARIABLES.has(one.text)
|
|
40
|
+
? [{ id: one, received: receives(factory, at) }]
|
|
41
|
+
: []);
|
|
42
|
+
return { callee, ids, computed: elements.some((one) => !isLiteralText(one)) };
|
|
43
|
+
}
|
|
44
|
+
if (!define) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
// A factory after the list's place makes what stands there a list, here a computed one.
|
|
48
|
+
return { callee, ids: [], computed: written.length > (named ? 2 : 1) };
|
|
49
|
+
}
|
|
50
|
+
function isLiteralText(node) {
|
|
51
|
+
return isStringLiteral(node) || isNoSubstitutionTemplateLiteral(node);
|
|
52
|
+
}
|
|
53
|
+
/** Whether a factory may receive the dependency at place `at` of its list. */
|
|
54
|
+
function receives(factory, at) {
|
|
55
|
+
if (factory === undefined) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (!isFunctionExpression(factory) && !isArrowFunction(factory)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
const { parameters } = factory;
|
|
62
|
+
return at < parameters.length || parameters.some((one) => one.dotDotDotToken !== undefined);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The path a dependency id names against the calling file's directory: a relative module id,
|
|
66
|
+
* `./` or `../` with no `.js` ending, with `.js` appended. RequireJS reads any other id
|
|
67
|
+
* through its configuration or as a URL against the page, which the analysis does not know.
|
|
68
|
+
*/
|
|
69
|
+
export function amdPath(dir, id) {
|
|
70
|
+
return startsRelativePath(id) && !id.endsWith(".js") ? resolvePath(dir, `${id}.js`) : undefined;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Whether one call may load a file the analysis cannot name: a computed list, or an id that
|
|
74
|
+
* RequireJS reads as a URL, one ending in `.js`, starting with `/` or carrying a scheme. Any
|
|
75
|
+
* other id {@link amdPath} reads no path from is a package's.
|
|
76
|
+
*/
|
|
77
|
+
export function amdUnresolved(load) {
|
|
78
|
+
return (load.computed ||
|
|
79
|
+
load.ids.some(({ id }) => amdPath("/", id.text) === undefined &&
|
|
80
|
+
(id.text.endsWith(".js") || isAbsolutePath(id.text) || hasURLScheme(id.text))));
|
|
81
|
+
}
|