elearning/Frontend-Learner/node_modules/parse-imports-exports/index.js
2026-01-13 10:48:02 +07:00

53 lines
1.9 KiB
JavaScript

import { onGlobalError } from './onErrors.js';
import { comments, getStatements } from './statements.js';
import { CONTEXT_KEY, createParseFunction, getCacheKey, removeErrorsCausedByOverloading, } from './utils.js';
/**
* Parses `import`/`export` in ECMAScript/TypeScript syntax.
*/
export const parseImportsExports = (source, options) => {
const cacheKey = getCacheKey(options);
const importsExports = {
namedImports: undefined,
namespaceImports: undefined,
dynamicImports: undefined,
requires: undefined,
typeNamedImports: undefined,
typeNamespaceImports: undefined,
typeDynamicImports: undefined,
namedReexports: undefined,
namespaceReexports: undefined,
starReexports: undefined,
typeNamedReexports: undefined,
typeNamespaceReexports: undefined,
typeStarReexports: undefined,
defaultExport: undefined,
namedExports: undefined,
declarationExports: undefined,
typeNamedExports: undefined,
typeExports: undefined,
interfaceExports: undefined,
namespaceExports: undefined,
commonJsNamespaceExport: undefined,
commonJsExports: undefined,
errors: undefined,
[CONTEXT_KEY]: { lineColumnCache: undefined, linesIndexes: undefined, options, source },
};
var parse = parseCache[cacheKey];
if (parse === undefined) {
const statements = getStatements(options);
parse = createParseFunction({ ...baseParseOptions, statements });
parseCache[cacheKey] = parse;
}
parse(importsExports, source);
removeErrorsCausedByOverloading(importsExports);
importsExports[CONTEXT_KEY] = undefined;
return importsExports;
};
/**
* Base options of parse function.
*/
const baseParseOptions = { comments, onError: onGlobalError };
/**
* Cache of parse functions with different options.
*/
const parseCache = { __proto__: null };