rollup 4.53.1 → 4.53.3

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/dist/bin/rollup CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /*
3
3
  @license
4
- Rollup.js v4.53.1
5
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
4
+ Rollup.js v4.53.3
5
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
6
6
 
7
7
  https://github.com/rollup/rollup
8
8
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
package/dist/es/rollup.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -27,7 +27,7 @@ function _mergeNamespaces(n, m) {
27
27
  return Object.defineProperty(n, Symbol.toStringTag, { value: 'Module' });
28
28
  }
29
29
 
30
- var version = "4.53.1";
30
+ var version = "4.53.3";
31
31
 
32
32
  // src/vlq.ts
33
33
  var comma = ",".charCodeAt(0);
@@ -2584,6 +2584,7 @@ class ExternalModule {
2584
2584
  this.reexported = false;
2585
2585
  this.used = false;
2586
2586
  this.declarations = new Map();
2587
+ this.importersByExportedName = new Map();
2587
2588
  this.mostCommonSuggestion = 0;
2588
2589
  this.nameSuggestions = new Map();
2589
2590
  this.suggestedVariableName = makeLegal(id.split(/[/\\]/).pop());
@@ -2620,8 +2621,11 @@ class ExternalModule {
2620
2621
  cacheInfoGetters() {
2621
2622
  cacheObjectGetters(this.info, ['dynamicImporters', 'importers']);
2622
2623
  }
2623
- getVariableForExportName(name) {
2624
+ getVariableForExportName(name, { importChain }) {
2624
2625
  const declaration = this.declarations.get(name);
2626
+ for (const module of importChain) {
2627
+ getOrCreate(this.importersByExportedName, name, getNewSet).add(module);
2628
+ }
2625
2629
  if (declaration)
2626
2630
  return [declaration];
2627
2631
  const externalVariable = new ExternalVariable(this, name);
@@ -2645,7 +2649,10 @@ class ExternalModule {
2645
2649
  return;
2646
2650
  const importersSet = new Set();
2647
2651
  for (const name of unused) {
2648
- for (const importer of this.declarations.get(name).module.importers) {
2652
+ const importersOfName = this.importersByExportedName.get(name);
2653
+ for (const importer of this.importers) {
2654
+ if (!importersOfName?.has(importer))
2655
+ continue;
2649
2656
  importersSet.add(importer);
2650
2657
  }
2651
2658
  }
@@ -5110,6 +5117,7 @@ class LocalVariable extends Variable {
5110
5117
  return true;
5111
5118
  if (path.length === 0)
5112
5119
  return false;
5120
+ // if (this.isReassigned || this.init.included) return true;
5113
5121
  if (this.isReassigned)
5114
5122
  return true;
5115
5123
  return (!context.assigned.trackEntityAtPathAndGetIfTracked(path, this) &&
@@ -11626,7 +11634,8 @@ class AssignmentExpression extends NodeBase {
11626
11634
  this.left.hasEffectsWhenDestructuring?.(context, EMPTY_PATH, right));
11627
11635
  }
11628
11636
  hasEffectsOnInteractionAtPath(path, interaction, context) {
11629
- return this.right.hasEffectsOnInteractionAtPath(path, interaction, context);
11637
+ return ((interaction.type === INTERACTION_ASSIGNED && this.left.included) ||
11638
+ this.right.hasEffectsOnInteractionAtPath(path, interaction, context));
11630
11639
  }
11631
11640
  include(context, includeChildrenRecursively) {
11632
11641
  const { deoptimized, isConstReassignment, left, right, operator } = this;
@@ -16267,7 +16276,7 @@ const bufferParsers = [
16267
16276
  const flags = buffer[position];
16268
16277
  node.tail = (flags & 1) === 1;
16269
16278
  const cookedPosition = buffer[position + 1];
16270
- const cooked = cookedPosition === 0 ? undefined : buffer.convertString(cookedPosition);
16279
+ const cooked = cookedPosition === 0 ? null : buffer.convertString(cookedPosition);
16271
16280
  const raw = buffer.convertString(buffer[position + 2]);
16272
16281
  node.value = { cooked, raw };
16273
16282
  },
@@ -16750,7 +16759,7 @@ const MISSING_EXPORT_SHIM_DESCRIPTION = {
16750
16759
  identifier: null,
16751
16760
  localName: MISSING_EXPORT_SHIM_VARIABLE
16752
16761
  };
16753
- function getVariableForExportNameRecursive(target, name, importerForSideEffects, isExportAllSearch, searchedNamesAndModules = new Map()) {
16762
+ function getVariableForExportNameRecursive(target, name, importerForSideEffects, isExportAllSearch, searchedNamesAndModules = new Map(), importChain) {
16754
16763
  const searchedModules = searchedNamesAndModules.get(name);
16755
16764
  if (searchedModules) {
16756
16765
  if (searchedModules.has(target)) {
@@ -16762,6 +16771,7 @@ function getVariableForExportNameRecursive(target, name, importerForSideEffects,
16762
16771
  searchedNamesAndModules.set(name, new Set([target]));
16763
16772
  }
16764
16773
  return target.getVariableForExportName(name, {
16774
+ importChain,
16765
16775
  importerForSideEffects,
16766
16776
  isExportAllSearch,
16767
16777
  searchedNamesAndModules
@@ -17092,7 +17102,7 @@ class Module {
17092
17102
  }
17093
17103
  return this.syntheticNamespace;
17094
17104
  }
17095
- getVariableForExportName(name, { importerForSideEffects, isExportAllSearch, onlyExplicit, searchedNamesAndModules } = EMPTY_OBJECT) {
17105
+ getVariableForExportName(name, { importerForSideEffects, importChain = [], isExportAllSearch, onlyExplicit, searchedNamesAndModules } = EMPTY_OBJECT) {
17096
17106
  if (name[0] === '*') {
17097
17107
  if (name.length === 1) {
17098
17108
  // export * from './other'
@@ -17100,12 +17110,14 @@ class Module {
17100
17110
  }
17101
17111
  // export * from 'external'
17102
17112
  const module = this.graph.modulesById.get(name.slice(1));
17103
- return module.getVariableForExportName('*');
17113
+ return module.getVariableForExportName('*', {
17114
+ importChain: [...importChain, this.id]
17115
+ });
17104
17116
  }
17105
17117
  // export { foo } from './other'
17106
17118
  const reexportDeclaration = this.reexportDescriptions.get(name);
17107
17119
  if (reexportDeclaration) {
17108
- const [variable, options] = getVariableForExportNameRecursive(reexportDeclaration.module, reexportDeclaration.localName, importerForSideEffects, false, searchedNamesAndModules);
17120
+ const [variable, options] = getVariableForExportNameRecursive(reexportDeclaration.module, reexportDeclaration.localName, importerForSideEffects, false, searchedNamesAndModules, [...importChain, this.id]);
17109
17121
  if (!variable) {
17110
17122
  return this.error(logMissingExport(reexportDeclaration.localName, this.id, reexportDeclaration.module.id, !!options?.missingButExportExists), reexportDeclaration.start);
17111
17123
  }
@@ -17141,7 +17153,7 @@ class Module {
17141
17153
  }
17142
17154
  if (name !== 'default') {
17143
17155
  const foundNamespaceReexport = this.namespaceReexportsByName.get(name) ??
17144
- this.getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules);
17156
+ this.getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules, [...importChain, this.id]);
17145
17157
  this.namespaceReexportsByName.set(name, foundNamespaceReexport);
17146
17158
  if (foundNamespaceReexport[0]) {
17147
17159
  return foundNamespaceReexport;
@@ -17395,7 +17407,7 @@ class Module {
17395
17407
  if (otherModule instanceof Module && importDescription.name === '*') {
17396
17408
  return otherModule.namespace;
17397
17409
  }
17398
- const [declaration, options] = getVariableForExportNameRecursive(otherModule, importDescription.name, importerForSideEffects || this, isExportAllSearch, searchedNamesAndModules);
17410
+ const [declaration, options] = getVariableForExportNameRecursive(otherModule, importDescription.name, importerForSideEffects || this, isExportAllSearch, searchedNamesAndModules, [this.id]);
17399
17411
  if (!declaration) {
17400
17412
  return this.error(logMissingExport(importDescription.name, this.id, otherModule.id, !!options?.missingButExportExists), importDescription.start);
17401
17413
  }
@@ -17600,13 +17612,13 @@ class Module {
17600
17612
  getImportedJsxFactoryVariable(baseName, nodeStart, importSource) {
17601
17613
  const { id } = this.resolvedIds[importSource];
17602
17614
  const module = this.graph.modulesById.get(id);
17603
- const [variable] = module.getVariableForExportName(baseName);
17615
+ const [variable] = module.getVariableForExportName(baseName, { importChain: [this.id] });
17604
17616
  if (!variable) {
17605
17617
  return this.error(logMissingJsxExport(baseName, id, this.id), nodeStart);
17606
17618
  }
17607
17619
  return variable;
17608
17620
  }
17609
- getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules) {
17621
+ getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules, importChain) {
17610
17622
  let foundSyntheticDeclaration = null;
17611
17623
  const foundInternalDeclarations = new Map();
17612
17624
  const foundExternalDeclarations = new Set();
@@ -17618,7 +17630,7 @@ class Module {
17618
17630
  const [variable, options] = getVariableForExportNameRecursive(module, name, importerForSideEffects, true,
17619
17631
  // We are creating a copy to handle the case where the same binding is
17620
17632
  // imported through different namespace reexports gracefully
17621
- copyNameToModulesMap(searchedNamesAndModules));
17633
+ copyNameToModulesMap(searchedNamesAndModules), importChain);
17622
17634
  if (module instanceof ExternalModule || options?.indirectExternal) {
17623
17635
  foundExternalDeclarations.add(variable);
17624
17636
  }
@@ -17659,7 +17671,9 @@ class Module {
17659
17671
  const syntheticNamespaces = new Set();
17660
17672
  for (const module of [this, ...this.exportAllModules]) {
17661
17673
  if (module instanceof ExternalModule) {
17662
- const [externalVariable] = module.getVariableForExportName('*');
17674
+ const [externalVariable] = module.getVariableForExportName('*', {
17675
+ importChain: [this.id]
17676
+ });
17663
17677
  externalVariable.includePath(UNKNOWN_PATH, createInclusionContext());
17664
17678
  this.includedImports.add(externalVariable);
17665
17679
  externalNamespaces.add(externalVariable);
@@ -21818,7 +21832,7 @@ class FileEmitter {
21818
21832
  }
21819
21833
  else {
21820
21834
  const sourceHash = getHash(consumedFile.source);
21821
- getOrCreate(consumedAssetsByHash, sourceHash, () => []).push(consumedFile);
21835
+ getOrCreate(consumedAssetsByHash, sourceHash, getNewArray).push(consumedFile);
21822
21836
  }
21823
21837
  }
21824
21838
  else if (consumedFile.type === 'prebuilt-chunk') {
@@ -22737,7 +22751,7 @@ class Graph {
22737
22751
  for (const module of this.modules) {
22738
22752
  for (const importDescription of module.importDescriptions.values()) {
22739
22753
  if (importDescription.name !== '*') {
22740
- const [variable, options] = importDescription.module.getVariableForExportName(importDescription.name);
22754
+ const [variable, options] = importDescription.module.getVariableForExportName(importDescription.name, { importChain: [module.id] });
22741
22755
  if (!variable) {
22742
22756
  module.log(LOGLEVEL_WARN, logMissingExport(importDescription.name, module.id, importDescription.module.id, !!options?.missingButExportExists), importDescription.start);
22743
22757
  }
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1930,7 +1930,7 @@ const nodeConverters = [
1930
1930
  function templateElement(position, buffer) {
1931
1931
  const flags = buffer[position + 2];
1932
1932
  const cookedPosition = buffer[position + 3];
1933
- const cooked = cookedPosition === 0 ? undefined : buffer.convertString(cookedPosition);
1933
+ const cooked = cookedPosition === 0 ? null : buffer.convertString(cookedPosition);
1934
1934
  const raw = buffer.convertString(buffer[position + 4]);
1935
1935
  return {
1936
1936
  type: 'TemplateElement',
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
package/dist/parseAst.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
package/dist/rollup.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1993,7 +1993,7 @@ const nodeConverters = [
1993
1993
  function templateElement(position, buffer) {
1994
1994
  const flags = buffer[position + 2];
1995
1995
  const cookedPosition = buffer[position + 3];
1996
- const cooked = cookedPosition === 0 ? undefined : buffer.convertString(cookedPosition);
1996
+ const cooked = cookedPosition === 0 ? null : buffer.convertString(cookedPosition);
1997
1997
  const raw = buffer.convertString(buffer[position + 4]);
1998
1998
  return {
1999
1999
  type: 'TemplateElement',
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -42,7 +42,7 @@ function _mergeNamespaces(n, m) {
42
42
 
43
43
  const promises__namespace = /*#__PURE__*/_interopNamespaceDefault(promises);
44
44
 
45
- var version = "4.53.1";
45
+ var version = "4.53.3";
46
46
 
47
47
  function ensureArray$1(items) {
48
48
  if (Array.isArray(items)) {
@@ -369,7 +369,7 @@ class FileEmitter {
369
369
  }
370
370
  else {
371
371
  const sourceHash = getHash(consumedFile.source);
372
- getOrCreate(consumedAssetsByHash, sourceHash, () => []).push(consumedFile);
372
+ getOrCreate(consumedAssetsByHash, sourceHash, getNewArray).push(consumedFile);
373
373
  }
374
374
  }
375
375
  else if (consumedFile.type === 'prebuilt-chunk') {
@@ -6375,6 +6375,7 @@ class ExternalModule {
6375
6375
  this.reexported = false;
6376
6376
  this.used = false;
6377
6377
  this.declarations = new Map();
6378
+ this.importersByExportedName = new Map();
6378
6379
  this.mostCommonSuggestion = 0;
6379
6380
  this.nameSuggestions = new Map();
6380
6381
  this.suggestedVariableName = makeLegal(id.split(/[/\\]/).pop());
@@ -6411,8 +6412,11 @@ class ExternalModule {
6411
6412
  cacheInfoGetters() {
6412
6413
  cacheObjectGetters(this.info, ['dynamicImporters', 'importers']);
6413
6414
  }
6414
- getVariableForExportName(name) {
6415
+ getVariableForExportName(name, { importChain }) {
6415
6416
  const declaration = this.declarations.get(name);
6417
+ for (const module of importChain) {
6418
+ getOrCreate(this.importersByExportedName, name, getNewSet).add(module);
6419
+ }
6416
6420
  if (declaration)
6417
6421
  return [declaration];
6418
6422
  const externalVariable = new ExternalVariable(this, name);
@@ -6436,7 +6440,10 @@ class ExternalModule {
6436
6440
  return;
6437
6441
  const importersSet = new Set();
6438
6442
  for (const name of unused) {
6439
- for (const importer of this.declarations.get(name).module.importers) {
6443
+ const importersOfName = this.importersByExportedName.get(name);
6444
+ for (const importer of this.importers) {
6445
+ if (!importersOfName?.has(importer))
6446
+ continue;
6440
6447
  importersSet.add(importer);
6441
6448
  }
6442
6449
  }
@@ -8899,6 +8906,7 @@ class LocalVariable extends Variable {
8899
8906
  return true;
8900
8907
  if (path.length === 0)
8901
8908
  return false;
8909
+ // if (this.isReassigned || this.init.included) return true;
8902
8910
  if (this.isReassigned)
8903
8911
  return true;
8904
8912
  return (!context.assigned.trackEntityAtPathAndGetIfTracked(path, this) &&
@@ -13236,7 +13244,8 @@ class AssignmentExpression extends NodeBase {
13236
13244
  this.left.hasEffectsWhenDestructuring?.(context, EMPTY_PATH, right));
13237
13245
  }
13238
13246
  hasEffectsOnInteractionAtPath(path, interaction, context) {
13239
- return this.right.hasEffectsOnInteractionAtPath(path, interaction, context);
13247
+ return ((interaction.type === INTERACTION_ASSIGNED && this.left.included) ||
13248
+ this.right.hasEffectsOnInteractionAtPath(path, interaction, context));
13240
13249
  }
13241
13250
  include(context, includeChildrenRecursively) {
13242
13251
  const { deoptimized, isConstReassignment, left, right, operator } = this;
@@ -17877,7 +17886,7 @@ const bufferParsers = [
17877
17886
  const flags = buffer[position];
17878
17887
  node.tail = (flags & 1) === 1;
17879
17888
  const cookedPosition = buffer[position + 1];
17880
- const cooked = cookedPosition === 0 ? undefined : buffer.convertString(cookedPosition);
17889
+ const cooked = cookedPosition === 0 ? null : buffer.convertString(cookedPosition);
17881
17890
  const raw = buffer.convertString(buffer[position + 2]);
17882
17891
  node.value = { cooked, raw };
17883
17892
  },
@@ -18353,7 +18362,7 @@ const MISSING_EXPORT_SHIM_DESCRIPTION = {
18353
18362
  identifier: null,
18354
18363
  localName: MISSING_EXPORT_SHIM_VARIABLE
18355
18364
  };
18356
- function getVariableForExportNameRecursive(target, name, importerForSideEffects, isExportAllSearch, searchedNamesAndModules = new Map()) {
18365
+ function getVariableForExportNameRecursive(target, name, importerForSideEffects, isExportAllSearch, searchedNamesAndModules = new Map(), importChain) {
18357
18366
  const searchedModules = searchedNamesAndModules.get(name);
18358
18367
  if (searchedModules) {
18359
18368
  if (searchedModules.has(target)) {
@@ -18365,6 +18374,7 @@ function getVariableForExportNameRecursive(target, name, importerForSideEffects,
18365
18374
  searchedNamesAndModules.set(name, new Set([target]));
18366
18375
  }
18367
18376
  return target.getVariableForExportName(name, {
18377
+ importChain,
18368
18378
  importerForSideEffects,
18369
18379
  isExportAllSearch,
18370
18380
  searchedNamesAndModules
@@ -18695,7 +18705,7 @@ class Module {
18695
18705
  }
18696
18706
  return this.syntheticNamespace;
18697
18707
  }
18698
- getVariableForExportName(name, { importerForSideEffects, isExportAllSearch, onlyExplicit, searchedNamesAndModules } = parseAst_js.EMPTY_OBJECT) {
18708
+ getVariableForExportName(name, { importerForSideEffects, importChain = [], isExportAllSearch, onlyExplicit, searchedNamesAndModules } = parseAst_js.EMPTY_OBJECT) {
18699
18709
  if (name[0] === '*') {
18700
18710
  if (name.length === 1) {
18701
18711
  // export * from './other'
@@ -18703,12 +18713,14 @@ class Module {
18703
18713
  }
18704
18714
  // export * from 'external'
18705
18715
  const module = this.graph.modulesById.get(name.slice(1));
18706
- return module.getVariableForExportName('*');
18716
+ return module.getVariableForExportName('*', {
18717
+ importChain: [...importChain, this.id]
18718
+ });
18707
18719
  }
18708
18720
  // export { foo } from './other'
18709
18721
  const reexportDeclaration = this.reexportDescriptions.get(name);
18710
18722
  if (reexportDeclaration) {
18711
- const [variable, options] = getVariableForExportNameRecursive(reexportDeclaration.module, reexportDeclaration.localName, importerForSideEffects, false, searchedNamesAndModules);
18723
+ const [variable, options] = getVariableForExportNameRecursive(reexportDeclaration.module, reexportDeclaration.localName, importerForSideEffects, false, searchedNamesAndModules, [...importChain, this.id]);
18712
18724
  if (!variable) {
18713
18725
  return this.error(parseAst_js.logMissingExport(reexportDeclaration.localName, this.id, reexportDeclaration.module.id, !!options?.missingButExportExists), reexportDeclaration.start);
18714
18726
  }
@@ -18744,7 +18756,7 @@ class Module {
18744
18756
  }
18745
18757
  if (name !== 'default') {
18746
18758
  const foundNamespaceReexport = this.namespaceReexportsByName.get(name) ??
18747
- this.getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules);
18759
+ this.getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules, [...importChain, this.id]);
18748
18760
  this.namespaceReexportsByName.set(name, foundNamespaceReexport);
18749
18761
  if (foundNamespaceReexport[0]) {
18750
18762
  return foundNamespaceReexport;
@@ -18998,7 +19010,7 @@ class Module {
18998
19010
  if (otherModule instanceof Module && importDescription.name === '*') {
18999
19011
  return otherModule.namespace;
19000
19012
  }
19001
- const [declaration, options] = getVariableForExportNameRecursive(otherModule, importDescription.name, importerForSideEffects || this, isExportAllSearch, searchedNamesAndModules);
19013
+ const [declaration, options] = getVariableForExportNameRecursive(otherModule, importDescription.name, importerForSideEffects || this, isExportAllSearch, searchedNamesAndModules, [this.id]);
19002
19014
  if (!declaration) {
19003
19015
  return this.error(parseAst_js.logMissingExport(importDescription.name, this.id, otherModule.id, !!options?.missingButExportExists), importDescription.start);
19004
19016
  }
@@ -19203,13 +19215,13 @@ class Module {
19203
19215
  getImportedJsxFactoryVariable(baseName, nodeStart, importSource) {
19204
19216
  const { id } = this.resolvedIds[importSource];
19205
19217
  const module = this.graph.modulesById.get(id);
19206
- const [variable] = module.getVariableForExportName(baseName);
19218
+ const [variable] = module.getVariableForExportName(baseName, { importChain: [this.id] });
19207
19219
  if (!variable) {
19208
19220
  return this.error(parseAst_js.logMissingJsxExport(baseName, id, this.id), nodeStart);
19209
19221
  }
19210
19222
  return variable;
19211
19223
  }
19212
- getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules) {
19224
+ getVariableFromNamespaceReexports(name, importerForSideEffects, searchedNamesAndModules, importChain) {
19213
19225
  let foundSyntheticDeclaration = null;
19214
19226
  const foundInternalDeclarations = new Map();
19215
19227
  const foundExternalDeclarations = new Set();
@@ -19221,7 +19233,7 @@ class Module {
19221
19233
  const [variable, options] = getVariableForExportNameRecursive(module, name, importerForSideEffects, true,
19222
19234
  // We are creating a copy to handle the case where the same binding is
19223
19235
  // imported through different namespace reexports gracefully
19224
- copyNameToModulesMap(searchedNamesAndModules));
19236
+ copyNameToModulesMap(searchedNamesAndModules), importChain);
19225
19237
  if (module instanceof ExternalModule || options?.indirectExternal) {
19226
19238
  foundExternalDeclarations.add(variable);
19227
19239
  }
@@ -19262,7 +19274,9 @@ class Module {
19262
19274
  const syntheticNamespaces = new Set();
19263
19275
  for (const module of [this, ...this.exportAllModules]) {
19264
19276
  if (module instanceof ExternalModule) {
19265
- const [externalVariable] = module.getVariableForExportName('*');
19277
+ const [externalVariable] = module.getVariableForExportName('*', {
19278
+ importChain: [this.id]
19279
+ });
19266
19280
  externalVariable.includePath(UNKNOWN_PATH, createInclusionContext());
19267
19281
  this.includedImports.add(externalVariable);
19268
19282
  externalNamespaces.add(externalVariable);
@@ -23109,7 +23123,7 @@ class Graph {
23109
23123
  for (const module of this.modules) {
23110
23124
  for (const importDescription of module.importDescriptions.values()) {
23111
23125
  if (importDescription.name !== '*') {
23112
- const [variable, options] = importDescription.module.getVariableForExportName(importDescription.name);
23126
+ const [variable, options] = importDescription.module.getVariableForExportName(importDescription.name, { importChain: [module.id] });
23113
23127
  if (!variable) {
23114
23128
  module.log(parseAst_js.LOGLEVEL_WARN, parseAst_js.logMissingExport(importDescription.name, module.id, importDescription.module.id, !!options?.missingButExportExists), importDescription.start);
23115
23129
  }
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.53.1
4
- Fri, 07 Nov 2025 21:55:39 GMT - commit e3bdcdfe5633a6835dc4c61f8cf93a682406d965
3
+ Rollup.js v4.53.3
4
+ Wed, 19 Nov 2025 06:31:27 GMT - commit 998b5950a6ea7cea1a7b994e8dab45472c3cbe7e
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rollup",
3
- "version": "4.53.1",
3
+ "version": "4.53.3",
4
4
  "description": "Next-generation ES module bundler",
5
5
  "main": "dist/rollup.js",
6
6
  "module": "dist/es/rollup.js",
@@ -57,9 +57,8 @@
57
57
  "preview:docs": "vitepress preview docs",
58
58
  "ci:artifacts": "napi artifacts",
59
59
  "ci:lint": "concurrently -c red,yellow,green,blue 'npm:lint:js:nofix' 'npm:lint:native-js' 'npm:lint:markdown:nofix' 'npm:lint:rust:nofix'",
60
- "ci:test:only": "npm run build:cjs && npm run build:copy-native && npm run build:bootstrap && npm run build:copy-native && npm run test:only",
61
- "ci:test:all": "npm run build:cjs && npm run build:copy-native && npm run build:bootstrap && npm run build:copy-native && concurrently --kill-others-on-fail -c green,blue,magenta,cyan 'npm:test:only' 'npm:test:typescript' 'npm:test:leak' 'npm:test:browser'",
62
- "ci:coverage": "npm run build:cjs && npm run build:copy-native && npm run build:bootstrap && npm run build:copy-native && NODE_OPTIONS=--no-experimental-require-module nyc --reporter lcovonly mocha",
60
+ "ci:test:all": "concurrently --kill-others-on-fail -c green,blue,magenta,cyan 'npm:test:only' 'npm:test:typescript' 'npm:test:leak' 'npm:test:browser'",
61
+ "ci:coverage": "NODE_OPTIONS=--no-experimental-require-module nyc --reporter lcovonly mocha",
63
62
  "lint": "concurrently -c red,yellow,green,blue 'npm:lint:js' 'npm:lint:native-js' 'npm:lint:markdown' 'npm:lint:rust'",
64
63
  "lint:js": "eslint . --fix --cache --concurrency auto",
65
64
  "lint:js:nofix": "eslint . --cache --concurrency auto",
@@ -69,12 +68,15 @@
69
68
  "lint:rust": "cd rust && cargo fmt && cargo clippy --fix --allow-dirty",
70
69
  "lint:rust:nofix": "cd rust && cargo fmt --check && cargo clippy",
71
70
  "perf": "npm run build:bootstrap:cjs && node --expose-gc scripts/perf-report/index.js",
72
- "prepare": "husky && patch-package && node scripts/check-release.js || npm run build:prepare",
71
+ "prepare": "husky && npm run prepare:patch && node scripts/check-release.js || npm run build:prepare",
72
+ "prepare:patch": "patch-package",
73
73
  "prepublishOnly": "node scripts/check-release.js && node scripts/prepublish.js",
74
74
  "postpublish": "node scripts/postpublish.js",
75
75
  "prepublish:napi": "napi prepublish --no-gh-release",
76
76
  "release": "node scripts/prepare-release.js",
77
77
  "release:docs": "git fetch --update-head-ok origin master:master && git branch --force documentation-published master && git push origin documentation-published",
78
+ "check-audit": "check-audit",
79
+ "resolve-audit": "resolve-audit",
78
80
  "test": "npm run build && npm run test:all",
79
81
  "test:update-snapshots": "node scripts/update-snapshots.js",
80
82
  "test:cjs": "npm run build:cjs && npm run test:only",
@@ -86,7 +88,7 @@
86
88
  "test:package": "node scripts/test-package.js",
87
89
  "test:options": "node scripts/test-options.js",
88
90
  "test:only": "mocha test/test.js",
89
- "test:typescript": "echo skipped",
91
+ "test:typescript": "shx rm -rf test/typescript/dist && shx cp -r dist test/typescript/ && tsc --noEmit -p test/typescript && tsc --noEmit -p . && tsc --noEmit -p scripts && vue-tsc --noEmit -p docs",
90
92
  "test:browser": "mocha test/browser/index.js",
91
93
  "watch": "rollup --config rollup.config.ts --configPlugin typescript --watch"
92
94
  },
@@ -109,28 +111,28 @@
109
111
  "homepage": "https://rollupjs.org/",
110
112
  "optionalDependencies": {
111
113
  "fsevents": "~2.3.2",
112
- "@rollup/rollup-darwin-arm64": "4.53.1",
113
- "@rollup/rollup-android-arm64": "4.53.1",
114
- "@rollup/rollup-win32-arm64-msvc": "4.53.1",
115
- "@rollup/rollup-freebsd-arm64": "4.53.1",
116
- "@rollup/rollup-linux-arm64-gnu": "4.53.1",
117
- "@rollup/rollup-linux-arm64-musl": "4.53.1",
118
- "@rollup/rollup-android-arm-eabi": "4.53.1",
119
- "@rollup/rollup-linux-arm-gnueabihf": "4.53.1",
120
- "@rollup/rollup-linux-arm-musleabihf": "4.53.1",
121
- "@rollup/rollup-win32-ia32-msvc": "4.53.1",
122
- "@rollup/rollup-linux-loong64-gnu": "4.53.1",
123
- "@rollup/rollup-linux-riscv64-gnu": "4.53.1",
124
- "@rollup/rollup-linux-riscv64-musl": "4.53.1",
125
- "@rollup/rollup-linux-ppc64-gnu": "4.53.1",
126
- "@rollup/rollup-linux-s390x-gnu": "4.53.1",
127
- "@rollup/rollup-darwin-x64": "4.53.1",
128
- "@rollup/rollup-win32-x64-gnu": "4.53.1",
129
- "@rollup/rollup-win32-x64-msvc": "4.53.1",
130
- "@rollup/rollup-freebsd-x64": "4.53.1",
131
- "@rollup/rollup-linux-x64-gnu": "4.53.1",
132
- "@rollup/rollup-linux-x64-musl": "4.53.1",
133
- "@rollup/rollup-openharmony-arm64": "4.53.1"
114
+ "@rollup/rollup-darwin-arm64": "4.53.3",
115
+ "@rollup/rollup-android-arm64": "4.53.3",
116
+ "@rollup/rollup-win32-arm64-msvc": "4.53.3",
117
+ "@rollup/rollup-freebsd-arm64": "4.53.3",
118
+ "@rollup/rollup-linux-arm64-gnu": "4.53.3",
119
+ "@rollup/rollup-linux-arm64-musl": "4.53.3",
120
+ "@rollup/rollup-android-arm-eabi": "4.53.3",
121
+ "@rollup/rollup-linux-arm-gnueabihf": "4.53.3",
122
+ "@rollup/rollup-linux-arm-musleabihf": "4.53.3",
123
+ "@rollup/rollup-win32-ia32-msvc": "4.53.3",
124
+ "@rollup/rollup-linux-loong64-gnu": "4.53.3",
125
+ "@rollup/rollup-linux-riscv64-gnu": "4.53.3",
126
+ "@rollup/rollup-linux-riscv64-musl": "4.53.3",
127
+ "@rollup/rollup-linux-ppc64-gnu": "4.53.3",
128
+ "@rollup/rollup-linux-s390x-gnu": "4.53.3",
129
+ "@rollup/rollup-darwin-x64": "4.53.3",
130
+ "@rollup/rollup-win32-x64-gnu": "4.53.3",
131
+ "@rollup/rollup-win32-x64-msvc": "4.53.3",
132
+ "@rollup/rollup-freebsd-x64": "4.53.3",
133
+ "@rollup/rollup-linux-x64-gnu": "4.53.3",
134
+ "@rollup/rollup-linux-x64-musl": "4.53.3",
135
+ "@rollup/rollup-openharmony-arm64": "4.53.3"
134
136
  },
135
137
  "dependencies": {
136
138
  "@types/estree": "1.0.8"
@@ -146,9 +148,9 @@
146
148
  "@codemirror/state": "^6.5.2",
147
149
  "@codemirror/view": "^6.38.6",
148
150
  "@eslint/js": "^9.39.1",
149
- "@inquirer/prompts": "^7.9.0",
151
+ "@inquirer/prompts": "^7.10.0",
150
152
  "@jridgewell/sourcemap-codec": "^1.5.5",
151
- "@mermaid-js/mermaid-cli": "^11.4.0",
153
+ "@mermaid-js/mermaid-cli": "^11.12.0",
152
154
  "@napi-rs/cli": "^3.4.1",
153
155
  "@rollup/plugin-alias": "^6.0.0",
154
156
  "@rollup/plugin-buble": "^1.0.3",
@@ -159,9 +161,9 @@
159
161
  "@rollup/plugin-terser": "^0.4.4",
160
162
  "@rollup/plugin-typescript": "^12.3.0",
161
163
  "@rollup/pluginutils": "^5.3.0",
162
- "@shikijs/vitepress-twoslash": "^3.14.0",
164
+ "@shikijs/vitepress-twoslash": "^3.15.0",
163
165
  "@types/mocha": "^10.0.10",
164
- "@types/node": "^20.19.24",
166
+ "@types/node": "^20.19.25",
165
167
  "@types/picomatch": "^4.0.2",
166
168
  "@types/semver": "^7.7.1",
167
169
  "@types/yargs-parser": "^21.0.3",
@@ -194,19 +196,20 @@
194
196
  "locate-character": "^3.0.0",
195
197
  "magic-string": "^0.30.21",
196
198
  "memfs": "^4.50.0",
197
- "mocha": "^11.7.4",
198
- "nodemon": "^3.1.10",
199
+ "mocha": "^11.7.5",
200
+ "nodemon": "^3.1.11",
201
+ "npm-audit-resolver": "^3.0.0-RC.0",
199
202
  "nyc": "^17.1.0",
200
203
  "patch-package": "^8.0.1",
201
204
  "picocolors": "^1.1.1",
202
205
  "picomatch": "^4.0.3",
203
- "pinia": "^3.0.3",
206
+ "pinia": "^3.0.4",
204
207
  "prettier": "^3.6.2",
205
208
  "prettier-plugin-organize-imports": "^4.3.0",
206
209
  "pretty-bytes": "^7.1.0",
207
210
  "pretty-ms": "^9.3.0",
208
211
  "requirejs": "^2.3.7",
209
- "rollup": "^4.52.5",
212
+ "rollup": "^4.53.2",
210
213
  "rollup-plugin-license": "^3.6.0",
211
214
  "rollup-plugin-string": "^3.0.0",
212
215
  "semver": "^7.7.3",
@@ -215,20 +218,20 @@
215
218
  "source-map": "^0.7.6",
216
219
  "source-map-support": "^0.5.21",
217
220
  "systemjs": "^6.15.1",
218
- "terser": "^5.44.0",
221
+ "terser": "^5.44.1",
219
222
  "tslib": "^2.8.1",
220
223
  "typescript": "^5.9.3",
221
- "typescript-eslint": "^8.46.3",
222
- "vite": "^7.1.12",
224
+ "typescript-eslint": "^8.46.4",
225
+ "vite": "^7.2.2",
223
226
  "vitepress": "^1.6.4",
224
- "vue": "^3.5.22",
227
+ "vue": "^3.5.24",
225
228
  "vue-eslint-parser": "^10.2.0",
226
229
  "vue-tsc": "^3.1.3",
227
230
  "wasm-pack": "^0.13.1",
228
231
  "yargs-parser": "^21.1.1"
229
232
  },
230
233
  "overrides": {
231
- "axios": "^1.13.1",
234
+ "axios": "^1.13.2",
232
235
  "esbuild": ">0.24.2",
233
236
  "readable-stream": "npm:@built-in/readable-stream@1",
234
237
  "semver": "^7.7.3",