@holoscript/std 6.0.3 → 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/chunk-DGUM43GV.js +11 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/dist/{chunk-PFX2JM4X.js → chunk-FAMOLKH3.js} +2 -1
- package/dist/{chunk-PFX2JM4X.js.map → chunk-FAMOLKH3.js.map} +1 -1
- package/dist/{chunk-7HVUYGPS.js → chunk-SOKH6FJ7.js} +37 -5
- package/dist/chunk-SOKH6FJ7.js.map +1 -0
- package/dist/{chunk-W2Q3LUCM.js → chunk-XJIFG7G3.js} +3 -3
- package/dist/chunk-XJIFG7G3.js.map +1 -0
- package/dist/collections.cjs +1 -0
- package/dist/collections.cjs.map +1 -1
- package/dist/collections.js +2 -1
- package/dist/fs/fs.d.ts +288 -0
- package/dist/fs/fs.d.ts.map +1 -0
- package/dist/fs/index.cjs +1049 -0
- package/dist/fs/index.cjs.map +1 -0
- package/dist/fs/index.d.ts +51 -0
- package/dist/fs/index.d.ts.map +1 -0
- package/dist/fs/index.js +918 -0
- package/dist/fs/index.js.map +1 -0
- package/dist/fs/path.d.ts +135 -0
- package/dist/fs/path.d.ts.map +1 -0
- package/dist/fs/sandbox.d.ts +49 -0
- package/dist/fs/sandbox.d.ts.map +1 -0
- package/dist/fs/watch.d.ts +133 -0
- package/dist/fs/watch.d.ts.map +1 -0
- package/dist/index.cjs +54 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -4
- package/dist/index.js.map +1 -1
- package/dist/math.cjs +21 -2
- package/dist/math.cjs.map +1 -1
- package/dist/math.js +2 -1
- package/dist/string.cjs +2 -2
- package/dist/string.cjs.map +1 -1
- package/dist/string.js +2 -1
- package/dist/time.js +1 -0
- package/dist/traits/EconomicPrimitives.js +1 -0
- package/dist/traits/EconomicTraits.js +1 -0
- package/dist/traits/VRRTraits.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +24 -9
- package/CHANGELOG.md +0 -7
- package/dist/__tests__/EconomicPrimitives.test.d.ts +0 -2
- package/dist/__tests__/EconomicPrimitives.test.d.ts.map +0 -1
- package/dist/__tests__/EconomicTraits.test.d.ts +0 -2
- package/dist/__tests__/EconomicTraits.test.d.ts.map +0 -1
- package/dist/__tests__/SimulationLabPrimitives.test.d.ts +0 -2
- package/dist/__tests__/SimulationLabPrimitives.test.d.ts.map +0 -1
- package/dist/__tests__/collections.test.d.ts +0 -2
- package/dist/__tests__/collections.test.d.ts.map +0 -1
- package/dist/__tests__/events.test.d.ts +0 -2
- package/dist/__tests__/events.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/materials.test.d.ts +0 -2
- package/dist/__tests__/materials.test.d.ts.map +0 -1
- package/dist/__tests__/math.test.d.ts +0 -2
- package/dist/__tests__/math.test.d.ts.map +0 -1
- package/dist/__tests__/physics.test.d.ts +0 -2
- package/dist/__tests__/physics.test.d.ts.map +0 -1
- package/dist/__tests__/spatial.test.d.ts +0 -2
- package/dist/__tests__/spatial.test.d.ts.map +0 -1
- package/dist/__tests__/standard-library-fundamentals.test.d.ts +0 -2
- package/dist/__tests__/standard-library-fundamentals.test.d.ts.map +0 -1
- package/dist/__tests__/string-and-time-utilities.test.d.ts +0 -2
- package/dist/__tests__/string-and-time-utilities.test.d.ts.map +0 -1
- package/dist/__tests__/string-decoupled.test.d.ts +0 -2
- package/dist/__tests__/string-decoupled.test.d.ts.map +0 -1
- package/dist/__tests__/string.test.d.ts +0 -2
- package/dist/__tests__/string.test.d.ts.map +0 -1
- package/dist/__tests__/time.test.d.ts +0 -2
- package/dist/__tests__/time.test.d.ts.map +0 -1
- package/dist/chunk-7HVUYGPS.js.map +0 -1
- package/dist/chunk-W2Q3LUCM.js.map +0 -1
- package/dist/string.basic.test.d.ts +0 -5
- package/dist/string.basic.test.d.ts.map +0 -1
- package/dist/string.test.d.ts +0 -5
- package/dist/string.test.d.ts.map +0 -1
- package/dist/traits/__tests__/ARTraits.test.d.ts +0 -2
- package/dist/traits/__tests__/ARTraits.test.d.ts.map +0 -1
- package/dist/traits/__tests__/EconomicPrimitives.test.d.ts +0 -2
- package/dist/traits/__tests__/EconomicPrimitives.test.d.ts.map +0 -1
- package/dist/traits/__tests__/EconomicTraits.test.d.ts +0 -2
- package/dist/traits/__tests__/EconomicTraits.test.d.ts.map +0 -1
- package/error-utf8.log +0 -6
- package/error.log +0 -0
- package/src/__tests__/EconomicPrimitives.test.ts +0 -690
- package/src/__tests__/EconomicTraits.test.ts +0 -425
- package/src/__tests__/SimulationLabPrimitives.test.ts +0 -415
- package/src/__tests__/collections.test.ts +0 -182
- package/src/__tests__/events.test.ts +0 -135
- package/src/__tests__/index.test.ts +0 -14
- package/src/__tests__/materials.test.ts +0 -84
- package/src/__tests__/math.test.ts +0 -246
- package/src/__tests__/physics.test.ts +0 -83
- package/src/__tests__/spatial.test.ts +0 -333
- package/src/__tests__/standard-library-fundamentals.test.ts +0 -1301
- package/src/__tests__/string-and-time-utilities.test.ts +0 -1070
- package/src/__tests__/string-decoupled.test.ts +0 -14
- package/src/__tests__/string.test.ts +0 -164
- package/src/__tests__/time.test.ts +0 -110
- package/src/collections.ts +0 -850
- package/src/events.ts +0 -88
- package/src/index.ts +0 -474
- package/src/materials.ts +0 -109
- package/src/math.ts +0 -674
- package/src/physics.ts +0 -141
- package/src/spatial.ts +0 -320
- package/src/string.basic.test.ts +0 -14
- package/src/string.test.ts +0 -335
- package/src/string.ts +0 -531
- package/src/time.ts +0 -621
- package/src/traits/ARTraits.ts +0 -103
- package/src/traits/EconomicPrimitives.ts +0 -755
- package/src/traits/EconomicTraits.ts +0 -552
- package/src/traits/IoTTraits.ts +0 -102
- package/src/traits/SimulationLabPrimitives.ts +0 -650
- package/src/traits/SimulationLabTraits.ts +0 -191
- package/src/traits/VRRTraits.ts +0 -326
- package/src/traits/__tests__/ARTraits.test.ts +0 -14
- package/src/traits/__tests__/EconomicPrimitives.test.ts +0 -14
- package/src/traits/__tests__/EconomicTraits.test.ts +0 -14
- package/src/types.ts +0 -411
- package/std_error.log +0 -5
- package/tsconfig.json +0 -18
- package/tsup.config.ts +0 -17
- package/vitest.config.ts +0 -10
package/dist/collections.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/collections.ts"],"sourcesContent":["/**\n * @holoscript/std - Collections Module\n *\n * Provides List, Map, and Set implementations with functional operations\n * for use in HoloScript Plus programs.\n */\n\nimport type { Vec3 } from './types.js';\n\n/**\n * Immutable List with functional operations\n */\nexport class List<T> {\n private readonly items: readonly T[];\n\n constructor(items: Iterable<T> = []) {\n this.items = Array.from(items);\n }\n\n static of<T>(...items: T[]): List<T> {\n return new List(items);\n }\n\n static from<T>(iterable: Iterable<T>): List<T> {\n return new List(iterable);\n }\n\n static range(start: number, end: number, step = 1): List<number> {\n const items: number[] = [];\n for (let i = start; step > 0 ? i < end : i > end; i += step) {\n items.push(i);\n }\n return new List(items);\n }\n\n static repeat<T>(value: T, count: number): List<T> {\n return new List(Array(count).fill(value));\n }\n\n get length(): number {\n return this.items.length;\n }\n\n get isEmpty(): boolean {\n return this.items.length === 0;\n }\n\n get(index: number): T | undefined {\n return index < 0 ? this.items[this.items.length + index] : this.items[index];\n }\n\n first(): T | undefined {\n return this.items[0];\n }\n\n last(): T | undefined {\n return this.items[this.items.length - 1];\n }\n\n map<U>(fn: (item: T, index: number) => U): List<U> {\n return new List(this.items.map(fn));\n }\n\n flatMap<U>(fn: (item: T, index: number) => List<U> | U[]): List<U> {\n const result: U[] = [];\n this.items.forEach((item, index) => {\n const mapped = fn(item, index);\n if (mapped instanceof List) {\n result.push(...mapped.toArray());\n } else {\n result.push(...mapped);\n }\n });\n return new List(result);\n }\n\n filter(predicate: (item: T, index: number) => boolean): List<T> {\n return new List(this.items.filter(predicate));\n }\n\n reject(predicate: (item: T, index: number) => boolean): List<T> {\n return this.filter((item, index) => !predicate(item, index));\n }\n\n reduce<U>(fn: (acc: U, item: T, index: number) => U, initial: U): U {\n return this.items.reduce(fn, initial);\n }\n\n fold<U>(initial: U, fn: (acc: U, item: T) => U): U {\n return this.items.reduce(fn, initial);\n }\n\n find(predicate: (item: T, index: number) => boolean): T | undefined {\n return this.items.find(predicate);\n }\n\n findIndex(predicate: (item: T, index: number) => boolean): number {\n return this.items.findIndex(predicate);\n }\n\n indexOf(item: T): number {\n return this.items.indexOf(item);\n }\n\n includes(item: T): boolean {\n return this.items.includes(item);\n }\n\n some(predicate: (item: T, index: number) => boolean): boolean {\n return this.items.some(predicate);\n }\n\n every(predicate: (item: T, index: number) => boolean): boolean {\n return this.items.every(predicate);\n }\n\n none(predicate: (item: T, index: number) => boolean): boolean {\n return !this.some(predicate);\n }\n\n count(predicate: (item: T, index: number) => boolean): number {\n return this.filter(predicate).length;\n }\n\n forEach(fn: (item: T, index: number) => void): void {\n this.items.forEach(fn);\n }\n\n concat(...lists: (List<T> | T[])[]): List<T> {\n const arrays = lists.map((l) => (l instanceof List ? l.toArray() : l));\n return new List([...this.items, ...arrays.flat()]);\n }\n\n append(item: T): List<T> {\n return new List([...this.items, item]);\n }\n\n prepend(item: T): List<T> {\n return new List([item, ...this.items]);\n }\n\n insert(index: number, item: T): List<T> {\n const arr = [...this.items];\n arr.splice(index, 0, item);\n return new List(arr);\n }\n\n remove(index: number): List<T> {\n const arr = [...this.items];\n arr.splice(index, 1);\n return new List(arr);\n }\n\n update(index: number, item: T): List<T> {\n const arr = [...this.items];\n arr[index] = item;\n return new List(arr);\n }\n\n slice(start?: number, end?: number): List<T> {\n return new List(this.items.slice(start, end));\n }\n\n take(n: number): List<T> {\n return this.slice(0, n);\n }\n\n takeLast(n: number): List<T> {\n return this.slice(-n);\n }\n\n takeWhile(predicate: (item: T, index: number) => boolean): List<T> {\n const result: T[] = [];\n for (let i = 0; i < this.items.length; i++) {\n if (!predicate(this.items[i], i)) break;\n result.push(this.items[i]);\n }\n return new List(result);\n }\n\n drop(n: number): List<T> {\n return this.slice(n);\n }\n\n dropLast(n: number): List<T> {\n return this.slice(0, -n);\n }\n\n dropWhile(predicate: (item: T, index: number) => boolean): List<T> {\n let startIndex = 0;\n for (let i = 0; i < this.items.length; i++) {\n if (!predicate(this.items[i], i)) break;\n startIndex = i + 1;\n }\n return this.slice(startIndex);\n }\n\n reverse(): List<T> {\n return new List([...this.items].reverse());\n }\n\n sort(compareFn?: (a: T, b: T) => number): List<T> {\n return new List([...this.items].sort(compareFn));\n }\n\n sortBy<U>(fn: (item: T) => U): List<T> {\n return this.sort((a, b) => {\n const va = fn(a);\n const vb = fn(b);\n if (va < vb) return -1;\n if (va > vb) return 1;\n return 0;\n });\n }\n\n shuffle(): List<T> {\n const arr = [...this.items];\n for (let i = arr.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [arr[i], arr[j]] = [arr[j], arr[i]];\n }\n return new List(arr);\n }\n\n unique(): List<T> {\n return new List([...new Set(this.items)]);\n }\n\n uniqueBy<U>(fn: (item: T) => U): List<T> {\n const seen = new Set<U>();\n const result: T[] = [];\n for (const item of this.items) {\n const key = fn(item);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(item);\n }\n }\n return new List(result);\n }\n\n groupBy<K>(fn: (item: T) => K): HoloMap<K, List<T>> {\n const groups = new Map<K, T[]>();\n for (const item of this.items) {\n const key = fn(item);\n const group = groups.get(key) || [];\n group.push(item);\n groups.set(key, group);\n }\n const result = new Map<K, List<T>>();\n for (const [key, items] of groups) {\n result.set(key, new List(items));\n }\n return new HoloMap(result);\n }\n\n partition(predicate: (item: T, index: number) => boolean): [List<T>, List<T>] {\n const pass: T[] = [];\n const fail: T[] = [];\n this.items.forEach((item, index) => {\n if (predicate(item, index)) {\n pass.push(item);\n } else {\n fail.push(item);\n }\n });\n return [new List(pass), new List(fail)];\n }\n\n zip<U>(other: List<U>): List<[T, U]> {\n const length = Math.min(this.length, other.length);\n const result: [T, U][] = [];\n for (let i = 0; i < length; i++) {\n result.push([this.items[i], other.get(i)!]);\n }\n return new List(result);\n }\n\n zipWith<U, V>(other: List<U>, fn: (a: T, b: U) => V): List<V> {\n return this.zip(other).map(([a, b]) => fn(a, b));\n }\n\n flatten<U>(this: List<List<U> | U[]>): List<U> {\n const result: U[] = [];\n for (const item of this.items) {\n if (item instanceof List) {\n result.push(...item.toArray());\n } else if (Array.isArray(item)) {\n result.push(...item);\n }\n }\n return new List(result);\n }\n\n sum(this: List<number>): number {\n return this.reduce((acc, n) => acc + n, 0);\n }\n\n min(this: List<number>): number | undefined {\n if (this.isEmpty) return undefined;\n return Math.min(...this.items);\n }\n\n max(this: List<number>): number | undefined {\n if (this.isEmpty) return undefined;\n return Math.max(...this.items);\n }\n\n average(this: List<number>): number | undefined {\n if (this.isEmpty) return undefined;\n return this.sum() / this.length;\n }\n\n join(separator = ','): string {\n return this.items.join(separator);\n }\n\n toArray(): T[] {\n return [...this.items];\n }\n\n toSet(): HoloSet<T> {\n return new HoloSet(this.items);\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.items[Symbol.iterator]();\n }\n\n toString(): string {\n return `List(${this.items.join(', ')})`;\n }\n}\n\n/**\n * Immutable Map with functional operations\n */\nexport class HoloMap<K, V> {\n private readonly _map: ReadonlyMap<K, V>;\n\n constructor(entries?: Iterable<[K, V]> | Map<K, V>) {\n this._map = entries instanceof Map ? entries : new Map(entries);\n }\n\n static of<K, V>(...entries: [K, V][]): HoloMap<K, V> {\n return new HoloMap(entries);\n }\n\n static from<K, V>(entries: Iterable<[K, V]>): HoloMap<K, V> {\n return new HoloMap(entries);\n }\n\n static fromObject<V>(obj: Record<string, V>): HoloMap<string, V> {\n return new HoloMap(Object.entries(obj));\n }\n\n get size(): number {\n return this._map.size;\n }\n\n get isEmpty(): boolean {\n return this._map.size === 0;\n }\n\n get(key: K): V | undefined {\n return this._map.get(key);\n }\n\n getOrDefault(key: K, defaultValue: V): V {\n return this._map.has(key) ? this._map.get(key)! : defaultValue;\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): HoloMap<K, V> {\n const newMap = new Map(this._map);\n newMap.set(key, value);\n return new HoloMap(newMap);\n }\n\n delete(key: K): HoloMap<K, V> {\n const newMap = new Map(this._map);\n newMap.delete(key);\n return new HoloMap(newMap);\n }\n\n update(key: K, fn: (value: V | undefined) => V): HoloMap<K, V> {\n return this.set(key, fn(this.get(key)));\n }\n\n merge(other: HoloMap<K, V>): HoloMap<K, V> {\n const newMap = new Map(this._map);\n for (const [key, value] of other) {\n newMap.set(key, value);\n }\n return new HoloMap(newMap);\n }\n\n keys(): List<K> {\n return new List(this._map.keys());\n }\n\n values(): List<V> {\n return new List(this._map.values());\n }\n\n entries(): List<[K, V]> {\n return new List(this._map.entries());\n }\n\n map<U>(fn: (value: V, key: K) => U): HoloMap<K, U> {\n const entries: [K, U][] = [];\n for (const [key, value] of this._map) {\n entries.push([key, fn(value, key)]);\n }\n return new HoloMap(entries);\n }\n\n mapKeys<K2>(fn: (key: K, value: V) => K2): HoloMap<K2, V> {\n const entries: [K2, V][] = [];\n for (const [key, value] of this._map) {\n entries.push([fn(key, value), value]);\n }\n return new HoloMap(entries);\n }\n\n filter(predicate: (value: V, key: K) => boolean): HoloMap<K, V> {\n const entries: [K, V][] = [];\n for (const [key, value] of this._map) {\n if (predicate(value, key)) {\n entries.push([key, value]);\n }\n }\n return new HoloMap(entries);\n }\n\n reduce<U>(fn: (acc: U, value: V, key: K) => U, initial: U): U {\n let acc = initial;\n for (const [key, value] of this._map) {\n acc = fn(acc, value, key);\n }\n return acc;\n }\n\n forEach(fn: (value: V, key: K) => void): void {\n this._map.forEach(fn);\n }\n\n find(predicate: (value: V, key: K) => boolean): [K, V] | undefined {\n for (const [key, value] of this._map) {\n if (predicate(value, key)) {\n return [key, value];\n }\n }\n return undefined;\n }\n\n some(predicate: (value: V, key: K) => boolean): boolean {\n for (const [key, value] of this._map) {\n if (predicate(value, key)) return true;\n }\n return false;\n }\n\n every(predicate: (value: V, key: K) => boolean): boolean {\n for (const [key, value] of this._map) {\n if (!predicate(value, key)) return false;\n }\n return true;\n }\n\n toObject(this: HoloMap<string, V>): Record<string, V> {\n const obj: Record<string, V> = {};\n for (const [key, value] of this._map) {\n obj[key] = value;\n }\n return obj;\n }\n\n toNativeMap(): Map<K, V> {\n return new Map(this._map);\n }\n\n [Symbol.iterator](): Iterator<[K, V]> {\n return this._map[Symbol.iterator]();\n }\n\n toString(): string {\n const entries = [...this._map].map(([k, v]) => `${k}: ${v}`).join(', ');\n return `HoloMap { ${entries} }`;\n }\n}\n\n/**\n * Immutable Set with functional operations\n */\nexport class HoloSet<T> {\n private readonly set: ReadonlySet<T>;\n\n constructor(items?: Iterable<T>) {\n this.set = new Set(items);\n }\n\n static of<T>(...items: T[]): HoloSet<T> {\n return new HoloSet(items);\n }\n\n static from<T>(iterable: Iterable<T>): HoloSet<T> {\n return new HoloSet(iterable);\n }\n\n get size(): number {\n return this.set.size;\n }\n\n get isEmpty(): boolean {\n return this.set.size === 0;\n }\n\n has(item: T): boolean {\n return this.set.has(item);\n }\n\n add(item: T): HoloSet<T> {\n const newSet = new Set(this.set);\n newSet.add(item);\n return new HoloSet(newSet);\n }\n\n delete(item: T): HoloSet<T> {\n const newSet = new Set(this.set);\n newSet.delete(item);\n return new HoloSet(newSet);\n }\n\n addAll(items: Iterable<T>): HoloSet<T> {\n const newSet = new Set(this.set);\n for (const item of items) {\n newSet.add(item);\n }\n return new HoloSet(newSet);\n }\n\n union(other: HoloSet<T>): HoloSet<T> {\n return this.addAll(other);\n }\n\n intersection(other: HoloSet<T>): HoloSet<T> {\n const result = new Set<T>();\n for (const item of this.set) {\n if (other.has(item)) {\n result.add(item);\n }\n }\n return new HoloSet(result);\n }\n\n difference(other: HoloSet<T>): HoloSet<T> {\n const result = new Set<T>();\n for (const item of this.set) {\n if (!other.has(item)) {\n result.add(item);\n }\n }\n return new HoloSet(result);\n }\n\n symmetricDifference(other: HoloSet<T>): HoloSet<T> {\n return this.difference(other).union(other.difference(this));\n }\n\n isSubsetOf(other: HoloSet<T>): boolean {\n for (const item of this.set) {\n if (!other.has(item)) return false;\n }\n return true;\n }\n\n isSupersetOf(other: HoloSet<T>): boolean {\n return other.isSubsetOf(this);\n }\n\n isDisjointFrom(other: HoloSet<T>): boolean {\n return this.intersection(other).isEmpty;\n }\n\n map<U>(fn: (item: T) => U): HoloSet<U> {\n const result = new Set<U>();\n for (const item of this.set) {\n result.add(fn(item));\n }\n return new HoloSet(result);\n }\n\n filter(predicate: (item: T) => boolean): HoloSet<T> {\n const result = new Set<T>();\n for (const item of this.set) {\n if (predicate(item)) {\n result.add(item);\n }\n }\n return new HoloSet(result);\n }\n\n reduce<U>(fn: (acc: U, item: T) => U, initial: U): U {\n let acc = initial;\n for (const item of this.set) {\n acc = fn(acc, item);\n }\n return acc;\n }\n\n forEach(fn: (item: T) => void): void {\n this.set.forEach(fn);\n }\n\n find(predicate: (item: T) => boolean): T | undefined {\n for (const item of this.set) {\n if (predicate(item)) return item;\n }\n return undefined;\n }\n\n some(predicate: (item: T) => boolean): boolean {\n for (const item of this.set) {\n if (predicate(item)) return true;\n }\n return false;\n }\n\n every(predicate: (item: T) => boolean): boolean {\n for (const item of this.set) {\n if (!predicate(item)) return false;\n }\n return true;\n }\n\n toArray(): T[] {\n return [...this.set];\n }\n\n toList(): List<T> {\n return new List(this.set);\n }\n\n toNativeSet(): Set<T> {\n return new Set(this.set);\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.set[Symbol.iterator]();\n }\n\n toString(): string {\n return `HoloSet { ${[...this.set].join(', ')} }`;\n }\n}\n\n/**\n * Spatial grid for efficient spatial queries (useful for game worlds)\n */\nexport class SpatialGrid<T> {\n private readonly cellSize: number;\n private readonly cells: Map<string, T[]> = new Map();\n\n constructor(cellSize: number) {\n this.cellSize = cellSize;\n }\n\n private getCellKey(x: number, y: number, z: number): string {\n const cx = Math.floor(x / this.cellSize);\n const cy = Math.floor(y / this.cellSize);\n const cz = Math.floor(z / this.cellSize);\n return `${cx},${cy},${cz}`;\n }\n\n insert(position: Vec3, item: T): void {\n const key = this.getCellKey(position.x, position.y, position.z);\n if (!this.cells.has(key)) {\n this.cells.set(key, []);\n }\n this.cells.get(key)!.push(item);\n }\n\n remove(position: Vec3, item: T): boolean {\n const key = this.getCellKey(position.x, position.y, position.z);\n const cell = this.cells.get(key);\n if (!cell) return false;\n const index = cell.indexOf(item);\n if (index === -1) return false;\n cell.splice(index, 1);\n if (cell.length === 0) {\n this.cells.delete(key);\n }\n return true;\n }\n\n query(center: Vec3, radius: number): T[] {\n const results: T[] = [];\n const cellRadius = Math.ceil(radius / this.cellSize);\n const cx = Math.floor(center.x / this.cellSize);\n const cy = Math.floor(center.y / this.cellSize);\n const cz = Math.floor(center.z / this.cellSize);\n\n for (let x = cx - cellRadius; x <= cx + cellRadius; x++) {\n for (let y = cy - cellRadius; y <= cy + cellRadius; y++) {\n for (let z = cz - cellRadius; z <= cz + cellRadius; z++) {\n const cell = this.cells.get(`${x},${y},${z}`);\n if (cell) {\n results.push(...cell);\n }\n }\n }\n }\n\n return results;\n }\n\n queryBox(min: Vec3, max: Vec3): T[] {\n const results: T[] = [];\n const minCx = Math.floor(min.x / this.cellSize);\n const minCy = Math.floor(min.y / this.cellSize);\n const minCz = Math.floor(min.z / this.cellSize);\n const maxCx = Math.floor(max.x / this.cellSize);\n const maxCy = Math.floor(max.y / this.cellSize);\n const maxCz = Math.floor(max.z / this.cellSize);\n\n for (let x = minCx; x <= maxCx; x++) {\n for (let y = minCy; y <= maxCy; y++) {\n for (let z = minCz; z <= maxCz; z++) {\n const cell = this.cells.get(`${x},${y},${z}`);\n if (cell) {\n results.push(...cell);\n }\n }\n }\n }\n\n return results;\n }\n\n clear(): void {\n this.cells.clear();\n }\n\n get cellCount(): number {\n return this.cells.size;\n }\n\n get itemCount(): number {\n let count = 0;\n for (const cell of this.cells.values()) {\n count += cell.length;\n }\n return count;\n }\n}\n\n/**\n * Priority queue (min-heap by default)\n */\nexport class PriorityQueue<T> {\n private heap: { item: T; priority: number }[] = [];\n\n constructor(private compareFn: (a: number, b: number) => number = (a, b) => a - b) {}\n\n static minHeap<T>(): PriorityQueue<T> {\n return new PriorityQueue((a, b) => a - b);\n }\n\n static maxHeap<T>(): PriorityQueue<T> {\n return new PriorityQueue((a, b) => b - a);\n }\n\n get size(): number {\n return this.heap.length;\n }\n\n get isEmpty(): boolean {\n return this.heap.length === 0;\n }\n\n enqueue(item: T, priority: number): void {\n this.heap.push({ item, priority });\n this.bubbleUp(this.heap.length - 1);\n }\n\n dequeue(): T | undefined {\n if (this.isEmpty) return undefined;\n const result = this.heap[0].item;\n const last = this.heap.pop()!;\n if (this.heap.length > 0) {\n this.heap[0] = last;\n this.bubbleDown(0);\n }\n return result;\n }\n\n peek(): T | undefined {\n return this.heap[0]?.item;\n }\n\n peekPriority(): number | undefined {\n return this.heap[0]?.priority;\n }\n\n clear(): void {\n this.heap = [];\n }\n\n private bubbleUp(index: number): void {\n while (index > 0) {\n const parentIndex = Math.floor((index - 1) / 2);\n if (this.compareFn(this.heap[index].priority, this.heap[parentIndex].priority) >= 0) break;\n [this.heap[index], this.heap[parentIndex]] = [this.heap[parentIndex], this.heap[index]];\n index = parentIndex;\n }\n }\n\n private bubbleDown(index: number): void {\n while (true) {\n const leftChild = 2 * index + 1;\n const rightChild = 2 * index + 2;\n let smallest = index;\n\n if (\n leftChild < this.heap.length &&\n this.compareFn(this.heap[leftChild].priority, this.heap[smallest].priority) < 0\n ) {\n smallest = leftChild;\n }\n if (\n rightChild < this.heap.length &&\n this.compareFn(this.heap[rightChild].priority, this.heap[smallest].priority) < 0\n ) {\n smallest = rightChild;\n }\n\n if (smallest === index) break;\n [this.heap[index], this.heap[smallest]] = [this.heap[smallest], this.heap[index]];\n index = smallest;\n }\n }\n}\n\n// Convenience aliases\nexport { HoloMap as Map };\nexport { HoloSet as Set };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYO,IAAM,OAAN,MAAM,MAAQ;AAAA,EACF;AAAA,EAEjB,YAAY,QAAqB,CAAC,GAAG;AACnC,SAAK,QAAQ,MAAM,KAAK,KAAK;AAAA,EAC/B;AAAA,EAEA,OAAO,MAAS,OAAqB;AACnC,WAAO,IAAI,MAAK,KAAK;AAAA,EACvB;AAAA,EAEA,OAAO,KAAQ,UAAgC;AAC7C,WAAO,IAAI,MAAK,QAAQ;AAAA,EAC1B;AAAA,EAEA,OAAO,MAAM,OAAe,KAAa,OAAO,GAAiB;AAC/D,UAAM,QAAkB,CAAC;AACzB,aAAS,IAAI,OAAO,OAAO,IAAI,IAAI,MAAM,IAAI,KAAK,KAAK,MAAM;AAC3D,YAAM,KAAK,CAAC;AAAA,IACd;AACA,WAAO,IAAI,MAAK,KAAK;AAAA,EACvB;AAAA,EAEA,OAAO,OAAU,OAAU,OAAwB;AACjD,WAAO,IAAI,MAAK,MAAM,KAAK,EAAE,KAAK,KAAK,CAAC;AAAA,EAC1C;AAAA,EAEA,IAAI,SAAiB;AACnB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,MAAM,WAAW;AAAA,EAC/B;AAAA,EAEA,IAAI,OAA8B;AAChC,WAAO,QAAQ,IAAI,KAAK,MAAM,KAAK,MAAM,SAAS,KAAK,IAAI,KAAK,MAAM,KAAK;AAAA,EAC7E;AAAA,EAEA,QAAuB;AACrB,WAAO,KAAK,MAAM,CAAC;AAAA,EACrB;AAAA,EAEA,OAAsB;AACpB,WAAO,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AAAA,EACzC;AAAA,EAEA,IAAO,IAA4C;AACjD,WAAO,IAAI,MAAK,KAAK,MAAM,IAAI,EAAE,CAAC;AAAA,EACpC;AAAA,EAEA,QAAW,IAAwD;AACjE,UAAM,SAAc,CAAC;AACrB,SAAK,MAAM,QAAQ,CAAC,MAAM,UAAU;AAClC,YAAM,SAAS,GAAG,MAAM,KAAK;AAC7B,UAAI,kBAAkB,OAAM;AAC1B,eAAO,KAAK,GAAG,OAAO,QAAQ,CAAC;AAAA,MACjC,OAAO;AACL,eAAO,KAAK,GAAG,MAAM;AAAA,MACvB;AAAA,IACF,CAAC;AACD,WAAO,IAAI,MAAK,MAAM;AAAA,EACxB;AAAA,EAEA,OAAO,WAAyD;AAC9D,WAAO,IAAI,MAAK,KAAK,MAAM,OAAO,SAAS,CAAC;AAAA,EAC9C;AAAA,EAEA,OAAO,WAAyD;AAC9D,WAAO,KAAK,OAAO,CAAC,MAAM,UAAU,CAAC,UAAU,MAAM,KAAK,CAAC;AAAA,EAC7D;AAAA,EAEA,OAAU,IAA2C,SAAe;AAClE,WAAO,KAAK,MAAM,OAAO,IAAI,OAAO;AAAA,EACtC;AAAA,EAEA,KAAQ,SAAY,IAA+B;AACjD,WAAO,KAAK,MAAM,OAAO,IAAI,OAAO;AAAA,EACtC;AAAA,EAEA,KAAK,WAA+D;AAClE,WAAO,KAAK,MAAM,KAAK,SAAS;AAAA,EAClC;AAAA,EAEA,UAAU,WAAwD;AAChE,WAAO,KAAK,MAAM,UAAU,SAAS;AAAA,EACvC;AAAA,EAEA,QAAQ,MAAiB;AACvB,WAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,EAChC;AAAA,EAEA,SAAS,MAAkB;AACzB,WAAO,KAAK,MAAM,SAAS,IAAI;AAAA,EACjC;AAAA,EAEA,KAAK,WAAyD;AAC5D,WAAO,KAAK,MAAM,KAAK,SAAS;AAAA,EAClC;AAAA,EAEA,MAAM,WAAyD;AAC7D,WAAO,KAAK,MAAM,MAAM,SAAS;AAAA,EACnC;AAAA,EAEA,KAAK,WAAyD;AAC5D,WAAO,CAAC,KAAK,KAAK,SAAS;AAAA,EAC7B;AAAA,EAEA,MAAM,WAAwD;AAC5D,WAAO,KAAK,OAAO,SAAS,EAAE;AAAA,EAChC;AAAA,EAEA,QAAQ,IAA4C;AAClD,SAAK,MAAM,QAAQ,EAAE;AAAA,EACvB;AAAA,EAEA,UAAU,OAAmC;AAC3C,UAAM,SAAS,MAAM,IAAI,CAAC,MAAO,aAAa,QAAO,EAAE,QAAQ,IAAI,CAAE;AACrE,WAAO,IAAI,MAAK,CAAC,GAAG,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,MAAkB;AACvB,WAAO,IAAI,MAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC;AAAA,EACvC;AAAA,EAEA,QAAQ,MAAkB;AACxB,WAAO,IAAI,MAAK,CAAC,MAAM,GAAG,KAAK,KAAK,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,OAAe,MAAkB;AACtC,UAAM,MAAM,CAAC,GAAG,KAAK,KAAK;AAC1B,QAAI,OAAO,OAAO,GAAG,IAAI;AACzB,WAAO,IAAI,MAAK,GAAG;AAAA,EACrB;AAAA,EAEA,OAAO,OAAwB;AAC7B,UAAM,MAAM,CAAC,GAAG,KAAK,KAAK;AAC1B,QAAI,OAAO,OAAO,CAAC;AACnB,WAAO,IAAI,MAAK,GAAG;AAAA,EACrB;AAAA,EAEA,OAAO,OAAe,MAAkB;AACtC,UAAM,MAAM,CAAC,GAAG,KAAK,KAAK;AAC1B,QAAI,KAAK,IAAI;AACb,WAAO,IAAI,MAAK,GAAG;AAAA,EACrB;AAAA,EAEA,MAAM,OAAgB,KAAuB;AAC3C,WAAO,IAAI,MAAK,KAAK,MAAM,MAAM,OAAO,GAAG,CAAC;AAAA,EAC9C;AAAA,EAEA,KAAK,GAAoB;AACvB,WAAO,KAAK,MAAM,GAAG,CAAC;AAAA,EACxB;AAAA,EAEA,SAAS,GAAoB;AAC3B,WAAO,KAAK,MAAM,CAAC,CAAC;AAAA,EACtB;AAAA,EAEA,UAAU,WAAyD;AACjE,UAAM,SAAc,CAAC;AACrB,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,UAAI,CAAC,UAAU,KAAK,MAAM,CAAC,GAAG,CAAC,EAAG;AAClC,aAAO,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,IAC3B;AACA,WAAO,IAAI,MAAK,MAAM;AAAA,EACxB;AAAA,EAEA,KAAK,GAAoB;AACvB,WAAO,KAAK,MAAM,CAAC;AAAA,EACrB;AAAA,EAEA,SAAS,GAAoB;AAC3B,WAAO,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,EACzB;AAAA,EAEA,UAAU,WAAyD;AACjE,QAAI,aAAa;AACjB,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,UAAI,CAAC,UAAU,KAAK,MAAM,CAAC,GAAG,CAAC,EAAG;AAClC,mBAAa,IAAI;AAAA,IACnB;AACA,WAAO,KAAK,MAAM,UAAU;AAAA,EAC9B;AAAA,EAEA,UAAmB;AACjB,WAAO,IAAI,MAAK,CAAC,GAAG,KAAK,KAAK,EAAE,QAAQ,CAAC;AAAA,EAC3C;AAAA,EAEA,KAAK,WAA6C;AAChD,WAAO,IAAI,MAAK,CAAC,GAAG,KAAK,KAAK,EAAE,KAAK,SAAS,CAAC;AAAA,EACjD;AAAA,EAEA,OAAU,IAA6B;AACrC,WAAO,KAAK,KAAK,CAAC,GAAG,MAAM;AACzB,YAAM,KAAK,GAAG,CAAC;AACf,YAAM,KAAK,GAAG,CAAC;AACf,UAAI,KAAK,GAAI,QAAO;AACpB,UAAI,KAAK,GAAI,QAAO;AACpB,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEA,UAAmB;AACjB,UAAM,MAAM,CAAC,GAAG,KAAK,KAAK;AAC1B,aAAS,IAAI,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK;AACvC,YAAM,IAAI,KAAK,MAAM,KAAK,OAAO,KAAK,IAAI,EAAE;AAC5C,OAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,IACpC;AACA,WAAO,IAAI,MAAK,GAAG;AAAA,EACrB;AAAA,EAEA,SAAkB;AAChB,WAAO,IAAI,MAAK,CAAC,GAAG,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;AAAA,EAC1C;AAAA,EAEA,SAAY,IAA6B;AACvC,UAAM,OAAO,oBAAI,IAAO;AACxB,UAAM,SAAc,CAAC;AACrB,eAAW,QAAQ,KAAK,OAAO;AAC7B,YAAM,MAAM,GAAG,IAAI;AACnB,UAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,aAAK,IAAI,GAAG;AACZ,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AACA,WAAO,IAAI,MAAK,MAAM;AAAA,EACxB;AAAA,EAEA,QAAW,IAAyC;AAClD,UAAM,SAAS,oBAAI,IAAY;AAC/B,eAAW,QAAQ,KAAK,OAAO;AAC7B,YAAM,MAAM,GAAG,IAAI;AACnB,YAAM,QAAQ,OAAO,IAAI,GAAG,KAAK,CAAC;AAClC,YAAM,KAAK,IAAI;AACf,aAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AACA,UAAM,SAAS,oBAAI,IAAgB;AACnC,eAAW,CAAC,KAAK,KAAK,KAAK,QAAQ;AACjC,aAAO,IAAI,KAAK,IAAI,MAAK,KAAK,CAAC;AAAA,IACjC;AACA,WAAO,IAAI,QAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,UAAU,WAAoE;AAC5E,UAAM,OAAY,CAAC;AACnB,UAAM,OAAY,CAAC;AACnB,SAAK,MAAM,QAAQ,CAAC,MAAM,UAAU;AAClC,UAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,aAAK,KAAK,IAAI;AAAA,MAChB,OAAO;AACL,aAAK,KAAK,IAAI;AAAA,MAChB;AAAA,IACF,CAAC;AACD,WAAO,CAAC,IAAI,MAAK,IAAI,GAAG,IAAI,MAAK,IAAI,CAAC;AAAA,EACxC;AAAA,EAEA,IAAO,OAA8B;AACnC,UAAM,SAAS,KAAK,IAAI,KAAK,QAAQ,MAAM,MAAM;AACjD,UAAM,SAAmB,CAAC;AAC1B,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,aAAO,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,CAAE,CAAC;AAAA,IAC5C;AACA,WAAO,IAAI,MAAK,MAAM;AAAA,EACxB;AAAA,EAEA,QAAc,OAAgB,IAAgC;AAC5D,WAAO,KAAK,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AAAA,EACjD;AAAA,EAEA,UAA+C;AAC7C,UAAM,SAAc,CAAC;AACrB,eAAW,QAAQ,KAAK,OAAO;AAC7B,UAAI,gBAAgB,OAAM;AACxB,eAAO,KAAK,GAAG,KAAK,QAAQ,CAAC;AAAA,MAC/B,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,eAAO,KAAK,GAAG,IAAI;AAAA,MACrB;AAAA,IACF;AACA,WAAO,IAAI,MAAK,MAAM;AAAA,EACxB;AAAA,EAEA,MAAgC;AAC9B,WAAO,KAAK,OAAO,CAAC,KAAK,MAAM,MAAM,GAAG,CAAC;AAAA,EAC3C;AAAA,EAEA,MAA4C;AAC1C,QAAI,KAAK,QAAS,QAAO;AACzB,WAAO,KAAK,IAAI,GAAG,KAAK,KAAK;AAAA,EAC/B;AAAA,EAEA,MAA4C;AAC1C,QAAI,KAAK,QAAS,QAAO;AACzB,WAAO,KAAK,IAAI,GAAG,KAAK,KAAK;AAAA,EAC/B;AAAA,EAEA,UAAgD;AAC9C,QAAI,KAAK,QAAS,QAAO;AACzB,WAAO,KAAK,IAAI,IAAI,KAAK;AAAA,EAC3B;AAAA,EAEA,KAAK,YAAY,KAAa;AAC5B,WAAO,KAAK,MAAM,KAAK,SAAS;AAAA,EAClC;AAAA,EAEA,UAAe;AACb,WAAO,CAAC,GAAG,KAAK,KAAK;AAAA,EACvB;AAAA,EAEA,QAAoB;AAClB,WAAO,IAAI,QAAQ,KAAK,KAAK;AAAA,EAC/B;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAiB;AAC/B,WAAO,KAAK,MAAM,OAAO,QAAQ,EAAE;AAAA,EACrC;AAAA,EAEA,WAAmB;AACjB,WAAO,QAAQ,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,EACtC;AACF;AAKO,IAAM,UAAN,MAAM,SAAc;AAAA,EACR;AAAA,EAEjB,YAAY,SAAwC;AAClD,SAAK,OAAO,mBAAmB,MAAM,UAAU,IAAI,IAAI,OAAO;AAAA,EAChE;AAAA,EAEA,OAAO,MAAY,SAAkC;AACnD,WAAO,IAAI,SAAQ,OAAO;AAAA,EAC5B;AAAA,EAEA,OAAO,KAAW,SAA0C;AAC1D,WAAO,IAAI,SAAQ,OAAO;AAAA,EAC5B;AAAA,EAEA,OAAO,WAAc,KAA4C;AAC/D,WAAO,IAAI,SAAQ,OAAO,QAAQ,GAAG,CAAC;AAAA,EACxC;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,KAAK,SAAS;AAAA,EAC5B;AAAA,EAEA,IAAI,KAAuB;AACzB,WAAO,KAAK,KAAK,IAAI,GAAG;AAAA,EAC1B;AAAA,EAEA,aAAa,KAAQ,cAAoB;AACvC,WAAO,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAK;AAAA,EACpD;AAAA,EAEA,IAAI,KAAiB;AACnB,WAAO,KAAK,KAAK,IAAI,GAAG;AAAA,EAC1B;AAAA,EAEA,IAAI,KAAQ,OAAyB;AACnC,UAAM,SAAS,IAAI,IAAI,KAAK,IAAI;AAChC,WAAO,IAAI,KAAK,KAAK;AACrB,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAO,KAAuB;AAC5B,UAAM,SAAS,IAAI,IAAI,KAAK,IAAI;AAChC,WAAO,OAAO,GAAG;AACjB,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAO,KAAQ,IAAgD;AAC7D,WAAO,KAAK,IAAI,KAAK,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,EACxC;AAAA,EAEA,MAAM,OAAqC;AACzC,UAAM,SAAS,IAAI,IAAI,KAAK,IAAI;AAChC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO;AAChC,aAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AACA,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAgB;AACd,WAAO,IAAI,KAAK,KAAK,KAAK,KAAK,CAAC;AAAA,EAClC;AAAA,EAEA,SAAkB;AAChB,WAAO,IAAI,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,EACpC;AAAA,EAEA,UAAwB;AACtB,WAAO,IAAI,KAAK,KAAK,KAAK,QAAQ,CAAC;AAAA,EACrC;AAAA,EAEA,IAAO,IAA4C;AACjD,UAAM,UAAoB,CAAC;AAC3B,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,cAAQ,KAAK,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;AAAA,IACpC;AACA,WAAO,IAAI,SAAQ,OAAO;AAAA,EAC5B;AAAA,EAEA,QAAY,IAA8C;AACxD,UAAM,UAAqB,CAAC;AAC5B,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,cAAQ,KAAK,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,CAAC;AAAA,IACtC;AACA,WAAO,IAAI,SAAQ,OAAO;AAAA,EAC5B;AAAA,EAEA,OAAO,WAAyD;AAC9D,UAAM,UAAoB,CAAC;AAC3B,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,UAAI,UAAU,OAAO,GAAG,GAAG;AACzB,gBAAQ,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA,MAC3B;AAAA,IACF;AACA,WAAO,IAAI,SAAQ,OAAO;AAAA,EAC5B;AAAA,EAEA,OAAU,IAAqC,SAAe;AAC5D,QAAI,MAAM;AACV,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,YAAM,GAAG,KAAK,OAAO,GAAG;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,IAAsC;AAC5C,SAAK,KAAK,QAAQ,EAAE;AAAA,EACtB;AAAA,EAEA,KAAK,WAA8D;AACjE,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,UAAI,UAAU,OAAO,GAAG,GAAG;AACzB,eAAO,CAAC,KAAK,KAAK;AAAA,MACpB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,WAAmD;AACtD,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,UAAI,UAAU,OAAO,GAAG,EAAG,QAAO;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,WAAmD;AACvD,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,UAAI,CAAC,UAAU,OAAO,GAAG,EAAG,QAAO;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,WAAsD;AACpD,UAAM,MAAyB,CAAC;AAChC,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM;AACpC,UAAI,GAAG,IAAI;AAAA,IACb;AACA,WAAO;AAAA,EACT;AAAA,EAEA,cAAyB;AACvB,WAAO,IAAI,IAAI,KAAK,IAAI;AAAA,EAC1B;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAsB;AACpC,WAAO,KAAK,KAAK,OAAO,QAAQ,EAAE;AAAA,EACpC;AAAA,EAEA,WAAmB;AACjB,UAAM,UAAU,CAAC,GAAG,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI;AACtE,WAAO,aAAa,OAAO;AAAA,EAC7B;AACF;AAKO,IAAM,UAAN,MAAM,SAAW;AAAA,EACL;AAAA,EAEjB,YAAY,OAAqB;AAC/B,SAAK,MAAM,IAAI,IAAI,KAAK;AAAA,EAC1B;AAAA,EAEA,OAAO,MAAS,OAAwB;AACtC,WAAO,IAAI,SAAQ,KAAK;AAAA,EAC1B;AAAA,EAEA,OAAO,KAAQ,UAAmC;AAChD,WAAO,IAAI,SAAQ,QAAQ;AAAA,EAC7B;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,IAAI,SAAS;AAAA,EAC3B;AAAA,EAEA,IAAI,MAAkB;AACpB,WAAO,KAAK,IAAI,IAAI,IAAI;AAAA,EAC1B;AAAA,EAEA,IAAI,MAAqB;AACvB,UAAM,SAAS,IAAI,IAAI,KAAK,GAAG;AAC/B,WAAO,IAAI,IAAI;AACf,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAO,MAAqB;AAC1B,UAAM,SAAS,IAAI,IAAI,KAAK,GAAG;AAC/B,WAAO,OAAO,IAAI;AAClB,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAO,OAAgC;AACrC,UAAM,SAAS,IAAI,IAAI,KAAK,GAAG;AAC/B,eAAW,QAAQ,OAAO;AACxB,aAAO,IAAI,IAAI;AAAA,IACjB;AACA,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,MAAM,OAA+B;AACnC,WAAO,KAAK,OAAO,KAAK;AAAA,EAC1B;AAAA,EAEA,aAAa,OAA+B;AAC1C,UAAM,SAAS,oBAAI,IAAO;AAC1B,eAAW,QAAQ,KAAK,KAAK;AAC3B,UAAI,MAAM,IAAI,IAAI,GAAG;AACnB,eAAO,IAAI,IAAI;AAAA,MACjB;AAAA,IACF;AACA,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,SAAS,oBAAI,IAAO;AAC1B,eAAW,QAAQ,KAAK,KAAK;AAC3B,UAAI,CAAC,MAAM,IAAI,IAAI,GAAG;AACpB,eAAO,IAAI,IAAI;AAAA,MACjB;AAAA,IACF;AACA,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,oBAAoB,OAA+B;AACjD,WAAO,KAAK,WAAW,KAAK,EAAE,MAAM,MAAM,WAAW,IAAI,CAAC;AAAA,EAC5D;AAAA,EAEA,WAAW,OAA4B;AACrC,eAAW,QAAQ,KAAK,KAAK;AAC3B,UAAI,CAAC,MAAM,IAAI,IAAI,EAAG,QAAO;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,OAA4B;AACvC,WAAO,MAAM,WAAW,IAAI;AAAA,EAC9B;AAAA,EAEA,eAAe,OAA4B;AACzC,WAAO,KAAK,aAAa,KAAK,EAAE;AAAA,EAClC;AAAA,EAEA,IAAO,IAAgC;AACrC,UAAM,SAAS,oBAAI,IAAO;AAC1B,eAAW,QAAQ,KAAK,KAAK;AAC3B,aAAO,IAAI,GAAG,IAAI,CAAC;AAAA,IACrB;AACA,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAO,WAA6C;AAClD,UAAM,SAAS,oBAAI,IAAO;AAC1B,eAAW,QAAQ,KAAK,KAAK;AAC3B,UAAI,UAAU,IAAI,GAAG;AACnB,eAAO,IAAI,IAAI;AAAA,MACjB;AAAA,IACF;AACA,WAAO,IAAI,SAAQ,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAU,IAA4B,SAAe;AACnD,QAAI,MAAM;AACV,eAAW,QAAQ,KAAK,KAAK;AAC3B,YAAM,GAAG,KAAK,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,IAA6B;AACnC,SAAK,IAAI,QAAQ,EAAE;AAAA,EACrB;AAAA,EAEA,KAAK,WAAgD;AACnD,eAAW,QAAQ,KAAK,KAAK;AAC3B,UAAI,UAAU,IAAI,EAAG,QAAO;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,WAA0C;AAC7C,eAAW,QAAQ,KAAK,KAAK;AAC3B,UAAI,UAAU,IAAI,EAAG,QAAO;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,WAA0C;AAC9C,eAAW,QAAQ,KAAK,KAAK;AAC3B,UAAI,CAAC,UAAU,IAAI,EAAG,QAAO;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,UAAe;AACb,WAAO,CAAC,GAAG,KAAK,GAAG;AAAA,EACrB;AAAA,EAEA,SAAkB;AAChB,WAAO,IAAI,KAAK,KAAK,GAAG;AAAA,EAC1B;AAAA,EAEA,cAAsB;AACpB,WAAO,IAAI,IAAI,KAAK,GAAG;AAAA,EACzB;AAAA,EAEA,CAAC,OAAO,QAAQ,IAAiB;AAC/B,WAAO,KAAK,IAAI,OAAO,QAAQ,EAAE;AAAA,EACnC;AAAA,EAEA,WAAmB;AACjB,WAAO,aAAa,CAAC,GAAG,KAAK,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,EAC9C;AACF;AAKO,IAAM,cAAN,MAAqB;AAAA,EACT;AAAA,EACA,QAA0B,oBAAI,IAAI;AAAA,EAEnD,YAAY,UAAkB;AAC5B,SAAK,WAAW;AAAA,EAClB;AAAA,EAEQ,WAAW,GAAW,GAAW,GAAmB;AAC1D,UAAM,KAAK,KAAK,MAAM,IAAI,KAAK,QAAQ;AACvC,UAAM,KAAK,KAAK,MAAM,IAAI,KAAK,QAAQ;AACvC,UAAM,KAAK,KAAK,MAAM,IAAI,KAAK,QAAQ;AACvC,WAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,EAC1B;AAAA,EAEA,OAAO,UAAgB,MAAe;AACpC,UAAM,MAAM,KAAK,WAAW,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAC9D,QAAI,CAAC,KAAK,MAAM,IAAI,GAAG,GAAG;AACxB,WAAK,MAAM,IAAI,KAAK,CAAC,CAAC;AAAA,IACxB;AACA,SAAK,MAAM,IAAI,GAAG,EAAG,KAAK,IAAI;AAAA,EAChC;AAAA,EAEA,OAAO,UAAgB,MAAkB;AACvC,UAAM,MAAM,KAAK,WAAW,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAC9D,UAAM,OAAO,KAAK,MAAM,IAAI,GAAG;AAC/B,QAAI,CAAC,KAAM,QAAO;AAClB,UAAM,QAAQ,KAAK,QAAQ,IAAI;AAC/B,QAAI,UAAU,GAAI,QAAO;AACzB,SAAK,OAAO,OAAO,CAAC;AACpB,QAAI,KAAK,WAAW,GAAG;AACrB,WAAK,MAAM,OAAO,GAAG;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAc,QAAqB;AACvC,UAAM,UAAe,CAAC;AACtB,UAAM,aAAa,KAAK,KAAK,SAAS,KAAK,QAAQ;AACnD,UAAM,KAAK,KAAK,MAAM,OAAO,IAAI,KAAK,QAAQ;AAC9C,UAAM,KAAK,KAAK,MAAM,OAAO,IAAI,KAAK,QAAQ;AAC9C,UAAM,KAAK,KAAK,MAAM,OAAO,IAAI,KAAK,QAAQ;AAE9C,aAAS,IAAI,KAAK,YAAY,KAAK,KAAK,YAAY,KAAK;AACvD,eAAS,IAAI,KAAK,YAAY,KAAK,KAAK,YAAY,KAAK;AACvD,iBAAS,IAAI,KAAK,YAAY,KAAK,KAAK,YAAY,KAAK;AACvD,gBAAM,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5C,cAAI,MAAM;AACR,oBAAQ,KAAK,GAAG,IAAI;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,KAAW,KAAgB;AAClC,UAAM,UAAe,CAAC;AACtB,UAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;AAC9C,UAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;AAC9C,UAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;AAC9C,UAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;AAC9C,UAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;AAC9C,UAAM,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ;AAE9C,aAAS,IAAI,OAAO,KAAK,OAAO,KAAK;AACnC,eAAS,IAAI,OAAO,KAAK,OAAO,KAAK;AACnC,iBAAS,IAAI,OAAO,KAAK,OAAO,KAAK;AACnC,gBAAM,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5C,cAAI,MAAM;AACR,oBAAQ,KAAK,GAAG,IAAI;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,QAAc;AACZ,SAAK,MAAM,MAAM;AAAA,EACnB;AAAA,EAEA,IAAI,YAAoB;AACtB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,IAAI,YAAoB;AACtB,QAAI,QAAQ;AACZ,eAAW,QAAQ,KAAK,MAAM,OAAO,GAAG;AACtC,eAAS,KAAK;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AACF;AAKO,IAAM,gBAAN,MAAM,eAAiB;AAAA,EAG5B,YAAoB,YAA8C,CAAC,GAAG,MAAM,IAAI,GAAG;AAA/D;AAAA,EAAgE;AAAA,EAF5E,OAAwC,CAAC;AAAA,EAIjD,OAAO,UAA+B;AACpC,WAAO,IAAI,eAAc,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,UAA+B;AACpC,WAAO,IAAI,eAAc,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,EAC1C;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,KAAK,KAAK,WAAW;AAAA,EAC9B;AAAA,EAEA,QAAQ,MAAS,UAAwB;AACvC,SAAK,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AACjC,SAAK,SAAS,KAAK,KAAK,SAAS,CAAC;AAAA,EACpC;AAAA,EAEA,UAAyB;AACvB,QAAI,KAAK,QAAS,QAAO;AACzB,UAAM,SAAS,KAAK,KAAK,CAAC,EAAE;AAC5B,UAAM,OAAO,KAAK,KAAK,IAAI;AAC3B,QAAI,KAAK,KAAK,SAAS,GAAG;AACxB,WAAK,KAAK,CAAC,IAAI;AACf,WAAK,WAAW,CAAC;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAsB;AACpB,WAAO,KAAK,KAAK,CAAC,GAAG;AAAA,EACvB;AAAA,EAEA,eAAmC;AACjC,WAAO,KAAK,KAAK,CAAC,GAAG;AAAA,EACvB;AAAA,EAEA,QAAc;AACZ,SAAK,OAAO,CAAC;AAAA,EACf;AAAA,EAEQ,SAAS,OAAqB;AACpC,WAAO,QAAQ,GAAG;AAChB,YAAM,cAAc,KAAK,OAAO,QAAQ,KAAK,CAAC;AAC9C,UAAI,KAAK,UAAU,KAAK,KAAK,KAAK,EAAE,UAAU,KAAK,KAAK,WAAW,EAAE,QAAQ,KAAK,EAAG;AACrF,OAAC,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,GAAG,KAAK,KAAK,KAAK,CAAC;AACtF,cAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEQ,WAAW,OAAqB;AACtC,WAAO,MAAM;AACX,YAAM,YAAY,IAAI,QAAQ;AAC9B,YAAM,aAAa,IAAI,QAAQ;AAC/B,UAAI,WAAW;AAEf,UACE,YAAY,KAAK,KAAK,UACtB,KAAK,UAAU,KAAK,KAAK,SAAS,EAAE,UAAU,KAAK,KAAK,QAAQ,EAAE,QAAQ,IAAI,GAC9E;AACA,mBAAW;AAAA,MACb;AACA,UACE,aAAa,KAAK,KAAK,UACvB,KAAK,UAAU,KAAK,KAAK,UAAU,EAAE,UAAU,KAAK,KAAK,QAAQ,EAAE,QAAQ,IAAI,GAC/E;AACA,mBAAW;AAAA,MACb;AAEA,UAAI,aAAa,MAAO;AACxB,OAAC,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC;AAChF,cAAQ;AAAA,IACV;AAAA,EACF;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/collections.ts"],"sourcesContent":["/**\n * @holoscript/std - Collections Module\n *\n * Provides List, Map, and Set implementations with functional operations\n * for use in HoloScript Plus programs.\n */\n\nimport type { Vec3 } from './types.js';\n\n/**\n * Immutable List with functional operations\n */\nexport class List<T> {\n private readonly items: readonly T[];\n\n constructor(items: Iterable<T> = []) {\n this.items = Array.from(items);\n }\n\n static of<T>(...items: T[]): List<T> {\n return new List(items);\n }\n\n static from<T>(iterable: Iterable<T>): List<T> {\n return new List(iterable);\n }\n\n static range(start: number, end: number, step = 1): List<number> {\n const items: number[] = [];\n for (let i = start; step > 0 ? i < end : i > end; i += step) {\n items.push(i);\n }\n return new List(items);\n }\n\n static repeat<T>(value: T, count: number): List<T> {\n return new List(Array(count).fill(value));\n }\n\n get length(): number {\n return this.items.length;\n }\n\n get isEmpty(): boolean {\n return this.items.length === 0;\n }\n\n get(index: number): T | undefined {\n return index < 0 ? this.items[this.items.length + index] : this.items[index];\n }\n\n first(): T | undefined {\n return this.items[0];\n }\n\n last(): T | undefined {\n return this.items[this.items.length - 1];\n }\n\n map<U>(fn: (item: T, index: number) => U): List<U> {\n return new List(this.items.map(fn));\n }\n\n flatMap<U>(fn: (item: T, index: number) => List<U> | U[]): List<U> {\n const result: U[] = [];\n this.items.forEach((item, index) => {\n const mapped = fn(item, index);\n if (mapped instanceof List) {\n result.push(...mapped.toArray());\n } else {\n result.push(...mapped);\n }\n });\n return new List(result);\n }\n\n filter(predicate: (item: T, index: number) => boolean): List<T> {\n return new List(this.items.filter(predicate));\n }\n\n reject(predicate: (item: T, index: number) => boolean): List<T> {\n return this.filter((item, index) => !predicate(item, index));\n }\n\n reduce<U>(fn: (acc: U, item: T, index: number) => U, initial: U): U {\n return this.items.reduce(fn, initial);\n }\n\n fold<U>(initial: U, fn: (acc: U, item: T) => U): U {\n return this.items.reduce(fn, initial);\n }\n\n find(predicate: (item: T, index: number) => boolean): T | undefined {\n return this.items.find(predicate);\n }\n\n findIndex(predicate: (item: T, index: number) => boolean): number {\n return this.items.findIndex(predicate);\n }\n\n indexOf(item: T): number {\n return this.items.indexOf(item);\n }\n\n includes(item: T): boolean {\n return this.items.includes(item);\n }\n\n some(predicate: (item: T, index: number) => boolean): boolean {\n return this.items.some(predicate);\n }\n\n every(predicate: (item: T, index: number) => boolean): boolean {\n return this.items.every(predicate);\n }\n\n none(predicate: (item: T, index: number) => boolean): boolean {\n return !this.some(predicate);\n }\n\n count(predicate: (item: T, index: number) => boolean): number {\n return this.filter(predicate).length;\n }\n\n forEach(fn: (item: T, index: number) => void): void {\n this.items.forEach(fn);\n }\n\n concat(...lists: (List<T> | T[])[]): List<T> {\n const arrays = lists.map((l) => (l instanceof List ? l.toArray() : l));\n return new List([...this.items, ...arrays.flat()]);\n }\n\n append(item: T): List<T> {\n return new List([...this.items, item]);\n }\n\n prepend(item: T): List<T> {\n return new List([item, ...this.items]);\n }\n\n insert(index: number, item: T): List<T> {\n const arr = [...this.items];\n arr.splice(index, 0, item);\n return new List(arr);\n }\n\n remove(index: number): List<T> {\n const arr = [...this.items];\n arr.splice(index, 1);\n return new List(arr);\n }\n\n update(index: number, item: T): List<T> {\n const arr = [...this.items];\n arr[index] = item;\n return new List(arr);\n }\n\n slice(start?: number, end?: number): List<T> {\n return new List(this.items.slice(start, end));\n }\n\n take(n: number): List<T> {\n return this.slice(0, n);\n }\n\n takeLast(n: number): List<T> {\n return this.slice(-n);\n }\n\n takeWhile(predicate: (item: T, index: number) => boolean): List<T> {\n const result: T[] = [];\n for (let i = 0; i < this.items.length; i++) {\n if (!predicate(this.items[i], i)) break;\n result.push(this.items[i]);\n }\n return new List(result);\n }\n\n drop(n: number): List<T> {\n return this.slice(n);\n }\n\n dropLast(n: number): List<T> {\n return this.slice(0, -n);\n }\n\n dropWhile(predicate: (item: T, index: number) => boolean): List<T> {\n let startIndex = 0;\n for (let i = 0; i < this.items.length; i++) {\n if (!predicate(this.items[i], i)) break;\n startIndex = i + 1;\n }\n return this.slice(startIndex);\n }\n\n reverse(): List<T> {\n return new List([...this.items].reverse());\n }\n\n sort(compareFn?: (a: T, b: T) => number): List<T> {\n return new List([...this.items].sort(compareFn));\n }\n\n sortBy<U>(fn: (item: T) => U): List<T> {\n return this.sort((a, b) => {\n const va = fn(a);\n const vb = fn(b);\n if (va < vb) return -1;\n if (va > vb) return 1;\n return 0;\n });\n }\n\n shuffle(): List<T> {\n const arr = [...this.items];\n for (let i = arr.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [arr[i], arr[j]] = [arr[j], arr[i]];\n }\n return new List(arr);\n }\n\n unique(): List<T> {\n return new List([...new Set(this.items)]);\n }\n\n uniqueBy<U>(fn: (item: T) => U): List<T> {\n const seen = new Set<U>();\n const result: T[] = [];\n for (const item of this.items) {\n const key = fn(item);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(item);\n }\n }\n return new List(result);\n }\n\n groupBy<K>(fn: (item: T) => K): HoloMap<K, List<T>> {\n const groups = new Map<K, T[]>();\n for (const item of this.items) {\n const key = fn(item);\n const group = groups.get(key) || [];\n group.push(item);\n groups.set(key, group);\n }\n const result = new Map<K, List<T>>();\n for (const [key, items] of groups) {\n result.set(key, new List(items));\n }\n return new HoloMap(result);\n }\n\n partition(predicate: (item: T, index: number) => boolean): [List<T>, List<T>] {\n const pass: T[] = [];\n const fail: T[] = [];\n this.items.forEach((item, index) => {\n if (predicate(item, index)) {\n pass.push(item);\n } else {\n fail.push(item);\n }\n });\n return [new List(pass), new List(fail)];\n }\n\n zip<U>(other: List<U>): List<[T, U]> {\n const length = Math.min(this.length, other.length);\n const result: [T, U][] = [];\n for (let i = 0; i < length; i++) {\n result.push([this.items[i], other.get(i)!]);\n }\n return new List(result);\n }\n\n zipWith<U, V>(other: List<U>, fn: (a: T, b: U) => V): List<V> {\n return this.zip(other).map(([a, b]) => fn(a, b));\n }\n\n flatten<U>(this: List<List<U> | U[]>): List<U> {\n const result: U[] = [];\n for (const item of this.items) {\n if (item instanceof List) {\n result.push(...item.toArray());\n } else if (Array.isArray(item)) {\n result.push(...item);\n }\n }\n return new List(result);\n }\n\n sum(this: List<number>): number {\n return this.reduce((acc, n) => acc + n, 0);\n }\n\n min(this: List<number>): number | undefined {\n if (this.isEmpty) return undefined;\n return Math.min(...this.items);\n }\n\n max(this: List<number>): number | undefined {\n if (this.isEmpty) return undefined;\n return Math.max(...this.items);\n }\n\n average(this: List<number>): number | undefined {\n if (this.isEmpty) return undefined;\n return this.sum() / this.length;\n }\n\n join(separator = ','): string {\n return this.items.join(separator);\n }\n\n toArray(): T[] {\n return [...this.items];\n }\n\n toSet(): HoloSet<T> {\n return new HoloSet(this.items);\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.items[Symbol.iterator]();\n }\n\n toString(): string {\n return `List(${this.items.join(', ')})`;\n }\n}\n\n/**\n * Immutable Map with functional operations\n */\nexport class HoloMap<K, V> {\n private readonly _map: ReadonlyMap<K, V>;\n\n constructor(entries?: Iterable<[K, V]> | Map<K, V>) {\n this._map = entries instanceof Map ? entries : new Map(entries);\n }\n\n static of<K, V>(...entries: [K, V][]): HoloMap<K, V> {\n return new HoloMap(entries);\n }\n\n static from<K, V>(entries: Iterable<[K, V]>): HoloMap<K, V> {\n return new HoloMap(entries);\n }\n\n static fromObject<V>(obj: Record<string, V>): HoloMap<string, V> {\n return new HoloMap(Object.entries(obj));\n }\n\n get size(): number {\n return this._map.size;\n }\n\n get isEmpty(): boolean {\n return this._map.size === 0;\n }\n\n get(key: K): V | undefined {\n return this._map.get(key);\n }\n\n getOrDefault(key: K, defaultValue: V): V {\n return this._map.has(key) ? this._map.get(key)! : defaultValue;\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): HoloMap<K, V> {\n const newMap = new Map(this._map);\n newMap.set(key, value);\n return new HoloMap(newMap);\n }\n\n delete(key: K): HoloMap<K, V> {\n const newMap = new Map(this._map);\n newMap.delete(key);\n return new HoloMap(newMap);\n }\n\n update(key: K, fn: (value: V | undefined) => V): HoloMap<K, V> {\n return this.set(key, fn(this.get(key)));\n }\n\n merge(other: HoloMap<K, V>): HoloMap<K, V> {\n const newMap = new Map(this._map);\n for (const [key, value] of other) {\n newMap.set(key, value);\n }\n return new HoloMap(newMap);\n }\n\n keys(): List<K> {\n return new List(this._map.keys());\n }\n\n values(): List<V> {\n return new List(this._map.values());\n }\n\n entries(): List<[K, V]> {\n return new List(this._map.entries());\n }\n\n map<U>(fn: (value: V, key: K) => U): HoloMap<K, U> {\n const entries: [K, U][] = [];\n for (const [key, value] of this._map) {\n entries.push([key, fn(value, key)]);\n }\n return new HoloMap(entries);\n }\n\n mapKeys<K2>(fn: (key: K, value: V) => K2): HoloMap<K2, V> {\n const entries: [K2, V][] = [];\n for (const [key, value] of this._map) {\n entries.push([fn(key, value), value]);\n }\n return new HoloMap(entries);\n }\n\n filter(predicate: (value: V, key: K) => boolean): HoloMap<K, V> {\n const entries: [K, V][] = [];\n for (const [key, value] of this._map) {\n if (predicate(value, key)) {\n entries.push([key, value]);\n }\n }\n return new HoloMap(entries);\n }\n\n reduce<U>(fn: (acc: U, value: V, key: K) => U, initial: U): U {\n let acc = initial;\n for (const [key, value] of this._map) {\n acc = fn(acc, value, key);\n }\n return acc;\n }\n\n forEach(fn: (value: V, key: K) => void): void {\n this._map.forEach(fn);\n }\n\n find(predicate: (value: V, key: K) => boolean): [K, V] | undefined {\n for (const [key, value] of this._map) {\n if (predicate(value, key)) {\n return [key, value];\n }\n }\n return undefined;\n }\n\n some(predicate: (value: V, key: K) => boolean): boolean {\n for (const [key, value] of this._map) {\n if (predicate(value, key)) return true;\n }\n return false;\n }\n\n every(predicate: (value: V, key: K) => boolean): boolean {\n for (const [key, value] of this._map) {\n if (!predicate(value, key)) return false;\n }\n return true;\n }\n\n toObject(this: HoloMap<string, V>): Record<string, V> {\n const obj: Record<string, V> = {};\n for (const [key, value] of this._map) {\n obj[key] = value;\n }\n return obj;\n }\n\n toNativeMap(): Map<K, V> {\n return new Map(this._map);\n }\n\n [Symbol.iterator](): Iterator<[K, V]> {\n return this._map[Symbol.iterator]();\n }\n\n toString(): string {\n const entries = [...this._map].map(([k, v]) => `${k}: ${v}`).join(', ');\n return `HoloMap { ${entries} }`;\n }\n}\n\n/**\n * Immutable Set with functional operations\n */\nexport class HoloSet<T> {\n private readonly set: ReadonlySet<T>;\n\n constructor(items?: Iterable<T>) {\n this.set = new Set(items);\n }\n\n static of<T>(...items: T[]): HoloSet<T> {\n return new HoloSet(items);\n }\n\n static from<T>(iterable: Iterable<T>): HoloSet<T> {\n return new HoloSet(iterable);\n }\n\n get size(): number {\n return this.set.size;\n }\n\n get isEmpty(): boolean {\n return this.set.size === 0;\n }\n\n has(item: T): boolean {\n return this.set.has(item);\n }\n\n add(item: T): HoloSet<T> {\n const newSet = new Set(this.set);\n newSet.add(item);\n return new HoloSet(newSet);\n }\n\n delete(item: T): HoloSet<T> {\n const newSet = new Set(this.set);\n newSet.delete(item);\n return new HoloSet(newSet);\n }\n\n addAll(items: Iterable<T>): HoloSet<T> {\n const newSet = new Set(this.set);\n for (const item of items) {\n newSet.add(item);\n }\n return new HoloSet(newSet);\n }\n\n union(other: HoloSet<T>): HoloSet<T> {\n return this.addAll(other);\n }\n\n intersection(other: HoloSet<T>): HoloSet<T> {\n const result = new Set<T>();\n for (const item of this.set) {\n if (other.has(item)) {\n result.add(item);\n }\n }\n return new HoloSet(result);\n }\n\n difference(other: HoloSet<T>): HoloSet<T> {\n const result = new Set<T>();\n for (const item of this.set) {\n if (!other.has(item)) {\n result.add(item);\n }\n }\n return new HoloSet(result);\n }\n\n symmetricDifference(other: HoloSet<T>): HoloSet<T> {\n return this.difference(other).union(other.difference(this));\n }\n\n isSubsetOf(other: HoloSet<T>): boolean {\n for (const item of this.set) {\n if (!other.has(item)) return false;\n }\n return true;\n }\n\n isSupersetOf(other: HoloSet<T>): boolean {\n return other.isSubsetOf(this);\n }\n\n isDisjointFrom(other: HoloSet<T>): boolean {\n return this.intersection(other).isEmpty;\n }\n\n map<U>(fn: (item: T) => U): HoloSet<U> {\n const result = new Set<U>();\n for (const item of this.set) {\n result.add(fn(item));\n }\n return new HoloSet(result);\n }\n\n filter(predicate: (item: T) => boolean): HoloSet<T> {\n const result = new Set<T>();\n for (const item of this.set) {\n if (predicate(item)) {\n result.add(item);\n }\n }\n return new HoloSet(result);\n }\n\n reduce<U>(fn: (acc: U, item: T) => U, initial: U): U {\n let acc = initial;\n for (const item of this.set) {\n acc = fn(acc, item);\n }\n return acc;\n }\n\n forEach(fn: (item: T) => void): void {\n this.set.forEach(fn);\n }\n\n find(predicate: (item: T) => boolean): T | undefined {\n for (const item of this.set) {\n if (predicate(item)) return item;\n }\n return undefined;\n }\n\n some(predicate: (item: T) => boolean): boolean {\n for (const item of this.set) {\n if (predicate(item)) return true;\n }\n return false;\n }\n\n every(predicate: (item: T) => boolean): boolean {\n for (const item of this.set) {\n if (!predicate(item)) return false;\n }\n return true;\n }\n\n toArray(): T[] {\n return [...this.set];\n }\n\n toList(): List<T> {\n return new List(this.set);\n }\n\n toNativeSet(): Set<T> {\n return new Set(this.set);\n }\n\n [Symbol.iterator](): Iterator<T> {\n return this.set[Symbol.iterator]();\n }\n\n toString(): string {\n return `HoloSet { ${[...this.set].join(', ')} }`;\n }\n}\n\n/**\n * Spatial grid for efficient spatial queries (useful for game worlds)\n */\nexport class SpatialGrid<T> {\n private readonly cellSize: number;\n private readonly cells: Map<string, T[]> = new Map();\n\n constructor(cellSize: number) {\n this.cellSize = cellSize;\n }\n\n private getCellKey(x: number, y: number, z: number): string {\n const cx = Math.floor(x / this.cellSize);\n const cy = Math.floor(y / this.cellSize);\n const cz = Math.floor(z / this.cellSize);\n return `${cx},${cy},${cz}`;\n }\n\n insert(position: Vec3, item: T): void {\n const key = this.getCellKey(position.x, position.y, position.z);\n if (!this.cells.has(key)) {\n this.cells.set(key, []);\n }\n this.cells.get(key)!.push(item);\n }\n\n remove(position: Vec3, item: T): boolean {\n const key = this.getCellKey(position.x, position.y, position.z);\n const cell = this.cells.get(key);\n if (!cell) return false;\n const index = cell.indexOf(item);\n if (index === -1) return false;\n cell.splice(index, 1);\n if (cell.length === 0) {\n this.cells.delete(key);\n }\n return true;\n }\n\n query(center: Vec3, radius: number): T[] {\n const results: T[] = [];\n const cellRadius = Math.ceil(radius / this.cellSize);\n const cx = Math.floor(center.x / this.cellSize);\n const cy = Math.floor(center.y / this.cellSize);\n const cz = Math.floor(center.z / this.cellSize);\n\n for (let x = cx - cellRadius; x <= cx + cellRadius; x++) {\n for (let y = cy - cellRadius; y <= cy + cellRadius; y++) {\n for (let z = cz - cellRadius; z <= cz + cellRadius; z++) {\n const cell = this.cells.get(`${x},${y},${z}`);\n if (cell) {\n results.push(...cell);\n }\n }\n }\n }\n\n return results;\n }\n\n queryBox(min: Vec3, max: Vec3): T[] {\n const results: T[] = [];\n const minCx = Math.floor(min.x / this.cellSize);\n const minCy = Math.floor(min.y / this.cellSize);\n const minCz = Math.floor(min.z / this.cellSize);\n const maxCx = Math.floor(max.x / this.cellSize);\n const maxCy = Math.floor(max.y / this.cellSize);\n const maxCz = Math.floor(max.z / this.cellSize);\n\n for (let x = minCx; x <= maxCx; x++) {\n for (let y = minCy; y <= maxCy; y++) {\n for (let z = minCz; z <= maxCz; z++) {\n const cell = this.cells.get(`${x},${y},${z}`);\n if (cell) {\n results.push(...cell);\n }\n }\n }\n }\n\n return results;\n }\n\n clear(): void {\n this.cells.clear();\n }\n\n get cellCount(): number {\n return this.cells.size;\n }\n\n get itemCount(): number {\n let count = 0;\n for (const cell of this.cells.values()) {\n count += cell.length;\n }\n return count;\n }\n}\n\n/**\n * Priority queue (min-heap by default)\n */\nexport class PriorityQueue<T> {\n private heap: { item: T; priority: number }[] = [];\n\n constructor(private compareFn: (a: number, b: number) => number = (a, b) => a - b) {}\n\n static minHeap<T>(): PriorityQueue<T> {\n return new PriorityQueue((a, b) => a - b);\n }\n\n static maxHeap<T>(): PriorityQueue<T> {\n return new PriorityQueue((a, b) => b - a);\n }\n\n get size(): number {\n return this.heap.length;\n }\n\n get isEmpty(): boolean {\n return this.heap.length === 0;\n }\n\n enqueue(item: T, priority: number): void {\n this.heap.push({ item, priority });\n this.bubbleUp(this.heap.length - 1);\n }\n\n dequeue(): T | undefined {\n if (this.isEmpty) return undefined;\n const result = this.heap[0].item;\n const last = this.heap.pop()!;\n if (this.heap.length > 0) {\n this.heap[0] = last;\n this.bubbleDown(0);\n }\n return result;\n }\n\n peek(): T | undefined {\n return this.heap[0]?.item;\n }\n\n peekPriority(): number | undefined {\n return this.heap[0]?.priority;\n }\n\n clear(): void {\n this.heap = [];\n }\n\n private bubbleUp(index: number): void {\n while (index > 0) {\n const parentIndex = Math.floor((index - 1) / 2);\n if (this.compareFn(this.heap[index].priority, this.heap[parentIndex].priority) >= 0) break;\n [this.heap[index], this.heap[parentIndex]] = [this.heap[parentIndex], this.heap[index]];\n index = parentIndex;\n }\n }\n\n private bubbleDown(index: number): void {\n while (true) {\n const leftChild = 2 * index + 1;\n const rightChild = 2 * index + 2;\n let smallest = index;\n\n if (\n leftChild < this.heap.length &&\n this.compareFn(this.heap[leftChild].priority, this.heap[smallest].priority) < 0\n ) {\n smallest = leftChild;\n }\n if (\n rightChild < this.heap.length &&\n this.compareFn(this.heap[rightChild].priority, this.heap[smallest].priority) < 0\n ) {\n smallest = rightChild;\n }\n\n if (smallest === index) break;\n [this.heap[index], this.heap[smallest]] = [this.heap[smallest], this.heap[index]];\n index = smallest;\n }\n }\n}\n\n// Convenience aliases\nexport { HoloMap as Map };\nexport { HoloSet as Set };\n"],"mappings":"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","names":[]}
|
package/dist/collections.js
CHANGED
package/dist/fs/fs.d.ts
ADDED
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @holoscript/fs - File System Module
|
|
3
|
+
*
|
|
4
|
+
* File and directory operations for HoloScript Plus programs.
|
|
5
|
+
*/
|
|
6
|
+
export type Encoding = BufferEncoding;
|
|
7
|
+
/**
|
|
8
|
+
* File stats information
|
|
9
|
+
*/
|
|
10
|
+
export interface FileStats {
|
|
11
|
+
size: number;
|
|
12
|
+
isFile: boolean;
|
|
13
|
+
isDirectory: boolean;
|
|
14
|
+
isSymlink: boolean;
|
|
15
|
+
createdAt: Date;
|
|
16
|
+
modifiedAt: Date;
|
|
17
|
+
accessedAt: Date;
|
|
18
|
+
mode: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Directory entry
|
|
22
|
+
*/
|
|
23
|
+
export interface DirEntry {
|
|
24
|
+
name: string;
|
|
25
|
+
path: string;
|
|
26
|
+
isFile: boolean;
|
|
27
|
+
isDirectory: boolean;
|
|
28
|
+
isSymlink: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Read options
|
|
32
|
+
*/
|
|
33
|
+
export interface ReadOptions {
|
|
34
|
+
encoding?: Encoding;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Write options
|
|
38
|
+
*/
|
|
39
|
+
export interface WriteOptions {
|
|
40
|
+
encoding?: Encoding;
|
|
41
|
+
mode?: number;
|
|
42
|
+
flag?: string;
|
|
43
|
+
append?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Copy options
|
|
47
|
+
*/
|
|
48
|
+
export interface CopyOptions {
|
|
49
|
+
overwrite?: boolean;
|
|
50
|
+
recursive?: boolean;
|
|
51
|
+
filter?: (src: string) => boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Read a file as text
|
|
55
|
+
*/
|
|
56
|
+
export declare function readText(path: string, encoding?: Encoding): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Read a file as text (sync)
|
|
59
|
+
*/
|
|
60
|
+
export declare function readTextSync(path: string, encoding?: Encoding): string;
|
|
61
|
+
/**
|
|
62
|
+
* Read a file as bytes
|
|
63
|
+
*/
|
|
64
|
+
export declare function readBytes(path: string): Promise<Buffer>;
|
|
65
|
+
/**
|
|
66
|
+
* Read a file as bytes (sync)
|
|
67
|
+
*/
|
|
68
|
+
export declare function readBytesSync(path: string): Buffer;
|
|
69
|
+
/**
|
|
70
|
+
* Read a JSON file
|
|
71
|
+
*/
|
|
72
|
+
export declare function readJson<T = unknown>(path: string): Promise<T>;
|
|
73
|
+
/**
|
|
74
|
+
* Read a JSON file (sync)
|
|
75
|
+
*/
|
|
76
|
+
export declare function readJsonSync<T = unknown>(path: string): T;
|
|
77
|
+
/**
|
|
78
|
+
* Read file lines as an array
|
|
79
|
+
*/
|
|
80
|
+
export declare function readLines(path: string, encoding?: Encoding): Promise<string[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Read file lines as an array (sync)
|
|
83
|
+
*/
|
|
84
|
+
export declare function readLinesSync(path: string, encoding?: Encoding): string[];
|
|
85
|
+
/**
|
|
86
|
+
* Write text to a file
|
|
87
|
+
*/
|
|
88
|
+
export declare function writeText(path: string, content: string, options?: WriteOptions): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Write text to a file (sync)
|
|
91
|
+
*/
|
|
92
|
+
export declare function writeTextSync(path: string, content: string, options?: WriteOptions): void;
|
|
93
|
+
/**
|
|
94
|
+
* Write bytes to a file
|
|
95
|
+
*/
|
|
96
|
+
export declare function writeBytes(path: string, content: Buffer, options?: WriteOptions): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Write bytes to a file (sync)
|
|
99
|
+
*/
|
|
100
|
+
export declare function writeBytesSync(path: string, content: Buffer, options?: WriteOptions): void;
|
|
101
|
+
/**
|
|
102
|
+
* Write JSON to a file
|
|
103
|
+
*/
|
|
104
|
+
export declare function writeJson(path: string, data: unknown, options?: WriteOptions & {
|
|
105
|
+
pretty?: boolean;
|
|
106
|
+
}): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Write JSON to a file (sync)
|
|
109
|
+
*/
|
|
110
|
+
export declare function writeJsonSync(path: string, data: unknown, options?: WriteOptions & {
|
|
111
|
+
pretty?: boolean;
|
|
112
|
+
}): void;
|
|
113
|
+
/**
|
|
114
|
+
* Append text to a file
|
|
115
|
+
*/
|
|
116
|
+
export declare function appendText(path: string, content: string, encoding?: Encoding): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Append text to a file (sync)
|
|
119
|
+
*/
|
|
120
|
+
export declare function appendTextSync(path: string, content: string, encoding?: Encoding): void;
|
|
121
|
+
/**
|
|
122
|
+
* Append a line to a file
|
|
123
|
+
*/
|
|
124
|
+
export declare function appendLine(path: string, line: string, encoding?: Encoding): Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* Append a line to a file (sync)
|
|
127
|
+
*/
|
|
128
|
+
export declare function appendLineSync(path: string, line: string, encoding?: Encoding): void;
|
|
129
|
+
/**
|
|
130
|
+
* Check if a path exists
|
|
131
|
+
*/
|
|
132
|
+
export declare function exists(path: string): Promise<boolean>;
|
|
133
|
+
/**
|
|
134
|
+
* Check if a path exists (sync)
|
|
135
|
+
*/
|
|
136
|
+
export declare function existsSync(path: string): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Check if path is a file
|
|
139
|
+
*/
|
|
140
|
+
export declare function isFile(path: string): Promise<boolean>;
|
|
141
|
+
/**
|
|
142
|
+
* Check if path is a file (sync)
|
|
143
|
+
*/
|
|
144
|
+
export declare function isFileSync(path: string): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Check if path is a directory
|
|
147
|
+
*/
|
|
148
|
+
export declare function isDirectory(path: string): Promise<boolean>;
|
|
149
|
+
/**
|
|
150
|
+
* Check if path is a directory (sync)
|
|
151
|
+
*/
|
|
152
|
+
export declare function isDirectorySync(path: string): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Get file/directory stats
|
|
155
|
+
*/
|
|
156
|
+
export declare function stat(path: string): Promise<FileStats>;
|
|
157
|
+
/**
|
|
158
|
+
* Get file/directory stats (sync)
|
|
159
|
+
*/
|
|
160
|
+
export declare function statSync(path: string): FileStats;
|
|
161
|
+
/**
|
|
162
|
+
* Create a directory (and parents if needed)
|
|
163
|
+
*/
|
|
164
|
+
export declare function mkdir(path: string, recursive?: boolean): Promise<void>;
|
|
165
|
+
/**
|
|
166
|
+
* Create a directory (sync)
|
|
167
|
+
*/
|
|
168
|
+
export declare function mkdirSync(path: string, recursive?: boolean): void;
|
|
169
|
+
/**
|
|
170
|
+
* Ensure a directory exists
|
|
171
|
+
*/
|
|
172
|
+
export declare function ensureDir(path: string): Promise<void>;
|
|
173
|
+
/**
|
|
174
|
+
* Ensure a directory exists (sync)
|
|
175
|
+
*/
|
|
176
|
+
export declare function ensureDirSync(path: string): void;
|
|
177
|
+
/**
|
|
178
|
+
* Ensure a file exists (create empty if not)
|
|
179
|
+
*/
|
|
180
|
+
export declare function ensureFile(path: string): Promise<void>;
|
|
181
|
+
/**
|
|
182
|
+
* Ensure a file exists (sync)
|
|
183
|
+
*/
|
|
184
|
+
export declare function ensureFileSync(path: string): void;
|
|
185
|
+
/**
|
|
186
|
+
* Remove a file or directory
|
|
187
|
+
*/
|
|
188
|
+
export declare function remove(path: string, recursive?: boolean): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Remove a file or directory (sync)
|
|
191
|
+
*/
|
|
192
|
+
export declare function removeSync(path: string, recursive?: boolean): void;
|
|
193
|
+
/**
|
|
194
|
+
* Copy a file or directory
|
|
195
|
+
*/
|
|
196
|
+
export declare function copy(src: string, dest: string, options?: CopyOptions): Promise<void>;
|
|
197
|
+
/**
|
|
198
|
+
* Copy a file or directory (sync)
|
|
199
|
+
*/
|
|
200
|
+
export declare function copySync(src: string, dest: string, options?: CopyOptions): void;
|
|
201
|
+
/**
|
|
202
|
+
* Move/rename a file or directory
|
|
203
|
+
*/
|
|
204
|
+
export declare function move(src: string, dest: string, overwrite?: boolean): Promise<void>;
|
|
205
|
+
/**
|
|
206
|
+
* Move/rename a file or directory (sync)
|
|
207
|
+
*/
|
|
208
|
+
export declare function moveSync(src: string, dest: string, overwrite?: boolean): void;
|
|
209
|
+
/**
|
|
210
|
+
* Read directory entries
|
|
211
|
+
*/
|
|
212
|
+
export declare function readDir(path: string): Promise<DirEntry[]>;
|
|
213
|
+
/**
|
|
214
|
+
* Read directory entries (sync)
|
|
215
|
+
*/
|
|
216
|
+
export declare function readDirSync(path: string): DirEntry[];
|
|
217
|
+
/**
|
|
218
|
+
* List files in a directory (names only)
|
|
219
|
+
*/
|
|
220
|
+
export declare function listFiles(path: string): Promise<string[]>;
|
|
221
|
+
/**
|
|
222
|
+
* List files in a directory (sync)
|
|
223
|
+
*/
|
|
224
|
+
export declare function listFilesSync(path: string): string[];
|
|
225
|
+
/**
|
|
226
|
+
* List directories in a directory (names only)
|
|
227
|
+
*/
|
|
228
|
+
export declare function listDirs(path: string): Promise<string[]>;
|
|
229
|
+
/**
|
|
230
|
+
* List directories in a directory (sync)
|
|
231
|
+
*/
|
|
232
|
+
export declare function listDirsSync(path: string): string[];
|
|
233
|
+
/**
|
|
234
|
+
* Walk directory recursively
|
|
235
|
+
*/
|
|
236
|
+
export declare function walk(path: string, options?: {
|
|
237
|
+
depth?: number;
|
|
238
|
+
followSymlinks?: boolean;
|
|
239
|
+
}): AsyncGenerator<DirEntry>;
|
|
240
|
+
/**
|
|
241
|
+
* Find files matching a glob pattern
|
|
242
|
+
*/
|
|
243
|
+
export declare function glob(pattern: string, options?: {
|
|
244
|
+
cwd?: string;
|
|
245
|
+
ignore?: string[];
|
|
246
|
+
}): Promise<string[]>;
|
|
247
|
+
/**
|
|
248
|
+
* Find files matching a glob pattern (sync)
|
|
249
|
+
*/
|
|
250
|
+
export declare function globSync(pattern: string, options?: {
|
|
251
|
+
cwd?: string;
|
|
252
|
+
ignore?: string[];
|
|
253
|
+
}): string[];
|
|
254
|
+
/**
|
|
255
|
+
* Get the system temp directory
|
|
256
|
+
*/
|
|
257
|
+
export declare function tempDir(): string;
|
|
258
|
+
/**
|
|
259
|
+
* Create a temporary file
|
|
260
|
+
*/
|
|
261
|
+
export declare function createTempFile(prefix?: string, suffix?: string, dir?: string): Promise<{
|
|
262
|
+
path: string;
|
|
263
|
+
cleanup: () => Promise<void>;
|
|
264
|
+
}>;
|
|
265
|
+
/**
|
|
266
|
+
* Create a temporary directory
|
|
267
|
+
*/
|
|
268
|
+
export declare function createTempDir(prefix?: string): Promise<{
|
|
269
|
+
path: string;
|
|
270
|
+
cleanup: () => Promise<void>;
|
|
271
|
+
}>;
|
|
272
|
+
/**
|
|
273
|
+
* Get file size in bytes
|
|
274
|
+
*/
|
|
275
|
+
export declare function fileSize(path: string): Promise<number>;
|
|
276
|
+
/**
|
|
277
|
+
* Get file size in bytes (sync)
|
|
278
|
+
*/
|
|
279
|
+
export declare function fileSizeSync(path: string): number;
|
|
280
|
+
/**
|
|
281
|
+
* Get directory size (recursive)
|
|
282
|
+
*/
|
|
283
|
+
export declare function dirSize(path: string): Promise<number>;
|
|
284
|
+
/**
|
|
285
|
+
* Format bytes as human-readable string
|
|
286
|
+
*/
|
|
287
|
+
export declare function formatSize(bytes: number, decimals?: number): string;
|
|
288
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs/fs.ts"],"names":[],"mappings":"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"}
|