@atlaspack/bundler-default 3.2.1 → 3.3.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.
- package/CHANGELOG.md +15 -0
- package/lib/MonolithicBundler.js +2 -2
- package/lib/bundleMerge.js +2 -3
- package/lib/idealGraph.js +11 -11
- package/package.json +6 -6
- package/src/MonolithicBundler.ts +5 -2
- package/src/bundleMerge.ts +7 -2
- package/src/idealGraph.ts +25 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @atlaspack/bundler-default
|
|
2
2
|
|
|
3
|
+
## 3.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#731](https://github.com/atlassian-labs/atlaspack/pull/731) [`23d561e`](https://github.com/atlassian-labs/atlaspack/commit/23d561e51e68b0c38fd1ff4e4fb173e5e7b01cf2) Thanks [@marcins](https://github.com/marcins)! - Implement "inline isolated" scripts
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`23d561e`](https://github.com/atlassian-labs/atlaspack/commit/23d561e51e68b0c38fd1ff4e4fb173e5e7b01cf2)]:
|
|
12
|
+
- @atlaspack/feature-flags@2.21.0
|
|
13
|
+
- @atlaspack/utils@2.18.0
|
|
14
|
+
- @atlaspack/rust@3.5.0
|
|
15
|
+
- @atlaspack/graph@3.5.12
|
|
16
|
+
- @atlaspack/plugin@2.14.23
|
|
17
|
+
|
|
3
18
|
## 3.2.1
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/lib/MonolithicBundler.js
CHANGED
|
@@ -38,8 +38,8 @@ function addJSMonolithBundle(bundleGraph, entryAsset, entryDep) {
|
|
|
38
38
|
}
|
|
39
39
|
let assets = bundleGraph.getDependencyAssets(dependency);
|
|
40
40
|
for (const asset of assets) {
|
|
41
|
-
if (asset.bundleBehavior === 'isolated') {
|
|
42
|
-
throw new Error('Isolated assets are not supported for single file output builds
|
|
41
|
+
if (asset.bundleBehavior === 'isolated' || asset.bundleBehavior === 'inlineIsolated') {
|
|
42
|
+
throw new Error(`${asset.bundleBehavior === 'isolated' ? 'Isolated' : 'Inline isolated'} assets are not supported for single file output builds`);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// For assets marked as inline, we create new bundles and let other
|
package/lib/bundleMerge.js
CHANGED
|
@@ -37,9 +37,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
37
37
|
function getBundlesForBundleGroup(bundleGraph, bundleGroupId) {
|
|
38
38
|
let count = 0;
|
|
39
39
|
bundleGraph.traverse(nodeId => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (((_bundleGraph$getNode = bundleGraph.getNode(nodeId)) === null || _bundleGraph$getNode === void 0 ? void 0 : _bundleGraph$getNode.bundleBehavior) !== 'inline') {
|
|
40
|
+
const node = bundleGraph.getNode(nodeId);
|
|
41
|
+
if (node && (node === 'root' || node.bundleBehavior !== 'inline' && node.bundleBehavior !== 'inlineIsolated')) {
|
|
43
42
|
count++;
|
|
44
43
|
}
|
|
45
44
|
}, bundleGroupId);
|
package/lib/idealGraph.js
CHANGED
|
@@ -250,15 +250,16 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
250
250
|
manualSharedBundleKey != null && manualSharedMap.has(manualSharedBundleKey)) {
|
|
251
251
|
bundleId = (0, _nullthrows().default)(manualSharedMap.get(manualSharedBundleKey));
|
|
252
252
|
}
|
|
253
|
-
if (dependency.priority === 'lazy' || (0, _featureFlags().getFeatureFlag)('conditionalBundlingApi') && node.value.priority === 'conditional' || childAsset.bundleBehavior === 'isolated'
|
|
254
|
-
|
|
253
|
+
if (dependency.priority === 'lazy' || (0, _featureFlags().getFeatureFlag)('conditionalBundlingApi') && node.value.priority === 'conditional' || childAsset.bundleBehavior === 'isolated' ||
|
|
254
|
+
// An isolated Dependency, or Bundle must contain all assets it needs to load.
|
|
255
|
+
childAsset.bundleBehavior === 'inlineIsolated') {
|
|
255
256
|
if (bundleId == null) {
|
|
256
257
|
let firstBundleGroup = (0, _nullthrows().default)(bundleGraph.getNode(stack[0][1]));
|
|
257
258
|
(0, _assert().default)(firstBundleGroup !== 'root');
|
|
258
259
|
bundle = createBundle({
|
|
259
260
|
asset: childAsset,
|
|
260
261
|
bundleBehavior: dependency.bundleBehavior ?? childAsset.bundleBehavior,
|
|
261
|
-
needsStableName: dependency.bundleBehavior === 'inline' || childAsset.bundleBehavior === 'inline' ? false : dependency.isEntry || dependency.needsStableName,
|
|
262
|
+
needsStableName: dependency.bundleBehavior === 'inline' || childAsset.bundleBehavior === 'inline' || dependency.bundleBehavior === 'inlineIsolated' || childAsset.bundleBehavior === 'inlineIsolated' ? false : dependency.isEntry || dependency.needsStableName,
|
|
262
263
|
target: firstBundleGroup.target
|
|
263
264
|
});
|
|
264
265
|
bundleId = bundleGraph.addNode(bundle);
|
|
@@ -282,7 +283,7 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
282
283
|
if (
|
|
283
284
|
// If this dependency requests isolated, but the bundle is not,
|
|
284
285
|
// make the bundle isolated for all uses.
|
|
285
|
-
dependency.bundleBehavior === 'isolated' && bundle.bundleBehavior == null) {
|
|
286
|
+
(dependency.bundleBehavior === 'isolated' || dependency.bundleBehavior === 'inlineIsolated') && bundle.bundleBehavior == null) {
|
|
286
287
|
bundle.bundleBehavior = dependency.bundleBehavior;
|
|
287
288
|
}
|
|
288
289
|
}
|
|
@@ -323,7 +324,7 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
323
324
|
env: childAsset.env,
|
|
324
325
|
bundleBehavior: dependency.bundleBehavior ?? childAsset.bundleBehavior,
|
|
325
326
|
target: referencingBundle.target,
|
|
326
|
-
needsStableName: childAsset.bundleBehavior === 'inline' || dependency.bundleBehavior === 'inline' || dependency.priority === 'parallel' && !dependency.needsStableName ? false : referencingBundle.needsStableName
|
|
327
|
+
needsStableName: childAsset.bundleBehavior === 'inline' || dependency.bundleBehavior === 'inline' || dependency.bundleBehavior === 'inlineIsolated' || dependency.priority === 'parallel' && !dependency.needsStableName ? false : referencingBundle.needsStableName
|
|
327
328
|
});
|
|
328
329
|
bundleId = bundleGraph.addNode(bundle);
|
|
329
330
|
} else {
|
|
@@ -332,7 +333,7 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
332
333
|
if (
|
|
333
334
|
// If this dependency requests isolated, but the bundle is not,
|
|
334
335
|
// make the bundle isolated for all uses.
|
|
335
|
-
dependency.bundleBehavior === 'isolated' && bundle.bundleBehavior == null) {
|
|
336
|
+
(dependency.bundleBehavior === 'isolated' || dependency.bundleBehavior === 'inlineIsolated') && bundle.bundleBehavior == null) {
|
|
336
337
|
bundle.bundleBehavior = dependency.bundleBehavior;
|
|
337
338
|
}
|
|
338
339
|
}
|
|
@@ -522,7 +523,7 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
522
523
|
// not true that a bundle's available assets = all assets of all the bundleGroups
|
|
523
524
|
// it belongs to. It's the intersection of those sets.
|
|
524
525
|
let available;
|
|
525
|
-
if (bundleRoot.bundleBehavior === 'isolated') {
|
|
526
|
+
if (bundleRoot.bundleBehavior === 'isolated' || bundleRoot.bundleBehavior === 'inlineIsolated') {
|
|
526
527
|
available = new (_graph().BitSet)(assets.length);
|
|
527
528
|
} else {
|
|
528
529
|
available = (0, _nullthrows().default)(ancestorAssets[nodeId]).clone();
|
|
@@ -585,7 +586,7 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
585
586
|
continue;
|
|
586
587
|
}
|
|
587
588
|
let parentRoots = bundleRootGraph.getNodeIdsConnectedTo(id, _graph().ALL_EDGE_TYPES);
|
|
588
|
-
let canDelete = getBundleFromBundleRoot(bundleRoot).bundleBehavior !== 'isolated';
|
|
589
|
+
let canDelete = getBundleFromBundleRoot(bundleRoot).bundleBehavior !== 'isolated' && getBundleFromBundleRoot(bundleRoot).bundleBehavior !== 'inlineIsolated';
|
|
589
590
|
if (parentRoots.length === 0) continue;
|
|
590
591
|
for (let parentId of parentRoots) {
|
|
591
592
|
var _ancestorAssets$paren;
|
|
@@ -653,7 +654,7 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
653
654
|
let assetId = bundleRootGraph.getNode(nodeId);
|
|
654
655
|
if (assetId == null) return; // deleted
|
|
655
656
|
let a = assets[assetId];
|
|
656
|
-
if (entries.has(a) || !a.isBundleSplittable || bundleRoots.get(a) && (getBundleFromBundleRoot(a).needsStableName || getBundleFromBundleRoot(a).bundleBehavior === 'isolated')) {
|
|
657
|
+
if (entries.has(a) || !a.isBundleSplittable || bundleRoots.get(a) && (getBundleFromBundleRoot(a).needsStableName || getBundleFromBundleRoot(a).bundleBehavior === 'isolated' || getBundleFromBundleRoot(a).bundleBehavior === 'inlineIsolated')) {
|
|
657
658
|
// Add asset to non-splittable bundles.
|
|
658
659
|
addAssetToBundleRoot(asset, a);
|
|
659
660
|
} else if (!((_ancestorAssets$nodeI = ancestorAssets[nodeId]) !== null && _ancestorAssets$nodeI !== void 0 && _ancestorAssets$nodeI.has(i))) {
|
|
@@ -970,8 +971,7 @@ function createIdealGraph(assetGraph, config, entries, logger) {
|
|
|
970
971
|
let numBundlesContributingToPRL = bundleIdsInGroup.reduce((count, b) => {
|
|
971
972
|
let bundle = (0, _nullthrows().default)(bundleGraph.getNode(b));
|
|
972
973
|
(0, _assert().default)(bundle !== 'root');
|
|
973
|
-
|
|
974
|
-
return count + (bundle.bundleBehavior !== 'inline');
|
|
974
|
+
return count + Number(bundle.bundleBehavior !== 'inline' && bundle.bundleBehavior !== 'inlineIsolated');
|
|
975
975
|
}, 0);
|
|
976
976
|
if (numBundlesContributingToPRL > config.maxParallelRequests) {
|
|
977
977
|
let sharedBundleIdsInBundleGroup = bundleIdsInGroup.filter(b => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaspack/bundler-default",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"license": "(MIT OR Apache-2.0)",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"publishConfig": {
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@atlaspack/diagnostic": "2.14.2",
|
|
21
|
-
"@atlaspack/feature-flags": "2.
|
|
22
|
-
"@atlaspack/graph": "3.5.
|
|
23
|
-
"@atlaspack/plugin": "2.14.
|
|
24
|
-
"@atlaspack/rust": "3.
|
|
25
|
-
"@atlaspack/utils": "2.
|
|
21
|
+
"@atlaspack/feature-flags": "2.21.0",
|
|
22
|
+
"@atlaspack/graph": "3.5.12",
|
|
23
|
+
"@atlaspack/plugin": "2.14.23",
|
|
24
|
+
"@atlaspack/rust": "3.5.0",
|
|
25
|
+
"@atlaspack/utils": "2.18.0",
|
|
26
26
|
"nullthrows": "^1.1.1",
|
|
27
27
|
"many-keys-map": "^1.0.3"
|
|
28
28
|
},
|
package/src/MonolithicBundler.ts
CHANGED
|
@@ -38,9 +38,12 @@ export function addJSMonolithBundle(
|
|
|
38
38
|
let assets = bundleGraph.getDependencyAssets(dependency);
|
|
39
39
|
|
|
40
40
|
for (const asset of assets) {
|
|
41
|
-
if (
|
|
41
|
+
if (
|
|
42
|
+
asset.bundleBehavior === 'isolated' ||
|
|
43
|
+
asset.bundleBehavior === 'inlineIsolated'
|
|
44
|
+
) {
|
|
42
45
|
throw new Error(
|
|
43
|
-
'Isolated assets are not supported for single file output builds
|
|
46
|
+
`${asset.bundleBehavior === 'isolated' ? 'Isolated' : 'Inline isolated'} assets are not supported for single file output builds`,
|
|
44
47
|
);
|
|
45
48
|
}
|
|
46
49
|
|
package/src/bundleMerge.ts
CHANGED
|
@@ -12,8 +12,13 @@ function getBundlesForBundleGroup(
|
|
|
12
12
|
): number {
|
|
13
13
|
let count = 0;
|
|
14
14
|
bundleGraph.traverse((nodeId) => {
|
|
15
|
-
|
|
16
|
-
if (
|
|
15
|
+
const node = bundleGraph.getNode(nodeId);
|
|
16
|
+
if (
|
|
17
|
+
node &&
|
|
18
|
+
(node === 'root' ||
|
|
19
|
+
(node.bundleBehavior !== 'inline' &&
|
|
20
|
+
node.bundleBehavior !== 'inlineIsolated'))
|
|
21
|
+
) {
|
|
17
22
|
count++;
|
|
18
23
|
}
|
|
19
24
|
}, bundleGroupId);
|
package/src/idealGraph.ts
CHANGED
|
@@ -353,7 +353,8 @@ export function createIdealGraph(
|
|
|
353
353
|
dependency.priority === 'lazy' ||
|
|
354
354
|
(getFeatureFlag('conditionalBundlingApi') &&
|
|
355
355
|
node.value.priority === 'conditional') ||
|
|
356
|
-
childAsset.bundleBehavior === 'isolated' // An isolated Dependency, or Bundle must contain all assets it needs to load.
|
|
356
|
+
childAsset.bundleBehavior === 'isolated' || // An isolated Dependency, or Bundle must contain all assets it needs to load.
|
|
357
|
+
childAsset.bundleBehavior === 'inlineIsolated'
|
|
357
358
|
) {
|
|
358
359
|
if (bundleId == null) {
|
|
359
360
|
let firstBundleGroup = nullthrows(
|
|
@@ -366,7 +367,9 @@ export function createIdealGraph(
|
|
|
366
367
|
dependency.bundleBehavior ?? childAsset.bundleBehavior,
|
|
367
368
|
needsStableName:
|
|
368
369
|
dependency.bundleBehavior === 'inline' ||
|
|
369
|
-
childAsset.bundleBehavior === 'inline'
|
|
370
|
+
childAsset.bundleBehavior === 'inline' ||
|
|
371
|
+
dependency.bundleBehavior === 'inlineIsolated' ||
|
|
372
|
+
childAsset.bundleBehavior === 'inlineIsolated'
|
|
370
373
|
? false
|
|
371
374
|
: dependency.isEntry || dependency.needsStableName,
|
|
372
375
|
target: firstBundleGroup.target,
|
|
@@ -398,7 +401,8 @@ export function createIdealGraph(
|
|
|
398
401
|
if (
|
|
399
402
|
// If this dependency requests isolated, but the bundle is not,
|
|
400
403
|
// make the bundle isolated for all uses.
|
|
401
|
-
dependency.bundleBehavior === 'isolated'
|
|
404
|
+
(dependency.bundleBehavior === 'isolated' ||
|
|
405
|
+
dependency.bundleBehavior === 'inlineIsolated') &&
|
|
402
406
|
bundle.bundleBehavior == null
|
|
403
407
|
) {
|
|
404
408
|
bundle.bundleBehavior = dependency.bundleBehavior;
|
|
@@ -482,6 +486,7 @@ export function createIdealGraph(
|
|
|
482
486
|
needsStableName:
|
|
483
487
|
childAsset.bundleBehavior === 'inline' ||
|
|
484
488
|
dependency.bundleBehavior === 'inline' ||
|
|
489
|
+
dependency.bundleBehavior === 'inlineIsolated' ||
|
|
485
490
|
(dependency.priority === 'parallel' &&
|
|
486
491
|
!dependency.needsStableName)
|
|
487
492
|
? false
|
|
@@ -495,7 +500,8 @@ export function createIdealGraph(
|
|
|
495
500
|
if (
|
|
496
501
|
// If this dependency requests isolated, but the bundle is not,
|
|
497
502
|
// make the bundle isolated for all uses.
|
|
498
|
-
dependency.bundleBehavior === 'isolated'
|
|
503
|
+
(dependency.bundleBehavior === 'isolated' ||
|
|
504
|
+
dependency.bundleBehavior === 'inlineIsolated') &&
|
|
499
505
|
bundle.bundleBehavior == null
|
|
500
506
|
) {
|
|
501
507
|
bundle.bundleBehavior = dependency.bundleBehavior;
|
|
@@ -741,7 +747,10 @@ export function createIdealGraph(
|
|
|
741
747
|
// not true that a bundle's available assets = all assets of all the bundleGroups
|
|
742
748
|
// it belongs to. It's the intersection of those sets.
|
|
743
749
|
let available;
|
|
744
|
-
if (
|
|
750
|
+
if (
|
|
751
|
+
bundleRoot.bundleBehavior === 'isolated' ||
|
|
752
|
+
bundleRoot.bundleBehavior === 'inlineIsolated'
|
|
753
|
+
) {
|
|
745
754
|
available = new BitSet(assets.length);
|
|
746
755
|
} else {
|
|
747
756
|
available = nullthrows(ancestorAssets[nodeId]).clone();
|
|
@@ -825,7 +834,8 @@ export function createIdealGraph(
|
|
|
825
834
|
|
|
826
835
|
let parentRoots = bundleRootGraph.getNodeIdsConnectedTo(id, ALL_EDGE_TYPES);
|
|
827
836
|
let canDelete =
|
|
828
|
-
getBundleFromBundleRoot(bundleRoot).bundleBehavior !== 'isolated'
|
|
837
|
+
getBundleFromBundleRoot(bundleRoot).bundleBehavior !== 'isolated' &&
|
|
838
|
+
getBundleFromBundleRoot(bundleRoot).bundleBehavior !== 'inlineIsolated';
|
|
829
839
|
if (parentRoots.length === 0) continue;
|
|
830
840
|
for (let parentId of parentRoots) {
|
|
831
841
|
if (parentId === rootNodeId) {
|
|
@@ -905,7 +915,8 @@ export function createIdealGraph(
|
|
|
905
915
|
!a.isBundleSplittable ||
|
|
906
916
|
(bundleRoots.get(a) &&
|
|
907
917
|
(getBundleFromBundleRoot(a).needsStableName ||
|
|
908
|
-
getBundleFromBundleRoot(a).bundleBehavior === 'isolated'
|
|
918
|
+
getBundleFromBundleRoot(a).bundleBehavior === 'isolated' ||
|
|
919
|
+
getBundleFromBundleRoot(a).bundleBehavior === 'inlineIsolated'))
|
|
909
920
|
) {
|
|
910
921
|
// Add asset to non-splittable bundles.
|
|
911
922
|
addAssetToBundleRoot(asset, a);
|
|
@@ -1302,8 +1313,13 @@ export function createIdealGraph(
|
|
|
1302
1313
|
let numBundlesContributingToPRL = bundleIdsInGroup.reduce((count, b) => {
|
|
1303
1314
|
let bundle = nullthrows(bundleGraph.getNode(b));
|
|
1304
1315
|
invariant(bundle !== 'root');
|
|
1305
|
-
|
|
1306
|
-
|
|
1316
|
+
return (
|
|
1317
|
+
count +
|
|
1318
|
+
Number(
|
|
1319
|
+
bundle.bundleBehavior !== 'inline' &&
|
|
1320
|
+
bundle.bundleBehavior !== 'inlineIsolated',
|
|
1321
|
+
)
|
|
1322
|
+
);
|
|
1307
1323
|
}, 0);
|
|
1308
1324
|
|
|
1309
1325
|
if (numBundlesContributingToPRL > config.maxParallelRequests) {
|