Refactor routing in App component to enhance navigation and improve error handling by integrating dynamic routes and updating the NotFound route.
This commit is contained in:
361
node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js
generated
vendored
Normal file
361
node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js
generated
vendored
Normal file
@@ -0,0 +1,361 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = normalizeModuleAndLoadMetadata;
|
||||
exports.hasExports = hasExports;
|
||||
exports.isSideEffectImport = isSideEffectImport;
|
||||
exports.validateImportInteropOption = validateImportInteropOption;
|
||||
var _path = require("path");
|
||||
var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
|
||||
function hasExports(metadata) {
|
||||
return metadata.hasExports;
|
||||
}
|
||||
function isSideEffectImport(source) {
|
||||
return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll;
|
||||
}
|
||||
function validateImportInteropOption(importInterop) {
|
||||
if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") {
|
||||
throw new Error(`.importInterop must be one of "none", "babel", "node", or a function returning one of those values (received ${importInterop}).`);
|
||||
}
|
||||
return importInterop;
|
||||
}
|
||||
function resolveImportInterop(importInterop, source, filename) {
|
||||
if (typeof importInterop === "function") {
|
||||
return validateImportInteropOption(importInterop(source, filename));
|
||||
}
|
||||
return importInterop;
|
||||
}
|
||||
function normalizeModuleAndLoadMetadata(programPath, exportName, {
|
||||
importInterop,
|
||||
initializeReexports = false,
|
||||
getWrapperPayload,
|
||||
esNamespaceOnly = false,
|
||||
filename
|
||||
}) {
|
||||
if (!exportName) {
|
||||
exportName = programPath.scope.generateUidIdentifier("exports").name;
|
||||
}
|
||||
const stringSpecifiers = new Set();
|
||||
nameAnonymousExports(programPath);
|
||||
const {
|
||||
local,
|
||||
sources,
|
||||
hasExports
|
||||
} = getModuleMetadata(programPath, {
|
||||
initializeReexports,
|
||||
getWrapperPayload
|
||||
}, stringSpecifiers);
|
||||
removeImportExportDeclarations(programPath);
|
||||
for (const [source, metadata] of sources) {
|
||||
const {
|
||||
importsNamespace,
|
||||
imports
|
||||
} = metadata;
|
||||
if (importsNamespace.size > 0 && imports.size === 0) {
|
||||
const [nameOfnamespace] = importsNamespace;
|
||||
metadata.name = nameOfnamespace;
|
||||
}
|
||||
const resolvedInterop = resolveImportInterop(importInterop, source, filename);
|
||||
if (resolvedInterop === "none") {
|
||||
metadata.interop = "none";
|
||||
} else if (resolvedInterop === "node" && metadata.interop === "namespace") {
|
||||
metadata.interop = "node-namespace";
|
||||
} else if (resolvedInterop === "node" && metadata.interop === "default") {
|
||||
metadata.interop = "node-default";
|
||||
} else if (esNamespaceOnly && metadata.interop === "namespace") {
|
||||
metadata.interop = "default";
|
||||
}
|
||||
}
|
||||
return {
|
||||
exportName,
|
||||
exportNameListName: null,
|
||||
hasExports,
|
||||
local,
|
||||
source: sources,
|
||||
stringSpecifiers
|
||||
};
|
||||
}
|
||||
function getExportSpecifierName(path, stringSpecifiers) {
|
||||
if (path.isIdentifier()) {
|
||||
return path.node.name;
|
||||
} else if (path.isStringLiteral()) {
|
||||
const stringValue = path.node.value;
|
||||
if (!(0, _helperValidatorIdentifier.isIdentifierName)(stringValue)) {
|
||||
stringSpecifiers.add(stringValue);
|
||||
}
|
||||
return stringValue;
|
||||
} else {
|
||||
throw new Error(`Expected export specifier to be either Identifier or StringLiteral, got ${path.node.type}`);
|
||||
}
|
||||
}
|
||||
function assertExportSpecifier(path) {
|
||||
if (path.isExportSpecifier()) {
|
||||
return;
|
||||
} else if (path.isExportNamespaceSpecifier()) {
|
||||
throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-transform-export-namespace-from`.");
|
||||
} else {
|
||||
throw path.buildCodeFrameError("Unexpected export specifier type");
|
||||
}
|
||||
}
|
||||
function getModuleMetadata(programPath, {
|
||||
getWrapperPayload,
|
||||
initializeReexports
|
||||
}, stringSpecifiers) {
|
||||
const localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers);
|
||||
const importNodes = new Map();
|
||||
const sourceData = new Map();
|
||||
const getData = (sourceNode, node) => {
|
||||
const source = sourceNode.value;
|
||||
let data = sourceData.get(source);
|
||||
if (!data) {
|
||||
data = {
|
||||
name: programPath.scope.generateUidIdentifier((0, _path.basename)(source, (0, _path.extname)(source))).name,
|
||||
interop: "none",
|
||||
loc: null,
|
||||
imports: new Map(),
|
||||
importsNamespace: new Set(),
|
||||
reexports: new Map(),
|
||||
reexportNamespace: new Set(),
|
||||
reexportAll: null,
|
||||
wrap: null,
|
||||
get lazy() {
|
||||
return this.wrap === "lazy";
|
||||
},
|
||||
referenced: false
|
||||
};
|
||||
sourceData.set(source, data);
|
||||
importNodes.set(source, [node]);
|
||||
} else {
|
||||
importNodes.get(source).push(node);
|
||||
}
|
||||
return data;
|
||||
};
|
||||
let hasExports = false;
|
||||
programPath.get("body").forEach(child => {
|
||||
if (child.isImportDeclaration()) {
|
||||
const data = getData(child.node.source, child.node);
|
||||
if (!data.loc) data.loc = child.node.loc;
|
||||
child.get("specifiers").forEach(spec => {
|
||||
if (spec.isImportDefaultSpecifier()) {
|
||||
const localName = spec.get("local").node.name;
|
||||
data.imports.set(localName, "default");
|
||||
const reexport = localData.get(localName);
|
||||
if (reexport) {
|
||||
localData.delete(localName);
|
||||
reexport.names.forEach(name => {
|
||||
data.reexports.set(name, "default");
|
||||
});
|
||||
data.referenced = true;
|
||||
}
|
||||
} else if (spec.isImportNamespaceSpecifier()) {
|
||||
const localName = spec.get("local").node.name;
|
||||
data.importsNamespace.add(localName);
|
||||
const reexport = localData.get(localName);
|
||||
if (reexport) {
|
||||
localData.delete(localName);
|
||||
reexport.names.forEach(name => {
|
||||
data.reexportNamespace.add(name);
|
||||
});
|
||||
data.referenced = true;
|
||||
}
|
||||
} else if (spec.isImportSpecifier()) {
|
||||
const importName = getExportSpecifierName(spec.get("imported"), stringSpecifiers);
|
||||
const localName = spec.get("local").node.name;
|
||||
data.imports.set(localName, importName);
|
||||
const reexport = localData.get(localName);
|
||||
if (reexport) {
|
||||
localData.delete(localName);
|
||||
reexport.names.forEach(name => {
|
||||
data.reexports.set(name, importName);
|
||||
});
|
||||
data.referenced = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (child.isExportAllDeclaration()) {
|
||||
hasExports = true;
|
||||
const data = getData(child.node.source, child.node);
|
||||
if (!data.loc) data.loc = child.node.loc;
|
||||
data.reexportAll = {
|
||||
loc: child.node.loc
|
||||
};
|
||||
data.referenced = true;
|
||||
} else if (child.isExportNamedDeclaration() && child.node.source) {
|
||||
hasExports = true;
|
||||
const data = getData(child.node.source, child.node);
|
||||
if (!data.loc) data.loc = child.node.loc;
|
||||
child.get("specifiers").forEach(spec => {
|
||||
assertExportSpecifier(spec);
|
||||
const importName = getExportSpecifierName(spec.get("local"), stringSpecifiers);
|
||||
const exportName = getExportSpecifierName(spec.get("exported"), stringSpecifiers);
|
||||
data.reexports.set(exportName, importName);
|
||||
data.referenced = true;
|
||||
if (exportName === "__esModule") {
|
||||
throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".');
|
||||
}
|
||||
});
|
||||
} else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) {
|
||||
hasExports = true;
|
||||
}
|
||||
});
|
||||
for (const metadata of sourceData.values()) {
|
||||
let needsDefault = false;
|
||||
let needsNamed = false;
|
||||
if (metadata.importsNamespace.size > 0) {
|
||||
needsDefault = true;
|
||||
needsNamed = true;
|
||||
}
|
||||
if (metadata.reexportAll) {
|
||||
needsNamed = true;
|
||||
}
|
||||
for (const importName of metadata.imports.values()) {
|
||||
if (importName === "default") needsDefault = true;else needsNamed = true;
|
||||
}
|
||||
for (const importName of metadata.reexports.values()) {
|
||||
if (importName === "default") needsDefault = true;else needsNamed = true;
|
||||
}
|
||||
if (needsDefault && needsNamed) {
|
||||
metadata.interop = "namespace";
|
||||
} else if (needsDefault) {
|
||||
metadata.interop = "default";
|
||||
}
|
||||
}
|
||||
if (getWrapperPayload) {
|
||||
for (const [source, metadata] of sourceData) {
|
||||
metadata.wrap = getWrapperPayload(source, metadata, importNodes.get(source));
|
||||
}
|
||||
}
|
||||
return {
|
||||
hasExports,
|
||||
local: localData,
|
||||
sources: sourceData
|
||||
};
|
||||
}
|
||||
function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) {
|
||||
const bindingKindLookup = new Map();
|
||||
programPath.get("body").forEach(child => {
|
||||
let kind;
|
||||
if (child.isImportDeclaration()) {
|
||||
kind = "import";
|
||||
} else {
|
||||
if (child.isExportDefaultDeclaration()) {
|
||||
child = child.get("declaration");
|
||||
}
|
||||
if (child.isExportNamedDeclaration()) {
|
||||
if (child.node.declaration) {
|
||||
child = child.get("declaration");
|
||||
} else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) {
|
||||
child.get("specifiers").forEach(spec => {
|
||||
assertExportSpecifier(spec);
|
||||
bindingKindLookup.set(spec.get("local").node.name, "block");
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (child.isFunctionDeclaration()) {
|
||||
kind = "hoisted";
|
||||
} else if (child.isClassDeclaration()) {
|
||||
kind = "block";
|
||||
} else if (child.isVariableDeclaration({
|
||||
kind: "var"
|
||||
})) {
|
||||
kind = "var";
|
||||
} else if (child.isVariableDeclaration()) {
|
||||
kind = "block";
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
Object.keys(child.getOuterBindingIdentifiers()).forEach(name => {
|
||||
bindingKindLookup.set(name, kind);
|
||||
});
|
||||
});
|
||||
const localMetadata = new Map();
|
||||
const getLocalMetadata = idPath => {
|
||||
const localName = idPath.node.name;
|
||||
let metadata = localMetadata.get(localName);
|
||||
if (!metadata) {
|
||||
const kind = bindingKindLookup.get(localName);
|
||||
if (kind === undefined) {
|
||||
throw idPath.buildCodeFrameError(`Exporting local "${localName}", which is not declared.`);
|
||||
}
|
||||
metadata = {
|
||||
names: [],
|
||||
kind
|
||||
};
|
||||
localMetadata.set(localName, metadata);
|
||||
}
|
||||
return metadata;
|
||||
};
|
||||
programPath.get("body").forEach(child => {
|
||||
if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) {
|
||||
if (child.node.declaration) {
|
||||
const declaration = child.get("declaration");
|
||||
const ids = declaration.getOuterBindingIdentifierPaths();
|
||||
Object.keys(ids).forEach(name => {
|
||||
if (name === "__esModule") {
|
||||
throw declaration.buildCodeFrameError('Illegal export "__esModule".');
|
||||
}
|
||||
getLocalMetadata(ids[name]).names.push(name);
|
||||
});
|
||||
} else {
|
||||
child.get("specifiers").forEach(spec => {
|
||||
const local = spec.get("local");
|
||||
const exported = spec.get("exported");
|
||||
const localMetadata = getLocalMetadata(local);
|
||||
const exportName = getExportSpecifierName(exported, stringSpecifiers);
|
||||
if (exportName === "__esModule") {
|
||||
throw exported.buildCodeFrameError('Illegal export "__esModule".');
|
||||
}
|
||||
localMetadata.names.push(exportName);
|
||||
});
|
||||
}
|
||||
} else if (child.isExportDefaultDeclaration()) {
|
||||
const declaration = child.get("declaration");
|
||||
if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
|
||||
getLocalMetadata(declaration.get("id")).names.push("default");
|
||||
} else {
|
||||
throw declaration.buildCodeFrameError("Unexpected default expression export.");
|
||||
}
|
||||
}
|
||||
});
|
||||
return localMetadata;
|
||||
}
|
||||
function nameAnonymousExports(programPath) {
|
||||
programPath.get("body").forEach(child => {
|
||||
if (!child.isExportDefaultDeclaration()) return;
|
||||
{
|
||||
var _child$splitExportDec;
|
||||
(_child$splitExportDec = child.splitExportDeclaration) != null ? _child$splitExportDec : child.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
|
||||
}
|
||||
child.splitExportDeclaration();
|
||||
});
|
||||
}
|
||||
function removeImportExportDeclarations(programPath) {
|
||||
programPath.get("body").forEach(child => {
|
||||
if (child.isImportDeclaration()) {
|
||||
child.remove();
|
||||
} else if (child.isExportNamedDeclaration()) {
|
||||
if (child.node.declaration) {
|
||||
child.node.declaration._blockHoist = child.node._blockHoist;
|
||||
child.replaceWith(child.node.declaration);
|
||||
} else {
|
||||
child.remove();
|
||||
}
|
||||
} else if (child.isExportDefaultDeclaration()) {
|
||||
const declaration = child.get("declaration");
|
||||
if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
|
||||
declaration._blockHoist = child.node._blockHoist;
|
||||
child.replaceWith(declaration);
|
||||
} else {
|
||||
throw declaration.buildCodeFrameError("Unexpected default expression export.");
|
||||
}
|
||||
} else if (child.isExportAllDeclaration()) {
|
||||
child.remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//# sourceMappingURL=normalize-and-load-metadata.js.map
|
Reference in New Issue
Block a user