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

137 lines
4.5 KiB
JavaScript

'use strict';
exports.comments = undefined;
exports.getStatements = undefined;
const { onBacktickError, onBacktickParse } = require('./backtickString.cjs');
const { onCommonJsExportError, onCommonJsExportParse } = require('./commonJsExport.cjs');
const { onDeclarationExportError, onDeclarationExportParse } = require('./declarationExport.cjs');
const { onDynamicImportError, onDynamicImportParse } = require('./dynamicImport.cjs');
const { onImportError, onImportParse } = require('./import.cjs');
const { onNamedExportError, onNamedExportParse } = require('./namedExport.cjs');
const { onDoubleQuoteError, onMultilineCommentError, onSinglelineCommentError, onSingleQuoteError, } = require('./onErrors.cjs');
const { onRegexpError, onRegexpParse } = require('./regexp.cjs');
const { onRequireError, onRequireParse } = require('./require.cjs');
/**
* Statements of ECMAScript comments.
*/
const comments = exports.comments = [
{
onError: onSinglelineCommentError,
tokens: ['\\/\\/', '$'],
},
{
onError: onMultilineCommentError,
tokens: ['\\/\\*', '\\*\\/'],
},
];
/**
* Get statements for parsing by options.
*/
const getStatements = exports.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>[\'"] with \\{)'],
shouldSearchBeforeComments: true,
},
{
canIncludeComments: true,
onError: onNamedExportError,
onParse: onNamedExportParse,
tokens: ['^export (?<type>type )?\\{', '(\\};?$)|(?<quote>[\'"];?$)|(?<with>[\'"] with \\{)'],
shouldSearchBeforeComments: true,
},
{
canIncludeComments: true,
onError: onDeclarationExportError,
onParse: onDeclarationExportParse,
tokens: ['^export ', '($)|(?<with>[\'"] 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: ['/', '((?<!\\\\)/)|($)'],
shouldSearchBeforeComments: false,
};
/**
* Statement for parsing require call (`require(...)`).
*/
const requireStatement = {
canIncludeComments: true,
onError: onRequireError,
onParse: onRequireParse,
tokens: ['\\brequire\\(', '[\'"]', '([\'"])|($)'],
shouldSearchBeforeComments: true,
};
/**
* Statements for parsing string literals.
*/
const stringLiteralStatements = [
{
canIncludeComments: false,
onError: onSingleQuoteError,
tokens: ["'", "((?<!\\\\)')|($)"],
shouldSearchBeforeComments: true,
},
{
canIncludeComments: false,
onError: onDoubleQuoteError,
tokens: ['"', '((?<!\\\\)")|($)'],
shouldSearchBeforeComments: true,
},
{
canIncludeComments: false,
onError: onBacktickError,
onParse: onBacktickParse,
tokens: ['`', '(?<!\\\\)`'],
shouldSearchBeforeComments: true,
},
];