packtory 0.0.10 → 0.0.11

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 (234) hide show
  1. package/artifacts/artifacts-builder.d.ts +0 -14
  2. package/artifacts/artifacts-builder.d.ts.map +1 -1
  3. package/artifacts/artifacts-builder.js +75 -0
  4. package/artifacts/artifacts-builder.js.map +1 -1
  5. package/bundle-emitter/emitter.d.ts +0 -30
  6. package/bundle-emitter/emitter.d.ts.map +1 -1
  7. package/bundle-emitter/emitter.js +34 -0
  8. package/bundle-emitter/emitter.js.map +1 -1
  9. package/bundle-emitter/extract-package-tarball.js +11 -0
  10. package/bundle-emitter/extract-package-tarball.js.map +1 -1
  11. package/bundle-emitter/registry-client.d.ts +0 -21
  12. package/bundle-emitter/registry-client.d.ts.map +1 -1
  13. package/bundle-emitter/registry-client.js +261 -0
  14. package/bundle-emitter/registry-client.js.map +1 -1
  15. package/bundle-emitter/repository-url-normalizer.js +36 -0
  16. package/bundle-emitter/repository-url-normalizer.js.map +1 -1
  17. package/checks/check-runner.js +5 -0
  18. package/checks/check-runner.js.map +1 -1
  19. package/checks/rules/registry.js +9 -0
  20. package/checks/rules/registry.js.map +1 -1
  21. package/common/clock.d.ts +0 -6
  22. package/common/clock.d.ts.map +1 -1
  23. package/common/code-files.js +4 -0
  24. package/common/code-files.js.map +1 -1
  25. package/config/additional-files.js +4 -0
  26. package/config/additional-files.js.map +1 -1
  27. package/config/automatic-versioning-settings.js +4 -0
  28. package/config/automatic-versioning-settings.js.map +1 -1
  29. package/config/config.js +2 -0
  30. package/config/config.js.map +1 -1
  31. package/config/dead-code-elimination-settings.d.ts +0 -1
  32. package/config/dead-code-elimination-settings.d.ts.map +1 -1
  33. package/config/dead-code-elimination-settings.js +19 -0
  34. package/config/dead-code-elimination-settings.js.map +1 -1
  35. package/config/dependency-policy.js +3 -0
  36. package/config/dependency-policy.js.map +1 -1
  37. package/config/main-package-json-schema.js +1 -0
  38. package/config/main-package-json-schema.js.map +1 -1
  39. package/config/manual-versioning-settings.js +4 -0
  40. package/config/manual-versioning-settings.js.map +1 -1
  41. package/config/package-config.js +6 -0
  42. package/config/package-config.js.map +1 -1
  43. package/config/package-interface.js +26 -0
  44. package/config/package-interface.js.map +1 -1
  45. package/config/package-json.d.ts +0 -1
  46. package/config/package-json.d.ts.map +1 -1
  47. package/config/package-json.js +16 -0
  48. package/config/package-json.js.map +1 -1
  49. package/config/packtory-config-schema.js +3 -0
  50. package/config/packtory-config-schema.js.map +1 -1
  51. package/config/publish-settings.js +22 -0
  52. package/config/publish-settings.js.map +1 -1
  53. package/config/registry-settings.d.ts +0 -18
  54. package/config/registry-settings.d.ts.map +1 -1
  55. package/config/registry-settings.js +38 -0
  56. package/config/registry-settings.js.map +1 -1
  57. package/config/root.js +4 -0
  58. package/config/root.js.map +1 -1
  59. package/config/sbom-settings.js +3 -0
  60. package/config/sbom-settings.js.map +1 -1
  61. package/config/validation.d.ts +0 -18
  62. package/config/validation.d.ts.map +1 -1
  63. package/config/validation.js +254 -0
  64. package/config/validation.js.map +1 -1
  65. package/config/versioning-settings.js +1 -0
  66. package/config/versioning-settings.js.map +1 -1
  67. package/dead-code-eliminator/analyzed-bundle.d.ts +0 -9
  68. package/dead-code-eliminator/analyzed-bundle.d.ts.map +1 -1
  69. package/dead-code-eliminator/analyzed-bundle.js +7 -0
  70. package/dead-code-eliminator/analyzed-bundle.js.map +1 -1
  71. package/dead-code-eliminator/eliminator.js +12 -1
  72. package/dead-code-eliminator/eliminator.js.map +1 -1
  73. package/dead-code-eliminator/load-bundle.js +10 -5
  74. package/dead-code-eliminator/load-bundle.js.map +1 -1
  75. package/dead-code-eliminator/reachability/binding-extractor.js +20 -7
  76. package/dead-code-eliminator/reachability/binding-extractor.js.map +1 -1
  77. package/dead-code-eliminator/reachability/reachability.js +1 -1
  78. package/dead-code-eliminator/reachability/reachability.js.map +1 -1
  79. package/dead-code-eliminator/transform/declaration-remover.js +3 -2
  80. package/dead-code-eliminator/transform/declaration-remover.js.map +1 -1
  81. package/dead-code-eliminator/variable-declaration-bindings.js +34 -0
  82. package/dead-code-eliminator/variable-declaration-bindings.js.map +1 -0
  83. package/dependency-scanner/dependency-graph.d.ts +0 -27
  84. package/dependency-scanner/dependency-graph.d.ts.map +1 -1
  85. package/dependency-scanner/dependency-graph.js +73 -0
  86. package/dependency-scanner/dependency-graph.js.map +1 -1
  87. package/dependency-scanner/external-dependencies.js +16 -0
  88. package/dependency-scanner/external-dependencies.js.map +1 -1
  89. package/dependency-scanner/scanner.d.ts +0 -13
  90. package/dependency-scanner/scanner.d.ts.map +1 -1
  91. package/dependency-scanner/scanner.js +69 -0
  92. package/dependency-scanner/scanner.js.map +1 -1
  93. package/dependency-scanner/source-file-references.js +10 -0
  94. package/dependency-scanner/source-file-references.js.map +1 -1
  95. package/dependency-scanner/source-map-file-locator.d.ts +0 -7
  96. package/dependency-scanner/source-map-file-locator.d.ts.map +1 -1
  97. package/dependency-scanner/source-map-file-locator.js +27 -0
  98. package/dependency-scanner/source-map-file-locator.js.map +1 -1
  99. package/dependency-scanner/typescript-file-host.d.ts +0 -9
  100. package/dependency-scanner/typescript-file-host.d.ts.map +1 -1
  101. package/dependency-scanner/typescript-file-host.js +114 -0
  102. package/dependency-scanner/typescript-file-host.js.map +1 -1
  103. package/dependency-scanner/typescript-project-analyzer.d.ts +0 -17
  104. package/dependency-scanner/typescript-project-analyzer.d.ts.map +1 -1
  105. package/dependency-scanner/typescript-project-analyzer.js +52 -0
  106. package/dependency-scanner/typescript-project-analyzer.js.map +1 -1
  107. package/directed-graph/graph.d.ts +0 -26
  108. package/directed-graph/graph.d.ts.map +1 -1
  109. package/directed-graph/graph.js +229 -0
  110. package/directed-graph/graph.js.map +1 -1
  111. package/file-manager/compare.js +17 -0
  112. package/file-manager/compare.js.map +1 -1
  113. package/file-manager/equal.js +5 -0
  114. package/file-manager/equal.js.map +1 -1
  115. package/file-manager/file-manager.d.ts +0 -15
  116. package/file-manager/file-manager.d.ts.map +1 -1
  117. package/file-manager/file-manager.js +52 -0
  118. package/file-manager/file-manager.js.map +1 -1
  119. package/file-manager/permissions.js +26 -0
  120. package/file-manager/permissions.js.map +1 -1
  121. package/linker/linker.d.ts +0 -8
  122. package/linker/linker.d.ts.map +1 -1
  123. package/linker/linker.js +23 -0
  124. package/linker/linker.js.map +1 -1
  125. package/linker/resource-graph.js +25 -0
  126. package/linker/resource-graph.js.map +1 -1
  127. package/linker/source-modifier/import-paths.js +22 -0
  128. package/linker/source-modifier/import-paths.js.map +1 -1
  129. package/linker/substitute-bundles.js +84 -0
  130. package/linker/substitute-bundles.js.map +1 -1
  131. package/linker/substituted-resource-graph.js +72 -0
  132. package/linker/substituted-resource-graph.js.map +1 -1
  133. package/package-surface/modules.js +232 -5
  134. package/package-surface/modules.js.map +1 -1
  135. package/package-surface/surface.d.ts +0 -1
  136. package/package-surface/surface.d.ts.map +1 -1
  137. package/package-surface/surface.js +15 -0
  138. package/package-surface/surface.js.map +1 -1
  139. package/package.json +1 -1
  140. package/packtory/map-config.d.ts +0 -10
  141. package/packtory/map-config.d.ts.map +1 -1
  142. package/packtory/map-config.js +14 -0
  143. package/packtory/map-config.js.map +1 -1
  144. package/packtory/normalize-paths.js +24 -0
  145. package/packtory/normalize-paths.js.map +1 -1
  146. package/packtory/package-processor-build.js +72 -0
  147. package/packtory/package-processor-build.js.map +1 -1
  148. package/packtory/package-processor-publish.d.ts +0 -5
  149. package/packtory/package-processor-publish.d.ts.map +1 -1
  150. package/packtory/package-processor-publish.js +133 -0
  151. package/packtory/package-processor-publish.js.map +1 -1
  152. package/packtory/package-processor.d.ts +0 -17
  153. package/packtory/package-processor.d.ts.map +1 -1
  154. package/packtory/package-processor.js +8 -0
  155. package/packtory/package-processor.js.map +1 -1
  156. package/packtory/packtory-results.d.ts +0 -10
  157. package/packtory/packtory-results.d.ts.map +1 -1
  158. package/packtory/packtory-results.js +15 -0
  159. package/packtory/packtory-results.js.map +1 -1
  160. package/packtory/packtory.d.ts +0 -8
  161. package/packtory/packtory.d.ts.map +1 -1
  162. package/packtory/prepare-package-options.d.ts +0 -2
  163. package/packtory/prepare-package-options.d.ts.map +1 -1
  164. package/packtory/prepare-package-options.js +122 -0
  165. package/packtory/prepare-package-options.js.map +1 -1
  166. package/packtory/resolved-package.d.ts +0 -2
  167. package/packtory/resolved-package.d.ts.map +1 -1
  168. package/packtory/resolved-package.js +31 -0
  169. package/packtory/resolved-package.js.map +1 -1
  170. package/packtory/scheduler.d.ts +0 -37
  171. package/packtory/scheduler.d.ts.map +1 -1
  172. package/progress/progress-broadcaster.d.ts +0 -13
  173. package/progress/progress-broadcaster.d.ts.map +1 -1
  174. package/progress/progress-broadcaster.js +45 -0
  175. package/progress/progress-broadcaster.js.map +1 -1
  176. package/report/artifact-entry-merger.js +20 -0
  177. package/report/artifact-entry-merger.js.map +1 -1
  178. package/report/inspectors.js +73 -0
  179. package/report/inspectors.js.map +1 -1
  180. package/report/report-aggregator.d.ts +0 -5
  181. package/report/report-aggregator.d.ts.map +1 -1
  182. package/report/report-aggregator.js +185 -0
  183. package/report/report-aggregator.js.map +1 -1
  184. package/resource-resolver/content.js +53 -0
  185. package/resource-resolver/content.js.map +1 -1
  186. package/resource-resolver/resolved-bundle.d.ts +0 -10
  187. package/resource-resolver/resolved-bundle.d.ts.map +1 -1
  188. package/resource-resolver/resource-resolve-options.d.ts +0 -4
  189. package/resource-resolver/resource-resolve-options.d.ts.map +1 -1
  190. package/resource-resolver/resource-resolve-options.js +12 -0
  191. package/resource-resolver/resource-resolve-options.js.map +1 -1
  192. package/resource-resolver/resource-resolver.d.ts +0 -8
  193. package/resource-resolver/resource-resolver.d.ts.map +1 -1
  194. package/resource-resolver/resource-resolver.js +78 -0
  195. package/resource-resolver/resource-resolver.js.map +1 -1
  196. package/sbom/extract-license.js +10 -0
  197. package/sbom/extract-license.js.map +1 -1
  198. package/sbom/license-resolver.d.ts +0 -11
  199. package/sbom/license-resolver.d.ts.map +1 -1
  200. package/sbom/license-resolver.js +19 -0
  201. package/sbom/license-resolver.js.map +1 -1
  202. package/sbom/sbom-file.d.ts +0 -12
  203. package/sbom/sbom-file.d.ts.map +1 -1
  204. package/sbom/sbom-file.js +54 -0
  205. package/sbom/sbom-file.js.map +1 -1
  206. package/sbom/sbom-serializer.d.ts +0 -4
  207. package/sbom/sbom-serializer.d.ts.map +1 -1
  208. package/sbom/sbom-serializer.js +9 -0
  209. package/sbom/sbom-serializer.js.map +1 -1
  210. package/tar/extract-tar.js +38 -0
  211. package/tar/extract-tar.js.map +1 -1
  212. package/tar/tarball-builder.d.ts +0 -4
  213. package/tar/tarball-builder.d.ts.map +1 -1
  214. package/version-manager/manager.d.ts +0 -4
  215. package/version-manager/manager.d.ts.map +1 -1
  216. package/version-manager/manager.js +46 -0
  217. package/version-manager/manager.js.map +1 -1
  218. package/version-manager/manifest/builder.js +56 -0
  219. package/version-manager/manifest/builder.js.map +1 -1
  220. package/version-manager/manifest/serialize.js +46 -0
  221. package/version-manager/manifest/serialize.js.map +1 -1
  222. package/version-manager/manifest/sort-values.js +16 -0
  223. package/version-manager/manifest/sort-values.js.map +1 -1
  224. package/version-manager/specifier-classifier.js +33 -0
  225. package/version-manager/specifier-classifier.js.map +1 -1
  226. package/version-manager/specifier-errors.js +43 -0
  227. package/version-manager/specifier-errors.js.map +1 -1
  228. package/version-manager/versioned-bundle-dependencies.js +107 -0
  229. package/version-manager/versioned-bundle-dependencies.js.map +1 -1
  230. package/version-manager/versioned-bundle-imports.js +72 -0
  231. package/version-manager/versioned-bundle-imports.js.map +1 -1
  232. package/version-manager/versioned-bundle.js +60 -0
  233. package/version-manager/versioned-bundle.js.map +1 -1
  234. package/sbom.cdx.json +0 -390
@@ -1,28 +1,2 @@
1
- type GraphNodeId = number | string;
2
- type GraphNode<TId extends GraphNodeId, TData> = {
3
- readonly id: TId;
4
- readonly data: TData;
5
- readonly adjacentNodeIds: Set<TId>;
6
- readonly incomingEdges: number;
7
- };
8
- type GraphEdge<TId extends GraphNodeId> = {
9
- readonly from: TId;
10
- readonly to: TId;
11
- };
12
- type Visitor<TId extends GraphNodeId, TData> = (node: Readonly<GraphNode<TId, TData>>) => void;
13
- export type DirectedGraph<TId extends GraphNodeId, TData> = {
14
- addNode: (id: TId, data: TData) => void;
15
- connect: (edge: Readonly<GraphEdge<TId>>) => void;
16
- disconnect: (edge: Readonly<GraphEdge<TId>>) => void;
17
- hasNode: (id: TId) => boolean;
18
- hasConnection: (edge: Readonly<GraphEdge<TId>>) => boolean;
19
- visitBreadthFirstSearch: (startId: TId, visitor: Visitor<TId, TData>) => void;
20
- detectCycles: () => readonly (readonly TId[])[];
21
- isCyclic: () => boolean;
22
- getTopologicalGenerations: () => readonly (readonly TId[])[];
23
- reverse: () => DirectedGraph<TId, TData>;
24
- getAdjacentIds: (id: TId) => ReadonlySet<TId>;
25
- traverse: (visitor: Visitor<TId, TData>) => void;
26
- };
27
1
  export {};
28
2
  //# sourceMappingURL=graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../source/directed-graph/graph.ts"],"names":[],"mappings":"AACA,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM;AAElC,KAAK,SAAS,CAAC,GAAG,SAAS,WAAW,EAAE,KAAK,IAAI;IAC7C,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAClC;AAED,KAAK,SAAS,CAAC,GAAG,SAAS,WAAW,IAAI;IACtC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;CACpB;AAED,KAAK,OAAO,CAAC,GAAG,SAAS,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI;AAE9F,MAAM,MAAM,aAAa,CAAC,GAAG,SAAS,WAAW,EAAE,KAAK,IAAI;IACxD,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;IAClD,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;IACrD,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC;IAC3D,uBAAuB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;IAC9E,YAAY,EAAE,MAAM,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC;IAChD,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,yBAAyB,EAAE,MAAM,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC;IAC7D,OAAO,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;CACpD"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../source/directed-graph/graph.ts"],"names":[],"mappings":""}
@@ -1 +1,230 @@
1
+ const breadthFirstTraversalBudgetExceededErrorMessage = 'Breadth-first traversal exceeded the maximum iteration budget';
2
+ function addAdjacentNodeId(node, idToAdd) {
3
+ return {
4
+ id: node.id,
5
+ data: node.data,
6
+ incomingEdges: node.incomingEdges,
7
+ adjacentNodeIds: new Set([...node.adjacentNodeIds, idToAdd])
8
+ };
9
+ }
10
+ function removeAdjacentNodeId(node, idToRemove) {
11
+ const adjacentNodeIds = new Set(node.adjacentNodeIds);
12
+ adjacentNodeIds.delete(idToRemove);
13
+ return {
14
+ id: node.id,
15
+ data: node.data,
16
+ incomingEdges: node.incomingEdges,
17
+ adjacentNodeIds
18
+ };
19
+ }
20
+ function withAdjustedIncomingEdges(node, delta) {
21
+ return {
22
+ id: node.id,
23
+ data: node.data,
24
+ adjacentNodeIds: node.adjacentNodeIds,
25
+ incomingEdges: node.incomingEdges + delta
26
+ };
27
+ }
28
+ function increaseIncomingEdges(node) {
29
+ return withAdjustedIncomingEdges(node, 1);
30
+ }
31
+ function decreaseIncomingEdges(node) {
32
+ return withAdjustedIncomingEdges(node, -1);
33
+ }
34
+ function getNonVisitedAdjacentIds(node) {
35
+ return Array.from(node.adjacentNodeIds);
36
+ }
37
+ export function createDirectedGraph() {
38
+ const nodes = new Map();
39
+ function getNode(id) {
40
+ const node = nodes.get(id);
41
+ if (node === undefined) {
42
+ throw new Error(`Node with id "${id}" does not exist`);
43
+ }
44
+ return node;
45
+ }
46
+ function getIncomingEdgesPerNode() {
47
+ const incomingEdgesPerNode = new Map();
48
+ for (const node of nodes.values()) {
49
+ incomingEdgesPerNode.set(node.id, node.incomingEdges);
50
+ }
51
+ return incomingEdgesPerNode;
52
+ }
53
+ function decreaseIncomingEdgesPerNodeForAdjacentNodes(incomingEdgesPerNode, ids) {
54
+ const newIncomingEdgesPerNode = new Map(incomingEdgesPerNode);
55
+ for (const id of ids) {
56
+ const node = getNode(id);
57
+ for (const adjacentNodeId of node.adjacentNodeIds) {
58
+ const degree = Number(newIncomingEdgesPerNode.get(adjacentNodeId));
59
+ newIncomingEdgesPerNode.set(adjacentNodeId, degree - 1);
60
+ }
61
+ }
62
+ return newIncomingEdgesPerNode;
63
+ }
64
+ function getTraversalBudget() {
65
+ let edgeCount = 0;
66
+ for (const node of nodes.values()) {
67
+ edgeCount += node.adjacentNodeIds.size;
68
+ }
69
+ return nodes.size + edgeCount + 1;
70
+ }
71
+ function detectCyclesForNode(baseNode, visitedIds) {
72
+ if (visitedIds.length === nodes.size + 1) {
73
+ throw new Error('Cycle detection exceeded the maximum traversal depth');
74
+ }
75
+ const newVisitedIds = [...visitedIds, baseNode.id];
76
+ const cycles = [];
77
+ for (const id of baseNode.adjacentNodeIds) {
78
+ if (newVisitedIds.includes(id)) {
79
+ cycles.push([...newVisitedIds, id]);
80
+ continue;
81
+ }
82
+ const cyclesInAdjacentNode = detectCyclesForNode(getNode(id), newVisitedIds);
83
+ cycles.push(...cyclesInAdjacentNode);
84
+ }
85
+ return cycles;
86
+ }
87
+ function collectCurrentGeneration(alreadyDiscovered, incomingEdgesPerNode) {
88
+ const currentGeneration = [];
89
+ for (const node of nodes.values()) {
90
+ if (!alreadyDiscovered.has(node.id) && incomingEdgesPerNode.get(node.id) === 0) {
91
+ currentGeneration.push(node.id);
92
+ }
93
+ }
94
+ return currentGeneration;
95
+ }
96
+ function detectCycles() {
97
+ const cycles = [];
98
+ const idsWithinCycles = new Set();
99
+ for (const baseNode of nodes.values()) {
100
+ if (!idsWithinCycles.has(baseNode.id)) {
101
+ const cyclesForNode = detectCyclesForNode(baseNode, []);
102
+ cycles.push(...cyclesForNode);
103
+ for (const id of cyclesForNode.flat()) {
104
+ idsWithinCycles.add(id);
105
+ }
106
+ }
107
+ }
108
+ return cycles;
109
+ }
110
+ function isCyclic() {
111
+ const cycles = detectCycles();
112
+ return cycles.length > 0;
113
+ }
114
+ function visitBreadthFirstSearch(startId, visitor) {
115
+ const startNode = getNode(startId);
116
+ const queue = [startNode];
117
+ const visited = new Set();
118
+ const traversalBudget = getTraversalBudget();
119
+ for (let nextNodeIndex = 0; nextNodeIndex < traversalBudget; nextNodeIndex += 1) {
120
+ const head = queue[nextNodeIndex];
121
+ if (head === undefined) {
122
+ return;
123
+ }
124
+ if (visited.has(head.id)) {
125
+ continue;
126
+ }
127
+ visited.add(head.id);
128
+ visitor(head);
129
+ const nonVisitedAdjacentIds = getNonVisitedAdjacentIds(head);
130
+ for (const id of nonVisitedAdjacentIds) {
131
+ const adjacentNode = getNode(id);
132
+ queue.push(adjacentNode);
133
+ }
134
+ }
135
+ throw new Error(breadthFirstTraversalBudgetExceededErrorMessage);
136
+ }
137
+ function hasNode(id) {
138
+ return nodes.has(id);
139
+ }
140
+ function getAdjacentIds(id) {
141
+ const node = getNode(id);
142
+ return node.adjacentNodeIds;
143
+ }
144
+ function addNode(id, data) {
145
+ if (nodes.has(id)) {
146
+ throw new Error(`Node with id "${id}" already exists`);
147
+ }
148
+ nodes.set(id, { id, data, adjacentNodeIds: new Set(), incomingEdges: 0 });
149
+ }
150
+ function hasConnection(edge) {
151
+ const fromNode = getNode(edge.from);
152
+ return fromNode.adjacentNodeIds.has(edge.to);
153
+ }
154
+ function connect(edge) {
155
+ const fromNode = getNode(edge.from);
156
+ const toNode = getNode(edge.to);
157
+ if (fromNode.adjacentNodeIds.has(toNode.id)) {
158
+ throw new Error(`Edge from "${edge.from}" to "${toNode.id}" already exists`);
159
+ }
160
+ nodes.set(edge.from, addAdjacentNodeId(fromNode, toNode.id));
161
+ nodes.set(edge.to, increaseIncomingEdges(getNode(edge.to)));
162
+ }
163
+ function disconnect(edge) {
164
+ const fromNode = getNode(edge.from);
165
+ const toNode = getNode(edge.to);
166
+ if (!fromNode.adjacentNodeIds.has(toNode.id)) {
167
+ throw new Error(`Edge from "${edge.from}" to "${toNode.id}" does not exist`);
168
+ }
169
+ nodes.set(edge.from, removeAdjacentNodeId(fromNode, toNode.id));
170
+ nodes.set(edge.to, decreaseIncomingEdges(toNode));
171
+ }
172
+ function traverse(visitor) {
173
+ for (const [nodeId, node] of nodes) {
174
+ if (node.incomingEdges === 0) {
175
+ visitBreadthFirstSearch(nodeId, visitor);
176
+ }
177
+ }
178
+ }
179
+ function getTopologicalGenerations() {
180
+ if (isCyclic()) {
181
+ throw new Error('Failed to determine topological generations, current graph is cyclic');
182
+ }
183
+ const generations = [];
184
+ let alreadyDiscovered = new Set();
185
+ let incomingEdgesPerNode = getIncomingEdgesPerNode();
186
+ const generationAttempts = Array.from({ length: nodes.size + 1 }, (_unusedEntry, index) => {
187
+ return index + 1;
188
+ });
189
+ let exhaustedAttempts = 0;
190
+ for (const attempt of generationAttempts) {
191
+ exhaustedAttempts = attempt;
192
+ const currentGeneration = collectCurrentGeneration(alreadyDiscovered, incomingEdgesPerNode);
193
+ if (currentGeneration.length === 0) {
194
+ return generations;
195
+ }
196
+ const currentlyDiscovered = new Set([...alreadyDiscovered, ...currentGeneration]);
197
+ generations.push(Array.from(currentGeneration));
198
+ alreadyDiscovered = currentlyDiscovered;
199
+ incomingEdgesPerNode = decreaseIncomingEdgesPerNodeForAdjacentNodes(incomingEdgesPerNode, Array.from(currentGeneration));
200
+ }
201
+ throw new Error(`Topological generation discovery did not make progress after ${exhaustedAttempts} attempts`);
202
+ }
203
+ function reverse() {
204
+ const reversedGraph = createDirectedGraph();
205
+ for (const node of nodes.values()) {
206
+ reversedGraph.addNode(node.id, node.data);
207
+ }
208
+ for (const node of nodes.values()) {
209
+ for (const adjacentNodeId of node.adjacentNodeIds) {
210
+ reversedGraph.connect({ from: adjacentNodeId, to: node.id });
211
+ }
212
+ }
213
+ return reversedGraph;
214
+ }
215
+ return {
216
+ addNode,
217
+ getAdjacentIds,
218
+ hasNode,
219
+ hasConnection,
220
+ connect,
221
+ disconnect,
222
+ visitBreadthFirstSearch,
223
+ traverse,
224
+ detectCycles,
225
+ isCyclic,
226
+ getTopologicalGenerations,
227
+ reverse
228
+ };
229
+ }
1
230
  //# sourceMappingURL=graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../source/directed-graph/graph.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../source/directed-graph/graph.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,20 @@
1
1
  import { sortBy } from 'remeda';
2
2
  import { areFileDescriptionEqual } from "./equal.js";
3
+ export function compareFileDescriptions(fileDescriptionsA, fileDescriptionsB) {
4
+ if (fileDescriptionsA.length !== fileDescriptionsB.length) {
5
+ return { status: 'not-equal' };
6
+ }
7
+ const byFilePath = (fileDescription) => {
8
+ return fileDescription.filePath;
9
+ };
10
+ const sortedFileDescriptionsA = sortBy(fileDescriptionsA, byFilePath);
11
+ const sortedFileDescriptionsB = sortBy(fileDescriptionsB, byFilePath);
12
+ for (const [index, fileDescriptionA] of sortedFileDescriptionsA.entries()) {
13
+ const fileDescriptionB = sortedFileDescriptionsB[index];
14
+ if (fileDescriptionB === undefined || !areFileDescriptionEqual(fileDescriptionA, fileDescriptionB)) {
15
+ return { status: 'not-equal' };
16
+ }
17
+ }
18
+ return { status: 'equal' };
19
+ }
3
20
  //# sourceMappingURL=compare.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../source/file-manager/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../source/file-manager/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAOrD,MAAM,UAAU,uBAAuB,CACnC,iBAA6C,EAC7C,iBAA6C;IAE7C,IAAI,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,eAAgC,EAAU,EAAE;QAC5D,OAAO,eAAe,CAAC,QAAQ,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAEtE,KAAK,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC;QACxE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAExD,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACjG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
@@ -1 +1,6 @@
1
+ export function areFileDescriptionEqual(first, second) {
2
+ return (first.filePath === second.filePath &&
3
+ first.content === second.content &&
4
+ first.isExecutable === second.isExecutable);
5
+ }
1
6
  //# sourceMappingURL=equal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"equal.js","sourceRoot":"","sources":["../../../../source/file-manager/equal.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"equal.js","sourceRoot":"","sources":["../../../../source/file-manager/equal.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,KAAsB,EAAE,MAAuB;IACnF,OAAO,CACH,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;QAClC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QAChC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,CAC7C,CAAC;AACN,CAAC"}
@@ -1,19 +1,4 @@
1
1
  import fs from 'node:fs';
2
2
  import type { TransferableFileDescription } from './file-description.ts';
3
- export type FileManagerDependencies = {
4
- readonly hostFileSystem: typeof fs.promises;
5
- };
6
- type FileOrFolderReadability = {
7
- readonly isReadable: boolean;
8
- };
9
- export type FileManager = {
10
- checkReadability: (fileOrFolderPath: string) => Promise<FileOrFolderReadability>;
11
- readFile: (filePath: string) => Promise<string>;
12
- writeFile: (filePath: string, content: string) => Promise<void>;
13
- setExecutable: (filePath: string, executable: boolean) => Promise<void>;
14
- copyFile: (from: string, to: string) => Promise<void>;
15
- getTransferableFileDescriptionFromPath: (sourceFilePath: string, targetFilePath: string) => Promise<TransferableFileDescription>;
16
- };
17
- export declare function createFileManager(dependencies: FileManagerDependencies): FileManager;
18
3
  export {};
19
4
  //# sourceMappingURL=file-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../../../source/file-manager/file-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC;CAC/C,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACjF,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,sCAAsC,EAAE,CACpC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,KACrB,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC7C,CAAC;AAKF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,uBAAuB,GAAG,WAAW,CA8DpF"}
1
+ {"version":3,"file":"file-manager.d.ts","sourceRoot":"","sources":["../../../../source/file-manager/file-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS;AAExB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB"}
@@ -1,4 +1,56 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { isExecutableFileMode } from "./permissions.js";
4
+ const executableFileMode = 0o755;
5
+ const regularFileMode = 0o644;
6
+ export function createFileManager(dependencies) {
7
+ const { hostFileSystem } = dependencies;
8
+ async function checkReadability(fileOrFolderPath) {
9
+ try {
10
+ await hostFileSystem.access(fileOrFolderPath, fs.constants.R_OK);
11
+ return { isReadable: true };
12
+ }
13
+ catch {
14
+ return { isReadable: false };
15
+ }
16
+ }
17
+ async function writeFile(filePath, content) {
18
+ const containingFolder = path.dirname(filePath);
19
+ const parentReadability = await checkReadability(containingFolder);
20
+ if (!parentReadability.isReadable) {
21
+ await hostFileSystem.mkdir(containingFolder, { recursive: true });
22
+ }
23
+ await hostFileSystem.writeFile(filePath, content, { encoding: 'utf8' });
24
+ }
25
+ async function readFile(filePath) {
26
+ return hostFileSystem.readFile(filePath, { encoding: 'utf8' });
27
+ }
28
+ async function getFileMode(filePath) {
29
+ const stats = await hostFileSystem.stat(filePath);
30
+ return stats.mode;
31
+ }
32
+ async function setExecutable(filePath, executable) {
33
+ const mode = executable ? executableFileMode : regularFileMode;
34
+ await hostFileSystem.chmod(filePath, mode);
35
+ }
36
+ return {
37
+ checkReadability,
38
+ writeFile,
39
+ setExecutable,
40
+ readFile,
41
+ async getTransferableFileDescriptionFromPath(sourceFilePath, targetFilePath) {
42
+ const mode = await getFileMode(sourceFilePath);
43
+ return {
44
+ sourceFilePath,
45
+ targetFilePath,
46
+ content: await readFile(sourceFilePath),
47
+ isExecutable: isExecutableFileMode(mode)
48
+ };
49
+ },
50
+ async copyFile(from, to) {
51
+ const content = await readFile(from);
52
+ await writeFile(to, content);
53
+ }
54
+ };
55
+ }
4
56
  //# sourceMappingURL=file-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-manager.js","sourceRoot":"","sources":["../../../../source/file-manager/file-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS;AACxB,OAAO,IAAI,MAAM,WAAW;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB"}
1
+ {"version":3,"file":"file-manager.js","sourceRoot":"","sources":["../../../../source/file-manager/file-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAsBxD,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,MAAM,UAAU,iBAAiB,CAAC,YAAqC;IACnE,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;IAExC,KAAK,UAAU,gBAAgB,CAAC,gBAAwB;QACpD,IAAI,CAAC;YACD,MAAM,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACjE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAe;QACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAEnE,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;YAChC,MAAM,cAAc,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;QACpC,OAAO,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,QAAgB;QACvC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,UAAmB;QAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC;QAC/D,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACH,gBAAgB;QAEhB,SAAS;QAET,aAAa;QAEb,QAAQ;QAER,KAAK,CAAC,sCAAsC,CAAC,cAAc,EAAE,cAAc;YACvE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;YAE/C,OAAO;gBACH,cAAc;gBACd,cAAc;gBACd,OAAO,EAAE,MAAM,QAAQ,CAAC,cAAc,CAAC;gBACvC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC;aAC3C,CAAC;QACN,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -1,2 +1,28 @@
1
1
  import { convert } from 'unix-permissions';
2
+ function hasExecutePermission(permission) {
3
+ if (permission === undefined) {
4
+ return false;
5
+ }
6
+ return permission.execute === true;
7
+ }
8
+ function areAllPermissionsExecutable(permissions) {
9
+ return (hasExecutePermission(permissions.user) &&
10
+ hasExecutePermission(permissions.group) &&
11
+ hasExecutePermission(permissions.others));
12
+ }
13
+ function getPermissions(mode) {
14
+ try {
15
+ return convert.object(mode);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ export function isExecutableFileMode(mode) {
22
+ const permissions = getPermissions(mode);
23
+ if (permissions === null) {
24
+ return false;
25
+ }
26
+ return areAllPermissionsExecutable(permissions);
27
+ }
2
28
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../source/file-manager/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../source/file-manager/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,SAAS,oBAAoB,CAAC,UAAyD;IACnF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,2BAA2B,CAAC,WAA8C;IAC/E,OAAO,CACH,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC;QACtC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC;QACvC,oBAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,CAC3C,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAChC,IAAI,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC7C,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,2BAA2B,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC"}
@@ -1,12 +1,4 @@
1
1
  import type { ResolvedBundle } from '../resource-resolver/resolved-bundle.ts';
2
2
  import type { BundleSubstitutionSource, LinkedBundle } from './linked-bundle.ts';
3
- type LinkBundleOptions = {
4
- readonly bundle: ResolvedBundle;
5
- readonly bundleDependencies: readonly BundleSubstitutionSource[];
6
- };
7
- export type BundleLinker = {
8
- linkBundle: (options: LinkBundleOptions) => Promise<LinkedBundle>;
9
- };
10
- export declare function createBundleLinker(): BundleLinker;
11
3
  export {};
12
4
  //# sourceMappingURL=linker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linker.d.ts","sourceRoot":"","sources":["../../../../source/linker/linker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGjF,KAAK,iBAAiB,GAAG;IACrB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACrE,CAAC;AAWF,wBAAgB,kBAAkB,IAAI,YAAY,CAejD"}
1
+ {"version":3,"file":"linker.d.ts","sourceRoot":"","sources":["../../../../source/linker/linker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC;AAE7E,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,oBAAoB"}
package/linker/linker.js CHANGED
@@ -1,3 +1,26 @@
1
1
  import { substituteDependencies } from "./substitute-bundles.js";
2
2
  import { createGraphFromResolvedBundle } from "./resource-graph.js";
3
+ function flattenRoots(roots) {
4
+ return Object.values(roots).flatMap((root) => {
5
+ if (root.declarationFile !== undefined) {
6
+ return [root.js.sourceFilePath, root.declarationFile.sourceFilePath];
7
+ }
8
+ return [root.js.sourceFilePath];
9
+ });
10
+ }
11
+ export function createBundleLinker() {
12
+ return {
13
+ async linkBundle(options) {
14
+ const { bundle, bundleDependencies } = options;
15
+ const resourceGraph = createGraphFromResolvedBundle(bundle);
16
+ const substitutedGraph = substituteDependencies(resourceGraph, bundleDependencies);
17
+ return {
18
+ ...substitutedGraph.flatten(flattenRoots(bundle.roots)),
19
+ name: bundle.name,
20
+ roots: bundle.roots,
21
+ surface: bundle.surface
22
+ };
23
+ }
24
+ };
25
+ }
3
26
  //# sourceMappingURL=linker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linker.js","sourceRoot":"","sources":["../../../../source/linker/linker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB;AAEhE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB"}
1
+ {"version":3,"file":"linker.js","sourceRoot":"","sources":["../../../../source/linker/linker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAWpE,SAAS,YAAY,CAAC,KAA8B;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,kBAAkB;IAC9B,OAAO;QACH,KAAK,CAAC,UAAU,CAAC,OAAO;YACpB,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;YAC/C,MAAM,aAAa,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;YAEnF,OAAO;gBACH,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;aAC1B,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -1,3 +1,28 @@
1
1
  import { filter, map, pipe } from 'remeda';
2
2
  import { createDirectedGraph } from "../directed-graph/graph.js";
3
+ function collectResourceSpecificExternalDependencies(resource, externalDependencies) {
4
+ return pipe(Array.from(externalDependencies.values()), filter((dependency) => {
5
+ return dependency.referencedFrom.includes(resource.fileDescription.sourceFilePath);
6
+ }), map((dependency) => {
7
+ return dependency.name;
8
+ }));
9
+ }
10
+ export function createGraphFromResolvedBundle(bundle) {
11
+ const graph = createDirectedGraph();
12
+ for (const resource of bundle.contents) {
13
+ const externalDependencies = collectResourceSpecificExternalDependencies(resource, bundle.externalDependencies);
14
+ graph.addNode(resource.fileDescription.sourceFilePath, {
15
+ fileDescription: resource.fileDescription,
16
+ externalDependencies,
17
+ project: resource.project,
18
+ isExplicitlyIncluded: resource.isExplicitlyIncluded
19
+ });
20
+ }
21
+ for (const resource of bundle.contents) {
22
+ for (const directDependency of resource.directDependencies) {
23
+ graph.connect({ from: resource.fileDescription.sourceFilePath, to: directDependency });
24
+ }
25
+ }
26
+ return graph;
27
+ }
3
28
  //# sourceMappingURL=resource-graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-graph.js","sourceRoot":"","sources":["../../../../source/linker/resource-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,QAAQ;AAE1C,OAAO,EAAsB,mBAAmB,EAAE,MAAM,4BAA4B"}
1
+ {"version":3,"file":"resource-graph.js","sourceRoot":"","sources":["../../../../source/linker/resource-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAsB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAarF,SAAS,2CAA2C,CAChD,QAAwB,EACxB,oBAA0C;IAE1C,OAAO,IAAI,CACP,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EACzC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QAClB,OAAO,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IACvF,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACf,OAAO,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAsB;IAChE,MAAM,KAAK,GAAG,mBAAmB,EAAiC,CAAC;IAEnE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,oBAAoB,GAAG,2CAA2C,CAAC,QAAQ,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAEhH,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE;YACnD,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,oBAAoB;YACpB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;SACtD,CAAC,CAAC;IACP,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,KAAK,MAAM,gBAAgB,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YACzD,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC3F,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -1,3 +1,25 @@
1
1
  import { resolveSourceFileForLiteral } from "../../dependency-scanner/source-file-references.js";
2
2
  import { getSourcePathFromSourceFile } from "../../dependency-scanner/typescript-project-analyzer.js";
3
+ function applyImportPathReplacements(sourceFile, replacements) {
4
+ for (const literal of sourceFile.getImportStringLiterals()) {
5
+ const resolvedSourceFile = resolveSourceFileForLiteral(literal, sourceFile);
6
+ if (resolvedSourceFile !== undefined) {
7
+ const replacement = replacements.get(getSourcePathFromSourceFile(resolvedSourceFile));
8
+ if (replacement !== undefined) {
9
+ literal.setLiteralValue(replacement);
10
+ }
11
+ }
12
+ }
13
+ }
14
+ export function replaceImportPaths(project, sourceFilePath, sourceContent, replacements) {
15
+ if (project === undefined) {
16
+ return sourceContent;
17
+ }
18
+ const sourceFile = project.getSourceFile(sourceFilePath);
19
+ if (sourceFile === undefined) {
20
+ return sourceContent;
21
+ }
22
+ applyImportPathReplacements(sourceFile, replacements);
23
+ return sourceFile.getFullText();
24
+ }
3
25
  //# sourceMappingURL=import-paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-paths.js","sourceRoot":"","sources":["../../../../../source/linker/source-modifier/import-paths.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD;AAChG,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD"}
1
+ {"version":3,"file":"import-paths.js","sourceRoot":"","sources":["../../../../../source/linker/source-modifier/import-paths.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AAItG,SAAS,2BAA2B,CAAC,UAAsB,EAAE,YAA0B;IACnF,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,uBAAuB,EAAE,EAAE,CAAC;QACzD,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACtF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,OAA4B,EAC5B,cAAsB,EACtB,aAAqB,EACrB,YAA0B;IAE1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC"}