import { onBacktickError, onBacktickParse } from './backtickString.js'; import { onCommonJsExportError, onCommonJsExportParse } from './commonJsExport.js'; import { onDeclarationExportError, onDeclarationExportParse } from './declarationExport.js'; import { onDynamicImportError, onDynamicImportParse } from './dynamicImport.js'; import { onImportError, onImportParse } from './import.js'; import { onNamedExportError, onNamedExportParse } from './namedExport.js'; import { onDoubleQuoteError, onMultilineCommentError, onSinglelineCommentError, onSingleQuoteError, } from './onErrors.js'; import { onRegexpError, onRegexpParse } from './regexp.js'; import { onRequireError, onRequireParse } from './require.js'; /** * Statements of ECMAScript comments. */ export const comments = [ { onError: onSinglelineCommentError, tokens: ['\\/\\/', '$'], }, { onError: onMultilineCommentError, tokens: ['\\/\\*', '\\*\\/'], }, ]; /** * Get statements for parsing by options. */ export const getStatements = (options) => { const statements = [...baseStatements]; if (!(options === null || options === void 0 ? void 0 : options.ignoreDynamicImports)) { statements.push(dynamicImportStatement); } if (!(options === null || options === void 0 ? void 0 : options.ignoreRequires)) { statements.push(requireStatement); } if (!(options === null || options === void 0 ? void 0 : options.ignoreCommonJsExports)) { statements.push(commonJsExportStatement); } if (!(options === null || options === void 0 ? void 0 : options.ignoreRegexpLiterals)) { statements.push(regexpLiteralStatement); } if (!(options === null || options === void 0 ? void 0 : options.ignoreStringLiterals)) { statements.unshift(...stringLiteralStatements); } return statements; }; /** * Base statements for parsing `import`/`export` declarations. */ const baseStatements = [ { canIncludeComments: true, onError: onImportError, onParse: onImportParse, tokens: ['^import ', '([\'"];?$)|(?[\'"] with \\{)'], shouldSearchBeforeComments: true, }, { canIncludeComments: true, onError: onNamedExportError, onParse: onNamedExportParse, tokens: ['^export (?type )?\\{', '(\\};?$)|(?[\'"];?$)|(?[\'"] with \\{)'], shouldSearchBeforeComments: true, }, { canIncludeComments: true, onError: onDeclarationExportError, onParse: onDeclarationExportParse, tokens: ['^export ', '($)|(?[\'"] with \\{)'], shouldSearchBeforeComments: true, }, ]; /** * Statement for parsing CommonJS exports (`module.exports = ...`/`(module.)exports.foo = ...`). */ const commonJsExportStatement = { canIncludeComments: true, onError: onCommonJsExportError, onParse: onCommonJsExportParse, tokens: ['^(module\\.)?exports\\b', '='], shouldSearchBeforeComments: true, }; /** * Statement for parsing dynamic import call (`import(...)`). */ const dynamicImportStatement = { canIncludeComments: true, onError: onDynamicImportError, onParse: onDynamicImportParse, tokens: ['\\bimport\\(', '[\'"]', '([\'"])|($)'], shouldSearchBeforeComments: true, }; /** * Statement for parsing regexp literal (`/.../`). */ const regexpLiteralStatement = { canIncludeComments: false, onError: onRegexpError, onParse: onRegexpParse, tokens: ['/', '((?