All files / src/compiler state.js

100% Statements 53/53
100% Branches 9/9
100% Functions 3/3
100% Lines 52/52

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 532x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 54x 54x 54x 2x 2x 54x 54x 2x 2x 2x 2x 2x 2x 4982x 4982x 4982x 4982x 4982x 4982x 4514x 4982x 4510x 4510x 4510x 4982x 4982x 4982x 4982x 4982x  
import { getLocator } from 'locate-character';
 
/** @typedef {{ start?: number, end?: number }} NodeLike */
 
/** @type {import('#compiler').Warning[]} */
export let warnings = [];
 
/**
 * The filename (if specified in the compiler options) relative to the rootDir (if specified).
 * This should not be used in the compiler output except in dev mode
 * @type {string | undefined}
 */
export let filename;
 
export let locator = getLocator('', { offsetLine: 1 });
 
/** @type {Set<string>[]} */
export let ignore_stack = [];
 
/**
 * @param {string[]} ignores
 */
export function push_ignore(ignores) {
	const next = new Set([...(ignore_stack.at(-1) || []), ...ignores]);
	ignore_stack.push(next);
}
 
export function pop_ignore() {
	ignore_stack.pop();
}
 
/**
 * @param {string} source
 * @param {{ filename?: string, rootDir?: string }} options
 */
export function reset(source, options) {
	const root_dir = options.rootDir?.replace(/\\/g, '/');
	filename = options.filename?.replace(/\\/g, '/');
 
	if (
		typeof filename === 'string' &&
		typeof root_dir === 'string' &&
		filename.startsWith(root_dir)
	) {
		// make filename relative to rootDir
		filename = filename.replace(root_dir, '').replace(/^[/\\]/, '');
	}
 
	locator = getLocator(source, { offsetLine: 1 });
	warnings = [];
	ignore_stack = [];
}