first commit

This commit is contained in:
becarta
2025-05-16 00:17:42 +02:00
parent ea5c866137
commit bacf566ec9
6020 changed files with 1715262 additions and 0 deletions

72
node_modules/locate-character/src/index.js generated vendored Normal file
View File

@@ -0,0 +1,72 @@
/** @typedef {import('./types').Location} Location */
/**
* @param {import('./types').Range} range
* @param {number} index
*/
function rangeContains(range, index) {
return range.start <= index && index < range.end;
}
/**
* @param {string} source
* @param {import('./types').Options} [options]
*/
export function getLocator(source, options = {}) {
const { offsetLine = 0, offsetColumn = 0 } = options;
let start = 0;
const ranges = source.split('\n').map((line, i) => {
const end = start + line.length + 1;
/** @type {import('./types').Range} */
const range = { start, end, line: i };
start = end;
return range;
});
let i = 0;
/**
* @param {string | number} search
* @param {number} [index]
* @returns {Location | undefined}
*/
function locator(search, index) {
if (typeof search === 'string') {
search = source.indexOf(search, index ?? 0);
}
if (search === -1) return undefined;
let range = ranges[i];
const d = search >= range.end ? 1 : -1;
while (range) {
if (rangeContains(range, search)) {
return {
line: offsetLine + range.line,
column: offsetColumn + search - range.start,
character: search
};
}
i += d;
range = ranges[i];
}
}
return locator;
}
/**
* @param {string} source
* @param {string | number} search
* @param {import('./types').Options} [options]
* @returns {Location | undefined}
*/
export function locate(source, search, options) {
return getLocator(source, options)(search, options && options.startIndex);
}

17
node_modules/locate-character/src/types.d.ts generated vendored Normal file
View File

@@ -0,0 +1,17 @@
export interface Options {
offsetLine?: number;
offsetColumn?: number;
startIndex?: number;
}
export interface Range {
start: number;
end: number;
line: number;
}
export interface Location {
line: number;
column: number;
character: number;
}