@atlaspack/core 2.13.2-dev.3682 → 2.14.0

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 (87) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/package.json +20 -20
  3. package/src/Atlaspack.js +3 -2
  4. package/src/atlaspack-v3/AtlaspackV3.js +24 -8
  5. package/src/loadAtlaspackPlugin.js +26 -71
  6. package/src/projectPath.js +14 -1
  7. package/src/requests/WriteBundlesRequest.js +31 -22
  8. package/LICENSE +0 -201
  9. package/lib/AssetGraph.js +0 -521
  10. package/lib/Atlaspack.js +0 -676
  11. package/lib/AtlaspackConfig.js +0 -298
  12. package/lib/AtlaspackConfig.schema.js +0 -103
  13. package/lib/BundleGraph.js +0 -1527
  14. package/lib/CommittedAsset.js +0 -155
  15. package/lib/Dependency.js +0 -136
  16. package/lib/Environment.js +0 -144
  17. package/lib/IdentifierRegistry.js +0 -36
  18. package/lib/InternalConfig.js +0 -56
  19. package/lib/PackagerRunner.js +0 -525
  20. package/lib/ReporterRunner.js +0 -151
  21. package/lib/RequestTracker.js +0 -1178
  22. package/lib/SymbolPropagation.js +0 -618
  23. package/lib/TargetDescriptor.schema.js +0 -118
  24. package/lib/Transformation.js +0 -522
  25. package/lib/UncommittedAsset.js +0 -348
  26. package/lib/Validation.js +0 -203
  27. package/lib/applyRuntimes.js +0 -355
  28. package/lib/assetUtils.js +0 -205
  29. package/lib/atlaspack-v3/AtlaspackV3.js +0 -57
  30. package/lib/atlaspack-v3/NapiWorkerPool.js +0 -71
  31. package/lib/atlaspack-v3/fs.js +0 -39
  32. package/lib/atlaspack-v3/index.js +0 -26
  33. package/lib/atlaspack-v3/jsCallable.js +0 -20
  34. package/lib/atlaspack-v3/worker/compat/asset-symbols.js +0 -197
  35. package/lib/atlaspack-v3/worker/compat/bitflags.js +0 -84
  36. package/lib/atlaspack-v3/worker/compat/dependency.js +0 -44
  37. package/lib/atlaspack-v3/worker/compat/environment.js +0 -57
  38. package/lib/atlaspack-v3/worker/compat/index.js +0 -104
  39. package/lib/atlaspack-v3/worker/compat/mutable-asset.js +0 -164
  40. package/lib/atlaspack-v3/worker/compat/plugin-config.js +0 -78
  41. package/lib/atlaspack-v3/worker/compat/plugin-logger.js +0 -29
  42. package/lib/atlaspack-v3/worker/compat/plugin-options.js +0 -113
  43. package/lib/atlaspack-v3/worker/compat/plugin-tracer.js +0 -12
  44. package/lib/atlaspack-v3/worker/compat/target.js +0 -17
  45. package/lib/atlaspack-v3/worker/index.js +0 -3
  46. package/lib/atlaspack-v3/worker/worker.js +0 -280
  47. package/lib/constants.js +0 -21
  48. package/lib/dumpGraphToGraphViz.js +0 -206
  49. package/lib/index.js +0 -70
  50. package/lib/loadAtlaspackPlugin.js +0 -136
  51. package/lib/loadDotEnv.js +0 -54
  52. package/lib/projectPath.js +0 -94
  53. package/lib/public/Asset.js +0 -259
  54. package/lib/public/Bundle.js +0 -236
  55. package/lib/public/BundleGraph.js +0 -279
  56. package/lib/public/BundleGroup.js +0 -50
  57. package/lib/public/Config.js +0 -202
  58. package/lib/public/Dependency.js +0 -131
  59. package/lib/public/Environment.js +0 -247
  60. package/lib/public/MutableBundleGraph.js +0 -204
  61. package/lib/public/PluginOptions.js +0 -71
  62. package/lib/public/Symbols.js +0 -247
  63. package/lib/public/Target.js +0 -64
  64. package/lib/registerCoreWithSerializer.js +0 -51
  65. package/lib/requests/AssetGraphRequest.js +0 -432
  66. package/lib/requests/AssetGraphRequestRust.js +0 -220
  67. package/lib/requests/AssetRequest.js +0 -132
  68. package/lib/requests/AtlaspackBuildRequest.js +0 -79
  69. package/lib/requests/AtlaspackConfigRequest.js +0 -479
  70. package/lib/requests/BundleGraphRequest.js +0 -485
  71. package/lib/requests/ConfigRequest.js +0 -203
  72. package/lib/requests/DevDepRequest.js +0 -193
  73. package/lib/requests/EntryRequest.js +0 -295
  74. package/lib/requests/PackageRequest.js +0 -88
  75. package/lib/requests/PathRequest.js +0 -357
  76. package/lib/requests/TargetRequest.js +0 -1179
  77. package/lib/requests/ValidationRequest.js +0 -66
  78. package/lib/requests/WriteBundleRequest.js +0 -252
  79. package/lib/requests/WriteBundlesRequest.js +0 -153
  80. package/lib/requests/asset-graph-diff.js +0 -128
  81. package/lib/requests/asset-graph-dot.js +0 -131
  82. package/lib/resolveOptions.js +0 -265
  83. package/lib/serializerCore.browser.js +0 -29
  84. package/lib/summarizeRequest.js +0 -55
  85. package/lib/types.js +0 -35
  86. package/lib/utils.js +0 -160
  87. package/lib/worker.js +0 -184
package/lib/AssetGraph.js DELETED
@@ -1,521 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- exports.nodeFromAsset = nodeFromAsset;
8
- exports.nodeFromAssetGroup = nodeFromAssetGroup;
9
- exports.nodeFromDep = nodeFromDep;
10
- exports.nodeFromEntryFile = nodeFromEntryFile;
11
- exports.nodeFromEntrySpecifier = nodeFromEntrySpecifier;
12
- function _assert() {
13
- const data = _interopRequireDefault(require("assert"));
14
- _assert = function () {
15
- return data;
16
- };
17
- return data;
18
- }
19
- function _rust() {
20
- const data = require("@atlaspack/rust");
21
- _rust = function () {
22
- return data;
23
- };
24
- return data;
25
- }
26
- function _utils() {
27
- const data = require("@atlaspack/utils");
28
- _utils = function () {
29
- return data;
30
- };
31
- return data;
32
- }
33
- function _nullthrows() {
34
- const data = _interopRequireDefault(require("nullthrows"));
35
- _nullthrows = function () {
36
- return data;
37
- };
38
- return data;
39
- }
40
- function _graph() {
41
- const data = require("@atlaspack/graph");
42
- _graph = function () {
43
- return data;
44
- };
45
- return data;
46
- }
47
- var _Dependency = require("./Dependency");
48
- var _projectPath = require("./projectPath");
49
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
50
- function nodeFromDep(dep) {
51
- return {
52
- id: dep.id,
53
- type: 'dependency',
54
- value: dep,
55
- deferred: false,
56
- excluded: false,
57
- usedSymbolsDown: new Set(),
58
- usedSymbolsUp: new Map(),
59
- usedSymbolsDownDirty: true,
60
- usedSymbolsUpDirtyDown: true,
61
- usedSymbolsUpDirtyUp: true
62
- };
63
- }
64
- function nodeFromAssetGroup(assetGroup) {
65
- return {
66
- id: (0, _rust().hashString)((0, _projectPath.fromProjectPathRelative)(assetGroup.filePath) + assetGroup.env.id + String(assetGroup.isSource) + String(assetGroup.sideEffects) + (assetGroup.code ?? '') + ':' + (assetGroup.pipeline ?? '') + ':' + (assetGroup.query ?? '')),
67
- type: 'asset_group',
68
- value: assetGroup,
69
- usedSymbolsDownDirty: true
70
- };
71
- }
72
- function nodeFromAsset(asset) {
73
- return {
74
- id: asset.id,
75
- type: 'asset',
76
- value: asset,
77
- usedSymbols: new Set(),
78
- usedSymbolsDownDirty: true,
79
- usedSymbolsUpDirty: true
80
- };
81
- }
82
- function nodeFromEntrySpecifier(entry) {
83
- return {
84
- id: 'entry_specifier:' + (0, _projectPath.fromProjectPathRelative)(entry),
85
- type: 'entry_specifier',
86
- value: entry
87
- };
88
- }
89
- function nodeFromEntryFile(entry) {
90
- return {
91
- id: 'entry_file:' + (0, _utils().hashObject)(entry),
92
- type: 'entry_file',
93
- value: entry
94
- };
95
- }
96
- class AssetGraph extends _graph().ContentGraph {
97
- safeToIncrementallyBundle = true;
98
- constructor(opts) {
99
- if (opts) {
100
- let {
101
- hash,
102
- ...rest
103
- } = opts;
104
- super(rest);
105
- this.hash = hash;
106
- } else {
107
- super();
108
- this.setRootNodeId(this.addNode({
109
- id: '@@root',
110
- type: 'root',
111
- value: null
112
- }));
113
- }
114
- this.undeferredDependencies = new Set();
115
- this.envCache = new Map();
116
- }
117
-
118
- // $FlowFixMe[prop-missing]
119
- static deserialize(opts) {
120
- return new AssetGraph(opts);
121
- }
122
-
123
- // $FlowFixMe[prop-missing]
124
- serialize() {
125
- return {
126
- ...super.serialize(),
127
- hash: this.hash
128
- };
129
- }
130
-
131
- // Deduplicates Environments by making them referentially equal
132
- normalizeEnvironment(input) {
133
- let {
134
- id,
135
- context
136
- } = input.env;
137
- let idAndContext = `${id}-${context}`;
138
- let env = this.envCache.get(idAndContext);
139
- if (env) {
140
- input.env = env;
141
- } else {
142
- this.envCache.set(idAndContext, input.env);
143
- }
144
- }
145
- setRootConnections({
146
- entries,
147
- assetGroups
148
- }) {
149
- let nodes = [];
150
- if (entries) {
151
- for (let entry of entries) {
152
- let node = nodeFromEntrySpecifier(entry);
153
- nodes.push(node);
154
- }
155
- } else if (assetGroups) {
156
- for (const assetGroup of assetGroups) {
157
- // Adding nodes individually ensures we do not encounter a range stack size exceeded error
158
- // when there are >100000 asset groups
159
- nodes.push(nodeFromAssetGroup(assetGroup));
160
- }
161
- }
162
- this.replaceNodeIdsConnectedTo((0, _nullthrows().default)(this.rootNodeId), nodes.map(node => this.addNode(node)));
163
- }
164
- addNode(node) {
165
- this.hash = null;
166
- let existing = this.getNodeByContentKey(node.id);
167
- if (existing != null) {
168
- (0, _assert().default)(existing.type === node.type);
169
- // $FlowFixMe[incompatible-type] Checked above
170
- // $FlowFixMe[prop-missing]
171
- existing.value = node.value;
172
- let existingId = this.getNodeIdByContentKey(node.id);
173
- this.updateNode(existingId, existing);
174
- return existingId;
175
- }
176
- return super.addNodeByContentKey(node.id, node);
177
- }
178
- removeNode(nodeId) {
179
- this.hash = null;
180
- this.onNodeRemoved && this.onNodeRemoved(nodeId);
181
- return super.removeNode(nodeId);
182
- }
183
- resolveEntry(entry, resolved, correspondingRequest) {
184
- let entrySpecifierNodeId = this.getNodeIdByContentKey(nodeFromEntrySpecifier(entry).id);
185
- let entrySpecifierNode = (0, _nullthrows().default)(this.getNode(entrySpecifierNodeId));
186
- (0, _assert().default)(entrySpecifierNode.type === 'entry_specifier');
187
- entrySpecifierNode.correspondingRequest = correspondingRequest;
188
- this.replaceNodeIdsConnectedTo(entrySpecifierNodeId, resolved.map(file => this.addNode(nodeFromEntryFile(file))));
189
- }
190
- resolveTargets(entry, targets, correspondingRequest) {
191
- let depNodes = targets.map(target => {
192
- let node = nodeFromDep(
193
- // The passed project path is ignored in this case, because there is no `loc`
194
- (0, _Dependency.createDependency)('', {
195
- specifier: (0, _projectPath.fromProjectPathRelative)(entry.filePath),
196
- specifierType: 'url',
197
- pipeline: target.pipeline,
198
- target: target,
199
- env: target.env,
200
- isEntry: true,
201
- needsStableName: true,
202
- symbols: target.env.isLibrary ? new Map([['*', {
203
- local: '*',
204
- isWeak: true,
205
- loc: null
206
- }]]) : undefined
207
- }));
208
- if (node.value.env.isLibrary) {
209
- // in library mode, all of the entry's symbols are "used"
210
- node.usedSymbolsDown.add('*');
211
- node.usedSymbolsUp.set('*', undefined);
212
- }
213
- return node;
214
- });
215
- let entryNodeId = this.getNodeIdByContentKey(nodeFromEntryFile(entry).id);
216
- let entryNode = (0, _nullthrows().default)(this.getNode(entryNodeId));
217
- (0, _assert().default)(entryNode.type === 'entry_file');
218
- entryNode.correspondingRequest = correspondingRequest;
219
- this.replaceNodeIdsConnectedTo(entryNodeId, depNodes.map(node => this.addNode(node)));
220
- }
221
- resolveDependency(dependency, assetGroup, correspondingRequest) {
222
- let depNodeId = this.getNodeIdByContentKey(dependency.id);
223
- let depNode = (0, _nullthrows().default)(this.getNode(depNodeId));
224
- (0, _assert().default)(depNode.type === 'dependency');
225
- depNode.correspondingRequest = correspondingRequest;
226
- if (!assetGroup) {
227
- return;
228
- }
229
- let assetGroupNode = nodeFromAssetGroup(assetGroup);
230
- let existing = this.getNodeByContentKey(assetGroupNode.id);
231
- if (existing != null) {
232
- (0, _assert().default)(existing.type === 'asset_group');
233
- assetGroupNode.value.canDefer = assetGroupNode.value.canDefer && existing.value.canDefer;
234
- }
235
- let assetGroupNodeId = this.addNode(assetGroupNode);
236
- this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(dependency.id), [assetGroupNodeId]);
237
- this.replaceNodeIdsConnectedTo(depNodeId, [assetGroupNodeId]);
238
- }
239
- shouldVisitChild(nodeId, childNodeId) {
240
- let node = (0, _nullthrows().default)(this.getNode(nodeId));
241
- let childNode = (0, _nullthrows().default)(this.getNode(childNodeId));
242
- if (node.type !== 'dependency' || childNode.type !== 'asset_group' || childNode.deferred === false) {
243
- return true;
244
- }
245
- // Node types are proved above
246
- let dependencyNode = node;
247
- let assetGroupNode = childNode;
248
- let {
249
- sideEffects,
250
- canDefer = true
251
- } = assetGroupNode.value;
252
- let dependency = dependencyNode.value;
253
- let dependencyPreviouslyDeferred = dependencyNode.hasDeferred;
254
- let assetGroupPreviouslyDeferred = assetGroupNode.deferred;
255
- let defer = this.shouldDeferDependency(dependency, sideEffects, canDefer);
256
- dependencyNode.hasDeferred = defer;
257
- assetGroupNode.deferred = defer;
258
- if (!dependencyPreviouslyDeferred && defer) {
259
- this.markParentsWithHasDeferred(nodeId);
260
- } else if (assetGroupPreviouslyDeferred && !defer) {
261
- this.unmarkParentsWithHasDeferred(childNodeId);
262
- }
263
- return !defer;
264
- }
265
-
266
- // Dependency: mark parent Asset <- AssetGroup with hasDeferred true
267
- markParentsWithHasDeferred(nodeId) {
268
- this.traverseAncestors(nodeId, (traversedNodeId, _, actions) => {
269
- let traversedNode = (0, _nullthrows().default)(this.getNode(traversedNodeId));
270
- if (traversedNode.type === 'asset') {
271
- traversedNode.hasDeferred = true;
272
- } else if (traversedNode.type === 'asset_group') {
273
- traversedNode.hasDeferred = true;
274
- actions.skipChildren();
275
- } else if (nodeId !== traversedNodeId) {
276
- actions.skipChildren();
277
- }
278
- });
279
- }
280
-
281
- // AssetGroup: update hasDeferred of all parent Dependency <- Asset <- AssetGroup
282
- unmarkParentsWithHasDeferred(nodeId) {
283
- this.traverseAncestors(nodeId, (traversedNodeId, ctx, actions) => {
284
- let traversedNode = (0, _nullthrows().default)(this.getNode(traversedNodeId));
285
- if (traversedNode.type === 'asset') {
286
- let hasDeferred = this.getNodeIdsConnectedFrom(traversedNodeId).some(childNodeId => {
287
- let childNode = (0, _nullthrows().default)(this.getNode(childNodeId));
288
- return childNode.hasDeferred == null ? false : childNode.hasDeferred;
289
- });
290
- if (!hasDeferred) {
291
- delete traversedNode.hasDeferred;
292
- }
293
- return {
294
- hasDeferred
295
- };
296
- } else if (traversedNode.type === 'asset_group' && nodeId !== traversedNodeId) {
297
- if (!(ctx !== null && ctx !== void 0 && ctx.hasDeferred)) {
298
- this.safeToIncrementallyBundle = false;
299
- delete traversedNode.hasDeferred;
300
- }
301
- actions.skipChildren();
302
- } else if (traversedNode.type === 'dependency') {
303
- this.safeToIncrementallyBundle = false;
304
- traversedNode.hasDeferred = false;
305
- } else if (nodeId !== traversedNodeId) {
306
- actions.skipChildren();
307
- }
308
- });
309
- }
310
-
311
- // Defer transforming this dependency if it is marked as weak, there are no side effects,
312
- // no re-exported symbols are used by ancestor dependencies and the re-exporting asset isn't
313
- // using a wildcard and isn't an entry (in library mode).
314
- // This helps with performance building large libraries like `lodash-es`, which re-exports
315
- // a huge number of functions since we can avoid even transforming the files that aren't used.
316
- shouldDeferDependency(dependency, sideEffects, canDefer) {
317
- let dependencySymbols = dependency.symbols;
318
-
319
- // Doing this separately keeps Flow happy further down
320
- if (!dependencySymbols) {
321
- return false;
322
- }
323
- let isDeferrable = [...dependencySymbols].every(([, {
324
- isWeak
325
- }]) => isWeak) && sideEffects === false && canDefer && !dependencySymbols.has('*');
326
- if (!isDeferrable) {
327
- return false;
328
- }
329
- let depNodeId = this.getNodeIdByContentKey(dependency.id);
330
- let depNode = this.getNode(depNodeId);
331
- (0, _assert().default)(depNode);
332
- let assets = this.getNodeIdsConnectedTo(depNodeId);
333
- let symbols = new Map([...dependencySymbols].map(([key, val]) => [val.local, key]));
334
- (0, _assert().default)(assets.length === 1);
335
- let firstAsset = (0, _nullthrows().default)(this.getNode(assets[0]));
336
- (0, _assert().default)(firstAsset.type === 'asset');
337
- let resolvedAsset = firstAsset.value;
338
-
339
- // This doesn't change from here, so checking it now saves
340
- // us some calls to `getIncomingDependency`
341
- if (!resolvedAsset.symbols) {
342
- return true;
343
- }
344
- let deps = this.getIncomingDependencies(resolvedAsset);
345
- return deps.every(d => {
346
- // If this dependency has already been through this process, and we
347
- // know it's not deferrable, then there's no need to re-check
348
- if (this.undeferredDependencies.has(d)) {
349
- return false;
350
- }
351
- let depIsDeferrable = d.symbols && !(d.env.isLibrary && d.isEntry) && !d.symbols.has('*') && ![...d.symbols.keys()].some(symbol => {
352
- var _resolvedAsset$symbol;
353
- let assetSymbol = (_resolvedAsset$symbol = resolvedAsset.symbols) === null || _resolvedAsset$symbol === void 0 || (_resolvedAsset$symbol = _resolvedAsset$symbol.get(symbol)) === null || _resolvedAsset$symbol === void 0 ? void 0 : _resolvedAsset$symbol.local;
354
- return assetSymbol != null && symbols.has(assetSymbol);
355
- });
356
- if (!depIsDeferrable) {
357
- // Mark this dep as not deferrable so it doesn't have to be re-checked
358
- this.undeferredDependencies.add(d);
359
- return false;
360
- }
361
- });
362
- }
363
- resolveAssetGroup(assetGroup, assets, correspondingRequest) {
364
- this.normalizeEnvironment(assetGroup);
365
- let assetGroupNode = nodeFromAssetGroup(assetGroup);
366
- assetGroupNode = this.getNodeByContentKey(assetGroupNode.id);
367
- if (!assetGroupNode) {
368
- return;
369
- }
370
- (0, _assert().default)(assetGroupNode.type === 'asset_group');
371
- assetGroupNode.correspondingRequest = correspondingRequest;
372
- let assetsByKey = new Map();
373
- for (let asset of assets) {
374
- if (asset.uniqueKey != null) {
375
- assetsByKey.set(asset.uniqueKey, asset);
376
- }
377
- }
378
- let dependentAssetKeys = new Set();
379
- for (let asset of assets) {
380
- for (let dep of asset.dependencies.values()) {
381
- if (assetsByKey.has(dep.specifier)) {
382
- dependentAssetKeys.add(dep.specifier);
383
- }
384
- }
385
- }
386
- let assetObjects = [];
387
- let assetNodeIds = [];
388
- for (let asset of assets) {
389
- this.normalizeEnvironment(asset);
390
- let isDirect = !dependentAssetKeys.has(asset.uniqueKey);
391
- let dependentAssets = [];
392
- for (let dep of asset.dependencies.values()) {
393
- let dependentAsset = assetsByKey.get(dep.specifier);
394
- if (dependentAsset) {
395
- dependentAssets.push(dependentAsset);
396
- if (dependentAsset.id === asset.id) {
397
- // Don't orphan circular dependencies.
398
- isDirect = true;
399
- }
400
- }
401
- }
402
- let id = this.addNode(nodeFromAsset(asset));
403
- assetObjects.push({
404
- assetNodeId: id,
405
- dependentAssets
406
- });
407
- if (isDirect) {
408
- assetNodeIds.push(id);
409
- }
410
- }
411
- this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(assetGroupNode.id), assetNodeIds);
412
- for (let {
413
- assetNodeId,
414
- dependentAssets
415
- } of assetObjects) {
416
- // replaceNodesConnectedTo has merged the value into the existing node, retrieve
417
- // the actual current node.
418
- let assetNode = (0, _nullthrows().default)(this.getNode(assetNodeId));
419
- (0, _assert().default)(assetNode.type === 'asset');
420
- this.resolveAsset(assetNode, dependentAssets);
421
- }
422
- }
423
- resolveAsset(assetNode, dependentAssets) {
424
- let depNodeIds = [];
425
- let depNodesWithAssets = [];
426
- for (let dep of assetNode.value.dependencies.values()) {
427
- this.normalizeEnvironment(dep);
428
- let depNode = nodeFromDep(dep);
429
- let existing = this.getNodeByContentKey(depNode.id);
430
- if ((existing === null || existing === void 0 ? void 0 : existing.type) === 'dependency' && existing.value.resolverMeta != null) {
431
- depNode.value.meta = {
432
- ...depNode.value.meta,
433
- ...existing.value.resolverMeta
434
- };
435
- }
436
- let dependentAsset = dependentAssets.find(a => a.uniqueKey === dep.specifier);
437
- if (dependentAsset) {
438
- depNode.complete = true;
439
- depNodesWithAssets.push([depNode, nodeFromAsset(dependentAsset)]);
440
- }
441
- depNode.value.sourceAssetType = assetNode.value.type;
442
- depNodeIds.push(this.addNode(depNode));
443
- }
444
- assetNode.usedSymbolsUpDirty = true;
445
- assetNode.usedSymbolsDownDirty = true;
446
- this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(assetNode.id), depNodeIds);
447
- for (let [depNode, dependentAssetNode] of depNodesWithAssets) {
448
- let depAssetNodeId = this.addNode(dependentAssetNode);
449
- this.replaceNodeIdsConnectedTo(this.getNodeIdByContentKey(depNode.id), [depAssetNodeId]);
450
- }
451
- }
452
- getIncomingDependencies(asset) {
453
- let nodeId = this.getNodeIdByContentKey(asset.id);
454
- let assetGroupIds = this.getNodeIdsConnectedTo(nodeId);
455
- let dependencies = [];
456
- for (let i = 0; i < assetGroupIds.length; i++) {
457
- let assetGroupId = assetGroupIds[i];
458
-
459
- // Sometimes assets are connected directly to dependencies
460
- // rather than through an asset group. This happens due to
461
- // inline dependencies on assets via uniqueKey. See resolveAsset.
462
- let node = this.getNode(assetGroupId);
463
- if ((node === null || node === void 0 ? void 0 : node.type) === 'dependency') {
464
- dependencies.push(node.value);
465
- continue;
466
- }
467
- let assetIds = this.getNodeIdsConnectedTo(assetGroupId);
468
- for (let j = 0; j < assetIds.length; j++) {
469
- let node = this.getNode(assetIds[j]);
470
- if (!node || node.type !== 'dependency') {
471
- continue;
472
- }
473
- dependencies.push(node.value);
474
- }
475
- }
476
- return dependencies;
477
- }
478
- traverseAssets(visit, startNodeId) {
479
- return this.filteredTraverse(nodeId => {
480
- let node = (0, _nullthrows().default)(this.getNode(nodeId));
481
- return node.type === 'asset' ? node.value : null;
482
- }, visit, startNodeId);
483
- }
484
- getEntryAssetGroupNodes() {
485
- let entryNodes = [];
486
- this.traverse((nodeId, _, actions) => {
487
- let node = (0, _nullthrows().default)(this.getNode(nodeId));
488
- if (node.type === 'asset_group') {
489
- entryNodes.push(node);
490
- actions.skipChildren();
491
- }
492
- });
493
- return entryNodes;
494
- }
495
- getEntryAssets() {
496
- let entries = [];
497
- this.traverseAssets((asset, ctx, traversal) => {
498
- entries.push(asset);
499
- traversal.skipChildren();
500
- });
501
- return entries;
502
- }
503
- getHash() {
504
- if (this.hash != null) {
505
- return this.hash;
506
- }
507
- let hash = new (_rust().Hash)();
508
- // TODO: sort??
509
- this.traverse(nodeId => {
510
- let node = (0, _nullthrows().default)(this.getNode(nodeId));
511
- if (node.type === 'asset') {
512
- hash.writeString((0, _nullthrows().default)(node.value.outputHash));
513
- } else if (node.type === 'dependency' && node.value.target) {
514
- hash.writeString(JSON.stringify(node.value.target));
515
- }
516
- });
517
- this.hash = hash.finish();
518
- return this.hash;
519
- }
520
- }
521
- exports.default = AssetGraph;