You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					393 lines
				
				12 KiB
			
		
		
			
		
	
	
					393 lines
				
				12 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "buildDynamicImport", {
							 | 
						||
| 
								 | 
							
								  enumerable: true,
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return _dynamicImport.buildDynamicImport;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.buildNamespaceInitStatements = buildNamespaceInitStatements;
							 | 
						||
| 
								 | 
							
								exports.ensureStatementsHoisted = ensureStatementsHoisted;
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "getDynamicImportSource", {
							 | 
						||
| 
								 | 
							
								  enumerable: true,
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return _dynamicImport.getDynamicImportSource;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "getModuleName", {
							 | 
						||
| 
								 | 
							
								  enumerable: true,
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return _getModuleName.default;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "hasExports", {
							 | 
						||
| 
								 | 
							
								  enumerable: true,
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return _normalizeAndLoadMetadata.hasExports;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "isModule", {
							 | 
						||
| 
								 | 
							
								  enumerable: true,
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return _helperModuleImports.isModule;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "isSideEffectImport", {
							 | 
						||
| 
								 | 
							
								  enumerable: true,
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return _normalizeAndLoadMetadata.isSideEffectImport;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader;
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "rewriteThis", {
							 | 
						||
| 
								 | 
							
								  enumerable: true,
							 | 
						||
| 
								 | 
							
								  get: function () {
							 | 
						||
| 
								 | 
							
								    return _rewriteThis.default;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.wrapInterop = wrapInterop;
							 | 
						||
| 
								 | 
							
								var _assert = require("assert");
							 | 
						||
| 
								 | 
							
								var _t = require("@babel/types");
							 | 
						||
| 
								 | 
							
								var _template = require("@babel/template");
							 | 
						||
| 
								 | 
							
								var _helperModuleImports = require("@babel/helper-module-imports");
							 | 
						||
| 
								 | 
							
								var _rewriteThis = require("./rewrite-this");
							 | 
						||
| 
								 | 
							
								var _rewriteLiveReferences = require("./rewrite-live-references");
							 | 
						||
| 
								 | 
							
								var _normalizeAndLoadMetadata = require("./normalize-and-load-metadata");
							 | 
						||
| 
								 | 
							
								var _dynamicImport = require("./dynamic-import");
							 | 
						||
| 
								 | 
							
								var _getModuleName = require("./get-module-name");
							 | 
						||
| 
								 | 
							
								const {
							 | 
						||
| 
								 | 
							
								  booleanLiteral,
							 | 
						||
| 
								 | 
							
								  callExpression,
							 | 
						||
| 
								 | 
							
								  cloneNode,
							 | 
						||
| 
								 | 
							
								  directive,
							 | 
						||
| 
								 | 
							
								  directiveLiteral,
							 | 
						||
| 
								 | 
							
								  expressionStatement,
							 | 
						||
| 
								 | 
							
								  identifier,
							 | 
						||
| 
								 | 
							
								  isIdentifier,
							 | 
						||
| 
								 | 
							
								  memberExpression,
							 | 
						||
| 
								 | 
							
								  stringLiteral,
							 | 
						||
| 
								 | 
							
								  valueToNode,
							 | 
						||
| 
								 | 
							
								  variableDeclaration,
							 | 
						||
| 
								 | 
							
								  variableDeclarator
							 | 
						||
| 
								 | 
							
								} = _t;
							 | 
						||
| 
								 | 
							
								function rewriteModuleStatementsAndPrepareHeader(path, {
							 | 
						||
| 
								 | 
							
								  loose,
							 | 
						||
| 
								 | 
							
								  exportName,
							 | 
						||
| 
								 | 
							
								  strict,
							 | 
						||
| 
								 | 
							
								  allowTopLevelThis,
							 | 
						||
| 
								 | 
							
								  strictMode,
							 | 
						||
| 
								 | 
							
								  noInterop,
							 | 
						||
| 
								 | 
							
								  importInterop = noInterop ? "none" : "babel",
							 | 
						||
| 
								 | 
							
								  lazy,
							 | 
						||
| 
								 | 
							
								  esNamespaceOnly,
							 | 
						||
| 
								 | 
							
								  filename,
							 | 
						||
| 
								 | 
							
								  constantReexports = loose,
							 | 
						||
| 
								 | 
							
								  enumerableModuleMeta = loose,
							 | 
						||
| 
								 | 
							
								  noIncompleteNsImportDetection
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
								  (0, _normalizeAndLoadMetadata.validateImportInteropOption)(importInterop);
							 | 
						||
| 
								 | 
							
								  _assert((0, _helperModuleImports.isModule)(path), "Cannot process module statements in a script");
							 | 
						||
| 
								 | 
							
								  path.node.sourceType = "script";
							 | 
						||
| 
								 | 
							
								  const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, {
							 | 
						||
| 
								 | 
							
								    importInterop,
							 | 
						||
| 
								 | 
							
								    initializeReexports: constantReexports,
							 | 
						||
| 
								 | 
							
								    lazy,
							 | 
						||
| 
								 | 
							
								    esNamespaceOnly,
							 | 
						||
| 
								 | 
							
								    filename
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  if (!allowTopLevelThis) {
							 | 
						||
| 
								 | 
							
								    (0, _rewriteThis.default)(path);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  (0, _rewriteLiveReferences.default)(path, meta);
							 | 
						||
| 
								 | 
							
								  if (strictMode !== false) {
							 | 
						||
| 
								 | 
							
								    const hasStrict = path.node.directives.some(directive => {
							 | 
						||
| 
								 | 
							
								      return directive.value.value === "use strict";
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    if (!hasStrict) {
							 | 
						||
| 
								 | 
							
								      path.unshiftContainer("directives", directive(directiveLiteral("use strict")));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  const headers = [];
							 | 
						||
| 
								 | 
							
								  if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) {
							 | 
						||
| 
								 | 
							
								    headers.push(buildESModuleHeader(meta, enumerableModuleMeta));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  const nameList = buildExportNameListDeclaration(path, meta);
							 | 
						||
| 
								 | 
							
								  if (nameList) {
							 | 
						||
| 
								 | 
							
								    meta.exportNameListName = nameList.name;
							 | 
						||
| 
								 | 
							
								    headers.push(nameList.statement);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  headers.push(...buildExportInitializationStatements(path, meta, constantReexports, noIncompleteNsImportDetection));
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    meta,
							 | 
						||
| 
								 | 
							
								    headers
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function ensureStatementsHoisted(statements) {
							 | 
						||
| 
								 | 
							
								  statements.forEach(header => {
							 | 
						||
| 
								 | 
							
								    header._blockHoist = 3;
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function wrapInterop(programPath, expr, type) {
							 | 
						||
| 
								 | 
							
								  if (type === "none") {
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (type === "node-namespace") {
							 | 
						||
| 
								 | 
							
								    return callExpression(programPath.hub.addHelper("interopRequireWildcard"), [expr, booleanLiteral(true)]);
							 | 
						||
| 
								 | 
							
								  } else if (type === "node-default") {
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  let helper;
							 | 
						||
| 
								 | 
							
								  if (type === "default") {
							 | 
						||
| 
								 | 
							
								    helper = "interopRequireDefault";
							 | 
						||
| 
								 | 
							
								  } else if (type === "namespace") {
							 | 
						||
| 
								 | 
							
								    helper = "interopRequireWildcard";
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    throw new Error(`Unknown interop: ${type}`);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return callExpression(programPath.hub.addHelper(helper), [expr]);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports = false) {
							 | 
						||
| 
								 | 
							
								  const statements = [];
							 | 
						||
| 
								 | 
							
								  let srcNamespace = identifier(sourceMetadata.name);
							 | 
						||
| 
								 | 
							
								  if (sourceMetadata.lazy) srcNamespace = callExpression(srcNamespace, []);
							 | 
						||
| 
								 | 
							
								  for (const localName of sourceMetadata.importsNamespace) {
							 | 
						||
| 
								 | 
							
								    if (localName === sourceMetadata.name) continue;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    statements.push(_template.default.statement`var NAME = SOURCE;`({
							 | 
						||
| 
								 | 
							
								      NAME: localName,
							 | 
						||
| 
								 | 
							
								      SOURCE: cloneNode(srcNamespace)
							 | 
						||
| 
								 | 
							
								    }));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (constantReexports) {
							 | 
						||
| 
								 | 
							
								    statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, true));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  for (const exportName of sourceMetadata.reexportNamespace) {
							 | 
						||
| 
								 | 
							
								    statements.push((sourceMetadata.lazy ? _template.default.statement`
							 | 
						||
| 
								 | 
							
								            Object.defineProperty(EXPORTS, "NAME", {
							 | 
						||
| 
								 | 
							
								              enumerable: true,
							 | 
						||
| 
								 | 
							
								              get: function() {
							 | 
						||
| 
								 | 
							
								                return NAMESPACE;
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            });
							 | 
						||
| 
								 | 
							
								          ` : _template.default.statement`EXPORTS.NAME = NAMESPACE;`)({
							 | 
						||
| 
								 | 
							
								      EXPORTS: metadata.exportName,
							 | 
						||
| 
								 | 
							
								      NAME: exportName,
							 | 
						||
| 
								 | 
							
								      NAMESPACE: cloneNode(srcNamespace)
							 | 
						||
| 
								 | 
							
								    }));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (sourceMetadata.reexportAll) {
							 | 
						||
| 
								 | 
							
								    const statement = buildNamespaceReexport(metadata, cloneNode(srcNamespace), constantReexports);
							 | 
						||
| 
								 | 
							
								    statement.loc = sourceMetadata.reexportAll.loc;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    statements.push(statement);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return statements;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								const ReexportTemplate = {
							 | 
						||
| 
								 | 
							
								  constant: _template.default.statement`EXPORTS.EXPORT_NAME = NAMESPACE_IMPORT;`,
							 | 
						||
| 
								 | 
							
								  constantComputed: _template.default.statement`EXPORTS["EXPORT_NAME"] = NAMESPACE_IMPORT;`,
							 | 
						||
| 
								 | 
							
								  spec: _template.default.statement`
							 | 
						||
| 
								 | 
							
								    Object.defineProperty(EXPORTS, "EXPORT_NAME", {
							 | 
						||
| 
								 | 
							
								      enumerable: true,
							 | 
						||
| 
								 | 
							
								      get: function() {
							 | 
						||
| 
								 | 
							
								        return NAMESPACE_IMPORT;
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    `
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								function buildReexportsFromMeta(meta, metadata, constantReexports) {
							 | 
						||
| 
								 | 
							
								  const namespace = metadata.lazy ? callExpression(identifier(metadata.name), []) : identifier(metadata.name);
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    stringSpecifiers
							 | 
						||
| 
								 | 
							
								  } = meta;
							 | 
						||
| 
								 | 
							
								  return Array.from(metadata.reexports, ([exportName, importName]) => {
							 | 
						||
| 
								 | 
							
								    let NAMESPACE_IMPORT = cloneNode(namespace);
							 | 
						||
| 
								 | 
							
								    if (importName === "default" && metadata.interop === "node-default") {
							 | 
						||
| 
								 | 
							
								    } else if (stringSpecifiers.has(importName)) {
							 | 
						||
| 
								 | 
							
								      NAMESPACE_IMPORT = memberExpression(NAMESPACE_IMPORT, stringLiteral(importName), true);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      NAMESPACE_IMPORT = memberExpression(NAMESPACE_IMPORT, identifier(importName));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    const astNodes = {
							 | 
						||
| 
								 | 
							
								      EXPORTS: meta.exportName,
							 | 
						||
| 
								 | 
							
								      EXPORT_NAME: exportName,
							 | 
						||
| 
								 | 
							
								      NAMESPACE_IMPORT
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    if (constantReexports || isIdentifier(NAMESPACE_IMPORT)) {
							 | 
						||
| 
								 | 
							
								      if (stringSpecifiers.has(exportName)) {
							 | 
						||
| 
								 | 
							
								        return ReexportTemplate.constantComputed(astNodes);
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        return ReexportTemplate.constant(astNodes);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return ReexportTemplate.spec(astNodes);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function buildESModuleHeader(metadata, enumerableModuleMeta = false) {
							 | 
						||
| 
								 | 
							
								  return (enumerableModuleMeta ? _template.default.statement`
							 | 
						||
| 
								 | 
							
								        EXPORTS.__esModule = true;
							 | 
						||
| 
								 | 
							
								      ` : _template.default.statement`
							 | 
						||
| 
								 | 
							
								        Object.defineProperty(EXPORTS, "__esModule", {
							 | 
						||
| 
								 | 
							
								          value: true,
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      `)({
							 | 
						||
| 
								 | 
							
								    EXPORTS: metadata.exportName
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function buildNamespaceReexport(metadata, namespace, constantReexports) {
							 | 
						||
| 
								 | 
							
								  return (constantReexports ? _template.default.statement`
							 | 
						||
| 
								 | 
							
								        Object.keys(NAMESPACE).forEach(function(key) {
							 | 
						||
| 
								 | 
							
								          if (key === "default" || key === "__esModule") return;
							 | 
						||
| 
								 | 
							
								          VERIFY_NAME_LIST;
							 | 
						||
| 
								 | 
							
								          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          EXPORTS[key] = NAMESPACE[key];
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      ` :
							 | 
						||
| 
								 | 
							
								  _template.default.statement`
							 | 
						||
| 
								 | 
							
								        Object.keys(NAMESPACE).forEach(function(key) {
							 | 
						||
| 
								 | 
							
								          if (key === "default" || key === "__esModule") return;
							 | 
						||
| 
								 | 
							
								          VERIFY_NAME_LIST;
							 | 
						||
| 
								 | 
							
								          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          Object.defineProperty(EXPORTS, key, {
							 | 
						||
| 
								 | 
							
								            enumerable: true,
							 | 
						||
| 
								 | 
							
								            get: function() {
							 | 
						||
| 
								 | 
							
								              return NAMESPACE[key];
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    `)({
							 | 
						||
| 
								 | 
							
								    NAMESPACE: namespace,
							 | 
						||
| 
								 | 
							
								    EXPORTS: metadata.exportName,
							 | 
						||
| 
								 | 
							
								    VERIFY_NAME_LIST: metadata.exportNameListName ? (0, _template.default)`
							 | 
						||
| 
								 | 
							
								            if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return;
							 | 
						||
| 
								 | 
							
								          `({
							 | 
						||
| 
								 | 
							
								      EXPORTS_LIST: metadata.exportNameListName
							 | 
						||
| 
								 | 
							
								    }) : null
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function buildExportNameListDeclaration(programPath, metadata) {
							 | 
						||
| 
								 | 
							
								  const exportedVars = Object.create(null);
							 | 
						||
| 
								 | 
							
								  for (const data of metadata.local.values()) {
							 | 
						||
| 
								 | 
							
								    for (const name of data.names) {
							 | 
						||
| 
								 | 
							
								      exportedVars[name] = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  let hasReexport = false;
							 | 
						||
| 
								 | 
							
								  for (const data of metadata.source.values()) {
							 | 
						||
| 
								 | 
							
								    for (const exportName of data.reexports.keys()) {
							 | 
						||
| 
								 | 
							
								      exportedVars[exportName] = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    for (const exportName of data.reexportNamespace) {
							 | 
						||
| 
								 | 
							
								      exportedVars[exportName] = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    hasReexport = hasReexport || !!data.reexportAll;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (!hasReexport || Object.keys(exportedVars).length === 0) return null;
							 | 
						||
| 
								 | 
							
								  const name = programPath.scope.generateUidIdentifier("exportNames");
							 | 
						||
| 
								 | 
							
								  delete exportedVars.default;
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    name: name.name,
							 | 
						||
| 
								 | 
							
								    statement: variableDeclaration("var", [variableDeclarator(name, valueToNode(exportedVars))])
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function buildExportInitializationStatements(programPath, metadata, constantReexports = false, noIncompleteNsImportDetection = false) {
							 | 
						||
| 
								 | 
							
								  const initStatements = [];
							 | 
						||
| 
								 | 
							
								  for (const [localName, data] of metadata.local) {
							 | 
						||
| 
								 | 
							
								    if (data.kind === "import") {
							 | 
						||
| 
								 | 
							
								    } else if (data.kind === "hoisted") {
							 | 
						||
| 
								 | 
							
								      initStatements.push([
							 | 
						||
| 
								 | 
							
								      data.names[0], buildInitStatement(metadata, data.names, identifier(localName))]);
							 | 
						||
| 
								 | 
							
								    } else if (!noIncompleteNsImportDetection) {
							 | 
						||
| 
								 | 
							
								      for (const exportName of data.names) {
							 | 
						||
| 
								 | 
							
								        initStatements.push([exportName, null]);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  for (const data of metadata.source.values()) {
							 | 
						||
| 
								 | 
							
								    if (!constantReexports) {
							 | 
						||
| 
								 | 
							
								      const reexportsStatements = buildReexportsFromMeta(metadata, data, false);
							 | 
						||
| 
								 | 
							
								      const reexports = [...data.reexports.keys()];
							 | 
						||
| 
								 | 
							
								      for (let i = 0; i < reexportsStatements.length; i++) {
							 | 
						||
| 
								 | 
							
								        initStatements.push([reexports[i], reexportsStatements[i]]);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    if (!noIncompleteNsImportDetection) {
							 | 
						||
| 
								 | 
							
								      for (const exportName of data.reexportNamespace) {
							 | 
						||
| 
								 | 
							
								        initStatements.push([exportName, null]);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  initStatements.sort(([a], [b]) => {
							 | 
						||
| 
								 | 
							
								    if (a < b) return -1;
							 | 
						||
| 
								 | 
							
								    if (b < a) return 1;
							 | 
						||
| 
								 | 
							
								    return 0;
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  const results = [];
							 | 
						||
| 
								 | 
							
								  if (noIncompleteNsImportDetection) {
							 | 
						||
| 
								 | 
							
								    for (const [, initStatement] of initStatements) {
							 | 
						||
| 
								 | 
							
								      results.push(initStatement);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    const chunkSize = 100;
							 | 
						||
| 
								 | 
							
								    for (let i = 0; i < initStatements.length; i += chunkSize) {
							 | 
						||
| 
								 | 
							
								      let uninitializedExportNames = [];
							 | 
						||
| 
								 | 
							
								      for (let j = 0; j < chunkSize && i + j < initStatements.length; j++) {
							 | 
						||
| 
								 | 
							
								        const [exportName, initStatement] = initStatements[i + j];
							 | 
						||
| 
								 | 
							
								        if (initStatement !== null) {
							 | 
						||
| 
								 | 
							
								          if (uninitializedExportNames.length > 0) {
							 | 
						||
| 
								 | 
							
								            results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
							 | 
						||
| 
								 | 
							
								            uninitializedExportNames = [];
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								          results.push(initStatement);
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								          uninitializedExportNames.push(exportName);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      if (uninitializedExportNames.length > 0) {
							 | 
						||
| 
								 | 
							
								        results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const InitTemplate = {
							 | 
						||
| 
								 | 
							
								  computed: _template.default.expression`EXPORTS["NAME"] = VALUE`,
							 | 
						||
| 
								 | 
							
								  default: _template.default.expression`EXPORTS.NAME = VALUE`
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								function buildInitStatement(metadata, exportNames, initExpr) {
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    stringSpecifiers,
							 | 
						||
| 
								 | 
							
								    exportName: EXPORTS
							 | 
						||
| 
								 | 
							
								  } = metadata;
							 | 
						||
| 
								 | 
							
								  return expressionStatement(exportNames.reduce((acc, exportName) => {
							 | 
						||
| 
								 | 
							
								    const params = {
							 | 
						||
| 
								 | 
							
								      EXPORTS,
							 | 
						||
| 
								 | 
							
								      NAME: exportName,
							 | 
						||
| 
								 | 
							
								      VALUE: acc
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    if (stringSpecifiers.has(exportName)) {
							 | 
						||
| 
								 | 
							
								      return InitTemplate.computed(params);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return InitTemplate.default(params);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }, initExpr));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=index.js.map
							 |