@holoscript/std 2.1.0 → 6.0.3
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/CHANGELOG.md +7 -0
- package/LICENSE +21 -0
- package/README.md +197 -0
- package/dist/__tests__/EconomicPrimitives.test.d.ts +2 -0
- package/dist/__tests__/EconomicPrimitives.test.d.ts.map +1 -0
- package/dist/__tests__/EconomicTraits.test.d.ts +2 -0
- package/dist/__tests__/EconomicTraits.test.d.ts.map +1 -0
- package/dist/__tests__/SimulationLabPrimitives.test.d.ts +2 -0
- package/dist/__tests__/SimulationLabPrimitives.test.d.ts.map +1 -0
- package/dist/__tests__/collections.test.d.ts +2 -0
- package/dist/__tests__/collections.test.d.ts.map +1 -0
- package/dist/__tests__/events.test.d.ts +2 -0
- package/dist/__tests__/events.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/materials.test.d.ts +2 -0
- package/dist/__tests__/materials.test.d.ts.map +1 -0
- package/dist/__tests__/math.test.d.ts +2 -0
- package/dist/__tests__/math.test.d.ts.map +1 -0
- package/dist/__tests__/physics.test.d.ts +2 -0
- package/dist/__tests__/physics.test.d.ts.map +1 -0
- package/dist/__tests__/spatial.test.d.ts +2 -0
- package/dist/__tests__/spatial.test.d.ts.map +1 -0
- package/dist/__tests__/standard-library-fundamentals.test.d.ts +2 -0
- package/dist/__tests__/standard-library-fundamentals.test.d.ts.map +1 -0
- package/dist/__tests__/string-and-time-utilities.test.d.ts +2 -0
- package/dist/__tests__/string-and-time-utilities.test.d.ts.map +1 -0
- package/dist/__tests__/string-decoupled.test.d.ts +2 -0
- package/dist/__tests__/string-decoupled.test.d.ts.map +1 -0
- package/dist/__tests__/string.test.d.ts +2 -0
- package/dist/__tests__/string.test.d.ts.map +1 -0
- package/dist/__tests__/time.test.d.ts +2 -0
- package/dist/__tests__/time.test.d.ts.map +1 -0
- package/dist/chunk-7HVUYGPS.js +679 -0
- package/dist/chunk-7HVUYGPS.js.map +1 -0
- package/dist/chunk-P4O3WNG2.js +287 -0
- package/dist/chunk-P4O3WNG2.js.map +1 -0
- package/dist/chunk-PFX2JM4X.js +683 -0
- package/dist/chunk-PFX2JM4X.js.map +1 -0
- package/dist/chunk-W2Q3LUCM.js +348 -0
- package/dist/chunk-W2Q3LUCM.js.map +1 -0
- package/dist/chunk-WS6W35YC.js +443 -0
- package/dist/chunk-WS6W35YC.js.map +1 -0
- package/dist/chunk-ZXVZAQCZ.js +470 -0
- package/dist/chunk-ZXVZAQCZ.js.map +1 -0
- package/dist/collections.cjs +715 -0
- package/dist/collections.cjs.map +1 -0
- package/dist/collections.d.ts.map +1 -1
- package/dist/collections.js +16 -719
- package/dist/collections.js.map +1 -1
- package/dist/events.d.ts +32 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/index.cjs +4101 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +21 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1270 -157
- package/dist/index.js.map +1 -1
- package/dist/materials.d.ts +50 -0
- package/dist/materials.d.ts.map +1 -0
- package/dist/math.cjs +591 -0
- package/dist/math.cjs.map +1 -0
- package/dist/math.d.ts.map +1 -1
- package/dist/math.js +51 -537
- package/dist/math.js.map +1 -1
- package/dist/physics.d.ts +59 -0
- package/dist/physics.d.ts.map +1 -0
- package/dist/spatial.d.ts +82 -0
- package/dist/spatial.d.ts.map +1 -0
- package/dist/string.basic.test.d.ts +5 -0
- package/dist/string.basic.test.d.ts.map +1 -0
- package/dist/string.cjs +422 -0
- package/dist/string.cjs.map +1 -0
- package/dist/string.d.ts +5 -1
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +106 -442
- package/dist/string.js.map +1 -1
- package/dist/string.test.d.ts +5 -0
- package/dist/string.test.d.ts.map +1 -0
- package/dist/time.cjs +512 -0
- package/dist/time.cjs.map +1 -0
- package/dist/time.d.ts.map +1 -1
- package/dist/time.js +41 -528
- package/dist/time.js.map +1 -1
- package/dist/traits/ARTraits.d.ts +14 -0
- package/dist/traits/ARTraits.d.ts.map +1 -0
- package/dist/traits/EconomicPrimitives.cjs +335 -0
- package/dist/traits/EconomicPrimitives.cjs.map +1 -0
- package/dist/traits/EconomicPrimitives.d.ts +345 -0
- package/dist/traits/EconomicPrimitives.d.ts.map +1 -0
- package/dist/traits/EconomicPrimitives.js +55 -0
- package/dist/traits/EconomicPrimitives.js.map +1 -0
- package/dist/traits/EconomicTraits.cjs +471 -0
- package/dist/traits/EconomicTraits.cjs.map +1 -0
- package/dist/traits/EconomicTraits.d.ts +71 -0
- package/dist/traits/EconomicTraits.d.ts.map +1 -0
- package/dist/traits/EconomicTraits.js +17 -0
- package/dist/traits/EconomicTraits.js.map +1 -0
- package/dist/traits/IoTTraits.d.ts +14 -0
- package/dist/traits/IoTTraits.d.ts.map +1 -0
- package/dist/traits/SimulationLabPrimitives.d.ts +187 -0
- package/dist/traits/SimulationLabPrimitives.d.ts.map +1 -0
- package/dist/traits/SimulationLabTraits.d.ts +42 -0
- package/dist/traits/SimulationLabTraits.d.ts.map +1 -0
- package/dist/traits/VRRTraits.d.ts +150 -0
- package/dist/traits/VRRTraits.d.ts.map +1 -0
- package/dist/traits/__tests__/ARTraits.test.d.ts +2 -0
- package/dist/traits/__tests__/ARTraits.test.d.ts.map +1 -0
- package/dist/traits/__tests__/EconomicPrimitives.test.d.ts +2 -0
- package/dist/traits/__tests__/EconomicPrimitives.test.d.ts.map +1 -0
- package/dist/traits/__tests__/EconomicTraits.test.d.ts +2 -0
- package/dist/traits/__tests__/EconomicTraits.test.d.ts.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/error-utf8.log +6 -0
- package/error.log +0 -0
- package/package.json +42 -19
- package/src/__tests__/EconomicPrimitives.test.ts +690 -0
- package/src/__tests__/EconomicTraits.test.ts +425 -0
- package/src/__tests__/SimulationLabPrimitives.test.ts +415 -0
- package/src/__tests__/collections.test.ts +182 -0
- package/src/__tests__/events.test.ts +135 -0
- package/src/__tests__/index.test.ts +14 -0
- package/src/__tests__/materials.test.ts +84 -0
- package/src/__tests__/math.test.ts +246 -0
- package/src/__tests__/physics.test.ts +83 -0
- package/src/__tests__/spatial.test.ts +333 -0
- package/src/__tests__/standard-library-fundamentals.test.ts +1301 -0
- package/src/__tests__/string-and-time-utilities.test.ts +1070 -0
- package/src/__tests__/string-decoupled.test.ts +14 -0
- package/src/__tests__/string.test.ts +164 -0
- package/src/__tests__/time.test.ts +110 -0
- package/src/collections.ts +8 -2
- package/src/events.ts +88 -0
- package/src/index.ts +161 -11
- package/src/materials.ts +109 -0
- package/src/math.ts +30 -14
- package/src/physics.ts +141 -0
- package/src/spatial.ts +320 -0
- package/src/string.basic.test.ts +14 -0
- package/src/string.test.ts +335 -0
- package/src/string.ts +45 -13
- package/src/time.ts +10 -11
- package/src/traits/ARTraits.ts +103 -0
- package/src/traits/EconomicPrimitives.ts +755 -0
- package/src/traits/EconomicTraits.ts +552 -0
- package/src/traits/IoTTraits.ts +102 -0
- package/src/traits/SimulationLabPrimitives.ts +650 -0
- package/src/traits/SimulationLabTraits.ts +191 -0
- package/src/traits/VRRTraits.ts +326 -0
- package/src/traits/__tests__/ARTraits.test.ts +14 -0
- package/src/traits/__tests__/EconomicPrimitives.test.ts +14 -0
- package/src/traits/__tests__/EconomicTraits.test.ts +14 -0
- package/src/types.ts +47 -12
- package/std_error.log +5 -0
- package/tsup.config.ts +17 -0
- package/vitest.config.ts +10 -0
- package/dist/types.js +0 -198
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,715 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/collections.ts
|
|
21
|
+
var collections_exports = {};
|
|
22
|
+
__export(collections_exports, {
|
|
23
|
+
HoloMap: () => HoloMap,
|
|
24
|
+
HoloSet: () => HoloSet,
|
|
25
|
+
List: () => List,
|
|
26
|
+
Map: () => HoloMap,
|
|
27
|
+
PriorityQueue: () => PriorityQueue,
|
|
28
|
+
Set: () => HoloSet,
|
|
29
|
+
SpatialGrid: () => SpatialGrid
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(collections_exports);
|
|
32
|
+
var List = class _List {
|
|
33
|
+
items;
|
|
34
|
+
constructor(items = []) {
|
|
35
|
+
this.items = Array.from(items);
|
|
36
|
+
}
|
|
37
|
+
static of(...items) {
|
|
38
|
+
return new _List(items);
|
|
39
|
+
}
|
|
40
|
+
static from(iterable) {
|
|
41
|
+
return new _List(iterable);
|
|
42
|
+
}
|
|
43
|
+
static range(start, end, step = 1) {
|
|
44
|
+
const items = [];
|
|
45
|
+
for (let i = start; step > 0 ? i < end : i > end; i += step) {
|
|
46
|
+
items.push(i);
|
|
47
|
+
}
|
|
48
|
+
return new _List(items);
|
|
49
|
+
}
|
|
50
|
+
static repeat(value, count) {
|
|
51
|
+
return new _List(Array(count).fill(value));
|
|
52
|
+
}
|
|
53
|
+
get length() {
|
|
54
|
+
return this.items.length;
|
|
55
|
+
}
|
|
56
|
+
get isEmpty() {
|
|
57
|
+
return this.items.length === 0;
|
|
58
|
+
}
|
|
59
|
+
get(index) {
|
|
60
|
+
return index < 0 ? this.items[this.items.length + index] : this.items[index];
|
|
61
|
+
}
|
|
62
|
+
first() {
|
|
63
|
+
return this.items[0];
|
|
64
|
+
}
|
|
65
|
+
last() {
|
|
66
|
+
return this.items[this.items.length - 1];
|
|
67
|
+
}
|
|
68
|
+
map(fn) {
|
|
69
|
+
return new _List(this.items.map(fn));
|
|
70
|
+
}
|
|
71
|
+
flatMap(fn) {
|
|
72
|
+
const result = [];
|
|
73
|
+
this.items.forEach((item, index) => {
|
|
74
|
+
const mapped = fn(item, index);
|
|
75
|
+
if (mapped instanceof _List) {
|
|
76
|
+
result.push(...mapped.toArray());
|
|
77
|
+
} else {
|
|
78
|
+
result.push(...mapped);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return new _List(result);
|
|
82
|
+
}
|
|
83
|
+
filter(predicate) {
|
|
84
|
+
return new _List(this.items.filter(predicate));
|
|
85
|
+
}
|
|
86
|
+
reject(predicate) {
|
|
87
|
+
return this.filter((item, index) => !predicate(item, index));
|
|
88
|
+
}
|
|
89
|
+
reduce(fn, initial) {
|
|
90
|
+
return this.items.reduce(fn, initial);
|
|
91
|
+
}
|
|
92
|
+
fold(initial, fn) {
|
|
93
|
+
return this.items.reduce(fn, initial);
|
|
94
|
+
}
|
|
95
|
+
find(predicate) {
|
|
96
|
+
return this.items.find(predicate);
|
|
97
|
+
}
|
|
98
|
+
findIndex(predicate) {
|
|
99
|
+
return this.items.findIndex(predicate);
|
|
100
|
+
}
|
|
101
|
+
indexOf(item) {
|
|
102
|
+
return this.items.indexOf(item);
|
|
103
|
+
}
|
|
104
|
+
includes(item) {
|
|
105
|
+
return this.items.includes(item);
|
|
106
|
+
}
|
|
107
|
+
some(predicate) {
|
|
108
|
+
return this.items.some(predicate);
|
|
109
|
+
}
|
|
110
|
+
every(predicate) {
|
|
111
|
+
return this.items.every(predicate);
|
|
112
|
+
}
|
|
113
|
+
none(predicate) {
|
|
114
|
+
return !this.some(predicate);
|
|
115
|
+
}
|
|
116
|
+
count(predicate) {
|
|
117
|
+
return this.filter(predicate).length;
|
|
118
|
+
}
|
|
119
|
+
forEach(fn) {
|
|
120
|
+
this.items.forEach(fn);
|
|
121
|
+
}
|
|
122
|
+
concat(...lists) {
|
|
123
|
+
const arrays = lists.map((l) => l instanceof _List ? l.toArray() : l);
|
|
124
|
+
return new _List([...this.items, ...arrays.flat()]);
|
|
125
|
+
}
|
|
126
|
+
append(item) {
|
|
127
|
+
return new _List([...this.items, item]);
|
|
128
|
+
}
|
|
129
|
+
prepend(item) {
|
|
130
|
+
return new _List([item, ...this.items]);
|
|
131
|
+
}
|
|
132
|
+
insert(index, item) {
|
|
133
|
+
const arr = [...this.items];
|
|
134
|
+
arr.splice(index, 0, item);
|
|
135
|
+
return new _List(arr);
|
|
136
|
+
}
|
|
137
|
+
remove(index) {
|
|
138
|
+
const arr = [...this.items];
|
|
139
|
+
arr.splice(index, 1);
|
|
140
|
+
return new _List(arr);
|
|
141
|
+
}
|
|
142
|
+
update(index, item) {
|
|
143
|
+
const arr = [...this.items];
|
|
144
|
+
arr[index] = item;
|
|
145
|
+
return new _List(arr);
|
|
146
|
+
}
|
|
147
|
+
slice(start, end) {
|
|
148
|
+
return new _List(this.items.slice(start, end));
|
|
149
|
+
}
|
|
150
|
+
take(n) {
|
|
151
|
+
return this.slice(0, n);
|
|
152
|
+
}
|
|
153
|
+
takeLast(n) {
|
|
154
|
+
return this.slice(-n);
|
|
155
|
+
}
|
|
156
|
+
takeWhile(predicate) {
|
|
157
|
+
const result = [];
|
|
158
|
+
for (let i = 0; i < this.items.length; i++) {
|
|
159
|
+
if (!predicate(this.items[i], i)) break;
|
|
160
|
+
result.push(this.items[i]);
|
|
161
|
+
}
|
|
162
|
+
return new _List(result);
|
|
163
|
+
}
|
|
164
|
+
drop(n) {
|
|
165
|
+
return this.slice(n);
|
|
166
|
+
}
|
|
167
|
+
dropLast(n) {
|
|
168
|
+
return this.slice(0, -n);
|
|
169
|
+
}
|
|
170
|
+
dropWhile(predicate) {
|
|
171
|
+
let startIndex = 0;
|
|
172
|
+
for (let i = 0; i < this.items.length; i++) {
|
|
173
|
+
if (!predicate(this.items[i], i)) break;
|
|
174
|
+
startIndex = i + 1;
|
|
175
|
+
}
|
|
176
|
+
return this.slice(startIndex);
|
|
177
|
+
}
|
|
178
|
+
reverse() {
|
|
179
|
+
return new _List([...this.items].reverse());
|
|
180
|
+
}
|
|
181
|
+
sort(compareFn) {
|
|
182
|
+
return new _List([...this.items].sort(compareFn));
|
|
183
|
+
}
|
|
184
|
+
sortBy(fn) {
|
|
185
|
+
return this.sort((a, b) => {
|
|
186
|
+
const va = fn(a);
|
|
187
|
+
const vb = fn(b);
|
|
188
|
+
if (va < vb) return -1;
|
|
189
|
+
if (va > vb) return 1;
|
|
190
|
+
return 0;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
shuffle() {
|
|
194
|
+
const arr = [...this.items];
|
|
195
|
+
for (let i = arr.length - 1; i > 0; i--) {
|
|
196
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
197
|
+
[arr[i], arr[j]] = [arr[j], arr[i]];
|
|
198
|
+
}
|
|
199
|
+
return new _List(arr);
|
|
200
|
+
}
|
|
201
|
+
unique() {
|
|
202
|
+
return new _List([...new Set(this.items)]);
|
|
203
|
+
}
|
|
204
|
+
uniqueBy(fn) {
|
|
205
|
+
const seen = /* @__PURE__ */ new Set();
|
|
206
|
+
const result = [];
|
|
207
|
+
for (const item of this.items) {
|
|
208
|
+
const key = fn(item);
|
|
209
|
+
if (!seen.has(key)) {
|
|
210
|
+
seen.add(key);
|
|
211
|
+
result.push(item);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return new _List(result);
|
|
215
|
+
}
|
|
216
|
+
groupBy(fn) {
|
|
217
|
+
const groups = /* @__PURE__ */ new Map();
|
|
218
|
+
for (const item of this.items) {
|
|
219
|
+
const key = fn(item);
|
|
220
|
+
const group = groups.get(key) || [];
|
|
221
|
+
group.push(item);
|
|
222
|
+
groups.set(key, group);
|
|
223
|
+
}
|
|
224
|
+
const result = /* @__PURE__ */ new Map();
|
|
225
|
+
for (const [key, items] of groups) {
|
|
226
|
+
result.set(key, new _List(items));
|
|
227
|
+
}
|
|
228
|
+
return new HoloMap(result);
|
|
229
|
+
}
|
|
230
|
+
partition(predicate) {
|
|
231
|
+
const pass = [];
|
|
232
|
+
const fail = [];
|
|
233
|
+
this.items.forEach((item, index) => {
|
|
234
|
+
if (predicate(item, index)) {
|
|
235
|
+
pass.push(item);
|
|
236
|
+
} else {
|
|
237
|
+
fail.push(item);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
return [new _List(pass), new _List(fail)];
|
|
241
|
+
}
|
|
242
|
+
zip(other) {
|
|
243
|
+
const length = Math.min(this.length, other.length);
|
|
244
|
+
const result = [];
|
|
245
|
+
for (let i = 0; i < length; i++) {
|
|
246
|
+
result.push([this.items[i], other.get(i)]);
|
|
247
|
+
}
|
|
248
|
+
return new _List(result);
|
|
249
|
+
}
|
|
250
|
+
zipWith(other, fn) {
|
|
251
|
+
return this.zip(other).map(([a, b]) => fn(a, b));
|
|
252
|
+
}
|
|
253
|
+
flatten() {
|
|
254
|
+
const result = [];
|
|
255
|
+
for (const item of this.items) {
|
|
256
|
+
if (item instanceof _List) {
|
|
257
|
+
result.push(...item.toArray());
|
|
258
|
+
} else if (Array.isArray(item)) {
|
|
259
|
+
result.push(...item);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return new _List(result);
|
|
263
|
+
}
|
|
264
|
+
sum() {
|
|
265
|
+
return this.reduce((acc, n) => acc + n, 0);
|
|
266
|
+
}
|
|
267
|
+
min() {
|
|
268
|
+
if (this.isEmpty) return void 0;
|
|
269
|
+
return Math.min(...this.items);
|
|
270
|
+
}
|
|
271
|
+
max() {
|
|
272
|
+
if (this.isEmpty) return void 0;
|
|
273
|
+
return Math.max(...this.items);
|
|
274
|
+
}
|
|
275
|
+
average() {
|
|
276
|
+
if (this.isEmpty) return void 0;
|
|
277
|
+
return this.sum() / this.length;
|
|
278
|
+
}
|
|
279
|
+
join(separator = ",") {
|
|
280
|
+
return this.items.join(separator);
|
|
281
|
+
}
|
|
282
|
+
toArray() {
|
|
283
|
+
return [...this.items];
|
|
284
|
+
}
|
|
285
|
+
toSet() {
|
|
286
|
+
return new HoloSet(this.items);
|
|
287
|
+
}
|
|
288
|
+
[Symbol.iterator]() {
|
|
289
|
+
return this.items[Symbol.iterator]();
|
|
290
|
+
}
|
|
291
|
+
toString() {
|
|
292
|
+
return `List(${this.items.join(", ")})`;
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
var HoloMap = class _HoloMap {
|
|
296
|
+
_map;
|
|
297
|
+
constructor(entries) {
|
|
298
|
+
this._map = entries instanceof Map ? entries : new Map(entries);
|
|
299
|
+
}
|
|
300
|
+
static of(...entries) {
|
|
301
|
+
return new _HoloMap(entries);
|
|
302
|
+
}
|
|
303
|
+
static from(entries) {
|
|
304
|
+
return new _HoloMap(entries);
|
|
305
|
+
}
|
|
306
|
+
static fromObject(obj) {
|
|
307
|
+
return new _HoloMap(Object.entries(obj));
|
|
308
|
+
}
|
|
309
|
+
get size() {
|
|
310
|
+
return this._map.size;
|
|
311
|
+
}
|
|
312
|
+
get isEmpty() {
|
|
313
|
+
return this._map.size === 0;
|
|
314
|
+
}
|
|
315
|
+
get(key) {
|
|
316
|
+
return this._map.get(key);
|
|
317
|
+
}
|
|
318
|
+
getOrDefault(key, defaultValue) {
|
|
319
|
+
return this._map.has(key) ? this._map.get(key) : defaultValue;
|
|
320
|
+
}
|
|
321
|
+
has(key) {
|
|
322
|
+
return this._map.has(key);
|
|
323
|
+
}
|
|
324
|
+
set(key, value) {
|
|
325
|
+
const newMap = new Map(this._map);
|
|
326
|
+
newMap.set(key, value);
|
|
327
|
+
return new _HoloMap(newMap);
|
|
328
|
+
}
|
|
329
|
+
delete(key) {
|
|
330
|
+
const newMap = new Map(this._map);
|
|
331
|
+
newMap.delete(key);
|
|
332
|
+
return new _HoloMap(newMap);
|
|
333
|
+
}
|
|
334
|
+
update(key, fn) {
|
|
335
|
+
return this.set(key, fn(this.get(key)));
|
|
336
|
+
}
|
|
337
|
+
merge(other) {
|
|
338
|
+
const newMap = new Map(this._map);
|
|
339
|
+
for (const [key, value] of other) {
|
|
340
|
+
newMap.set(key, value);
|
|
341
|
+
}
|
|
342
|
+
return new _HoloMap(newMap);
|
|
343
|
+
}
|
|
344
|
+
keys() {
|
|
345
|
+
return new List(this._map.keys());
|
|
346
|
+
}
|
|
347
|
+
values() {
|
|
348
|
+
return new List(this._map.values());
|
|
349
|
+
}
|
|
350
|
+
entries() {
|
|
351
|
+
return new List(this._map.entries());
|
|
352
|
+
}
|
|
353
|
+
map(fn) {
|
|
354
|
+
const entries = [];
|
|
355
|
+
for (const [key, value] of this._map) {
|
|
356
|
+
entries.push([key, fn(value, key)]);
|
|
357
|
+
}
|
|
358
|
+
return new _HoloMap(entries);
|
|
359
|
+
}
|
|
360
|
+
mapKeys(fn) {
|
|
361
|
+
const entries = [];
|
|
362
|
+
for (const [key, value] of this._map) {
|
|
363
|
+
entries.push([fn(key, value), value]);
|
|
364
|
+
}
|
|
365
|
+
return new _HoloMap(entries);
|
|
366
|
+
}
|
|
367
|
+
filter(predicate) {
|
|
368
|
+
const entries = [];
|
|
369
|
+
for (const [key, value] of this._map) {
|
|
370
|
+
if (predicate(value, key)) {
|
|
371
|
+
entries.push([key, value]);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return new _HoloMap(entries);
|
|
375
|
+
}
|
|
376
|
+
reduce(fn, initial) {
|
|
377
|
+
let acc = initial;
|
|
378
|
+
for (const [key, value] of this._map) {
|
|
379
|
+
acc = fn(acc, value, key);
|
|
380
|
+
}
|
|
381
|
+
return acc;
|
|
382
|
+
}
|
|
383
|
+
forEach(fn) {
|
|
384
|
+
this._map.forEach(fn);
|
|
385
|
+
}
|
|
386
|
+
find(predicate) {
|
|
387
|
+
for (const [key, value] of this._map) {
|
|
388
|
+
if (predicate(value, key)) {
|
|
389
|
+
return [key, value];
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
return void 0;
|
|
393
|
+
}
|
|
394
|
+
some(predicate) {
|
|
395
|
+
for (const [key, value] of this._map) {
|
|
396
|
+
if (predicate(value, key)) return true;
|
|
397
|
+
}
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
every(predicate) {
|
|
401
|
+
for (const [key, value] of this._map) {
|
|
402
|
+
if (!predicate(value, key)) return false;
|
|
403
|
+
}
|
|
404
|
+
return true;
|
|
405
|
+
}
|
|
406
|
+
toObject() {
|
|
407
|
+
const obj = {};
|
|
408
|
+
for (const [key, value] of this._map) {
|
|
409
|
+
obj[key] = value;
|
|
410
|
+
}
|
|
411
|
+
return obj;
|
|
412
|
+
}
|
|
413
|
+
toNativeMap() {
|
|
414
|
+
return new Map(this._map);
|
|
415
|
+
}
|
|
416
|
+
[Symbol.iterator]() {
|
|
417
|
+
return this._map[Symbol.iterator]();
|
|
418
|
+
}
|
|
419
|
+
toString() {
|
|
420
|
+
const entries = [...this._map].map(([k, v]) => `${k}: ${v}`).join(", ");
|
|
421
|
+
return `HoloMap { ${entries} }`;
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
var HoloSet = class _HoloSet {
|
|
425
|
+
set;
|
|
426
|
+
constructor(items) {
|
|
427
|
+
this.set = new Set(items);
|
|
428
|
+
}
|
|
429
|
+
static of(...items) {
|
|
430
|
+
return new _HoloSet(items);
|
|
431
|
+
}
|
|
432
|
+
static from(iterable) {
|
|
433
|
+
return new _HoloSet(iterable);
|
|
434
|
+
}
|
|
435
|
+
get size() {
|
|
436
|
+
return this.set.size;
|
|
437
|
+
}
|
|
438
|
+
get isEmpty() {
|
|
439
|
+
return this.set.size === 0;
|
|
440
|
+
}
|
|
441
|
+
has(item) {
|
|
442
|
+
return this.set.has(item);
|
|
443
|
+
}
|
|
444
|
+
add(item) {
|
|
445
|
+
const newSet = new Set(this.set);
|
|
446
|
+
newSet.add(item);
|
|
447
|
+
return new _HoloSet(newSet);
|
|
448
|
+
}
|
|
449
|
+
delete(item) {
|
|
450
|
+
const newSet = new Set(this.set);
|
|
451
|
+
newSet.delete(item);
|
|
452
|
+
return new _HoloSet(newSet);
|
|
453
|
+
}
|
|
454
|
+
addAll(items) {
|
|
455
|
+
const newSet = new Set(this.set);
|
|
456
|
+
for (const item of items) {
|
|
457
|
+
newSet.add(item);
|
|
458
|
+
}
|
|
459
|
+
return new _HoloSet(newSet);
|
|
460
|
+
}
|
|
461
|
+
union(other) {
|
|
462
|
+
return this.addAll(other);
|
|
463
|
+
}
|
|
464
|
+
intersection(other) {
|
|
465
|
+
const result = /* @__PURE__ */ new Set();
|
|
466
|
+
for (const item of this.set) {
|
|
467
|
+
if (other.has(item)) {
|
|
468
|
+
result.add(item);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return new _HoloSet(result);
|
|
472
|
+
}
|
|
473
|
+
difference(other) {
|
|
474
|
+
const result = /* @__PURE__ */ new Set();
|
|
475
|
+
for (const item of this.set) {
|
|
476
|
+
if (!other.has(item)) {
|
|
477
|
+
result.add(item);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
return new _HoloSet(result);
|
|
481
|
+
}
|
|
482
|
+
symmetricDifference(other) {
|
|
483
|
+
return this.difference(other).union(other.difference(this));
|
|
484
|
+
}
|
|
485
|
+
isSubsetOf(other) {
|
|
486
|
+
for (const item of this.set) {
|
|
487
|
+
if (!other.has(item)) return false;
|
|
488
|
+
}
|
|
489
|
+
return true;
|
|
490
|
+
}
|
|
491
|
+
isSupersetOf(other) {
|
|
492
|
+
return other.isSubsetOf(this);
|
|
493
|
+
}
|
|
494
|
+
isDisjointFrom(other) {
|
|
495
|
+
return this.intersection(other).isEmpty;
|
|
496
|
+
}
|
|
497
|
+
map(fn) {
|
|
498
|
+
const result = /* @__PURE__ */ new Set();
|
|
499
|
+
for (const item of this.set) {
|
|
500
|
+
result.add(fn(item));
|
|
501
|
+
}
|
|
502
|
+
return new _HoloSet(result);
|
|
503
|
+
}
|
|
504
|
+
filter(predicate) {
|
|
505
|
+
const result = /* @__PURE__ */ new Set();
|
|
506
|
+
for (const item of this.set) {
|
|
507
|
+
if (predicate(item)) {
|
|
508
|
+
result.add(item);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return new _HoloSet(result);
|
|
512
|
+
}
|
|
513
|
+
reduce(fn, initial) {
|
|
514
|
+
let acc = initial;
|
|
515
|
+
for (const item of this.set) {
|
|
516
|
+
acc = fn(acc, item);
|
|
517
|
+
}
|
|
518
|
+
return acc;
|
|
519
|
+
}
|
|
520
|
+
forEach(fn) {
|
|
521
|
+
this.set.forEach(fn);
|
|
522
|
+
}
|
|
523
|
+
find(predicate) {
|
|
524
|
+
for (const item of this.set) {
|
|
525
|
+
if (predicate(item)) return item;
|
|
526
|
+
}
|
|
527
|
+
return void 0;
|
|
528
|
+
}
|
|
529
|
+
some(predicate) {
|
|
530
|
+
for (const item of this.set) {
|
|
531
|
+
if (predicate(item)) return true;
|
|
532
|
+
}
|
|
533
|
+
return false;
|
|
534
|
+
}
|
|
535
|
+
every(predicate) {
|
|
536
|
+
for (const item of this.set) {
|
|
537
|
+
if (!predicate(item)) return false;
|
|
538
|
+
}
|
|
539
|
+
return true;
|
|
540
|
+
}
|
|
541
|
+
toArray() {
|
|
542
|
+
return [...this.set];
|
|
543
|
+
}
|
|
544
|
+
toList() {
|
|
545
|
+
return new List(this.set);
|
|
546
|
+
}
|
|
547
|
+
toNativeSet() {
|
|
548
|
+
return new Set(this.set);
|
|
549
|
+
}
|
|
550
|
+
[Symbol.iterator]() {
|
|
551
|
+
return this.set[Symbol.iterator]();
|
|
552
|
+
}
|
|
553
|
+
toString() {
|
|
554
|
+
return `HoloSet { ${[...this.set].join(", ")} }`;
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
var SpatialGrid = class {
|
|
558
|
+
cellSize;
|
|
559
|
+
cells = /* @__PURE__ */ new Map();
|
|
560
|
+
constructor(cellSize) {
|
|
561
|
+
this.cellSize = cellSize;
|
|
562
|
+
}
|
|
563
|
+
getCellKey(x, y, z) {
|
|
564
|
+
const cx = Math.floor(x / this.cellSize);
|
|
565
|
+
const cy = Math.floor(y / this.cellSize);
|
|
566
|
+
const cz = Math.floor(z / this.cellSize);
|
|
567
|
+
return `${cx},${cy},${cz}`;
|
|
568
|
+
}
|
|
569
|
+
insert(position, item) {
|
|
570
|
+
const key = this.getCellKey(position.x, position.y, position.z);
|
|
571
|
+
if (!this.cells.has(key)) {
|
|
572
|
+
this.cells.set(key, []);
|
|
573
|
+
}
|
|
574
|
+
this.cells.get(key).push(item);
|
|
575
|
+
}
|
|
576
|
+
remove(position, item) {
|
|
577
|
+
const key = this.getCellKey(position.x, position.y, position.z);
|
|
578
|
+
const cell = this.cells.get(key);
|
|
579
|
+
if (!cell) return false;
|
|
580
|
+
const index = cell.indexOf(item);
|
|
581
|
+
if (index === -1) return false;
|
|
582
|
+
cell.splice(index, 1);
|
|
583
|
+
if (cell.length === 0) {
|
|
584
|
+
this.cells.delete(key);
|
|
585
|
+
}
|
|
586
|
+
return true;
|
|
587
|
+
}
|
|
588
|
+
query(center, radius) {
|
|
589
|
+
const results = [];
|
|
590
|
+
const cellRadius = Math.ceil(radius / this.cellSize);
|
|
591
|
+
const cx = Math.floor(center.x / this.cellSize);
|
|
592
|
+
const cy = Math.floor(center.y / this.cellSize);
|
|
593
|
+
const cz = Math.floor(center.z / this.cellSize);
|
|
594
|
+
for (let x = cx - cellRadius; x <= cx + cellRadius; x++) {
|
|
595
|
+
for (let y = cy - cellRadius; y <= cy + cellRadius; y++) {
|
|
596
|
+
for (let z = cz - cellRadius; z <= cz + cellRadius; z++) {
|
|
597
|
+
const cell = this.cells.get(`${x},${y},${z}`);
|
|
598
|
+
if (cell) {
|
|
599
|
+
results.push(...cell);
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
return results;
|
|
605
|
+
}
|
|
606
|
+
queryBox(min, max) {
|
|
607
|
+
const results = [];
|
|
608
|
+
const minCx = Math.floor(min.x / this.cellSize);
|
|
609
|
+
const minCy = Math.floor(min.y / this.cellSize);
|
|
610
|
+
const minCz = Math.floor(min.z / this.cellSize);
|
|
611
|
+
const maxCx = Math.floor(max.x / this.cellSize);
|
|
612
|
+
const maxCy = Math.floor(max.y / this.cellSize);
|
|
613
|
+
const maxCz = Math.floor(max.z / this.cellSize);
|
|
614
|
+
for (let x = minCx; x <= maxCx; x++) {
|
|
615
|
+
for (let y = minCy; y <= maxCy; y++) {
|
|
616
|
+
for (let z = minCz; z <= maxCz; z++) {
|
|
617
|
+
const cell = this.cells.get(`${x},${y},${z}`);
|
|
618
|
+
if (cell) {
|
|
619
|
+
results.push(...cell);
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
return results;
|
|
625
|
+
}
|
|
626
|
+
clear() {
|
|
627
|
+
this.cells.clear();
|
|
628
|
+
}
|
|
629
|
+
get cellCount() {
|
|
630
|
+
return this.cells.size;
|
|
631
|
+
}
|
|
632
|
+
get itemCount() {
|
|
633
|
+
let count = 0;
|
|
634
|
+
for (const cell of this.cells.values()) {
|
|
635
|
+
count += cell.length;
|
|
636
|
+
}
|
|
637
|
+
return count;
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
var PriorityQueue = class _PriorityQueue {
|
|
641
|
+
constructor(compareFn = (a, b) => a - b) {
|
|
642
|
+
this.compareFn = compareFn;
|
|
643
|
+
}
|
|
644
|
+
heap = [];
|
|
645
|
+
static minHeap() {
|
|
646
|
+
return new _PriorityQueue((a, b) => a - b);
|
|
647
|
+
}
|
|
648
|
+
static maxHeap() {
|
|
649
|
+
return new _PriorityQueue((a, b) => b - a);
|
|
650
|
+
}
|
|
651
|
+
get size() {
|
|
652
|
+
return this.heap.length;
|
|
653
|
+
}
|
|
654
|
+
get isEmpty() {
|
|
655
|
+
return this.heap.length === 0;
|
|
656
|
+
}
|
|
657
|
+
enqueue(item, priority) {
|
|
658
|
+
this.heap.push({ item, priority });
|
|
659
|
+
this.bubbleUp(this.heap.length - 1);
|
|
660
|
+
}
|
|
661
|
+
dequeue() {
|
|
662
|
+
if (this.isEmpty) return void 0;
|
|
663
|
+
const result = this.heap[0].item;
|
|
664
|
+
const last = this.heap.pop();
|
|
665
|
+
if (this.heap.length > 0) {
|
|
666
|
+
this.heap[0] = last;
|
|
667
|
+
this.bubbleDown(0);
|
|
668
|
+
}
|
|
669
|
+
return result;
|
|
670
|
+
}
|
|
671
|
+
peek() {
|
|
672
|
+
return this.heap[0]?.item;
|
|
673
|
+
}
|
|
674
|
+
peekPriority() {
|
|
675
|
+
return this.heap[0]?.priority;
|
|
676
|
+
}
|
|
677
|
+
clear() {
|
|
678
|
+
this.heap = [];
|
|
679
|
+
}
|
|
680
|
+
bubbleUp(index) {
|
|
681
|
+
while (index > 0) {
|
|
682
|
+
const parentIndex = Math.floor((index - 1) / 2);
|
|
683
|
+
if (this.compareFn(this.heap[index].priority, this.heap[parentIndex].priority) >= 0) break;
|
|
684
|
+
[this.heap[index], this.heap[parentIndex]] = [this.heap[parentIndex], this.heap[index]];
|
|
685
|
+
index = parentIndex;
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
bubbleDown(index) {
|
|
689
|
+
while (true) {
|
|
690
|
+
const leftChild = 2 * index + 1;
|
|
691
|
+
const rightChild = 2 * index + 2;
|
|
692
|
+
let smallest = index;
|
|
693
|
+
if (leftChild < this.heap.length && this.compareFn(this.heap[leftChild].priority, this.heap[smallest].priority) < 0) {
|
|
694
|
+
smallest = leftChild;
|
|
695
|
+
}
|
|
696
|
+
if (rightChild < this.heap.length && this.compareFn(this.heap[rightChild].priority, this.heap[smallest].priority) < 0) {
|
|
697
|
+
smallest = rightChild;
|
|
698
|
+
}
|
|
699
|
+
if (smallest === index) break;
|
|
700
|
+
[this.heap[index], this.heap[smallest]] = [this.heap[smallest], this.heap[index]];
|
|
701
|
+
index = smallest;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
};
|
|
705
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
706
|
+
0 && (module.exports = {
|
|
707
|
+
HoloMap,
|
|
708
|
+
HoloSet,
|
|
709
|
+
List,
|
|
710
|
+
Map,
|
|
711
|
+
PriorityQueue,
|
|
712
|
+
Set,
|
|
713
|
+
SpatialGrid
|
|
714
|
+
});
|
|
715
|
+
//# sourceMappingURL=collections.cjs.map
|