blob: d0f4bfdd7255de8432ec4b59c528a1bffd52dca8 [file] [log] [blame]
import { parseFrom } from './partParsers.js';
import { addError, getPosition } from './utils.js';
/**
* Adds error of parsing `require('...')`/`require("...")` statement.
*/
export const onRequireError = (importsExports, _source, { start, end }) => addError(importsExports, 'Cannot find end of `require(...)` statement', start, end);
/**
* Parses `require('...')`/`require("...")` statement.
*/
export const onRequireParse = (importsExports, source, { start }, { start: unparsedStart }, { start: unparsedEnd, end, token: endToken }) => {
const unparsed = source.slice(unparsedStart, unparsedEnd);
const quoteCharacter = endToken[0];
if (quoteCharacter === undefined) {
return addError(importsExports, 'Cannot find end of path string literal in `require(...)`', start, end);
}
const { from, index } = parseFrom(quoteCharacter, unparsed);
if (index !== 0) {
return addError(importsExports, `Cannot find start of path string literal in \`require(${quoteCharacter}...${quoteCharacter})\``, start, end);
}
const parsedRequire = getPosition(importsExports, start, end);
var { requires } = importsExports;
requires !== null && requires !== void 0 ? requires : (requires = importsExports.requires = { __proto__: null });
var requiresList = requires[from];
if (requiresList === undefined) {
requires[from] = [parsedRequire];
}
else {
requiresList.push(parsedRequire);
}
};