UNPKG

@shopify/cli

Version:

A CLI tool to build for the Shopify platform

1,262 lines (1,260 loc) • 10.7 MB
import { require_out } from "./chunk-CTFDRWUN.js"; import "./chunk-7IK72W75.js"; import { require_brace_expansion, require_source_map_support } from "./chunk-G5R6YD27.js"; import "./chunk-XE5EOEBL.js"; import { __commonJS, __require, __toESM, init_cjs_shims } from "./chunk-PKR7KJ6P.js"; // ../../node_modules/.pnpm/@ts-morph+common@0.21.0/node_modules/@ts-morph/common/dist/typescript.js var require_typescript = __commonJS({ "../../node_modules/.pnpm/@ts-morph+common@0.21.0/node_modules/@ts-morph/common/dist/typescript.js"(exports, module) { "use strict"; init_cjs_shims(); var ts2 = (() => { var __defProp = Object.defineProperty, __getOwnPropNames = Object.getOwnPropertyNames, __esm = (fn, res) => function() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }, __commonJS2 = (cb, mod) => function() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }, __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: !0 }); }, versionMajorMinor, version, Comparison, init_corePublic = __esm({ "src/compiler/corePublic.ts"() { "use strict"; versionMajorMinor = "5.2", version = "5.2.2", Comparison = /* @__PURE__ */ ((Comparison3) => (Comparison3[Comparison3.LessThan = -1] = "LessThan", Comparison3[Comparison3.EqualTo = 0] = "EqualTo", Comparison3[Comparison3.GreaterThan = 1] = "GreaterThan", Comparison3))(Comparison || {}); } }); function length(array) { return array ? array.length : 0; } function forEach(array, callback) { if (array) for (let i = 0; i < array.length; i++) { let result = callback(array[i], i); if (result) return result; } } function forEachRight(array, callback) { if (array) for (let i = array.length - 1; i >= 0; i--) { let result = callback(array[i], i); if (result) return result; } } function firstDefined(array, callback) { if (array !== void 0) for (let i = 0; i < array.length; i++) { let result = callback(array[i], i); if (result !== void 0) return result; } } function firstDefinedIterator(iter, callback) { for (let value of iter) { let result = callback(value); if (result !== void 0) return result; } } function reduceLeftIterator(iterator, f, initial) { let result = initial; if (iterator) { let pos = 0; for (let value of iterator) result = f(result, value, pos), pos++; } return result; } function zipWith(arrayA, arrayB, callback) { let result = []; Debug.assertEqual(arrayA.length, arrayB.length); for (let i = 0; i < arrayA.length; i++) result.push(callback(arrayA[i], arrayB[i], i)); return result; } function intersperse(input, element) { if (input.length <= 1) return input; let result = []; for (let i = 0, n = input.length; i < n; i++) i && result.push(element), result.push(input[i]); return result; } function every(array, callback) { if (array) { for (let i = 0; i < array.length; i++) if (!callback(array[i], i)) return !1; } return !0; } function find(array, predicate, startIndex) { if (array !== void 0) for (let i = startIndex ?? 0; i < array.length; i++) { let value = array[i]; if (predicate(value, i)) return value; } } function findLast(array, predicate, startIndex) { if (array !== void 0) for (let i = startIndex ?? array.length - 1; i >= 0; i--) { let value = array[i]; if (predicate(value, i)) return value; } } function findIndex(array, predicate, startIndex) { if (array === void 0) return -1; for (let i = startIndex ?? 0; i < array.length; i++) if (predicate(array[i], i)) return i; return -1; } function findLastIndex(array, predicate, startIndex) { if (array === void 0) return -1; for (let i = startIndex ?? array.length - 1; i >= 0; i--) if (predicate(array[i], i)) return i; return -1; } function findMap(array, callback) { for (let i = 0; i < array.length; i++) { let result = callback(array[i], i); if (result) return result; } return Debug.fail(); } function contains(array, value, equalityComparer = equateValues) { if (array) { for (let v of array) if (equalityComparer(v, value)) return !0; } return !1; } function arraysEqual(a, b, equalityComparer = equateValues) { return a.length === b.length && a.every((x, i) => equalityComparer(x, b[i])); } function indexOfAnyCharCode(text, charCodes, start) { for (let i = start || 0; i < text.length; i++) if (contains(charCodes, text.charCodeAt(i))) return i; return -1; } function countWhere(array, predicate) { let count = 0; if (array) for (let i = 0; i < array.length; i++) { let v = array[i]; predicate(v, i) && count++; } return count; } function filter(array, f) { if (array) { let len = array.length, i = 0; for (; i < len && f(array[i]); ) i++; if (i < len) { let result = array.slice(0, i); for (i++; i < len; ) { let item = array[i]; f(item) && result.push(item), i++; } return result; } } return array; } function filterMutate(array, f) { let outIndex = 0; for (let i = 0; i < array.length; i++) f(array[i], i, array) && (array[outIndex] = array[i], outIndex++); array.length = outIndex; } function clear(array) { array.length = 0; } function map(array, f) { let result; if (array) { result = []; for (let i = 0; i < array.length; i++) result.push(f(array[i], i)); } return result; } function* mapIterator(iter, mapFn) { for (let x of iter) yield mapFn(x); } function sameMap(array, f) { if (array) for (let i = 0; i < array.length; i++) { let item = array[i], mapped = f(item, i); if (item !== mapped) { let result = array.slice(0, i); for (result.push(mapped), i++; i < array.length; i++) result.push(f(array[i], i)); return result; } } return array; } function flatten(array) { let result = []; for (let v of array) v && (isArray(v) ? addRange(result, v) : result.push(v)); return result; } function flatMap(array, mapfn) { let result; if (array) for (let i = 0; i < array.length; i++) { let v = mapfn(array[i], i); v && (isArray(v) ? result = addRange(result, v) : result = append(result, v)); } return result || emptyArray; } function flatMapToMutable(array, mapfn) { let result = []; if (array) for (let i = 0; i < array.length; i++) { let v = mapfn(array[i], i); v && (isArray(v) ? addRange(result, v) : result.push(v)); } return result; } function* flatMapIterator(iter, mapfn) { for (let x of iter) { let iter2 = mapfn(x); iter2 && (yield* iter2); } } function sameFlatMap(array, mapfn) { let result; if (array) for (let i = 0; i < array.length; i++) { let item = array[i], mapped = mapfn(item, i); (result || item !== mapped || isArray(mapped)) && (result || (result = array.slice(0, i)), isArray(mapped) ? addRange(result, mapped) : result.push(mapped)); } return result || array; } function mapAllOrFail(array, mapFn) { let result = []; for (let i = 0; i < array.length; i++) { let mapped = mapFn(array[i], i); if (mapped === void 0) return; result.push(mapped); } return result; } function mapDefined(array, mapFn) { let result = []; if (array) for (let i = 0; i < array.length; i++) { let mapped = mapFn(array[i], i); mapped !== void 0 && result.push(mapped); } return result; } function* mapDefinedIterator(iter, mapFn) { for (let x of iter) { let value = mapFn(x); value !== void 0 && (yield value); } } function mapDefinedEntries(map2, f) { if (!map2) return; let result = /* @__PURE__ */ new Map(); return map2.forEach((value, key) => { let entry = f(key, value); if (entry !== void 0) { let [newKey, newValue] = entry; newKey !== void 0 && newValue !== void 0 && result.set(newKey, newValue); } }), result; } function getOrUpdate(map2, key, callback) { if (map2.has(key)) return map2.get(key); let value = callback(); return map2.set(key, value), value; } function tryAddToSet(set, value) { return set.has(value) ? !1 : (set.add(value), !0); } function* singleIterator(value) { yield value; } function spanMap(array, keyfn, mapfn) { let result; if (array) { result = []; let len = array.length, previousKey, key, start = 0, pos = 0; for (; start < len; ) { for (; pos < len; ) { let value = array[pos]; if (key = keyfn(value, pos), pos === 0) previousKey = key; else if (key !== previousKey) break; pos++; } if (start < pos) { let v = mapfn(array.slice(start, pos), previousKey, start, pos); v && result.push(v), start = pos; } previousKey = key, pos++; } } return result; } function mapEntries(map2, f) { if (!map2) return; let result = /* @__PURE__ */ new Map(); return map2.forEach((value, key) => { let [newKey, newValue] = f(key, value); result.set(newKey, newValue); }), result; } function some(array, predicate) { if (array) if (predicate) { for (let v of array) if (predicate(v)) return !0; } else return array.length > 0; return !1; } function getRangesWhere(arr, pred, cb) { let start; for (let i = 0; i < arr.length; i++) pred(arr[i]) ? start = start === void 0 ? i : start : start !== void 0 && (cb(start, i), start = void 0); start !== void 0 && cb(start, arr.length); } function concatenate(array1, array2) { return some(array2) ? some(array1) ? [...array1, ...array2] : array2 : array1; } function selectIndex(_, i) { return i; } function indicesOf(array) { return array.map(selectIndex); } function deduplicateRelational(array, equalityComparer, comparer) { let indices = indicesOf(array); stableSortIndices(array, indices, comparer); let last2 = array[indices[0]], deduplicated = [indices[0]]; for (let i = 1; i < indices.length; i++) { let index = indices[i], item = array[index]; equalityComparer(last2, item) || (deduplicated.push(index), last2 = item); } return deduplicated.sort(), deduplicated.map((i) => array[i]); } function deduplicateEquality(array, equalityComparer) { let result = []; for (let item of array) pushIfUnique(result, item, equalityComparer); return result; } function deduplicate(array, equalityComparer, comparer) { return array.length === 0 ? [] : array.length === 1 ? array.slice() : comparer ? deduplicateRelational(array, equalityComparer, comparer) : deduplicateEquality(array, equalityComparer); } function deduplicateSorted(array, comparer) { if (array.length === 0) return emptyArray; let last2 = array[0], deduplicated = [last2]; for (let i = 1; i < array.length; i++) { let next = array[i]; switch (comparer(next, last2)) { case !0: case 0: continue; case -1: return Debug.fail("Array is unsorted."); } deduplicated.push(last2 = next); } return deduplicated; } function createSortedArray() { return []; } function insertSorted(array, insert, compare, allowDuplicates) { if (array.length === 0) return array.push(insert), !0; let insertIndex = binarySearch(array, insert, identity, compare); return insertIndex < 0 ? (array.splice(~insertIndex, 0, insert), !0) : allowDuplicates ? (array.splice(insertIndex, 0, insert), !0) : !1; } function sortAndDeduplicate(array, comparer, equalityComparer) { return deduplicateSorted(sort(array, comparer), equalityComparer || comparer || compareStringsCaseSensitive); } function arrayIsSorted(array, comparer) { if (array.length < 2) return !0; for (let i = 1, len = array.length; i < len; i++) if (comparer(array[i - 1], array[i]) === 1) return !1; return !0; } function detectSortCaseSensitivity(array, getString, compareStringsCaseSensitive2, compareStringsCaseInsensitive2) { let kind = 3; if (array.length < 2) return kind; let prevElement = getString(array[0]); for (let i = 1, len = array.length; i < len && kind !== 0; i++) { let element = getString(array[i]); kind & 1 && compareStringsCaseSensitive2(prevElement, element) > 0 && (kind &= -2), kind & 2 && compareStringsCaseInsensitive2(prevElement, element) > 0 && (kind &= -3), prevElement = element; } return kind; } function arrayIsEqualTo(array1, array2, equalityComparer = equateValues) { if (!array1 || !array2) return array1 === array2; if (array1.length !== array2.length) return !1; for (let i = 0; i < array1.length; i++) if (!equalityComparer(array1[i], array2[i], i)) return !1; return !0; } function compact(array) { let result; if (array) for (let i = 0; i < array.length; i++) { let v = array[i]; (result || !v) && (result || (result = array.slice(0, i)), v && result.push(v)); } return result || array; } function relativeComplement(arrayA, arrayB, comparer) { if (!arrayB || !arrayA || arrayB.length === 0 || arrayA.length === 0) return arrayB; let result = []; loopB: for (let offsetA = 0, offsetB = 0; offsetB < arrayB.length; offsetB++) { offsetB > 0 && Debug.assertGreaterThanOrEqual( comparer(arrayB[offsetB], arrayB[offsetB - 1]), 0 /* EqualTo */ ); loopA: for (let startA = offsetA; offsetA < arrayA.length; offsetA++) switch (offsetA > startA && Debug.assertGreaterThanOrEqual( comparer(arrayA[offsetA], arrayA[offsetA - 1]), 0 /* EqualTo */ ), comparer(arrayB[offsetB], arrayA[offsetA])) { case -1: result.push(arrayB[offsetB]); continue loopB; case 0: continue loopB; case 1: continue loopA; } } return result; } function append(to, value) { return value === void 0 ? to : to === void 0 ? [value] : (to.push(value), to); } function combine(xs, ys) { return xs === void 0 ? ys : ys === void 0 ? xs : isArray(xs) ? isArray(ys) ? concatenate(xs, ys) : append(xs, ys) : isArray(ys) ? append(ys, xs) : [xs, ys]; } function toOffset(array, offset) { return offset < 0 ? array.length + offset : offset; } function addRange(to, from, start, end) { if (from === void 0 || from.length === 0) return to; if (to === void 0) return from.slice(start, end); start = start === void 0 ? 0 : toOffset(from, start), end = end === void 0 ? from.length : toOffset(from, end); for (let i = start; i < end && i < from.length; i++) from[i] !== void 0 && to.push(from[i]); return to; } function pushIfUnique(array, toAdd, equalityComparer) { return contains(array, toAdd, equalityComparer) ? !1 : (array.push(toAdd), !0); } function appendIfUnique(array, toAdd, equalityComparer) { return array ? (pushIfUnique(array, toAdd, equalityComparer), array) : [toAdd]; } function stableSortIndices(array, indices, comparer) { indices.sort((x, y) => comparer(array[x], array[y]) || compareValues(x, y)); } function sort(array, comparer) { return array.length === 0 ? array : array.slice().sort(comparer); } function* arrayReverseIterator(array) { for (let i = array.length - 1; i >= 0; i--) yield array[i]; } function stableSort(array, comparer) { let indices = indicesOf(array); return stableSortIndices(array, indices, comparer), indices.map((i) => array[i]); } function rangeEquals(array1, array2, pos, end) { for (; pos < end; ) { if (array1[pos] !== array2[pos]) return !1; pos++; } return !0; } function firstOrUndefined(array) { return array === void 0 || array.length === 0 ? void 0 : array[0]; } function firstOrUndefinedIterator(iter) { if (iter) for (let value of iter) return value; } function first(array) { return Debug.assert(array.length !== 0), array[0]; } function firstIterator(iter) { for (let value of iter) return value; Debug.fail("iterator is empty"); } function lastOrUndefined(array) { return array === void 0 || array.length === 0 ? void 0 : array[array.length - 1]; } function last(array) { return Debug.assert(array.length !== 0), array[array.length - 1]; } function singleOrUndefined(array) { return array && array.length === 1 ? array[0] : void 0; } function single(array) { return Debug.checkDefined(singleOrUndefined(array)); } function singleOrMany(array) { return array && array.length === 1 ? array[0] : array; } function replaceElement(array, index, value) { let result = array.slice(0); return result[index] = value, result; } function binarySearch(array, value, keySelector, keyComparer, offset) { return binarySearchKey(array, keySelector(value), keySelector, keyComparer, offset); } function binarySearchKey(array, key, keySelector, keyComparer, offset) { if (!some(array)) return -1; let low = offset || 0, high = array.length - 1; for (; low <= high; ) { let middle = low + (high - low >> 1), midKey = keySelector(array[middle], middle); switch (keyComparer(midKey, key)) { case -1: low = middle + 1; break; case 0: return middle; case 1: high = middle - 1; break; } } return ~low; } function reduceLeft(array, f, initial, start, count) { if (array && array.length > 0) { let size = array.length; if (size > 0) { let pos = start === void 0 || start < 0 ? 0 : start, end = count === void 0 || pos + count > size - 1 ? size - 1 : pos + count, result; for (arguments.length <= 2 ? (result = array[pos], pos++) : result = initial; pos <= end; ) result = f(result, array[pos], pos), pos++; return result; } } return initial; } function hasProperty(map2, key) { return hasOwnProperty.call(map2, key); } function getProperty(map2, key) { return hasOwnProperty.call(map2, key) ? map2[key] : void 0; } function getOwnKeys(map2) { let keys = []; for (let key in map2) hasOwnProperty.call(map2, key) && keys.push(key); return keys; } function getAllKeys(obj) { let result = []; do { let names = Object.getOwnPropertyNames(obj); for (let name of names) pushIfUnique(result, name); } while (obj = Object.getPrototypeOf(obj)); return result; } function getOwnValues(collection) { let values = []; for (let key in collection) hasOwnProperty.call(collection, key) && values.push(collection[key]); return values; } function arrayOf(count, f) { let result = new Array(count); for (let i = 0; i < count; i++) result[i] = f(i); return result; } function arrayFrom(iterator, map2) { let result = []; for (let value of iterator) result.push(map2 ? map2(value) : value); return result; } function assign(t, ...args) { for (let arg of args) if (arg !== void 0) for (let p in arg) hasProperty(arg, p) && (t[p] = arg[p]); return t; } function equalOwnProperties(left, right, equalityComparer = equateValues) { if (left === right) return !0; if (!left || !right) return !1; for (let key in left) if (hasOwnProperty.call(left, key) && (!hasOwnProperty.call(right, key) || !equalityComparer(left[key], right[key]))) return !1; for (let key in right) if (hasOwnProperty.call(right, key) && !hasOwnProperty.call(left, key)) return !1; return !0; } function arrayToMap(array, makeKey, makeValue = identity) { let result = /* @__PURE__ */ new Map(); for (let value of array) { let key = makeKey(value); key !== void 0 && result.set(key, makeValue(value)); } return result; } function arrayToNumericMap(array, makeKey, makeValue = identity) { let result = []; for (let value of array) result[makeKey(value)] = makeValue(value); return result; } function arrayToMultiMap(values, makeKey, makeValue = identity) { let result = createMultiMap(); for (let value of values) result.add(makeKey(value), makeValue(value)); return result; } function group(values, getGroupId, resultSelector = identity) { return arrayFrom(arrayToMultiMap(values, getGroupId).values(), resultSelector); } function groupBy(values, keySelector) { let result = {}; if (values) for (let value of values) { let key = `${keySelector(value)}`; (result[key] ?? (result[key] = [])).push(value); } return result; } function clone(object) { let result = {}; for (let id in object) hasOwnProperty.call(object, id) && (result[id] = object[id]); return result; } function extend(first2, second) { let result = {}; for (let id in second) hasOwnProperty.call(second, id) && (result[id] = second[id]); for (let id in first2) hasOwnProperty.call(first2, id) && (result[id] = first2[id]); return result; } function copyProperties(first2, second) { for (let id in second) hasOwnProperty.call(second, id) && (first2[id] = second[id]); } function maybeBind(obj, fn) { return fn ? fn.bind(obj) : void 0; } function createMultiMap() { let map2 = /* @__PURE__ */ new Map(); return map2.add = multiMapAdd, map2.remove = multiMapRemove, map2; } function multiMapAdd(key, value) { let values = this.get(key); return values ? values.push(value) : this.set(key, values = [value]), values; } function multiMapRemove(key, value) { let values = this.get(key); values && (unorderedRemoveItem(values, value), values.length || this.delete(key)); } function createQueue(items) { let elements = items?.slice() || [], headIndex = 0; function isEmpty() { return headIndex === elements.length; } function enqueue(...items2) { elements.push(...items2); } function dequeue() { if (isEmpty()) throw new Error("Queue is empty"); let result = elements[headIndex]; if (elements[headIndex] = void 0, headIndex++, headIndex > 100 && headIndex > elements.length >> 1) { let newLength = elements.length - headIndex; elements.copyWithin( /*target*/ 0, /*start*/ headIndex ), elements.length = newLength, headIndex = 0; } return result; } return { enqueue, dequeue, isEmpty }; } function createSet(getHashCode, equals) { let multiMap = /* @__PURE__ */ new Map(), size = 0; function* getElementIterator() { for (let value of multiMap.values()) isArray(value) ? yield* value : yield value; } let set = { has(element) { let hash = getHashCode(element); if (!multiMap.has(hash)) return !1; let candidates = multiMap.get(hash); if (!isArray(candidates)) return equals(candidates, element); for (let candidate of candidates) if (equals(candidate, element)) return !0; return !1; }, add(element) { let hash = getHashCode(element); if (multiMap.has(hash)) { let values = multiMap.get(hash); if (isArray(values)) contains(values, element, equals) || (values.push(element), size++); else { let value = values; equals(value, element) || (multiMap.set(hash, [value, element]), size++); } } else multiMap.set(hash, element), size++; return this; }, delete(element) { let hash = getHashCode(element); if (!multiMap.has(hash)) return !1; let candidates = multiMap.get(hash); if (isArray(candidates)) { for (let i = 0; i < candidates.length; i++) if (equals(candidates[i], element)) return candidates.length === 1 ? multiMap.delete(hash) : candidates.length === 2 ? multiMap.set(hash, candidates[1 - i]) : unorderedRemoveItemAt(candidates, i), size--, !0; } else if (equals(candidates, element)) return multiMap.delete(hash), size--, !0; return !1; }, clear() { multiMap.clear(), size = 0; }, get size() { return size; }, forEach(action) { for (let elements of arrayFrom(multiMap.values())) if (isArray(elements)) for (let element of elements) action(element, element, set); else { let element = elements; action(element, element, set); } }, keys() { return getElementIterator(); }, values() { return getElementIterator(); }, *entries() { for (let value of getElementIterator()) yield [value, value]; }, [Symbol.iterator]: () => getElementIterator(), [Symbol.toStringTag]: multiMap[Symbol.toStringTag] }; return set; } function isArray(value) { return Array.isArray(value); } function toArray(value) { return isArray(value) ? value : [value]; } function isString(text) { return typeof text == "string"; } function isNumber(x) { return typeof x == "number"; } function tryCast(value, test) { return value !== void 0 && test(value) ? value : void 0; } function cast(value, test) { return value !== void 0 && test(value) ? value : Debug.fail(`Invalid cast. The supplied value ${value} did not pass the test '${Debug.getFunctionName(test)}'.`); } function noop(_) { } function returnFalse() { return !1; } function returnTrue() { return !0; } function returnUndefined() { } function identity(x) { return x; } function toLowerCase(x) { return x.toLowerCase(); } function toFileNameLowerCase(x) { return fileNameLowerCaseRegExp.test(x) ? x.replace(fileNameLowerCaseRegExp, toLowerCase) : x; } function notImplemented() { throw new Error("Not implemented"); } function memoize(callback) { let value; return () => (callback && (value = callback(), callback = void 0), value); } function memoizeOne(callback) { let map2 = /* @__PURE__ */ new Map(); return (arg) => { let key = `${typeof arg}:${arg}`, value = map2.get(key); return value === void 0 && !map2.has(key) && (value = callback(arg), map2.set(key, value)), value; }; } function memoizeWeak(callback) { let map2 = /* @__PURE__ */ new WeakMap(); return (arg) => { let value = map2.get(arg); return value === void 0 && !map2.has(arg) && (value = callback(arg), map2.set(arg, value)), value; }; } function memoizeCached(callback, cache) { return (...args) => { let value = cache.get(args); return value === void 0 && !cache.has(args) && (value = callback(...args), cache.set(args, value)), value; }; } function compose(a, b, c, d, e) { if (e) { let args = []; for (let i = 0; i < arguments.length; i++) args[i] = arguments[i]; return (t) => reduceLeft(args, (u, f) => f(u), t); } else return d ? (t) => d(c(b(a(t)))) : c ? (t) => c(b(a(t))) : b ? (t) => b(a(t)) : a ? (t) => a(t) : (t) => t; } function equateValues(a, b) { return a === b; } function equateStringsCaseInsensitive(a, b) { return a === b || a !== void 0 && b !== void 0 && a.toUpperCase() === b.toUpperCase(); } function equateStringsCaseSensitive(a, b) { return equateValues(a, b); } function compareComparableValues(a, b) { return a === b ? 0 : a === void 0 ? -1 : b === void 0 ? 1 : a < b ? -1 : 1; } function compareValues(a, b) { return compareComparableValues(a, b); } function compareTextSpans(a, b) { return compareValues(a?.start, b?.start) || compareValues(a?.length, b?.length); } function min(items, compare) { return reduceLeft(items, (x, y) => compare(x, y) === -1 ? x : y); } function compareStringsCaseInsensitive(a, b) { return a === b ? 0 : a === void 0 ? -1 : b === void 0 ? 1 : (a = a.toUpperCase(), b = b.toUpperCase(), a < b ? -1 : a > b ? 1 : 0); } function compareStringsCaseInsensitiveEslintCompatible(a, b) { return a === b ? 0 : a === void 0 ? -1 : b === void 0 ? 1 : (a = a.toLowerCase(), b = b.toLowerCase(), a < b ? -1 : a > b ? 1 : 0); } function compareStringsCaseSensitive(a, b) { return compareComparableValues(a, b); } function getStringComparer(ignoreCase) { return ignoreCase ? compareStringsCaseInsensitive : compareStringsCaseSensitive; } function getUILocale() { return uiLocale; } function setUILocale(value) { uiLocale !== value && (uiLocale = value, uiComparerCaseSensitive = void 0); } function compareStringsCaseSensitiveUI(a, b) { return (uiComparerCaseSensitive || (uiComparerCaseSensitive = createUIStringComparer(uiLocale)))(a, b); } function compareProperties(a, b, key, comparer) { return a === b ? 0 : a === void 0 ? -1 : b === void 0 ? 1 : comparer(a[key], b[key]); } function compareBooleans(a, b) { return compareValues(a ? 1 : 0, b ? 1 : 0); } function getSpellingSuggestion(name, candidates, getName) { let maximumLengthDifference = Math.max(2, Math.floor(name.length * 0.34)), bestDistance = Math.floor(name.length * 0.4) + 1, bestCandidate; for (let candidate of candidates) { let candidateName = getName(candidate); if (candidateName !== void 0 && Math.abs(candidateName.length - name.length) <= maximumLengthDifference) { if (candidateName === name || candidateName.length < 3 && candidateName.toLowerCase() !== name.toLowerCase()) continue; let distance = levenshteinWithMax(name, candidateName, bestDistance - 0.1); if (distance === void 0) continue; Debug.assert(distance < bestDistance), bestDistance = distance, bestCandidate = candidate; } } return bestCandidate; } function levenshteinWithMax(s1, s2, max) { let previous = new Array(s2.length + 1), current = new Array(s2.length + 1), big = max + 0.01; for (let i = 0; i <= s2.length; i++) previous[i] = i; for (let i = 1; i <= s1.length; i++) { let c1 = s1.charCodeAt(i - 1), minJ = Math.ceil(i > max ? i - max : 1), maxJ = Math.floor(s2.length > max + i ? max + i : s2.length); current[0] = i; let colMin = i; for (let j = 1; j < minJ; j++) current[j] = big; for (let j = minJ; j <= maxJ; j++) { let substitutionDistance = s1[i - 1].toLowerCase() === s2[j - 1].toLowerCase() ? previous[j - 1] + 0.1 : previous[j - 1] + 2, dist = c1 === s2.charCodeAt(j - 1) ? previous[j - 1] : Math.min( /*delete*/ previous[j] + 1, /*insert*/ current[j - 1] + 1, /*substitute*/ substitutionDistance ); current[j] = dist, colMin = Math.min(colMin, dist); } for (let j = maxJ + 1; j <= s2.length; j++) current[j] = big; if (colMin > max) return; let temp = previous; previous = current, current = temp; } let res = previous[s2.length]; return res > max ? void 0 : res; } function endsWith(str, suffix) { let expectedPos = str.length - suffix.length; return expectedPos >= 0 && str.indexOf(suffix, expectedPos) === expectedPos; } function removeSuffix(str, suffix) { return endsWith(str, suffix) ? str.slice(0, str.length - suffix.length) : str; } function tryRemoveSuffix(str, suffix) { return endsWith(str, suffix) ? str.slice(0, str.length - suffix.length) : void 0; } function stringContains(str, substring) { return str.indexOf(substring) !== -1; } function removeMinAndVersionNumbers(fileName) { let end = fileName.length; for (let pos = end - 1; pos > 0; pos--) { let ch = fileName.charCodeAt(pos); if (ch >= 48 && ch <= 57) do --pos, ch = fileName.charCodeAt(pos); while (pos > 0 && ch >= 48 && ch <= 57); else if (pos > 4 && (ch === 110 || ch === 78)) { if (--pos, ch = fileName.charCodeAt(pos), ch !== 105 && ch !== 73 || (--pos, ch = fileName.charCodeAt(pos), ch !== 109 && ch !== 77)) break; --pos, ch = fileName.charCodeAt(pos); } else break; if (ch !== 45 && ch !== 46) break; end = pos; } return end === fileName.length ? fileName : fileName.slice(0, end); } function orderedRemoveItem(array, item) { for (let i = 0; i < array.length; i++) if (array[i] === item) return orderedRemoveItemAt(array, i), !0; return !1; } function orderedRemoveItemAt(array, index) { for (let i = index; i < array.length - 1; i++) array[i] = array[i + 1]; array.pop(); } function unorderedRemoveItemAt(array, index) { array[index] = array[array.length - 1], array.pop(); } function unorderedRemoveItem(array, item) { return unorderedRemoveFirstItemWhere(array, (element) => element === item); } function unorderedRemoveFirstItemWhere(array, predicate) { for (let i = 0; i < array.length; i++) if (predicate(array[i])) return unorderedRemoveItemAt(array, i), !0; return !1; } function createGetCanonicalFileName(useCaseSensitiveFileNames2) { return useCaseSensitiveFileNames2 ? identity : toFileNameLowerCase; } function patternText({ prefix, suffix }) { return `${prefix}*${suffix}`; } function matchedText(pattern, candidate) { return Debug.assert(isPatternMatch(pattern, candidate)), candidate.substring(pattern.prefix.length, candidate.length - pattern.suffix.length); } function findBestPatternMatch(values, getPattern, candidate) { let matchedValue, longestMatchPrefixLength = -1; for (let v of values) { let pattern = getPattern(v); isPatternMatch(pattern, candidate) && pattern.prefix.length > longestMatchPrefixLength && (longestMatchPrefixLength = pattern.prefix.length, matchedValue = v); } return matchedValue; } function startsWith(str, prefix) { return str.lastIndexOf(prefix, 0) === 0; } function removePrefix(str, prefix) { return startsWith(str, prefix) ? str.substr(prefix.length) : str; } function tryRemovePrefix(str, prefix, getCanonicalFileName = identity) { return startsWith(getCanonicalFileName(str), getCanonicalFileName(prefix)) ? str.substring(prefix.length) : void 0; } function isPatternMatch({ prefix, suffix }, candidate) { return candidate.length >= prefix.length + suffix.length && startsWith(candidate, prefix) && endsWith(candidate, suffix); } function and(f, g) { return (arg) => f(arg) && g(arg); } function or(...fs) { return (...args) => { let lastResult; for (let f of fs) if (lastResult = f(...args), lastResult) return lastResult; return lastResult; }; } function not(fn) { return (...args) => !fn(...args); } function assertType(_) { } function singleElementArray(t) { return t === void 0 ? void 0 : [t]; } function enumerateInsertsAndDeletes(newItems, oldItems, comparer, inserted, deleted, unchanged) { unchanged = unchanged || noop; let newIndex = 0, oldIndex = 0, newLen = newItems.length, oldLen = oldItems.length, hasChanges = !1; for (; newIndex < newLen && oldIndex < oldLen; ) { let newItem = newItems[newIndex], oldItem = oldItems[oldIndex], compareResult = comparer(newItem, oldItem); compareResult === -1 ? (inserted(newItem), newIndex++, hasChanges = !0) : compareResult === 1 ? (deleted(oldItem), oldIndex++, hasChanges = !0) : (unchanged(oldItem, newItem), newIndex++, oldIndex++); } for (; newIndex < newLen; ) inserted(newItems[newIndex++]), hasChanges = !0; for (; oldIndex < oldLen; ) deleted(oldItems[oldIndex++]), hasChanges = !0; return hasChanges; } function cartesianProduct(arrays) { let result = []; return cartesianProductWorker( arrays, result, /*outer*/ void 0, 0 ), result; } function cartesianProductWorker(arrays, result, outer, index) { for (let element of arrays[index]) { let inner; outer ? (inner = outer.slice(), inner.push(element)) : inner = [element], index === arrays.length - 1 ? result.push(inner) : cartesianProductWorker(arrays, result, inner, index + 1); } } function padLeft(s, length2, padString = " ") { return length2 <= s.length ? s : padString.repeat(length2 - s.length) + s; } function padRight(s, length2, padString = " ") { return length2 <= s.length ? s : s + padString.repeat(length2 - s.length); } function takeWhile(array, predicate) { if (array) { let len = array.length, index = 0; for (; index < len && predicate(array[index]); ) index++; return array.slice(0, index); } } function skipWhile(array, predicate) { if (array) { let len = array.length, index = 0; for (; index < len && predicate(array[index]); ) index++; return array.slice(index); } } function trimEndImpl(s) { let end = s.length - 1; for (; end >= 0 && isWhiteSpaceLike(s.charCodeAt(end)); ) end--; return s.slice(0, end + 1); } function isNodeLikeSystem() { return typeof process < "u" && !!process.nextTick && !process.browser && typeof module == "object"; } var emptyArray, emptyMap, emptySet, SortKind, elementAt, hasOwnProperty, fileNameLowerCaseRegExp, AssertionLevel, createUIStringComparer, uiComparerCaseSensitive, uiLocale, trimString, trimStringEnd, trimStringStart, init_core = __esm({ "src/compiler/core.ts"() { "use strict"; init_ts2(), emptyArray = [], emptyMap = /* @__PURE__ */ new Map(), emptySet = /* @__PURE__ */ new Set(), SortKind = /* @__PURE__ */ ((SortKind2) => (SortKind2[SortKind2.None = 0] = "None", SortKind2[SortKind2.CaseSensitive = 1] = "CaseSensitive", SortKind2[SortKind2.CaseInsensitive = 2] = "CaseInsensitive", SortKind2[SortKind2.Both = 3] = "Both", SortKind2))(SortKind || {}), elementAt = Array.prototype.at ? (array, offset) => array?.at(offset) : (array, offset) => { if (array && (offset = toOffset(array, offset), offset < array.length)) return array[offset]; }, hasOwnProperty = Object.prototype.hasOwnProperty, fileNameLowerCaseRegExp = /[^\u0130\u0131\u00DFa-z0-9\\/:\-_. ]+/g, AssertionLevel = /* @__PURE__ */ ((AssertionLevel2) => (AssertionLevel2[AssertionLevel2.None = 0] = "None", AssertionLevel2[AssertionLevel2.Normal = 1] = "Normal", AssertionLevel2[AssertionLevel2.Aggressive = 2] = "Aggressive", AssertionLevel2[AssertionLevel2.VeryAggressive = 3] = "VeryAggressive", AssertionLevel2))(AssertionLevel || {}), createUIStringComparer = (() => { let defaultComparer, enUSComparer, stringComparerFactory = getStringComparerFactory(); return createStringComparer; function compareWithCallback(a, b, comparer) { if (a === b) return 0; if (a === void 0) return -1; if (b === void 0) return 1; let value = comparer(a, b); return value < 0 ? -1 : value > 0 ? 1 : 0; } function createIntlCollatorStringComparer(locale) { let comparer = new Intl.Collator(locale, { usage: "sort", sensitivity: "variant" }).compare; return (a, b) => compareWithCallback(a, b, comparer); } function createLocaleCompareStringComparer(locale) { if (locale !== void 0) return createFallbackStringComparer(); return (a, b) => compareWithCallback(a, b, compareStrings); function compareStrings(a, b) { return a.localeCompare(b); } } function createFallbackStringComparer() { return (a, b) => compareWithCallback(a, b, compareDictionaryOrder); function compareDictionaryOrder(a, b) { return compareStrings(a.toUpperCase(), b.toUpperCase()) || compareStrings(a, b); } function compareStrings(a, b) { return a < b ? -1 : a > b ? 1 : 0; } } function getStringComparerFactory() { return typeof Intl == "object" && typeof Intl.Collator == "function" ? createIntlCollatorStringComparer : typeof String.prototype.localeCompare == "function" && typeof String.prototype.toLocaleUpperCase == "function" && "a".localeCompare("B") < 0 ? createLocaleCompareStringComparer : createFallbackStringComparer; } function createStringComparer(locale) { return locale === void 0 ? defaultComparer || (defaultComparer = stringComparerFactory(locale)) : locale === "en-US" ? enUSComparer || (enUSComparer = stringComparerFactory(locale)) : stringComparerFactory(locale); } })(), trimString = String.prototype.trim ? (s) => s.trim() : (s) => trimStringEnd(trimStringStart(s)), trimStringEnd = String.prototype.trimEnd ? (s) => s.trimEnd() : trimEndImpl, trimStringStart = String.prototype.trimStart ? (s) => s.trimStart() : (s) => s.replace(/^\s+/g, ""); } }), LogLevel, Debug, init_debug = __esm({ "src/compiler/debug.ts"() { "use strict"; init_ts2(), init_ts2(), LogLevel = /* @__PURE__ */ ((LogLevel2) => (LogLevel2[LogLevel2.Off = 0] = "Off", LogLevel2[LogLevel2.Error = 1] = "Error", LogLevel2[LogLevel2.Warning = 2] = "Warning", LogLevel2[LogLevel2.Info = 3] = "Info", LogLevel2[LogLevel2.Verbose = 4] = "Verbose", LogLevel2))(LogLevel || {}), ((Debug2) => { let currentAssertionLevel = 0; Debug2.currentLogLevel = 2, Debug2.isDebugging = !1; function shouldLog(level) { return Debug2.currentLogLevel <= level; } Debug2.shouldLog = shouldLog; function logMessage(level, s) { Debug2.loggingHost && shouldLog(level) && Debug2.loggingHost.log(level, s); } function log(s) { logMessage(3, s); } Debug2.log = log, ((_log) => { function error2(s) { logMessage(1, s); } _log.error = error2; function warn(s) { logMessage(2, s); } _log.warn = warn; function log2(s) { logMessage(3, s); } _log.log = log2; function trace2(s) { logMessage(4, s); } _log.trace = trace2; })(log = Debug2.log || (Debug2.log = {})); let assertionCache = {}; function getAssertionLevel() { return currentAssertionLevel; } Debug2.getAssertionLevel = getAssertionLevel; function setAssertionLevel(level) { let prevAssertionLevel = currentAssertionLevel; if (currentAssertionLevel = level, level > prevAssertionLevel) for (let key of getOwnKeys(assertionCache)) { let cachedFunc = assertionCache[key]; cachedFunc !== void 0 && Debug2[key] !== cachedFunc.assertion && level >= cachedFunc.level && (Debug2[key] = cachedFunc, assertionCache[key] = void 0); } } Debug2.setAssertionLevel = setAssertionLevel; function shouldAssert(level) { return currentAssertionLevel >= level; } Debug2.shouldAssert = shouldAssert; function shouldAssertFunction(level, name) { return shouldAssert(level) ? !0 : (assertionCache[name] = { level, assertion: Debug2[name] }, Debug2[name] = noop, !1); } function fail(message, stackCrawlMark) { debugger; let e = new Error(message ? `Debug Failure. ${message}` : "Debug Failure.");