123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- export declare enum ImportType {
- /**
- * A normal static using any syntax variations
- * import .. from 'module'
- */
- Static = 1,
- /**
- * A dynamic import expression `import(specifier)`
- * or `import(specifier, opts)`
- */
- Dynamic = 2,
- /**
- * An import.meta expression
- */
- ImportMeta = 3,
- /**
- * A source phase import
- * import source x from 'module'
- */
- StaticSourcePhase = 4,
- /**
- * A dynamic source phase import
- * import.source('module')
- */
- DynamicSourcePhase = 5
- }
- export interface ImportSpecifier {
- /**
- * Module name
- *
- * To handle escape sequences in specifier strings, the .n field of imported specifiers will be provided where possible.
- *
- * For dynamic import expressions, this field will be empty if not a valid JS string.
- *
- * @example
- * const [imports1, exports1] = parse(String.raw`import './\u0061\u0062.js'`);
- * imports1[0].n;
- * // Returns "./ab.js"
- *
- * const [imports2, exports2] = parse(`import("./ab.js")`);
- * imports2[0].n;
- * // Returns "./ab.js"
- *
- * const [imports3, exports3] = parse(`import("./" + "ab.js")`);
- * imports3[0].n;
- * // Returns undefined
- */
- readonly n: string | undefined;
- /**
- * Type of import statement
- */
- readonly t: ImportType;
- /**
- * Start of module specifier
- *
- * @example
- * const source = `import { a } from 'asdf'`;
- * const [imports, exports] = parse(source);
- * source.substring(imports[0].s, imports[0].e);
- * // Returns "asdf"
- */
- readonly s: number;
- /**
- * End of module specifier
- */
- readonly e: number;
- /**
- * Start of import statement
- *
- * @example
- * const source = `import { a } from 'asdf'`;
- * const [imports, exports] = parse(source);
- * source.substring(imports[0].ss, imports[0].se);
- * // Returns "import { a } from 'asdf';"
- */
- readonly ss: number;
- /**
- * End of import statement
- */
- readonly se: number;
- /**
- * If this import keyword is a dynamic import, this is the start value.
- * If this import keyword is a static import, this is -1.
- * If this import keyword is an import.meta expresion, this is -2.
- */
- readonly d: number;
- /**
- * If this import has an import assertion, this is the start value.
- * Otherwise this is `-1`.
- */
- readonly a: number;
- }
- export interface ExportSpecifier {
- /**
- * Exported name
- *
- * @example
- * const source = `export default []`;
- * const [imports, exports] = parse(source);
- * exports[0].n;
- * // Returns "default"
- *
- * @example
- * const source = `export const asdf = 42`;
- * const [imports, exports] = parse(source);
- * exports[0].n;
- * // Returns "asdf"
- */
- readonly n: string;
- /**
- * Local name, or undefined.
- *
- * @example
- * const source = `export default []`;
- * const [imports, exports] = parse(source);
- * exports[0].ln;
- * // Returns undefined
- *
- * @example
- * const asdf = 42;
- * const source = `export { asdf as a }`;
- * const [imports, exports] = parse(source);
- * exports[0].ln;
- * // Returns "asdf"
- */
- readonly ln: string | undefined;
- /**
- * Start of exported name
- *
- * @example
- * const source = `export default []`;
- * const [imports, exports] = parse(source);
- * source.substring(exports[0].s, exports[0].e);
- * // Returns "default"
- *
- * @example
- * const source = `export { 42 as asdf }`;
- * const [imports, exports] = parse(source);
- * source.substring(exports[0].s, exports[0].e);
- * // Returns "asdf"
- */
- readonly s: number;
- /**
- * End of exported name
- */
- readonly e: number;
- /**
- * Start of local name, or -1.
- *
- * @example
- * const asdf = 42;
- * const source = `export { asdf as a }`;
- * const [imports, exports] = parse(source);
- * source.substring(exports[0].ls, exports[0].le);
- * // Returns "asdf"
- */
- readonly ls: number;
- /**
- * End of local name, or -1.
- */
- readonly le: number;
- }
- export interface ParseError extends Error {
- idx: number;
- }
- /**
- * Outputs the list of exports and locations of import specifiers,
- * including dynamic import and import meta handling.
- *
- * @param source Source code to parser
- * @param name Optional sourcename
- * @returns Tuple contaning imports list and exports list.
- */
- export declare function parse(source: string, name?: string): readonly [
- imports: ReadonlyArray<ImportSpecifier>,
- exports: ReadonlyArray<ExportSpecifier>,
- facade: boolean,
- hasModuleSyntax: boolean
- ];
- /**
- * Wait for init to resolve before calling `parse`.
- */
- export declare const init: Promise<void>;
|