@atlaspack/core 2.38.3 → 2.38.4

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 CHANGED
@@ -1,5 +1,27 @@
1
1
  # @atlaspack/core
2
2
 
3
+ ## 2.38.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1080](https://github.com/atlassian-labs/atlaspack/pull/1080) [`39b1fdf`](https://github.com/atlassian-labs/atlaspack/commit/39b1fdf59d317a9e862dceba0495dda9f1fda77c) Thanks [@mattcompiles](https://github.com/mattcompiles)! - Fix scope hoisting crash when a module has both `import * as ns from 'x'` and `export * from 'x'` for the same specifier. The wildcard re-export was overwriting the namespace import binding on the shared dependency, causing a ReferenceError in the bundled output. Gated behind `fixExportStarNamespaceOverwrite` feature flag.
8
+
9
+ - Updated dependencies [[`39b1fdf`](https://github.com/atlassian-labs/atlaspack/commit/39b1fdf59d317a9e862dceba0495dda9f1fda77c)]:
10
+ - @atlaspack/feature-flags@2.31.2
11
+ - @atlaspack/rust@3.29.1
12
+ - @atlaspack/build-cache@2.13.16
13
+ - @atlaspack/cache@3.2.57
14
+ - @atlaspack/fs@2.15.57
15
+ - @atlaspack/graph@3.6.24
16
+ - @atlaspack/utils@3.4.4
17
+ - @atlaspack/logger@2.14.54
18
+ - @atlaspack/source-map@3.3.6
19
+ - @atlaspack/package-manager@2.14.62
20
+ - @atlaspack/workers@2.14.62
21
+ - @atlaspack/plugin@2.14.62
22
+ - @atlaspack/profiler@2.15.23
23
+ - @atlaspack/types@2.15.52
24
+
3
25
  ## 2.38.3
4
26
 
5
27
  ### Patch Changes
@@ -199,7 +199,8 @@ class BundleGraph {
199
199
  // Don't retarget because this cannot be resolved without also changing the asset symbols
200
200
  // (and the asset content itself).
201
201
  [...targets].every(([, t]) => new Set([...t.values()]).size === t.size)) {
202
- let isReexportAll = nodeValueSymbols.get('*')?.local === '*';
202
+ let isReexportAll = nodeValueSymbols.get('*')?.local === '*' ||
203
+ node.value.meta?.hasExportStar;
203
204
  let reexportAllLoc = isReexportAll
204
205
  ? (0, nullthrows_1.default)(nodeValueSymbols.get('*')).loc
205
206
  : undefined;
@@ -1565,7 +1566,7 @@ class BundleGraph {
1565
1566
  // Default exports are excluded from wildcard exports.
1566
1567
  // Wildcard reexports are never listed in the reexporting asset's symbols.
1567
1568
  if (identifier == null &&
1568
- depSymbols.get('*')?.local === '*' &&
1569
+ (depSymbols.get('*')?.local === '*' || dep.meta?.hasExportStar) &&
1569
1570
  symbol !== 'default') {
1570
1571
  let resolved = this.getResolvedAsset(dep, boundary);
1571
1572
  if (!resolved) {
@@ -1694,7 +1695,7 @@ class BundleGraph {
1694
1695
  let depSymbols = dep.symbols;
1695
1696
  if (!depSymbols)
1696
1697
  continue;
1697
- if (depSymbols.get('*')?.local === '*') {
1698
+ if (depSymbols.get('*')?.local === '*' || dep.meta?.hasExportStar) {
1698
1699
  let resolved = this.getResolvedAsset(dep, boundary);
1699
1700
  if (!resolved)
1700
1701
  continue;
@@ -49,7 +49,8 @@ function propagateSymbols({ options, assetGraph, changedAssetsPropagation, asset
49
49
  set.add(s);
50
50
  }
51
51
  }
52
- let hasNamespaceOutgoingDeps = outgoingDeps.some((d) => d.value.symbols?.get('*')?.local === '*');
52
+ let hasNamespaceOutgoingDeps = outgoingDeps.some((d) => d.value.symbols?.get('*')?.local === '*' ||
53
+ d.value.meta?.hasExportStar);
53
54
  // 1) Determine what the incomingDeps requests from the asset
54
55
  // ----------------------------------------------------------
55
56
  let isEntry = false;
@@ -124,7 +125,8 @@ function propagateSymbols({ options, assetGraph, changedAssetsPropagation, asset
124
125
  let depSymbols = dep.value.symbols;
125
126
  if (!depSymbols)
126
127
  continue;
127
- if (depSymbols.get('*')?.local === '*') {
128
+ if (depSymbols.get('*')?.local === '*' ||
129
+ dep.value.meta?.hasExportStar) {
128
130
  if (addAll) {
129
131
  depUsedSymbolsDown.add('*');
130
132
  }
@@ -220,7 +222,8 @@ function propagateSymbols({ options, assetGraph, changedAssetsPropagation, asset
220
222
  if (isExcluded) {
221
223
  outgoingDep.usedSymbolsDown.forEach((_, s) => outgoingDep.usedSymbolsUp.set(s, null));
222
224
  }
223
- if (outgoingDepSymbols.get('*')?.local === '*') {
225
+ if (outgoingDepSymbols.get('*')?.local === '*' ||
226
+ outgoingDep.value.meta?.hasExportStar) {
224
227
  outgoingDep.usedSymbolsUp.forEach((sResolved, s) => {
225
228
  if (s === 'default') {
226
229
  return;
@@ -289,7 +292,8 @@ function propagateSymbols({ options, assetGraph, changedAssetsPropagation, asset
289
292
  let incomingDepSymbols = incomingDep.value.symbols;
290
293
  if (!incomingDepSymbols)
291
294
  continue;
292
- let hasNamespaceReexport = incomingDepSymbols.get('*')?.local === '*';
295
+ let hasNamespaceReexport = incomingDepSymbols.get('*')?.local === '*' ||
296
+ incomingDep.value.meta?.hasExportStar;
293
297
  for (let s of incomingDep.usedSymbolsDown) {
294
298
  if (assetSymbols == null || // Assume everything could be provided if symbols are cleared
295
299
  assetNode.value.bundleBehavior === types_1.BundleBehavior.isolated ||
@@ -257,8 +257,8 @@ class BundleGraph {
257
257
  // Don't retarget because this cannot be resolved without also changing the asset symbols
258
258
  // (and the asset content itself).
259
259
  [...targets].every(([, t]) => new Set([...t.values()]).size === t.size)) {
260
- var _nodeValueSymbols$get;
261
- let isReexportAll = ((_nodeValueSymbols$get = nodeValueSymbols.get('*')) === null || _nodeValueSymbols$get === void 0 ? void 0 : _nodeValueSymbols$get.local) === '*';
260
+ var _nodeValueSymbols$get, _node$value$meta;
261
+ let isReexportAll = ((_nodeValueSymbols$get = nodeValueSymbols.get('*')) === null || _nodeValueSymbols$get === void 0 ? void 0 : _nodeValueSymbols$get.local) === '*' || ((_node$value$meta = node.value.meta) === null || _node$value$meta === void 0 ? void 0 : _node$value$meta.hasExportStar);
262
262
  let reexportAllLoc = isReexportAll ? (0, _nullthrows().default)(nodeValueSymbols.get('*')).loc : undefined;
263
263
 
264
264
  // TODO adjust sourceAssetIdNode.value.dependencies ?
@@ -1503,7 +1503,7 @@ class BundleGraph {
1503
1503
  let deps = this.getDependencies(asset).reverse();
1504
1504
  let potentialResults = [];
1505
1505
  for (let dep of deps) {
1506
- var _depSymbols$get;
1506
+ var _depSymbols$get, _dep$meta2;
1507
1507
  let depSymbols = dep.symbols;
1508
1508
  if (!depSymbols) {
1509
1509
  nonStaticDependency = true;
@@ -1555,7 +1555,7 @@ class BundleGraph {
1555
1555
  // If this module exports wildcards, resolve the original module.
1556
1556
  // Default exports are excluded from wildcard exports.
1557
1557
  // Wildcard reexports are never listed in the reexporting asset's symbols.
1558
- if (identifier == null && ((_depSymbols$get = depSymbols.get('*')) === null || _depSymbols$get === void 0 ? void 0 : _depSymbols$get.local) === '*' && symbol !== 'default') {
1558
+ if (identifier == null && (((_depSymbols$get = depSymbols.get('*')) === null || _depSymbols$get === void 0 ? void 0 : _depSymbols$get.local) === '*' || (_dep$meta2 = dep.meta) !== null && _dep$meta2 !== void 0 && _dep$meta2.hasExportStar) && symbol !== 'default') {
1559
1559
  let resolved = this.getResolvedAsset(dep, boundary);
1560
1560
  if (!resolved) {
1561
1561
  continue;
@@ -1681,10 +1681,10 @@ class BundleGraph {
1681
1681
  }
1682
1682
  let deps = this.getDependencies(asset);
1683
1683
  for (let dep of deps) {
1684
- var _depSymbols$get2;
1684
+ var _depSymbols$get2, _dep$meta3;
1685
1685
  let depSymbols = dep.symbols;
1686
1686
  if (!depSymbols) continue;
1687
- if (((_depSymbols$get2 = depSymbols.get('*')) === null || _depSymbols$get2 === void 0 ? void 0 : _depSymbols$get2.local) === '*') {
1687
+ if (((_depSymbols$get2 = depSymbols.get('*')) === null || _depSymbols$get2 === void 0 ? void 0 : _depSymbols$get2.local) === '*' || (_dep$meta3 = dep.meta) !== null && _dep$meta3 !== void 0 && _dep$meta3.hasExportStar) {
1688
1688
  let resolved = this.getResolvedAsset(dep, boundary);
1689
1689
  if (!resolved) continue;
1690
1690
  let exported = this.getExportedSymbols(resolved, boundary).filter(s => s.exportSymbol !== 'default').map(s => s.exportSymbol !== '*' ? {
@@ -94,8 +94,8 @@ function propagateSymbols({
94
94
  }
95
95
  }
96
96
  let hasNamespaceOutgoingDeps = outgoingDeps.some(d => {
97
- var _d$value$symbols;
98
- return ((_d$value$symbols = d.value.symbols) === null || _d$value$symbols === void 0 || (_d$value$symbols = _d$value$symbols.get('*')) === null || _d$value$symbols === void 0 ? void 0 : _d$value$symbols.local) === '*';
97
+ var _d$value$symbols, _d$value$meta;
98
+ return ((_d$value$symbols = d.value.symbols) === null || _d$value$symbols === void 0 || (_d$value$symbols = _d$value$symbols.get('*')) === null || _d$value$symbols === void 0 ? void 0 : _d$value$symbols.local) === '*' || ((_d$value$meta = d.value.meta) === null || _d$value$meta === void 0 ? void 0 : _d$value$meta.hasExportStar);
99
99
  });
100
100
 
101
101
  // 1) Determine what the incomingDeps requests from the asset
@@ -168,10 +168,10 @@ function propagateSymbols({
168
168
  // lib/index.js: `export * from "./foo.js"; export * from "./bar.js";`
169
169
  // lib/foo.js: `import { data } from "./bar.js"; export const foo = data + " esm2";`
170
170
  assetNode.usedSymbols.size > 0 || namespaceReexportedSymbols.size > 0) {
171
- var _depSymbols$get;
171
+ var _depSymbols$get, _dep$value$meta;
172
172
  let depSymbols = dep.value.symbols;
173
173
  if (!depSymbols) continue;
174
- if (((_depSymbols$get = depSymbols.get('*')) === null || _depSymbols$get === void 0 ? void 0 : _depSymbols$get.local) === '*') {
174
+ if (((_depSymbols$get = depSymbols.get('*')) === null || _depSymbols$get === void 0 ? void 0 : _depSymbols$get.local) === '*' || (_dep$value$meta = dep.value.meta) !== null && _dep$value$meta !== void 0 && _dep$value$meta.hasExportStar) {
175
175
  if (addAll) {
176
176
  depUsedSymbolsDown.add('*');
177
177
  } else {
@@ -258,7 +258,7 @@ function propagateSymbols({
258
258
  // analyzable exports
259
259
  let reexportedSymbolsSource = new Map();
260
260
  for (let outgoingDep of outgoingDeps) {
261
- var _outgoingDepSymbols$g;
261
+ var _outgoingDepSymbols$g, _outgoingDep$value$me;
262
262
  let outgoingDepSymbols = outgoingDep.value.symbols;
263
263
  if (!outgoingDepSymbols) continue;
264
264
  let isExcluded = assetGraph.getNodeIdsConnectedFrom(assetGraph.getNodeIdByContentKey(outgoingDep.id)).length === 0;
@@ -266,7 +266,7 @@ function propagateSymbols({
266
266
  if (isExcluded) {
267
267
  outgoingDep.usedSymbolsDown.forEach((_, s) => outgoingDep.usedSymbolsUp.set(s, null));
268
268
  }
269
- if (((_outgoingDepSymbols$g = outgoingDepSymbols.get('*')) === null || _outgoingDepSymbols$g === void 0 ? void 0 : _outgoingDepSymbols$g.local) === '*') {
269
+ if (((_outgoingDepSymbols$g = outgoingDepSymbols.get('*')) === null || _outgoingDepSymbols$g === void 0 ? void 0 : _outgoingDepSymbols$g.local) === '*' || (_outgoingDep$value$me = outgoingDep.value.meta) !== null && _outgoingDep$value$me !== void 0 && _outgoingDep$value$me.hasExportStar) {
270
270
  outgoingDep.usedSymbolsUp.forEach((sResolved, s) => {
271
271
  if (s === 'default') {
272
272
  return;
@@ -334,12 +334,12 @@ function propagateSymbols({
334
334
  current.set(s, value);
335
335
  }
336
336
  for (let incomingDep of incomingDeps) {
337
- var _incomingDepSymbols$g;
337
+ var _incomingDepSymbols$g, _incomingDep$value$me;
338
338
  let incomingDepUsedSymbolsUpOld = incomingDep.usedSymbolsUp;
339
339
  incomingDep.usedSymbolsUp = new Map();
340
340
  let incomingDepSymbols = incomingDep.value.symbols;
341
341
  if (!incomingDepSymbols) continue;
342
- let hasNamespaceReexport = ((_incomingDepSymbols$g = incomingDepSymbols.get('*')) === null || _incomingDepSymbols$g === void 0 ? void 0 : _incomingDepSymbols$g.local) === '*';
342
+ let hasNamespaceReexport = ((_incomingDepSymbols$g = incomingDepSymbols.get('*')) === null || _incomingDepSymbols$g === void 0 ? void 0 : _incomingDepSymbols$g.local) === '*' || ((_incomingDep$value$me = incomingDep.value.meta) === null || _incomingDep$value$me === void 0 ? void 0 : _incomingDep$value$me.hasExportStar);
343
343
  for (let s of incomingDep.usedSymbolsDown) {
344
344
  if (assetSymbols == null ||
345
345
  // Assume everything could be provided if symbols are cleared
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaspack/core",
3
- "version": "2.38.3",
3
+ "version": "2.38.4",
4
4
  "license": "(MIT OR Apache-2.0)",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -23,22 +23,22 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@mischnic/json-sourcemap": "^0.1.0",
26
- "@atlaspack/build-cache": "2.13.15",
27
- "@atlaspack/cache": "3.2.56",
26
+ "@atlaspack/build-cache": "2.13.16",
27
+ "@atlaspack/cache": "3.2.57",
28
28
  "@atlaspack/diagnostic": "2.14.4",
29
29
  "@atlaspack/events": "2.14.4",
30
- "@atlaspack/feature-flags": "2.31.1",
31
- "@atlaspack/fs": "2.15.56",
32
- "@atlaspack/graph": "3.6.23",
33
- "@atlaspack/logger": "2.14.53",
34
- "@atlaspack/package-manager": "2.14.61",
35
- "@atlaspack/plugin": "2.14.61",
36
- "@atlaspack/profiler": "2.15.22",
37
- "@atlaspack/rust": "3.29.0",
38
- "@atlaspack/types": "2.15.51",
39
- "@atlaspack/utils": "3.4.3",
40
- "@atlaspack/workers": "2.14.61",
41
- "@atlaspack/source-map": "3.3.5",
30
+ "@atlaspack/feature-flags": "2.31.2",
31
+ "@atlaspack/fs": "2.15.57",
32
+ "@atlaspack/graph": "3.6.24",
33
+ "@atlaspack/logger": "2.14.54",
34
+ "@atlaspack/package-manager": "2.14.62",
35
+ "@atlaspack/plugin": "2.14.62",
36
+ "@atlaspack/profiler": "2.15.23",
37
+ "@atlaspack/rust": "3.29.1",
38
+ "@atlaspack/types": "2.15.52",
39
+ "@atlaspack/utils": "3.4.4",
40
+ "@atlaspack/workers": "2.14.62",
41
+ "@atlaspack/source-map": "3.3.6",
42
42
  "base-x": "^3.0.8",
43
43
  "browserslist": "^4.6.6",
44
44
  "clone": "^2.1.1",
@@ -335,7 +335,9 @@ export default class BundleGraph {
335
335
  ([, t]: [any, any]) => new Set([...t.values()]).size === t.size,
336
336
  )
337
337
  ) {
338
- let isReexportAll = nodeValueSymbols.get('*')?.local === '*';
338
+ let isReexportAll =
339
+ nodeValueSymbols.get('*')?.local === '*' ||
340
+ node.value.meta?.hasExportStar;
339
341
  let reexportAllLoc = isReexportAll
340
342
  ? nullthrows(nodeValueSymbols.get('*')).loc
341
343
  : undefined;
@@ -2317,7 +2319,7 @@ export default class BundleGraph {
2317
2319
  // Wildcard reexports are never listed in the reexporting asset's symbols.
2318
2320
  if (
2319
2321
  identifier == null &&
2320
- depSymbols.get('*')?.local === '*' &&
2322
+ (depSymbols.get('*')?.local === '*' || dep.meta?.hasExportStar) &&
2321
2323
  symbol !== 'default'
2322
2324
  ) {
2323
2325
  let resolved = this.getResolvedAsset(dep, boundary);
@@ -2455,7 +2457,7 @@ export default class BundleGraph {
2455
2457
  let depSymbols = dep.symbols;
2456
2458
  if (!depSymbols) continue;
2457
2459
 
2458
- if (depSymbols.get('*')?.local === '*') {
2460
+ if (depSymbols.get('*')?.local === '*' || dep.meta?.hasExportStar) {
2459
2461
  let resolved = this.getResolvedAsset(dep, boundary);
2460
2462
  if (!resolved) continue;
2461
2463
  let exported = this.getExportedSymbols(resolved, boundary)
@@ -1,7 +1,6 @@
1
1
  import type {ContentKey, NodeId} from '@atlaspack/graph';
2
2
  import type {Meta, Symbol} from '@atlaspack/types';
3
3
  import type {Diagnostic} from '@atlaspack/diagnostic';
4
- import {getFeatureFlag} from '@atlaspack/feature-flags';
5
4
  import type {
6
5
  AssetNode,
7
6
  DependencyNode,
@@ -95,7 +94,9 @@ export function propagateSymbols({
95
94
  }
96
95
  }
97
96
  let hasNamespaceOutgoingDeps = outgoingDeps.some(
98
- (d) => d.value.symbols?.get('*')?.local === '*',
97
+ (d) =>
98
+ d.value.symbols?.get('*')?.local === '*' ||
99
+ d.value.meta?.hasExportStar,
99
100
  );
100
101
 
101
102
  // 1) Determine what the incomingDeps requests from the asset
@@ -192,7 +193,10 @@ export function propagateSymbols({
192
193
  let depSymbols = dep.value.symbols;
193
194
  if (!depSymbols) continue;
194
195
 
195
- if (depSymbols.get('*')?.local === '*') {
196
+ if (
197
+ depSymbols.get('*')?.local === '*' ||
198
+ dep.value.meta?.hasExportStar
199
+ ) {
196
200
  if (addAll) {
197
201
  depUsedSymbolsDown.add('*');
198
202
  } else {
@@ -335,7 +339,10 @@ export function propagateSymbols({
335
339
  );
336
340
  }
337
341
 
338
- if (outgoingDepSymbols.get('*')?.local === '*') {
342
+ if (
343
+ outgoingDepSymbols.get('*')?.local === '*' ||
344
+ outgoingDep.value.meta?.hasExportStar
345
+ ) {
339
346
  outgoingDep.usedSymbolsUp.forEach((sResolved, s) => {
340
347
  if (s === 'default') {
341
348
  return;
@@ -453,7 +460,9 @@ export function propagateSymbols({
453
460
  let incomingDepSymbols = incomingDep.value.symbols;
454
461
  if (!incomingDepSymbols) continue;
455
462
 
456
- let hasNamespaceReexport = incomingDepSymbols.get('*')?.local === '*';
463
+ let hasNamespaceReexport =
464
+ incomingDepSymbols.get('*')?.local === '*' ||
465
+ incomingDep.value.meta?.hasExportStar;
457
466
  for (let s of incomingDep.usedSymbolsDown) {
458
467
  if (
459
468
  assetSymbols == null || // Assume everything could be provided if symbols are cleared