123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import State from "../tokenizer/state";
- import {charCodes} from "../util/charcodes";
- export let isJSXEnabled;
- export let isTypeScriptEnabled;
- export let isFlowEnabled;
- export let state;
- export let input;
- export let nextContextId;
- export function getNextContextId() {
- return nextContextId++;
- }
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- export function augmentError(error) {
- if ("pos" in error) {
- const loc = locationForIndex(error.pos);
- error.message += ` (${loc.line}:${loc.column})`;
- error.loc = loc;
- }
- return error;
- }
- export class Loc {
-
-
- constructor(line, column) {
- this.line = line;
- this.column = column;
- }
- }
- export function locationForIndex(pos) {
- let line = 1;
- let column = 1;
- for (let i = 0; i < pos; i++) {
- if (input.charCodeAt(i) === charCodes.lineFeed) {
- line++;
- column = 1;
- } else {
- column++;
- }
- }
- return new Loc(line, column);
- }
- export function initParser(
- inputCode,
- isJSXEnabledArg,
- isTypeScriptEnabledArg,
- isFlowEnabledArg,
- ) {
- input = inputCode;
- state = new State();
- nextContextId = 1;
- isJSXEnabled = isJSXEnabledArg;
- isTypeScriptEnabled = isTypeScriptEnabledArg;
- isFlowEnabled = isFlowEnabledArg;
- }
|