packtory 0.0.22 → 0.0.23

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 (205) hide show
  1. package/bundle-emitter/emitter.d.ts.map +1 -1
  2. package/bundle-emitter/emitter.js +2 -2
  3. package/bundle-emitter/emitter.js.map +1 -1
  4. package/bundle-emitter/publish-error/auto-mode-error-matching.js +6 -7
  5. package/bundle-emitter/publish-error/auto-mode-error-matching.js.map +1 -1
  6. package/bundle-emitter/publish-error/file-mode-error-matching.js +16 -10
  7. package/bundle-emitter/publish-error/file-mode-error-matching.js.map +1 -1
  8. package/bundle-emitter/publish-error/publish-error-messages.js +15 -27
  9. package/bundle-emitter/publish-error/publish-error-messages.js.map +1 -1
  10. package/bundle-emitter/registry/metadata-auth-retry.js +5 -6
  11. package/bundle-emitter/registry/metadata-auth-retry.js.map +1 -1
  12. package/bundle-emitter/registry/oidc-token-exchange.js +6 -14
  13. package/bundle-emitter/registry/oidc-token-exchange.js.map +1 -1
  14. package/bundle-emitter/registry/package-metadata-fetcher.js +12 -17
  15. package/bundle-emitter/registry/package-metadata-fetcher.js.map +1 -1
  16. package/bundle-emitter/registry/publish-settings-bridge.js +8 -12
  17. package/bundle-emitter/registry/publish-settings-bridge.js.map +1 -1
  18. package/bundle-emitter/registry/registry-auth-config.js +22 -26
  19. package/bundle-emitter/registry/registry-auth-config.js.map +1 -1
  20. package/bundle-emitter/registry/registry-client.d.ts +1 -1
  21. package/bundle-emitter/registry/registry-client.d.ts.map +1 -1
  22. package/bundle-emitter/registry/registry-client.js +13 -6
  23. package/bundle-emitter/registry/registry-client.js.map +1 -1
  24. package/bundle-emitter/registry/registry-package-path.js +4 -0
  25. package/bundle-emitter/registry/registry-package-path.js.map +1 -0
  26. package/bundle-emitter/repository-coherence.js +17 -23
  27. package/bundle-emitter/repository-coherence.js.map +1 -1
  28. package/bundle-emitter/repository-url-normalizer.js +5 -8
  29. package/bundle-emitter/repository-url-normalizer.js.map +1 -1
  30. package/checks/rules/duplicate-messages.js +7 -10
  31. package/checks/rules/duplicate-messages.js.map +1 -1
  32. package/checks/rules/no-unused-bundle-dependencies.js +10 -13
  33. package/checks/rules/no-unused-bundle-dependencies.js.map +1 -1
  34. package/common/bundled-dependency-groups.js +28 -0
  35. package/common/bundled-dependency-groups.js.map +1 -0
  36. package/common/package-layout.js +49 -0
  37. package/common/package-layout.js.map +1 -0
  38. package/common/package-name-map.js +8 -0
  39. package/common/package-name-map.js.map +1 -0
  40. package/common/worklist.js +23 -0
  41. package/common/worklist.js.map +1 -0
  42. package/config/config.d.ts +1 -1
  43. package/config/config.d.ts.map +1 -1
  44. package/config/dependency-existence-validation.js +15 -17
  45. package/config/dependency-existence-validation.js.map +1 -1
  46. package/config/package-config.d.ts.map +1 -1
  47. package/config/package-config.js +2 -6
  48. package/config/package-config.js.map +1 -1
  49. package/config/publish-settings.d.ts.map +1 -1
  50. package/config/publish-settings.report.js +8 -7
  51. package/config/publish-settings.report.js.map +1 -1
  52. package/config/registry-settings.d.ts.map +1 -1
  53. package/config/root-config-validation.js +86 -81
  54. package/config/root-config-validation.js.map +1 -1
  55. package/dead-code-eliminator/cross-bundle/bundle-index.js +0 -3
  56. package/dead-code-eliminator/cross-bundle/bundle-index.js.map +1 -1
  57. package/dead-code-eliminator/cross-bundle/import-export-walker.js +4 -2
  58. package/dead-code-eliminator/cross-bundle/import-export-walker.js.map +1 -1
  59. package/dead-code-eliminator/eliminator.js.map +1 -1
  60. package/dead-code-eliminator/imported-expression-origin.js +28 -32
  61. package/dead-code-eliminator/imported-expression-origin.js.map +1 -1
  62. package/dead-code-eliminator/pure-expression.js +53 -64
  63. package/dead-code-eliminator/pure-expression.js.map +1 -1
  64. package/dead-code-eliminator/reachability/bfs-closure.js +31 -24
  65. package/dead-code-eliminator/reachability/bfs-closure.js.map +1 -1
  66. package/dead-code-eliminator/side-effect-classifier.js +2 -2
  67. package/dead-code-eliminator/side-effect-classifier.js.map +1 -1
  68. package/dead-code-eliminator/statement-classifiers.js +4 -5
  69. package/dead-code-eliminator/statement-classifiers.js.map +1 -1
  70. package/dead-code-eliminator/syntax-kind-sets.js +24 -65
  71. package/dead-code-eliminator/syntax-kind-sets.js.map +1 -1
  72. package/dependency-scanner/node-modules-manifest-synthesizer.js +3 -6
  73. package/dependency-scanner/node-modules-manifest-synthesizer.js.map +1 -1
  74. package/dependency-scanner/package-owned-asset-file-path.js +2 -13
  75. package/dependency-scanner/package-owned-asset-file-path.js.map +1 -1
  76. package/dependency-scanner/scanner.js +39 -29
  77. package/dependency-scanner/scanner.js.map +1 -1
  78. package/dependency-scanner/source-file-references.d.ts.map +1 -1
  79. package/dependency-scanner/source-file-references.js +75 -79
  80. package/dependency-scanner/source-file-references.js.map +1 -1
  81. package/dependency-scanner/typescript-project-analyzer.d.ts.map +1 -1
  82. package/dependency-scanner/typescript-project-analyzer.js +2 -1
  83. package/dependency-scanner/typescript-project-analyzer.js.map +1 -1
  84. package/dependency-scanner/virtual-package-json-host.js +2 -1
  85. package/dependency-scanner/virtual-package-json-host.js.map +1 -1
  86. package/directed-graph/graph.js +38 -64
  87. package/directed-graph/graph.js.map +1 -1
  88. package/file-manager/compare.js +7 -3
  89. package/file-manager/compare.js.map +1 -1
  90. package/file-manager/file-description-by-path.js +8 -0
  91. package/file-manager/file-description-by-path.js.map +1 -0
  92. package/npm-oidc-id-token-resolver.js +17 -14
  93. package/npm-oidc-id-token-resolver.js.map +1 -1
  94. package/package-surface/implicit-bin.js +9 -6
  95. package/package-surface/implicit-bin.js.map +1 -1
  96. package/package-surface/package-json-export.js +4 -3
  97. package/package-surface/package-json-export.js.map +1 -1
  98. package/package-surface/package-shape.js +4 -3
  99. package/package-surface/package-shape.js.map +1 -1
  100. package/package-surface/package-surface-index.js +136 -0
  101. package/package-surface/package-surface-index.js.map +1 -0
  102. package/package-surface/public-specifiers.js +3 -12
  103. package/package-surface/public-specifiers.js.map +1 -1
  104. package/package-surface/root-registry.js +10 -20
  105. package/package-surface/root-registry.js.map +1 -1
  106. package/package-surface/specifier-syntax.js +0 -19
  107. package/package-surface/specifier-syntax.js.map +1 -1
  108. package/package-surface/substitution-exports.js +59 -35
  109. package/package-surface/substitution-exports.js.map +1 -1
  110. package/package-surface/surface.js +0 -3
  111. package/package-surface/surface.js.map +1 -1
  112. package/package.json +16 -4
  113. package/packtory/options/bundle-dependency-resolution.js +6 -8
  114. package/packtory/options/bundle-dependency-resolution.js.map +1 -1
  115. package/packtory/options/version-trigger.js.map +1 -1
  116. package/packtory/package-processor-publish.d.ts +2 -1
  117. package/packtory/package-processor-publish.d.ts.map +1 -1
  118. package/packtory/package-processor-publish.js +19 -13
  119. package/packtory/package-processor-publish.js.map +1 -1
  120. package/packtory/packtory-pack.js +129 -141
  121. package/packtory/packtory-pack.js.map +1 -1
  122. package/packtory/packtory-release-analysis.js +8 -16
  123. package/packtory/packtory-release-analysis.js.map +1 -1
  124. package/packtory/packtory-results.d.ts +26 -11
  125. package/packtory/packtory-results.d.ts.map +1 -1
  126. package/packtory/packtory-results.js +27 -5
  127. package/packtory/packtory-results.js.map +1 -1
  128. package/packtory/packtory.js +65 -49
  129. package/packtory/packtory.js.map +1 -1
  130. package/packtory/partial-result.js +26 -0
  131. package/packtory/partial-result.js.map +1 -0
  132. package/packtory/published-release-state.d.ts +9 -0
  133. package/packtory/published-release-state.d.ts.map +1 -0
  134. package/packtory/published-release-state.js +12 -0
  135. package/packtory/published-release-state.js.map +1 -0
  136. package/packtory/release-analysis.js +74 -81
  137. package/packtory/release-analysis.js.map +1 -1
  138. package/packtory/resolved-package.js +6 -6
  139. package/packtory/resolved-package.js.map +1 -1
  140. package/packtory/scheduler.d.ts +1 -0
  141. package/packtory/scheduler.d.ts.map +1 -1
  142. package/packtory/scheduler.js +70 -52
  143. package/packtory/scheduler.js.map +1 -1
  144. package/packtory/stages/publish-stage.js +11 -6
  145. package/packtory/stages/publish-stage.js.map +1 -1
  146. package/packtory/stages/release-diff-stage.js +11 -10
  147. package/packtory/stages/release-diff-stage.js.map +1 -1
  148. package/report/aggregator/package-report-materialization.js +35 -22
  149. package/report/aggregator/package-report-materialization.js.map +1 -1
  150. package/report/config-redactor.js +5 -4
  151. package/report/config-redactor.js.map +1 -1
  152. package/report/inspectors/inspect-artifact-sizes.js +7 -3
  153. package/report/inspectors/inspect-artifact-sizes.js.map +1 -1
  154. package/report/inspectors/inspect-scan-results.js +8 -2
  155. package/report/inspectors/inspect-scan-results.js.map +1 -1
  156. package/report/preview/preview-document-diff.d.ts +6 -1
  157. package/report/preview/preview-document-diff.d.ts.map +1 -1
  158. package/report/preview/preview-document-diff.js +8 -3
  159. package/report/preview/preview-document-diff.js.map +1 -1
  160. package/report/release-diff/file-set-diff.d.ts +14 -4
  161. package/report/release-diff/file-set-diff.d.ts.map +1 -1
  162. package/report/release-diff/file-set-diff.js +28 -28
  163. package/report/release-diff/file-set-diff.js.map +1 -1
  164. package/report/release-diff/release-version-transition.js +6 -4
  165. package/report/release-diff/release-version-transition.js.map +1 -1
  166. package/resource-resolver/content.js +5 -3
  167. package/resource-resolver/content.js.map +1 -1
  168. package/sbom/license-resolver.js +3 -3
  169. package/sbom/license-resolver.js.map +1 -1
  170. package/sbom/sbom-builder.js +1 -8
  171. package/sbom/sbom-builder.js.map +1 -1
  172. package/sbom/sbom-file.d.ts.map +1 -1
  173. package/sbom/sbom-file.js +7 -4
  174. package/sbom/sbom-file.js.map +1 -1
  175. package/sbom/sbom-serializer.js +10 -6
  176. package/sbom/sbom-serializer.js.map +1 -1
  177. package/sbom.cdx.json +22 -5
  178. package/vendor-materializer/vendor-materializer.d.ts.map +1 -1
  179. package/vendor-materializer/vendor-materializer.js +99 -123
  180. package/vendor-materializer/vendor-materializer.js.map +1 -1
  181. package/version-manager/dependencies/bundle-dependency-grouping.js +18 -14
  182. package/version-manager/dependencies/bundle-dependency-grouping.js.map +1 -1
  183. package/version-manager/imports/versioned-bundle-imports.js +15 -12
  184. package/version-manager/imports/versioned-bundle-imports.js.map +1 -1
  185. package/version-manager/manager.d.ts.map +1 -1
  186. package/version-manager/manager.js +19 -24
  187. package/version-manager/manager.js.map +1 -1
  188. package/version-manager/manifest/builder.js +3 -3
  189. package/version-manager/manifest/builder.js.map +1 -1
  190. package/version-manager/optional-bundle-fields.js +2 -5
  191. package/version-manager/optional-bundle-fields.js.map +1 -1
  192. package/version-manager/representative-root.js +7 -27
  193. package/version-manager/representative-root.js.map +1 -1
  194. package/version-manager/specifier-classifier.js +13 -10
  195. package/version-manager/specifier-classifier.js.map +1 -1
  196. package/version-manager/specifier-errors.js +17 -6
  197. package/version-manager/specifier-errors.js.map +1 -1
  198. package/package-surface/explicit-specifier-build.js +0 -28
  199. package/package-surface/explicit-specifier-build.js.map +0 -1
  200. package/package-surface/explicit-specifier-resolve.js +0 -17
  201. package/package-surface/explicit-specifier-resolve.js.map +0 -1
  202. package/package-surface/implicit-specifier-build.js +0 -26
  203. package/package-surface/implicit-specifier-build.js.map +0 -1
  204. package/package-surface/implicit-specifier-resolve.js +0 -17
  205. package/package-surface/implicit-specifier-resolve.js.map +0 -1
@@ -1,40 +1,47 @@
1
- function assertTraversalIteration(remainingIterations) {
2
- if (remainingIterations === 0) {
3
- throw new Error('Reachability traversal exceeded the maximum iteration budget');
4
- }
5
- }
6
- function createTraversalBudget(maximumIterations) {
7
- return Array.from({ length: maximumIterations + 1 }, (_value, index) => {
8
- return maximumIterations - index;
9
- });
10
- }
11
- function getMaximumTraversalIterations(initialVisitedSize, seedCount, maximumNodeCount) {
12
- return initialVisitedSize + seedCount + maximumNodeCount * maximumNodeCount;
13
- }
1
+ import { createWorklist } from "../../common/worklist.js";
14
2
  function createTraversalState(initialVisited, seedList) {
15
3
  const visited = new Set([...initialVisited, ...seedList]);
16
- return { visited, queue: Array.from(visited) };
4
+ return { visited, pending: createWorklist(visited) };
17
5
  }
18
6
  function enqueueUnvisitedNeighbors(current, expand, traversalState, visitedHas) {
19
7
  for (const neighbor of expand(current)) {
20
8
  if (!visitedHas(traversalState.visited, neighbor)) {
21
9
  traversalState.visited.add(neighbor);
22
- traversalState.queue.push(neighbor);
10
+ traversalState.pending.schedule(neighbor);
23
11
  }
24
12
  }
25
13
  }
14
+ function traverseWithinBudget(args) {
15
+ let currentNode = args.current;
16
+ return args.traversalBudget.some(() => {
17
+ enqueueUnvisitedNeighbors(currentNode, args.expand, args.traversalState, args.visitedHas);
18
+ const next = args.traversalState.pending.takeNext();
19
+ if (next === undefined) {
20
+ return true;
21
+ }
22
+ currentNode = next;
23
+ return false;
24
+ });
25
+ }
26
26
  export function bfsClosure(seeds, expand, initialVisited, options) {
27
27
  const seedList = Array.from(seeds);
28
- const maximumIterations = getMaximumTraversalIterations(initialVisited.size, seedList.length, options.maximumNodeCount);
28
+ const traversalBudget = Array.from({
29
+ length: initialVisited.size + seedList.length + options.maximumNodeCount * options.maximumNodeCount
30
+ });
29
31
  const traversalState = createTraversalState(initialVisited, seedList);
30
- for (const remainingIterations of createTraversalBudget(maximumIterations)) {
31
- const current = traversalState.queue.shift();
32
- if (current === undefined) {
33
- break;
34
- }
35
- assertTraversalIteration(remainingIterations);
36
- enqueueUnvisitedNeighbors(current, expand, traversalState, options.dependencies.visitedHas);
32
+ const current = traversalState.pending.takeNext();
33
+ if (current === undefined) {
34
+ return traversalState.visited;
35
+ }
36
+ if (traverseWithinBudget({
37
+ current,
38
+ expand,
39
+ traversalState,
40
+ visitedHas: options.dependencies.visitedHas,
41
+ traversalBudget
42
+ })) {
43
+ return traversalState.visited;
37
44
  }
38
- return traversalState.visited;
45
+ throw new Error('Reachability traversal exceeded the maximum iteration budget');
39
46
  }
40
47
  //# sourceMappingURL=bfs-closure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bfs-closure.js","sourceRoot":"","sources":["../../../../../source/dead-code-eliminator/reachability/bfs-closure.ts"],"names":[],"mappings":"AAIA,SAAS,wBAAwB,CAAC,mBAA2B;IACzD,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,iBAAyB;IACpD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACnE,OAAO,iBAAiB,GAAG,KAAK,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,6BAA6B,CAClC,kBAA0B,EAC1B,SAAiB,EACjB,gBAAwB;IAExB,OAAO,kBAAkB,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAChF,CAAC;AAED,SAAS,oBAAoB,CACzB,cAA8B,EAC9B,QAAsB;IAKtB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAI,CAAC,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,yBAAyB,CAC9B,OAAU,EACV,MAAmC,EACnC,cAGC,EACD,UAAgD;IAEhD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChD,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,KAAkB,EAClB,MAAmC,EACnC,cAA8B,EAC9B,OAGC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,6BAA6B,CACnD,cAAc,CAAC,IAAI,EACnB,QAAQ,CAAC,MAAM,EACf,OAAO,CAAC,gBAAgB,CAC3B,CAAC;IACF,MAAM,cAAc,GAAG,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEtE,KAAK,MAAM,mBAAmB,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM;QACV,CAAC;QACD,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;QAC9C,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,cAAc,CAAC,OAAO,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"bfs-closure.js","sourceRoot":"","sources":["../../../../../source/dead-code-eliminator/reachability/bfs-closure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAMzE,SAAS,oBAAoB,CACzB,cAA8B,EAC9B,QAAsB;IAKtB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAI,CAAC,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,yBAAyB,CAC9B,OAAU,EACV,MAAmC,EACnC,cAGC,EACD,UAAgD;IAEhD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChD,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAI,IAShC;IACG,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IAE/B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE;QAClC,yBAAyB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACpD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,KAAkB,EAClB,MAAmC,EACnC,cAA8B,EAC9B,OAGC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC;QAC/B,MAAM,EAAE,cAAc,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;KACtG,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAElD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,cAAc,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,IACI,oBAAoB,CAAC;QACjB,OAAO;QACP,MAAM;QACN,cAAc;QACd,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU;QAC3C,eAAe;KAClB,CAAC,EACJ,CAAC;QACC,OAAO,cAAc,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACpF,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { statementClassifiers } from "./statement-classifiers.js";
2
- import { controlFlowStatementKinds, pureDeclarationKinds } from "./syntax-kind-sets.js";
2
+ import { describeControlFlowStatementKind, pureDeclarationKinds } from "./syntax-kind-sets.js";
3
3
  function classifyTopLevelStatement(statement, settings) {
4
4
  const kind = statement.getKind();
5
5
  if (pureDeclarationKinds.has(kind)) {
6
6
  return undefined;
7
7
  }
8
- const controlFlowKind = controlFlowStatementKinds.get(kind);
8
+ const controlFlowKind = describeControlFlowStatementKind(kind);
9
9
  if (controlFlowKind !== undefined) {
10
10
  return controlFlowKind;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"side-effect-classifier.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/side-effect-classifier.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAExF,SAAS,yBAAyB,CAC9B,SAAoB,EACpB,QAAiD;IAEjD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,eAAe,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC;IAC3B,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,UAAgC,EAChC,QAAsC;IAEtC,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"side-effect-classifier.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/side-effect-classifier.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,SAAS,yBAAyB,CAC9B,SAAoB,EACpB,QAAiD;IAEjD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,eAAe,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC;IAC3B,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,UAAgC,EAChC,QAAsC;IAEtC,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -23,12 +23,11 @@ function classifyClassDeclaration(statement, settings) {
23
23
  return undefined;
24
24
  }
25
25
  function classifyVariableStatement(statement, settings) {
26
- const hasImpureInitializer = statement.getDeclarations().some((declarator) => {
26
+ for (const declarator of statement.getDeclarations()) {
27
27
  const initializer = declarator.getInitializer();
28
- return initializer !== undefined && !isPureExpression(initializer, settings);
29
- });
30
- if (hasImpureInitializer) {
31
- return 'variable initializer';
28
+ if (initializer !== undefined && !isPureExpression(initializer, settings)) {
29
+ return 'variable initializer';
30
+ }
32
31
  }
33
32
  return undefined;
34
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"statement-classifiers.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/statement-classifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAMb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOxD,SAAS,eAAe,CAAC,SAAiB;IACtC,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,yBAAyB,CAAC,SAA4B;IAC3D,IAAI,eAAe,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC;QACvD,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB,CAC7B,SAA2B,EAC3B,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED,SAAS,wBAAwB,CAC7B,SAA2B,EAC3B,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAC9B,SAA4B,EAC5B,QAAiD;IAEjD,MAAM,oBAAoB,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;QACzE,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAChD,OAAO,WAAW,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IACH,IAAI,oBAAoB,EAAE,CAAC;QACvB,OAAO,sBAAsB,CAAC;IAClC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAiD,IAAI,GAAG,CAGvF;IACE;QACI,UAAU,CAAC,iBAAiB;QAC5B,CAAC,SAAS,EAAE,EAAE;YACV,OAAO,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5F,CAAC;KACJ;IACD;QACI,UAAU,CAAC,gBAAgB;QAC3B,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACpB,OAAO,wBAAwB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpG,CAAC;KACJ;IACD;QACI,UAAU,CAAC,gBAAgB;QAC3B,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACpB,OAAO,wBAAwB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpG,CAAC;KACJ;IACD;QACI,UAAU,CAAC,iBAAiB;QAC5B,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACpB,OAAO,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtG,CAAC;KACJ;IACD;QACI,UAAU,CAAC,mBAAmB;QAC9B,GAAG,EAAE;YACD,OAAO,sBAAsB,CAAC;QAClC,CAAC;KACJ;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"statement-classifiers.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/statement-classifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAMb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOxD,SAAS,eAAe,CAAC,SAAiB;IACtC,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,yBAAyB,CAAC,SAA4B;IAC3D,IAAI,eAAe,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC;QACvD,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB,CAC7B,SAA2B,EAC3B,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED,SAAS,wBAAwB,CAC7B,SAA2B,EAC3B,QAAiD;IAEjD,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAC9B,SAA4B,EAC5B,QAAiD;IAEjD,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxE,OAAO,sBAAsB,CAAC;QAClC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAiD,IAAI,GAAG,CAGvF;IACE;QACI,UAAU,CAAC,iBAAiB;QAC5B,CAAC,SAAS,EAAE,EAAE;YACV,OAAO,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5F,CAAC;KACJ;IACD;QACI,UAAU,CAAC,gBAAgB;QAC3B,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACpB,OAAO,wBAAwB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpG,CAAC;KACJ;IACD;QACI,UAAU,CAAC,gBAAgB;QAC3B,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACpB,OAAO,wBAAwB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpG,CAAC;KACJ;IACD;QACI,UAAU,CAAC,iBAAiB;QAC5B,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACpB,OAAO,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtG,CAAC;KACJ;IACD;QACI,UAAU,CAAC,mBAAmB;QAC9B,GAAG,EAAE;YACD,OAAO,sBAAsB,CAAC;QAClC,CAAC;KACJ;CACJ,CAAC,CAAC"}
@@ -1,67 +1,26 @@
1
1
  import { SyntaxKind } from 'ts-morph';
2
- export const pureLeafKinds = new Set([
3
- SyntaxKind.StringLiteral,
4
- SyntaxKind.NumericLiteral,
5
- SyntaxKind.BigIntLiteral,
6
- SyntaxKind.TrueKeyword,
7
- SyntaxKind.FalseKeyword,
8
- SyntaxKind.NullKeyword,
9
- SyntaxKind.RegularExpressionLiteral,
10
- SyntaxKind.NoSubstitutionTemplateLiteral,
11
- SyntaxKind.Identifier,
12
- SyntaxKind.FunctionExpression,
13
- SyntaxKind.ArrowFunction,
14
- SyntaxKind.ClassExpression
15
- ]);
16
- export const allowedPrefixUnaryOperators = new Set([
17
- SyntaxKind.MinusToken,
18
- SyntaxKind.PlusToken,
19
- SyntaxKind.ExclamationToken,
20
- SyntaxKind.TildeToken
21
- ]);
22
- export const allowedBinaryOperators = new Set([
23
- SyntaxKind.PlusToken,
24
- SyntaxKind.MinusToken,
25
- SyntaxKind.AsteriskToken,
26
- SyntaxKind.SlashToken,
27
- SyntaxKind.PercentToken,
28
- SyntaxKind.AsteriskAsteriskToken,
29
- SyntaxKind.AmpersandAmpersandToken,
30
- SyntaxKind.BarBarToken,
31
- SyntaxKind.QuestionQuestionToken,
32
- SyntaxKind.LessThanToken,
33
- SyntaxKind.GreaterThanToken,
34
- SyntaxKind.LessThanEqualsToken,
35
- SyntaxKind.GreaterThanEqualsToken,
36
- SyntaxKind.EqualsEqualsEqualsToken,
37
- SyntaxKind.ExclamationEqualsEqualsToken
38
- ]);
39
- export const inherentlyPurePropertyKinds = new Set([
40
- SyntaxKind.ShorthandPropertyAssignment,
41
- SyntaxKind.MethodDeclaration,
42
- SyntaxKind.GetAccessor,
43
- SyntaxKind.SetAccessor
44
- ]);
45
- export const pureDeclarationKinds = new Set([
46
- SyntaxKind.FunctionDeclaration,
47
- SyntaxKind.InterfaceDeclaration,
48
- SyntaxKind.TypeAliasDeclaration,
49
- SyntaxKind.EnumDeclaration,
50
- SyntaxKind.ModuleDeclaration,
51
- SyntaxKind.ExportDeclaration,
52
- SyntaxKind.EmptyStatement
53
- ]);
54
- export const controlFlowStatementKinds = new Map([
55
- [SyntaxKind.IfStatement, 'if statement'],
56
- [SyntaxKind.ForStatement, 'for statement'],
57
- [SyntaxKind.ForInStatement, 'for-in statement'],
58
- [SyntaxKind.ForOfStatement, 'for-of statement'],
59
- [SyntaxKind.WhileStatement, 'while statement'],
60
- [SyntaxKind.DoStatement, 'do-while statement'],
61
- [SyntaxKind.SwitchStatement, 'switch statement'],
62
- [SyntaxKind.TryStatement, 'try statement'],
63
- [SyntaxKind.ThrowStatement, 'throw statement'],
64
- [SyntaxKind.LabeledStatement, 'labeled statement'],
65
- [SyntaxKind.Block, 'block statement']
66
- ]);
2
+ function createSyntaxKindSet(...kinds) {
3
+ return new Set(kinds);
4
+ }
5
+ export const pureLeafKinds = createSyntaxKindSet(SyntaxKind.StringLiteral, SyntaxKind.NumericLiteral, SyntaxKind.BigIntLiteral, SyntaxKind.TrueKeyword, SyntaxKind.FalseKeyword, SyntaxKind.NullKeyword, SyntaxKind.RegularExpressionLiteral, SyntaxKind.NoSubstitutionTemplateLiteral, SyntaxKind.Identifier, SyntaxKind.FunctionExpression, SyntaxKind.ArrowFunction, SyntaxKind.ClassExpression);
6
+ export const allowedPrefixUnaryOperators = createSyntaxKindSet(SyntaxKind.MinusToken, SyntaxKind.PlusToken, SyntaxKind.ExclamationToken, SyntaxKind.TildeToken);
7
+ export const allowedBinaryOperators = createSyntaxKindSet(SyntaxKind.PlusToken, SyntaxKind.MinusToken, SyntaxKind.AsteriskToken, SyntaxKind.SlashToken, SyntaxKind.PercentToken, SyntaxKind.AsteriskAsteriskToken, SyntaxKind.AmpersandAmpersandToken, SyntaxKind.BarBarToken, SyntaxKind.QuestionQuestionToken, SyntaxKind.LessThanToken, SyntaxKind.GreaterThanToken, SyntaxKind.LessThanEqualsToken, SyntaxKind.GreaterThanEqualsToken, SyntaxKind.EqualsEqualsEqualsToken, SyntaxKind.ExclamationEqualsEqualsToken);
8
+ export const inherentlyPurePropertyKinds = createSyntaxKindSet(SyntaxKind.ShorthandPropertyAssignment, SyntaxKind.MethodDeclaration, SyntaxKind.GetAccessor, SyntaxKind.SetAccessor);
9
+ export const pureDeclarationKinds = createSyntaxKindSet(SyntaxKind.FunctionDeclaration, SyntaxKind.InterfaceDeclaration, SyntaxKind.TypeAliasDeclaration, SyntaxKind.EnumDeclaration, SyntaxKind.ModuleDeclaration, SyntaxKind.ExportDeclaration, SyntaxKind.EmptyStatement);
10
+ export function describeControlFlowStatementKind(kind) {
11
+ const descriptions = {
12
+ [SyntaxKind.IfStatement]: 'if statement',
13
+ [SyntaxKind.ForStatement]: 'for statement',
14
+ [SyntaxKind.ForInStatement]: 'for-in statement',
15
+ [SyntaxKind.ForOfStatement]: 'for-of statement',
16
+ [SyntaxKind.WhileStatement]: 'while statement',
17
+ [SyntaxKind.DoStatement]: 'do-while statement',
18
+ [SyntaxKind.SwitchStatement]: 'switch statement',
19
+ [SyntaxKind.TryStatement]: 'try statement',
20
+ [SyntaxKind.ThrowStatement]: 'throw statement',
21
+ [SyntaxKind.LabeledStatement]: 'labeled statement',
22
+ [SyntaxKind.Block]: 'block statement'
23
+ };
24
+ return descriptions[kind];
25
+ }
67
26
  //# sourceMappingURL=syntax-kind-sets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"syntax-kind-sets.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/syntax-kind-sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAA4B,IAAI,GAAG,CAAC;IAC1D,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,cAAc;IACzB,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,WAAW;IACtB,UAAU,CAAC,YAAY;IACvB,UAAU,CAAC,WAAW;IACtB,UAAU,CAAC,wBAAwB;IACnC,UAAU,CAAC,6BAA6B;IACxC,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,kBAAkB;IAC7B,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,eAAe;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAA4B,IAAI,GAAG,CAAC;IACxE,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,SAAS;IACpB,UAAU,CAAC,gBAAgB;IAC3B,UAAU,CAAC,UAAU;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAA4B,IAAI,GAAG,CAAC;IACnE,UAAU,CAAC,SAAS;IACpB,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,YAAY;IACvB,UAAU,CAAC,qBAAqB;IAChC,UAAU,CAAC,uBAAuB;IAClC,UAAU,CAAC,WAAW;IACtB,UAAU,CAAC,qBAAqB;IAChC,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,gBAAgB;IAC3B,UAAU,CAAC,mBAAmB;IAC9B,UAAU,CAAC,sBAAsB;IACjC,UAAU,CAAC,uBAAuB;IAClC,UAAU,CAAC,4BAA4B;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAA4B,IAAI,GAAG,CAAC;IACxE,UAAU,CAAC,2BAA2B;IACtC,UAAU,CAAC,iBAAiB;IAC5B,UAAU,CAAC,WAAW;IACtB,UAAU,CAAC,WAAW;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAA4B,IAAI,GAAG,CAAC;IACjE,UAAU,CAAC,mBAAmB;IAC9B,UAAU,CAAC,oBAAoB;IAC/B,UAAU,CAAC,oBAAoB;IAC/B,UAAU,CAAC,eAAe;IAC1B,UAAU,CAAC,iBAAiB;IAC5B,UAAU,CAAC,iBAAiB;IAC5B,UAAU,CAAC,cAAc;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAoC,IAAI,GAAG,CAAC;IAC9E,CAAC,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC;IACxC,CAAC,UAAU,CAAC,YAAY,EAAE,eAAe,CAAC;IAC1C,CAAC,UAAU,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC/C,CAAC,UAAU,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC/C,CAAC,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC9C,CAAC,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC9C,CAAC,UAAU,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAChD,CAAC,UAAU,CAAC,YAAY,EAAE,eAAe,CAAC;IAC1C,CAAC,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC9C,CAAC,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;IAClD,CAAC,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACxC,CAAC,CAAC"}
1
+ {"version":3,"file":"syntax-kind-sets.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/syntax-kind-sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,SAAS,mBAAmB,CAAC,GAAG,KAA4B;IACxD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAA4B,mBAAmB,CACrE,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,wBAAwB,EACnC,UAAU,CAAC,6BAA6B,EACxC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,kBAAkB,EAC7B,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,eAAe,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAA4B,mBAAmB,CACnF,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,UAAU,CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAA4B,mBAAmB,CAC9E,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,qBAAqB,EAChC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,qBAAqB,EAChC,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,sBAAsB,EACjC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,4BAA4B,CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAA4B,mBAAmB,CACnF,UAAU,CAAC,2BAA2B,EACtC,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,WAAW,CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA4B,mBAAmB,CAC5E,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,oBAAoB,EAC/B,UAAU,CAAC,oBAAoB,EAC/B,UAAU,CAAC,eAAe,EAC1B,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,cAAc,CAC5B,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,IAAgB;IAC7D,MAAM,YAAY,GAAwC;QACtD,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,cAAc;QACxC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,eAAe;QAC1C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,kBAAkB;QAC/C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,kBAAkB;QAC/C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB;QAC9C,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,oBAAoB;QAC9C,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,kBAAkB;QAChD,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,eAAe;QAC1C,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB;QAC9C,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,mBAAmB;QAClD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiB;KACxC,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,5 +1,5 @@
1
- import path from 'node:path';
2
1
  import { isString } from 'remeda';
2
+ import { isInstalledDependencyManifestPath } from "../common/package-layout.js";
3
3
  import { bindRequiredMethod, syncMethodNames } from "./host-method-binding.js";
4
4
  const packageJsonIndentationSpaces = 2;
5
5
  function isPlainObject(value) {
@@ -26,16 +26,13 @@ function rewriteManifestContent(content) {
26
26
  return content;
27
27
  }
28
28
  }
29
- function isNodeModulesManifestPath(filePath) {
30
- return (path.basename(filePath) === 'package.json' && path.normalize(filePath).split(path.sep).includes('node_modules'));
31
- }
32
29
  export function createNodeModulesManifestSynthesizingHost(fileSystemHost) {
33
30
  const readFileSync = bindRequiredMethod(fileSystemHost, syncMethodNames.readFile, 'a string', isString);
34
31
  const synthesizingHost = {
35
32
  ...fileSystemHost,
36
33
  readFile: async (filePath, encoding) => {
37
34
  const content = await fileSystemHost.readFile(filePath, encoding);
38
- if (!isNodeModulesManifestPath(filePath)) {
35
+ if (!isInstalledDependencyManifestPath(filePath)) {
39
36
  return content;
40
37
  }
41
38
  return rewriteManifestContent(content);
@@ -43,7 +40,7 @@ export function createNodeModulesManifestSynthesizingHost(fileSystemHost) {
43
40
  [syncMethodNames.readFile]: (filePath) => {
44
41
  // eslint-disable-next-line node/no-sync -- the ts-morph host interface requires this synchronous method
45
42
  const content = readFileSync(filePath);
46
- if (!isNodeModulesManifestPath(filePath)) {
43
+ if (!isInstalledDependencyManifestPath(filePath)) {
47
44
  return content;
48
45
  }
49
46
  return rewriteManifestContent(content);
@@ -1 +1 @@
1
- {"version":3,"file":"node-modules-manifest-synthesizer.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/node-modules-manifest-synthesizer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAc;IACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC3C,IAAI,CAAC;QACD,+IAA+I;QAC/I,MAAM,MAAM,GAA4B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAgB;IAC/C,OAAO,CACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAClH,CAAC;AACN,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,cAA8B;IACpF,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAExG,MAAM,gBAAgB,GAAmB;QACrC,GAAG,cAAc;QACjB,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,QAAiB,EAAmB,EAAE;YACrE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAgB,EAAU,EAAE;YACrD,wGAAwG;YACxG,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;KACJ,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACxD,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"node-modules-manifest-synthesizer.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/node-modules-manifest-synthesizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAc;IACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;IAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC3C,IAAI,CAAC;QACD,+IAA+I;QAC/I,MAAM,MAAM,GAA4B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,cAA8B;IACpF,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAExG,MAAM,gBAAgB,GAAmB;QACrC,GAAG,cAAc;QACjB,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,QAAiB,EAAmB,EAAE;YACrE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/C,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAgB,EAAU,EAAE;YACrD,wGAAwG;YACxG,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/C,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;KACJ,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACxD,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}
@@ -1,17 +1,6 @@
1
- import path from 'node:path';
2
- function packageOwnedAssetSearchFolders(currentFolder) {
3
- const resolvedFolder = path.resolve(currentFolder);
4
- const rootFolder = path.parse(resolvedFolder).root;
5
- const relativePath = path.relative(rootFolder, resolvedFolder);
6
- const relativeSegments = relativePath.split(path.sep);
7
- const maximumSegmentCount = relativePath.length === 0 ? 0 : relativeSegments.length;
8
- return Array.from({ length: maximumSegmentCount + 1 }, (_unused, index) => {
9
- return path.join(rootFolder, ...relativeSegments.slice(0, maximumSegmentCount - index));
10
- });
11
- }
1
+ import { ancestorInstalledDependencyPathCandidates } from "../common/package-layout.js";
12
2
  export function findPackageOwnedAssetFilePath(importValue, currentFolder, fileExists) {
13
- for (const searchFolder of packageOwnedAssetSearchFolders(currentFolder)) {
14
- const candidatePath = path.join(searchFolder, 'node_modules', importValue);
3
+ for (const candidatePath of ancestorInstalledDependencyPathCandidates(currentFolder, importValue)) {
15
4
  if (fileExists(candidatePath)) {
16
5
  return candidatePath;
17
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"package-owned-asset-file-path.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/package-owned-asset-file-path.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,8BAA8B,CAAC,aAAqB;IACzD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACpF,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,6BAA6B,CACzC,WAAmB,EACnB,aAAqB,EACrB,UAAyC;IAEzC,KAAK,MAAM,YAAY,IAAI,8BAA8B,CAAC,aAAa,CAAC,EAAE,CAAC;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAC3E,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5B,OAAO,aAAa,CAAC;QACzB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"package-owned-asset-file-path.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/package-owned-asset-file-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yCAAyC,EAAE,MAAM,6BAA6B,CAAC;AAExF,MAAM,UAAU,6BAA6B,CACzC,WAAmB,EACnB,aAAqB,EACrB,UAAyC;IAEzC,KAAK,MAAM,aAAa,IAAI,yCAAyC,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;QAChG,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5B,OAAO,aAAa,CAAC;QACzB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Maybe } from 'true-myth/maybe';
2
2
  import { isCodeFile } from "../common/code-files.js";
3
3
  import { createDependencyGraph } from "./dependency-graph.js";
4
+ import { moduleReferenceKind } from "./source-file-references.js";
4
5
  export function createDependencyScanner(dependencyScannerDependencies) {
5
6
  const { sourceMapFileLocator, typescriptProjectAnalyzer } = dependencyScannerDependencies;
6
7
  async function getDependencyNodeData(project, sourceFilePath, externalDependencies, options) {
@@ -13,39 +14,48 @@ export function createDependencyScanner(dependencyScannerDependencies) {
13
14
  project
14
15
  };
15
16
  }
16
- function localReferencesOf(references) {
17
- return references.filter((reference) => {
18
- return reference.kind !== 'external-package';
19
- });
20
- }
21
- function externalDependenciesOf(references) {
22
- return references.flatMap((reference) => {
23
- return reference.kind === 'external-package' ? [reference.packageName] : [];
24
- });
25
- }
26
- function referencedModulesOf(project, reference) {
27
- return reference.kind === 'local-code' ? project.getReferencedModules(reference.filePath) : [];
17
+ function collectReferenceLists(references) {
18
+ const localReferences = [];
19
+ const externalDependencies = [];
20
+ for (const reference of references) {
21
+ if (reference.kind === moduleReferenceKind.externalPackage) {
22
+ externalDependencies.push(reference.packageName);
23
+ }
24
+ else {
25
+ localReferences.push(reference);
26
+ }
27
+ }
28
+ return {
29
+ localReferences,
30
+ externalDependencies
31
+ };
28
32
  }
29
- function projectFor(reference, project) {
30
- return reference.kind === 'local-code' ? project : undefined;
33
+ async function connectLocalReferences(args) {
34
+ for (const localReference of args.localReferences) {
35
+ if (!args.graph.isKnown(localReference.filePath)) {
36
+ await args.scanReference(args.project, localReference, args.graph, args.options);
37
+ }
38
+ if (!args.graph.hasConnection(args.sourceFilePath, localReference.filePath)) {
39
+ args.graph.connect(args.sourceFilePath, localReference.filePath);
40
+ }
41
+ }
31
42
  }
32
43
  async function scanDependenciesOfReference(project, reference, graph, options) {
33
44
  const sourceFilePath = reference.filePath;
34
- const referencedModules = referencedModulesOf(project, reference);
35
- const localReferences = localReferencesOf(referencedModules);
36
- const nodeData = await getDependencyNodeData(projectFor(reference, project), sourceFilePath, externalDependenciesOf(referencedModules), options);
37
- graph.addDependency(sourceFilePath, {
38
- ...nodeData,
39
- ...(reference.kind === 'generated-manifest' ? { isGeneratedManifest: true } : {})
45
+ const referencedModules = reference.kind === moduleReferenceKind.localCode ? project.getReferencedModules(sourceFilePath) : [];
46
+ const { localReferences, externalDependencies } = collectReferenceLists(referencedModules);
47
+ const nodeData = await getDependencyNodeData(reference.kind === moduleReferenceKind.localCode ? project : undefined, sourceFilePath, externalDependencies, options);
48
+ graph.addDependency(sourceFilePath, reference.kind === moduleReferenceKind.generatedManifest
49
+ ? { ...nodeData, isGeneratedManifest: true }
50
+ : nodeData);
51
+ await connectLocalReferences({
52
+ graph,
53
+ localReferences,
54
+ options,
55
+ project,
56
+ scanReference: scanDependenciesOfReference,
57
+ sourceFilePath
40
58
  });
41
- for (const localReference of localReferences) {
42
- if (!graph.isKnown(localReference.filePath)) {
43
- await scanDependenciesOfReference(project, localReference, graph, options);
44
- }
45
- if (!graph.hasConnection(sourceFilePath, localReference.filePath)) {
46
- graph.connect(sourceFilePath, localReference.filePath);
47
- }
48
- }
49
59
  }
50
60
  return {
51
61
  async scan(entryPointFile, folder, options) {
@@ -60,7 +70,7 @@ export function createDependencyScanner(dependencyScannerDependencies) {
60
70
  resolveDeclarationFiles: scanOptions.resolveDeclarationFiles,
61
71
  mainPackageJson: scanOptions.mainPackageJson
62
72
  });
63
- await scanDependenciesOfReference(project, { kind: 'local-code', filePath: entryPointFile }, graph, scanOptions);
73
+ await scanDependenciesOfReference(project, { kind: moduleReferenceKind.localCode, filePath: entryPointFile }, graph, scanOptions);
64
74
  return graph;
65
75
  }
66
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/scanner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"source-file-references.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-file-references.ts"],"names":[],"mappings":"AAGA,OAAO,EAAM,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU"}
1
+ {"version":3,"file":"source-file-references.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-file-references.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU"}