warpo 3.2.0 → 3.2.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.
Files changed (93) hide show
  1. package/assemblyscript/std/README.md +5 -0
  2. package/assemblyscript/std/assembly/array.ts +542 -0
  3. package/assemblyscript/std/assembly/arraybuffer.ts +72 -0
  4. package/assemblyscript/std/assembly/builtins.ts +2312 -0
  5. package/assemblyscript/std/assembly/compat.ts +2 -0
  6. package/assemblyscript/std/assembly/dataview.ts +144 -0
  7. package/assemblyscript/std/assembly/date.ts +383 -0
  8. package/assemblyscript/std/assembly/diagnostics.ts +11 -0
  9. package/assemblyscript/std/assembly/error.ts +39 -0
  10. package/assemblyscript/std/assembly/function.ts +44 -0
  11. package/assemblyscript/std/assembly/iterator.ts +24 -0
  12. package/assemblyscript/std/assembly/map.ts +304 -0
  13. package/assemblyscript/std/assembly/math.ts +3401 -0
  14. package/assemblyscript/std/assembly/memory.ts +110 -0
  15. package/assemblyscript/std/assembly/number.ts +388 -0
  16. package/assemblyscript/std/assembly/object.ts +30 -0
  17. package/assemblyscript/std/assembly/polyfills.ts +24 -0
  18. package/assemblyscript/std/assembly/process.ts +7 -0
  19. package/assemblyscript/std/assembly/promise.ts +172 -0
  20. package/assemblyscript/std/assembly/reference.ts +48 -0
  21. package/assemblyscript/std/assembly/regexp.ts +16 -0
  22. package/assemblyscript/std/assembly/rt/common.ts +79 -0
  23. package/assemblyscript/std/assembly/rt/index-incremental.ts +4 -0
  24. package/assemblyscript/std/assembly/rt/index-radical.ts +4 -0
  25. package/assemblyscript/std/assembly/rt/index.d.ts +37 -0
  26. package/assemblyscript/std/assembly/rt/itcms.ts +415 -0
  27. package/assemblyscript/std/assembly/rt/tcms.ts +276 -0
  28. package/assemblyscript/std/assembly/rt/tlsf.ts +564 -0
  29. package/assemblyscript/std/assembly/rt.ts +71 -0
  30. package/assemblyscript/std/assembly/set.ts +261 -0
  31. package/assemblyscript/std/assembly/shared/feature.ts +69 -0
  32. package/assemblyscript/std/assembly/shared/host.ts +12 -0
  33. package/assemblyscript/std/assembly/shared/runtime.ts +9 -0
  34. package/assemblyscript/std/assembly/shared/target.ts +9 -0
  35. package/assemblyscript/std/assembly/shared/tsconfig.json +9 -0
  36. package/assemblyscript/std/assembly/shared/typeinfo.ts +72 -0
  37. package/assemblyscript/std/assembly/staticarray.ts +446 -0
  38. package/assemblyscript/std/assembly/string.ts +892 -0
  39. package/assemblyscript/std/assembly/symbol.ts +61 -0
  40. package/assemblyscript/std/assembly/table.ts +15 -0
  41. package/assemblyscript/std/assembly/tsconfig.json +4 -0
  42. package/assemblyscript/std/assembly/tuple.ts +36 -0
  43. package/assemblyscript/std/assembly/typedarray.ts +2000 -0
  44. package/assemblyscript/std/assembly/uri.ts +17 -0
  45. package/assemblyscript/std/assembly/util/bytes.ts +90 -0
  46. package/assemblyscript/std/assembly/util/casemap.ts +264 -0
  47. package/assemblyscript/std/assembly/util/error.ts +54 -0
  48. package/assemblyscript/std/assembly/util/hash.ts +117 -0
  49. package/assemblyscript/std/assembly/util/math.ts +1922 -0
  50. package/assemblyscript/std/assembly/util/memory.ts +309 -0
  51. package/assemblyscript/std/assembly/util/number.ts +884 -0
  52. package/assemblyscript/std/assembly/util/sort.ts +282 -0
  53. package/assemblyscript/std/assembly/util/string.ts +1075 -0
  54. package/assemblyscript/std/assembly/util/uri.ts +251 -0
  55. package/assemblyscript/std/assembly/vector.ts +3 -0
  56. package/dist/debug_server/debugSession.d.ts +1 -0
  57. package/dist/debug_server/debugSession.js +15 -6
  58. package/dist/debug_server/debugSession.js.map +1 -1
  59. package/dist/debug_server/debuggerWasmModule.d.ts +3 -0
  60. package/dist/debug_server/debuggerWasmModule.js +47 -2
  61. package/dist/debug_server/debuggerWasmModule.js.map +1 -1
  62. package/dist/debug_server/tests/debugSession.test.js +96 -0
  63. package/dist/debug_server/tests/debugSession.test.js.map +1 -1
  64. package/dist/debug_server/tests/testModule/debugger_closure_stepping.d.ts +1 -0
  65. package/dist/debug_server/tests/testModule/debugger_closure_stepping.js +12 -0
  66. package/dist/debug_server/tests/testModule/debugger_closure_stepping.js.map +1 -0
  67. package/dist/debug_server/tests/testModule/debugger_std_array.d.ts +1 -0
  68. package/dist/debug_server/tests/testModule/debugger_std_array.js +6 -0
  69. package/dist/debug_server/tests/testModule/debugger_std_array.js.map +1 -0
  70. package/dist/debug_server/tests/testModule/debugger_string_stepping.d.ts +1 -0
  71. package/dist/debug_server/tests/testModule/debugger_string_stepping.js +9 -0
  72. package/dist/debug_server/tests/testModule/debugger_string_stepping.js.map +1 -0
  73. package/package.json +7 -7
  74. package/warpo_extension/std/tsconfig.json +4 -0
  75. package/warpo_extension/std/warpo/ffi.ts +16 -0
  76. package/warpo_extension/std/warpo/test/comparison.ts +122 -0
  77. package/warpo_extension/std/warpo/test/env.ts +33 -0
  78. package/warpo_extension/std/warpo/test/expect.ts +101 -0
  79. package/warpo_extension/std/warpo/test/formatPrint.ts +99 -0
  80. package/warpo_extension/std/warpo/test/implement.ts +41 -0
  81. package/warpo_extension/std/warpo/test/index.d.ts +0 -0
  82. package/warpo_extension/std/warpo/test/index.ts +39 -0
  83. package/warpo_extension/std/warpo/test/mockInstrument.ts +26 -0
  84. package/warpo_extension/std/warpo/utf8/const_str.ts +17 -0
  85. package/warpo_extension/std/wasi_snapshot_preview1/LICENSE +202 -0
  86. package/warpo_extension/std/wasi_snapshot_preview1/README.md +1 -0
  87. package/warpo_extension/std/wasi_snapshot_preview1/bindings/wasi_snapshot_preview1.ts +1731 -0
  88. package/warpo_extension/std/wasi_snapshot_preview1/wasi_console.ts +96 -0
  89. package/warpo_extension/std/wasi_snapshot_preview1/wasi_crypto.ts +8 -0
  90. package/warpo_extension/std/wasi_snapshot_preview1/wasi_date.ts +13 -0
  91. package/warpo_extension/std/wasi_snapshot_preview1/wasi_internal.ts +119 -0
  92. package/warpo_extension/std/wasi_snapshot_preview1/wasi_performance.ts +11 -0
  93. package/warpo_extension/std/wasi_snapshot_preview1/wasi_process.ts +191 -0
@@ -0,0 +1,2000 @@
1
+ import { COMPARATOR, SORT } from "./util/sort";
2
+ import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_NOTIMPLEMENTED } from "./util/error";
3
+ import { joinIntegerArray, joinFloatArray } from "./util/string";
4
+ import { REVERSE, FILL } from "./util/bytes";
5
+ import { idof } from "./builtins";
6
+ import { ArrayBufferView } from "./arraybuffer";
7
+
8
+ class TypedArrayIterator<TArray extends ArrayLike<T>, T> implements Iterator<T> {
9
+ current: i32 = 0;
10
+ constructor(private readonly array: TArray) {}
11
+ next(): IteratorResult<T> {
12
+ const current = this.current;
13
+ if (current >= this.array.length) return IteratorResult.done<T>();
14
+ ++this.current;
15
+ return IteratorResult.fromValue<T>(unchecked(this.array[current]));
16
+ }
17
+ }
18
+
19
+ export class Int8Array extends ArrayBufferView implements Iterable<i8> {
20
+ [key: number]: i8;
21
+
22
+ // @ts-ignore: decorator
23
+ @lazy
24
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<i8>();
25
+
26
+ constructor(length: i32) {
27
+ super(length, alignof<i8>());
28
+ }
29
+
30
+ get length(): i32 {
31
+ return this.byteLength;
32
+ }
33
+
34
+ @operator("[]")
35
+ private __get(index: i32): i8 {
36
+ if (<u32>index >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
37
+ return load<i8>(this.dataStart + <usize>index);
38
+ }
39
+
40
+ @unsafe @operator("{}")
41
+ private __uget(index: i32): i8 {
42
+ return load<i8>(this.dataStart + <usize>index);
43
+ }
44
+
45
+ @operator("[]=")
46
+ private __set(index: i32, value: native<i8>): void {
47
+ if (<u32>index >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
48
+ store<i8>(this.dataStart + <usize>index, value);
49
+ }
50
+
51
+ @unsafe @operator("{}=")
52
+ private __uset(index: i32, value: native<i8>): void {
53
+ store<i8>(this.dataStart + <usize>index, value);
54
+ }
55
+
56
+ at(index: i32): i8 {
57
+ let len = this.byteLength;
58
+ index += select(0, len, index >= 0);
59
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
60
+ return load<i8>(this.dataStart + <usize>index);
61
+ }
62
+
63
+ includes(searchElement: i8, fromIndex: i32 = 0): bool {
64
+ return INCLUDES<Int8Array, i8>(this, searchElement, fromIndex);
65
+ }
66
+
67
+ indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {
68
+ return INDEX_OF<Int8Array, i8>(this, searchElement, fromIndex);
69
+ }
70
+
71
+ lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {
72
+ return LAST_INDEX_OF<Int8Array, i8>(this, searchElement, fromIndex);
73
+ }
74
+
75
+ fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {
76
+ FILL<u8>(this.dataStart, this.length, u8(value), start, end);
77
+ return this;
78
+ }
79
+
80
+ sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR<i8>()): Int8Array {
81
+ SORT<i8>(this.dataStart, this.length, comparator);
82
+ return this;
83
+ }
84
+
85
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {
86
+ return SLICE<Int8Array, i8>(this, begin, end);
87
+ }
88
+
89
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {
90
+ return SUBARRAY<Int8Array, i8>(this, begin, end);
91
+ }
92
+
93
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int8Array {
94
+ return COPY_WITHIN<Int8Array, i8>(this, target, start, end);
95
+ }
96
+
97
+ reduce<T extends number>(
98
+ fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,
99
+ initialValue: T,
100
+ ): T {
101
+ return REDUCE<Int8Array, i8, T>(this, fn, initialValue);
102
+ }
103
+
104
+ reduceRight<T extends number>(
105
+ fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,
106
+ initialValue: T,
107
+ ): T {
108
+ return REDUCE_RIGHT<Int8Array, i8, T>(this, fn, initialValue);
109
+ }
110
+
111
+ map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {
112
+ return MAP<Int8Array, i8>(this, fn);
113
+ }
114
+
115
+ filter(fn: (value: i8, index: i32, self: Int8Array) => bool): Int8Array {
116
+ return FILTER<Int8Array, i8>(this, fn);
117
+ }
118
+
119
+ findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {
120
+ return FIND_INDEX<Int8Array, i8>(this, fn);
121
+ }
122
+
123
+ findLastIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {
124
+ return FIND_LAST_INDEX<Int8Array, i8>(this, fn);
125
+ }
126
+
127
+ some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {
128
+ return SOME<Int8Array, i8>(this, fn);
129
+ }
130
+
131
+ every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {
132
+ return EVERY<Int8Array, i8>(this, fn);
133
+ }
134
+
135
+ forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {
136
+ FOREACH<Int8Array, i8>(this, fn);
137
+ }
138
+
139
+ reverse(): Int8Array {
140
+ REVERSE<u8>(this.dataStart, this.length);
141
+ return this;
142
+ }
143
+
144
+ join(separator: string = ","): string {
145
+ return joinIntegerArray<i8>(this.dataStart, this.length, separator);
146
+ }
147
+
148
+ toString(): string {
149
+ return this.join();
150
+ }
151
+
152
+ [Symbol.iterator](): TypedArrayIterator<Int8Array, i8> {
153
+ return new TypedArrayIterator<Int8Array, i8>(this);
154
+ }
155
+
156
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
157
+ SET(this, source, offset);
158
+ }
159
+
160
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {
161
+ return WRAP<Int8Array, i8>(buffer, byteOffset, length);
162
+ }
163
+ }
164
+
165
+ export class Uint8Array extends ArrayBufferView implements Iterable<u8> {
166
+ [key: number]: u8;
167
+
168
+ // @ts-ignore: decorator
169
+ @lazy
170
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<u8>();
171
+
172
+ constructor(length: i32) {
173
+ super(length, alignof<u8>());
174
+ }
175
+
176
+ get length(): i32 {
177
+ return this.byteLength;
178
+ }
179
+
180
+ @operator("[]")
181
+ private __get(index: i32): u8 {
182
+ if (<u32>index >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
183
+ return load<u8>(this.dataStart + <usize>index);
184
+ }
185
+
186
+ @unsafe @operator("{}")
187
+ private __uget(index: i32): u8 {
188
+ return load<u8>(this.dataStart + <usize>index);
189
+ }
190
+
191
+ @operator("[]=")
192
+ private __set(index: i32, value: native<u8>): void {
193
+ if (<u32>index >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
194
+ store<u8>(this.dataStart + <usize>index, value);
195
+ }
196
+
197
+ @unsafe @operator("{}=")
198
+ private __uset(index: i32, value: native<u8>): void {
199
+ store<u8>(this.dataStart + <usize>index, value);
200
+ }
201
+
202
+ at(index: i32): u8 {
203
+ let len = this.byteLength;
204
+ index += select(0, len, index >= 0);
205
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
206
+ return load<u8>(this.dataStart + <usize>index);
207
+ }
208
+
209
+ includes(searchElement: u8, fromIndex: i32 = 0): bool {
210
+ return INCLUDES<Uint8Array, u8>(this, searchElement, fromIndex);
211
+ }
212
+
213
+ indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {
214
+ return INDEX_OF<Uint8Array, u8>(this, searchElement, fromIndex);
215
+ }
216
+
217
+ lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {
218
+ return LAST_INDEX_OF<Uint8Array, u8>(this, searchElement, fromIndex);
219
+ }
220
+
221
+ fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {
222
+ FILL<u8>(this.dataStart, this.length, u8(value), start, end);
223
+ return this;
224
+ }
225
+
226
+ sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR<u8>()): Uint8Array {
227
+ SORT<u8>(this.dataStart, this.length, comparator);
228
+ return this;
229
+ }
230
+
231
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {
232
+ return SLICE<Uint8Array, u8>(this, begin, end);
233
+ }
234
+
235
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {
236
+ return SUBARRAY<Uint8Array, u8>(this, begin, end);
237
+ }
238
+
239
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint8Array {
240
+ return COPY_WITHIN<Uint8Array, u8>(this, target, start, end);
241
+ }
242
+
243
+ reduce<T extends number>(
244
+ fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,
245
+ initialValue: T,
246
+ ): T {
247
+ return REDUCE<Uint8Array, u8, T>(this, fn, initialValue);
248
+ }
249
+
250
+ reduceRight<T extends number>(
251
+ fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,
252
+ initialValue: T,
253
+ ): T {
254
+ return REDUCE_RIGHT<Uint8Array, u8, T>(this, fn, initialValue);
255
+ }
256
+
257
+ map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {
258
+ return MAP<Uint8Array, u8>(this, fn);
259
+ }
260
+
261
+ filter(fn: (value: u8, index: i32, self: Uint8Array) => bool): Uint8Array {
262
+ return FILTER<Uint8Array, u8>(this, fn);
263
+ }
264
+
265
+ findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {
266
+ return FIND_INDEX<Uint8Array, u8>(this, fn);
267
+ }
268
+
269
+ findLastIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {
270
+ return FIND_LAST_INDEX<Uint8Array, u8>(this, fn);
271
+ }
272
+
273
+ some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {
274
+ return SOME<Uint8Array, u8>(this, fn);
275
+ }
276
+
277
+ every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {
278
+ return EVERY<Uint8Array, u8>(this, fn);
279
+ }
280
+
281
+ forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {
282
+ FOREACH<Uint8Array, u8>(this, fn);
283
+ }
284
+
285
+ reverse(): Uint8Array {
286
+ REVERSE<u8>(this.dataStart, this.length);
287
+ return this;
288
+ }
289
+
290
+ join(separator: string = ","): string {
291
+ return joinIntegerArray<u8>(this.dataStart, this.length, separator);
292
+ }
293
+
294
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
295
+ SET(this, source, offset);
296
+ }
297
+
298
+ toString(): string {
299
+ return this.join();
300
+ }
301
+
302
+ [Symbol.iterator](): TypedArrayIterator<Uint8Array, u8> {
303
+ return new TypedArrayIterator<Uint8Array, u8>(this);
304
+ }
305
+
306
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {
307
+ return WRAP<Uint8Array, u8>(buffer, byteOffset, length);
308
+ }
309
+ }
310
+
311
+ export class Uint8ClampedArray extends ArrayBufferView implements Iterable<u8> {
312
+ [key: number]: u8;
313
+
314
+ // @ts-ignore: decorator
315
+ @lazy
316
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<u8>();
317
+
318
+ constructor(length: i32) {
319
+ super(length, alignof<u8>());
320
+ }
321
+
322
+ get length(): i32 {
323
+ return this.byteLength;
324
+ }
325
+
326
+ @operator("[]")
327
+ private __get(index: i32): u8 {
328
+ if (<u32>index >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
329
+ return load<u8>(this.dataStart + <usize>index);
330
+ }
331
+
332
+ @unsafe @operator("{}")
333
+ private __uget(index: i32): u8 {
334
+ return load<u8>(this.dataStart + <usize>index);
335
+ }
336
+
337
+ @operator("[]=")
338
+ private __set(index: i32, value: native<u8>): void {
339
+ if (<u32>index >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
340
+ store<u8>(this.dataStart + <usize>index, ~(<i32>value >> 31) & (((255 - value) >> 31) | value));
341
+ }
342
+
343
+ @unsafe @operator("{}=")
344
+ private __uset(index: i32, value: native<u8>): void {
345
+ store<u8>(this.dataStart + <usize>index, ~(<i32>value >> 31) & (((255 - value) >> 31) | value));
346
+ }
347
+
348
+ at(index: i32): u8 {
349
+ let len = this.byteLength;
350
+ index += select(0, len, index >= 0);
351
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
352
+ return load<u8>(this.dataStart + <usize>index);
353
+ }
354
+
355
+ includes(searchElement: u8, fromIndex: i32 = 0): bool {
356
+ return INCLUDES<Uint8ClampedArray, u8>(this, searchElement, fromIndex);
357
+ }
358
+
359
+ indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {
360
+ return INDEX_OF<Uint8ClampedArray, u8>(this, searchElement, fromIndex);
361
+ }
362
+
363
+ lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {
364
+ return LAST_INDEX_OF<Uint8ClampedArray, u8>(this, searchElement, fromIndex);
365
+ }
366
+
367
+ fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {
368
+ value = ~(value >> 31) & (((255 - value) >> 31) | value);
369
+ FILL<u8>(this.dataStart, this.length, u8(value), start, end);
370
+ return this;
371
+ }
372
+
373
+ sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR<u8>()): Uint8ClampedArray {
374
+ SORT<u8>(this.dataStart, this.length, comparator);
375
+ return this;
376
+ }
377
+
378
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {
379
+ return SLICE<Uint8ClampedArray, u8>(this, begin, end);
380
+ }
381
+
382
+ subarray(start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {
383
+ return SUBARRAY<Uint8ClampedArray, u8>(this, start, end);
384
+ }
385
+
386
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {
387
+ return COPY_WITHIN<Uint8ClampedArray, u8>(this, target, start, end);
388
+ }
389
+
390
+ reduce<T extends number>(
391
+ fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,
392
+ initialValue: T,
393
+ ): T {
394
+ return REDUCE<Uint8ClampedArray, u8, T>(this, fn, initialValue);
395
+ }
396
+
397
+ reduceRight<T extends number>(
398
+ fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,
399
+ initialValue: T,
400
+ ): T {
401
+ return REDUCE_RIGHT<Uint8ClampedArray, u8, T>(this, fn, initialValue);
402
+ }
403
+
404
+ map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {
405
+ return MAP<Uint8ClampedArray, u8>(this, fn);
406
+ }
407
+
408
+ filter(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): Uint8ClampedArray {
409
+ return FILTER<Uint8ClampedArray, u8>(this, fn);
410
+ }
411
+
412
+ findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {
413
+ return FIND_INDEX<Uint8ClampedArray, u8>(this, fn);
414
+ }
415
+
416
+ findLastIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {
417
+ return FIND_LAST_INDEX<Uint8ClampedArray, u8>(this, fn);
418
+ }
419
+
420
+ some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {
421
+ return SOME<Uint8ClampedArray, u8>(this, fn);
422
+ }
423
+
424
+ every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {
425
+ return EVERY<Uint8ClampedArray, u8>(this, fn);
426
+ }
427
+
428
+ forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {
429
+ FOREACH<Uint8ClampedArray, u8>(this, fn);
430
+ }
431
+
432
+ reverse(): Uint8ClampedArray {
433
+ REVERSE<u8>(this.dataStart, this.length);
434
+ return this;
435
+ }
436
+
437
+ join(separator: string = ","): string {
438
+ return joinIntegerArray<u8>(this.dataStart, this.length, separator);
439
+ }
440
+
441
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
442
+ SET(this, source, offset);
443
+ }
444
+
445
+ toString(): string {
446
+ return this.join();
447
+ }
448
+
449
+ [Symbol.iterator](): TypedArrayIterator<Uint8ClampedArray, u8> {
450
+ return new TypedArrayIterator<Uint8ClampedArray, u8>(this);
451
+ }
452
+
453
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {
454
+ return WRAP<Uint8ClampedArray, u8>(buffer, byteOffset, length);
455
+ }
456
+ }
457
+
458
+ export class Int16Array extends ArrayBufferView implements Iterable<i16> {
459
+ [key: number]: i16;
460
+
461
+ // @ts-ignore: decorator
462
+ @lazy
463
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<i16>();
464
+
465
+ constructor(length: i32) {
466
+ super(length, alignof<i16>());
467
+ }
468
+
469
+ get length(): i32 {
470
+ return this.byteLength >>> alignof<i16>();
471
+ }
472
+
473
+ @operator("[]")
474
+ private __get(index: i32): i16 {
475
+ if (<u32>index >= <u32>this.byteLength >>> alignof<i16>()) throw new RangeError(E_INDEXOUTOFRANGE);
476
+ return load<i16>(this.dataStart + (<usize>index << alignof<i16>()));
477
+ }
478
+
479
+ @unsafe @operator("{}")
480
+ private __uget(index: i32): i16 {
481
+ return load<i16>(this.dataStart + (<usize>index << alignof<i16>()));
482
+ }
483
+
484
+ @operator("[]=")
485
+ private __set(index: i32, value: native<i16>): void {
486
+ if (<u32>index >= <u32>this.byteLength >>> alignof<i16>()) throw new RangeError(E_INDEXOUTOFRANGE);
487
+ store<i16>(this.dataStart + (<usize>index << alignof<i16>()), value);
488
+ }
489
+
490
+ @unsafe @operator("{}=")
491
+ private __uset(index: i32, value: native<i16>): void {
492
+ store<i16>(this.dataStart + (<usize>index << alignof<i16>()), value);
493
+ }
494
+
495
+ at(index: i32): i16 {
496
+ let len = this.byteLength >>> alignof<i16>();
497
+ index += select(0, len, index >= 0);
498
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
499
+ return load<i16>(this.dataStart + (<usize>index << alignof<i16>()));
500
+ }
501
+
502
+ includes(searchElement: i16, fromIndex: i32 = 0): bool {
503
+ return INCLUDES<Int16Array, i16>(this, searchElement, fromIndex);
504
+ }
505
+
506
+ indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {
507
+ return INDEX_OF<Int16Array, i16>(this, searchElement, fromIndex);
508
+ }
509
+
510
+ lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {
511
+ return LAST_INDEX_OF<Int16Array, i16>(this, searchElement, fromIndex);
512
+ }
513
+
514
+ fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {
515
+ FILL<u16>(this.dataStart, this.length, u16(value), start, end);
516
+ return this;
517
+ }
518
+
519
+ sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR<i16>()): Int16Array {
520
+ SORT<i16>(this.dataStart, this.length, comparator);
521
+ return this;
522
+ }
523
+
524
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {
525
+ return SLICE<Int16Array, i16>(this, begin, end);
526
+ }
527
+
528
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {
529
+ return SUBARRAY<Int16Array, i16>(this, begin, end);
530
+ }
531
+
532
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int16Array {
533
+ return COPY_WITHIN<Int16Array, i16>(this, target, start, end);
534
+ }
535
+
536
+ reduce<T extends number>(
537
+ fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,
538
+ initialValue: T,
539
+ ): T {
540
+ return REDUCE<Int16Array, i16, T>(this, fn, initialValue);
541
+ }
542
+
543
+ reduceRight<T extends number>(
544
+ fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,
545
+ initialValue: T,
546
+ ): T {
547
+ return REDUCE_RIGHT<Int16Array, i16, T>(this, fn, initialValue);
548
+ }
549
+
550
+ map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {
551
+ return MAP<Int16Array, i16>(this, fn);
552
+ }
553
+
554
+ filter(fn: (value: i16, index: i32, self: Int16Array) => bool): Int16Array {
555
+ return FILTER<Int16Array, i16>(this, fn);
556
+ }
557
+
558
+ findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {
559
+ return FIND_INDEX<Int16Array, i16>(this, fn);
560
+ }
561
+
562
+ findLastIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {
563
+ return FIND_LAST_INDEX<Int16Array, i16>(this, fn);
564
+ }
565
+
566
+ some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {
567
+ return SOME<Int16Array, i16>(this, fn);
568
+ }
569
+
570
+ every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {
571
+ return EVERY<Int16Array, i16>(this, fn);
572
+ }
573
+
574
+ forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {
575
+ FOREACH<Int16Array, i16>(this, fn);
576
+ }
577
+
578
+ reverse(): Int16Array {
579
+ REVERSE<u16>(this.dataStart, this.length);
580
+ return this;
581
+ }
582
+
583
+ join(separator: string = ","): string {
584
+ return joinIntegerArray<i16>(this.dataStart, this.length, separator);
585
+ }
586
+
587
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
588
+ SET(this, source, offset);
589
+ }
590
+
591
+ toString(): string {
592
+ return this.join();
593
+ }
594
+
595
+ [Symbol.iterator](): TypedArrayIterator<Int16Array, i16> {
596
+ return new TypedArrayIterator<Int16Array, i16>(this);
597
+ }
598
+
599
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {
600
+ return WRAP<Int16Array, i16>(buffer, byteOffset, length);
601
+ }
602
+ }
603
+
604
+ export class Uint16Array extends ArrayBufferView implements Iterable<u16> {
605
+ [key: number]: u16;
606
+
607
+ // @ts-ignore: decorator
608
+ @lazy
609
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<u16>();
610
+
611
+ constructor(length: i32) {
612
+ super(length, alignof<u16>());
613
+ }
614
+
615
+ get length(): i32 {
616
+ return this.byteLength >>> alignof<u16>();
617
+ }
618
+
619
+ @operator("[]")
620
+ private __get(index: i32): u16 {
621
+ if (<u32>index >= <u32>this.byteLength >>> alignof<u16>()) throw new RangeError(E_INDEXOUTOFRANGE);
622
+ return load<u16>(this.dataStart + (<usize>index << alignof<u16>()));
623
+ }
624
+
625
+ @unsafe @operator("{}")
626
+ private __uget(index: i32): u16 {
627
+ return load<u16>(this.dataStart + (<usize>index << alignof<u16>()));
628
+ }
629
+
630
+ @operator("[]=")
631
+ private __set(index: i32, value: native<u16>): void {
632
+ if (<u32>index >= <u32>this.byteLength >>> alignof<u16>()) throw new RangeError(E_INDEXOUTOFRANGE);
633
+ store<u16>(this.dataStart + (<usize>index << alignof<u16>()), value);
634
+ }
635
+
636
+ @unsafe @operator("{}=")
637
+ private __uset(index: i32, value: native<u16>): void {
638
+ store<u16>(this.dataStart + (<usize>index << alignof<u16>()), value);
639
+ }
640
+
641
+ at(index: i32): u16 {
642
+ let len = this.byteLength >>> alignof<u16>();
643
+ index += select(0, len, index >= 0);
644
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
645
+ return load<u16>(this.dataStart + (<usize>index << alignof<u16>()));
646
+ }
647
+
648
+ includes(searchElement: u16, fromIndex: i32 = 0): bool {
649
+ return INCLUDES<Uint16Array, u16>(this, searchElement, fromIndex);
650
+ }
651
+
652
+ indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {
653
+ return INDEX_OF<Uint16Array, u16>(this, searchElement, fromIndex);
654
+ }
655
+
656
+ lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {
657
+ return LAST_INDEX_OF<Uint16Array, u16>(this, searchElement, fromIndex);
658
+ }
659
+
660
+ fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {
661
+ FILL<u16>(this.dataStart, this.length, u16(value), start, end);
662
+ return this;
663
+ }
664
+
665
+ sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR<u16>()): Uint16Array {
666
+ SORT<u16>(this.dataStart, this.length, comparator);
667
+ return this;
668
+ }
669
+
670
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {
671
+ return SLICE<Uint16Array, u16>(this, begin, end);
672
+ }
673
+
674
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {
675
+ return SUBARRAY<Uint16Array, u16>(this, begin, end);
676
+ }
677
+
678
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint16Array {
679
+ return COPY_WITHIN<Uint16Array, u16>(this, target, start, end);
680
+ }
681
+
682
+ reduce<T extends number>(
683
+ fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,
684
+ initialValue: T,
685
+ ): T {
686
+ return REDUCE<Uint16Array, u16, T>(this, fn, initialValue);
687
+ }
688
+
689
+ reduceRight<T extends number>(
690
+ fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,
691
+ initialValue: T,
692
+ ): T {
693
+ return REDUCE_RIGHT<Uint16Array, u16, T>(this, fn, initialValue);
694
+ }
695
+
696
+ map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {
697
+ return MAP<Uint16Array, u16>(this, fn);
698
+ }
699
+
700
+ filter(fn: (value: u16, index: i32, self: Uint16Array) => bool): Uint16Array {
701
+ return FILTER<Uint16Array, u16>(this, fn);
702
+ }
703
+
704
+ findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {
705
+ return FIND_INDEX<Uint16Array, u16>(this, fn);
706
+ }
707
+
708
+ findLastIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {
709
+ return FIND_LAST_INDEX<Uint16Array, u16>(this, fn);
710
+ }
711
+
712
+ some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {
713
+ return SOME<Uint16Array, u16>(this, fn);
714
+ }
715
+
716
+ every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {
717
+ return EVERY<Uint16Array, u16>(this, fn);
718
+ }
719
+
720
+ forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {
721
+ FOREACH<Uint16Array, u16>(this, fn);
722
+ }
723
+
724
+ reverse(): Uint16Array {
725
+ REVERSE<u16>(this.dataStart, this.length);
726
+ return this;
727
+ }
728
+
729
+ join(separator: string = ","): string {
730
+ return joinIntegerArray<u16>(this.dataStart, this.length, separator);
731
+ }
732
+
733
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
734
+ SET(this, source, offset);
735
+ }
736
+
737
+ toString(): string {
738
+ return this.join();
739
+ }
740
+
741
+ [Symbol.iterator](): TypedArrayIterator<Uint16Array, u16> {
742
+ return new TypedArrayIterator<Uint16Array, u16>(this);
743
+ }
744
+
745
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {
746
+ return WRAP<Uint16Array, u16>(buffer, byteOffset, length);
747
+ }
748
+ }
749
+
750
+ export class Int32Array extends ArrayBufferView implements Iterable<i32> {
751
+ [key: number]: i32;
752
+
753
+ // @ts-ignore: decorator
754
+ @lazy
755
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<i32>();
756
+
757
+ constructor(length: i32) {
758
+ super(length, alignof<i32>());
759
+ }
760
+
761
+ get length(): i32 {
762
+ return this.byteLength >>> alignof<i32>();
763
+ }
764
+
765
+ @operator("[]")
766
+ private __get(index: i32): i32 {
767
+ if (<u32>index >= <u32>this.byteLength >>> alignof<i32>()) throw new RangeError(E_INDEXOUTOFRANGE);
768
+ return load<i32>(this.dataStart + (<usize>index << alignof<i32>()));
769
+ }
770
+
771
+ @unsafe @operator("{}")
772
+ private __uget(index: i32): i32 {
773
+ return load<i32>(this.dataStart + (<usize>index << alignof<i32>()));
774
+ }
775
+
776
+ @operator("[]=")
777
+ private __set(index: i32, value: i32): void {
778
+ if (<u32>index >= <u32>this.byteLength >>> alignof<i32>()) throw new RangeError(E_INDEXOUTOFRANGE);
779
+ store<i32>(this.dataStart + (<usize>index << alignof<i32>()), value);
780
+ }
781
+
782
+ @unsafe @operator("{}=")
783
+ private __uset(index: i32, value: i32): void {
784
+ store<i32>(this.dataStart + (<usize>index << alignof<i32>()), value);
785
+ }
786
+
787
+ at(index: i32): i32 {
788
+ let len = this.byteLength >>> alignof<i32>();
789
+ index += select(0, len, index >= 0);
790
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
791
+ return load<i32>(this.dataStart + (<usize>index << alignof<i32>()));
792
+ }
793
+
794
+ includes(searchElement: i32, fromIndex: i32 = 0): bool {
795
+ return INCLUDES<Int32Array, i32>(this, searchElement, fromIndex);
796
+ }
797
+
798
+ indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {
799
+ return INDEX_OF<Int32Array, i32>(this, searchElement, fromIndex);
800
+ }
801
+
802
+ lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {
803
+ return LAST_INDEX_OF<Int32Array, i32>(this, searchElement, fromIndex);
804
+ }
805
+
806
+ fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {
807
+ FILL<u32>(this.dataStart, this.length, u32(value), start, end);
808
+ return this;
809
+ }
810
+
811
+ sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR<i32>()): Int32Array {
812
+ SORT<i32>(this.dataStart, this.length, comparator);
813
+ return this;
814
+ }
815
+
816
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {
817
+ return SLICE<Int32Array, i32>(this, begin, end);
818
+ }
819
+
820
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {
821
+ return SUBARRAY<Int32Array, i32>(this, begin, end);
822
+ }
823
+
824
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int32Array {
825
+ return COPY_WITHIN<Int32Array, i32>(this, target, start, end);
826
+ }
827
+
828
+ reduce<T extends number>(
829
+ fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,
830
+ initialValue: T,
831
+ ): T {
832
+ return REDUCE<Int32Array, i32, T>(this, fn, initialValue);
833
+ }
834
+
835
+ reduceRight<T extends number>(
836
+ fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,
837
+ initialValue: T,
838
+ ): T {
839
+ return REDUCE_RIGHT<Int32Array, i32, T>(this, fn, initialValue);
840
+ }
841
+
842
+ map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {
843
+ return MAP<Int32Array, i32>(this, fn);
844
+ }
845
+
846
+ filter(fn: (value: i32, index: i32, self: Int32Array) => bool): Int32Array {
847
+ return FILTER<Int32Array, i32>(this, fn);
848
+ }
849
+
850
+ findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {
851
+ return FIND_INDEX<Int32Array, i32>(this, fn);
852
+ }
853
+
854
+ findLastIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {
855
+ return FIND_LAST_INDEX<Int32Array, i32>(this, fn);
856
+ }
857
+
858
+ some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {
859
+ return SOME<Int32Array, i32>(this, fn);
860
+ }
861
+
862
+ every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {
863
+ return EVERY<Int32Array, i32>(this, fn);
864
+ }
865
+
866
+ forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {
867
+ FOREACH<Int32Array, i32>(this, fn);
868
+ }
869
+
870
+ reverse(): Int32Array {
871
+ REVERSE<u32>(this.dataStart, this.length);
872
+ return this;
873
+ }
874
+
875
+ join(separator: string = ","): string {
876
+ return joinIntegerArray<i32>(this.dataStart, this.length, separator);
877
+ }
878
+
879
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
880
+ SET(this, source, offset);
881
+ }
882
+
883
+ toString(): string {
884
+ return this.join();
885
+ }
886
+
887
+ [Symbol.iterator](): TypedArrayIterator<Int32Array, i32> {
888
+ return new TypedArrayIterator<Int32Array, i32>(this);
889
+ }
890
+
891
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {
892
+ return WRAP<Int32Array, i32>(buffer, byteOffset, length);
893
+ }
894
+ }
895
+
896
+ export class Uint32Array extends ArrayBufferView implements Iterable<u32> {
897
+ [key: number]: u32;
898
+
899
+ // @ts-ignore: decorator
900
+ @lazy
901
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<u32>();
902
+
903
+ constructor(length: i32) {
904
+ super(length, alignof<u32>());
905
+ }
906
+
907
+ get length(): i32 {
908
+ return this.byteLength >>> alignof<u32>();
909
+ }
910
+
911
+ @operator("[]")
912
+ private __get(index: i32): u32 {
913
+ if (<u32>index >= <u32>this.byteLength >>> alignof<u32>()) throw new RangeError(E_INDEXOUTOFRANGE);
914
+ return load<u32>(this.dataStart + (<usize>index << alignof<u32>()));
915
+ }
916
+
917
+ @unsafe @operator("{}")
918
+ private __uget(index: i32): u32 {
919
+ return load<u32>(this.dataStart + (<usize>index << alignof<u32>()));
920
+ }
921
+
922
+ @operator("[]=")
923
+ private __set(index: i32, value: u32): void {
924
+ if (<u32>index >= <u32>this.byteLength >>> alignof<u32>()) throw new RangeError(E_INDEXOUTOFRANGE);
925
+ store<u32>(this.dataStart + (<usize>index << alignof<u32>()), value);
926
+ }
927
+
928
+ @unsafe @operator("{}=")
929
+ private __uset(index: i32, value: u32): void {
930
+ store<u32>(this.dataStart + (<usize>index << alignof<u32>()), value);
931
+ }
932
+
933
+ at(index: i32): u32 {
934
+ let len = this.byteLength >>> alignof<u32>();
935
+ index += select(0, len, index >= 0);
936
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
937
+ return load<u32>(this.dataStart + (<usize>index << alignof<u32>()));
938
+ }
939
+
940
+ includes(searchElement: u32, fromIndex: i32 = 0): bool {
941
+ return INCLUDES<Uint32Array, u32>(this, searchElement, fromIndex);
942
+ }
943
+
944
+ indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {
945
+ return INDEX_OF<Uint32Array, u32>(this, searchElement, fromIndex);
946
+ }
947
+
948
+ lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {
949
+ return LAST_INDEX_OF<Uint32Array, u32>(this, searchElement, fromIndex);
950
+ }
951
+
952
+ fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {
953
+ FILL<u32>(this.dataStart, this.length, value, start, end);
954
+ return this;
955
+ }
956
+
957
+ sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR<u32>()): Uint32Array {
958
+ SORT<u32>(this.dataStart, this.length, comparator);
959
+ return this;
960
+ }
961
+
962
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {
963
+ return SLICE<Uint32Array, u32>(this, begin, end);
964
+ }
965
+
966
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {
967
+ return SUBARRAY<Uint32Array, u32>(this, begin, end);
968
+ }
969
+
970
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint32Array {
971
+ return COPY_WITHIN<Uint32Array, u32>(this, target, start, end);
972
+ }
973
+
974
+ reduce<T extends number>(
975
+ fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,
976
+ initialValue: T,
977
+ ): T {
978
+ return REDUCE<Uint32Array, u32, T>(this, fn, initialValue);
979
+ }
980
+
981
+ reduceRight<T extends number>(
982
+ fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,
983
+ initialValue: T,
984
+ ): T {
985
+ return REDUCE_RIGHT<Uint32Array, u32, T>(this, fn, initialValue);
986
+ }
987
+
988
+ map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {
989
+ return MAP<Uint32Array, u32>(this, fn);
990
+ }
991
+
992
+ filter(fn: (value: u32, index: i32, self: Uint32Array) => bool): Uint32Array {
993
+ return FILTER<Uint32Array, u32>(this, fn);
994
+ }
995
+
996
+ findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {
997
+ return FIND_INDEX<Uint32Array, u32>(this, fn);
998
+ }
999
+
1000
+ findLastIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {
1001
+ return FIND_LAST_INDEX<Uint32Array, u32>(this, fn);
1002
+ }
1003
+
1004
+ some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {
1005
+ return SOME<Uint32Array, u32>(this, fn);
1006
+ }
1007
+
1008
+ every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {
1009
+ return EVERY<Uint32Array, u32>(this, fn);
1010
+ }
1011
+
1012
+ forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {
1013
+ FOREACH<Uint32Array, u32>(this, fn);
1014
+ }
1015
+
1016
+ reverse(): Uint32Array {
1017
+ REVERSE<u32>(this.dataStart, this.length);
1018
+ return this;
1019
+ }
1020
+
1021
+ join(separator: string = ","): string {
1022
+ return joinIntegerArray<u32>(this.dataStart, this.length, separator);
1023
+ }
1024
+
1025
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
1026
+ SET(this, source, offset);
1027
+ }
1028
+
1029
+ toString(): string {
1030
+ return this.join();
1031
+ }
1032
+
1033
+ [Symbol.iterator](): TypedArrayIterator<Uint32Array, u32> {
1034
+ return new TypedArrayIterator<Uint32Array, u32>(this);
1035
+ }
1036
+
1037
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {
1038
+ return WRAP<Uint32Array, u32>(buffer, byteOffset, length);
1039
+ }
1040
+ }
1041
+
1042
+ export class Int64Array extends ArrayBufferView implements Iterable<i64> {
1043
+ [key: number]: i64;
1044
+
1045
+ // @ts-ignore: decorator
1046
+ @lazy
1047
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<i64>();
1048
+
1049
+ constructor(length: i32) {
1050
+ super(length, alignof<i64>());
1051
+ }
1052
+
1053
+ get length(): i32 {
1054
+ return this.byteLength >>> alignof<i64>();
1055
+ }
1056
+
1057
+ @operator("[]")
1058
+ private __get(index: i32): i64 {
1059
+ if (<u32>index >= <u32>this.byteLength >>> alignof<i64>()) throw new RangeError(E_INDEXOUTOFRANGE);
1060
+ return load<i64>(this.dataStart + (<usize>index << alignof<i64>()));
1061
+ }
1062
+
1063
+ @unsafe @operator("{}")
1064
+ private __uget(index: i32): i64 {
1065
+ return load<i64>(this.dataStart + (<usize>index << alignof<i64>()));
1066
+ }
1067
+
1068
+ @operator("[]=")
1069
+ private __set(index: i32, value: i64): void {
1070
+ if (<u32>index >= <u32>this.byteLength >>> alignof<i64>()) throw new RangeError(E_INDEXOUTOFRANGE);
1071
+ store<i64>(this.dataStart + (<usize>index << alignof<i64>()), value);
1072
+ }
1073
+
1074
+ @unsafe @operator("{}=")
1075
+ private __uset(index: i32, value: i64): void {
1076
+ store<i64>(this.dataStart + (<usize>index << alignof<i64>()), value);
1077
+ }
1078
+
1079
+ at(index: i32): i64 {
1080
+ let len = this.byteLength >>> alignof<i64>();
1081
+ index += select(0, len, index >= 0);
1082
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
1083
+ return load<i64>(this.dataStart + (<usize>index << alignof<i64>()));
1084
+ }
1085
+
1086
+ includes(searchElement: i64, fromIndex: i32 = 0): bool {
1087
+ return INCLUDES<Int64Array, i64>(this, searchElement, fromIndex);
1088
+ }
1089
+
1090
+ indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {
1091
+ return INDEX_OF<Int64Array, i64>(this, searchElement, fromIndex);
1092
+ }
1093
+
1094
+ lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {
1095
+ return LAST_INDEX_OF<Int64Array, i64>(this, searchElement, fromIndex);
1096
+ }
1097
+
1098
+ fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {
1099
+ FILL<u64>(this.dataStart, this.length, u64(value), start, end);
1100
+ return this;
1101
+ }
1102
+
1103
+ sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR<i64>()): Int64Array {
1104
+ SORT<i64>(this.dataStart, this.length, comparator);
1105
+ return this;
1106
+ }
1107
+
1108
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {
1109
+ return SLICE<Int64Array, i64>(this, begin, end);
1110
+ }
1111
+
1112
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {
1113
+ return SUBARRAY<Int64Array, i64>(this, begin, end);
1114
+ }
1115
+
1116
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Int64Array {
1117
+ return COPY_WITHIN<Int64Array, i64>(this, target, start, end);
1118
+ }
1119
+
1120
+ reduce<T extends number>(
1121
+ fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,
1122
+ initialValue: T,
1123
+ ): T {
1124
+ return REDUCE<Int64Array, i64, T>(this, fn, initialValue);
1125
+ }
1126
+
1127
+ reduceRight<T extends number>(
1128
+ fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,
1129
+ initialValue: T,
1130
+ ): T {
1131
+ return REDUCE_RIGHT<Int64Array, i64, T>(this, fn, initialValue);
1132
+ }
1133
+
1134
+ map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {
1135
+ return MAP<Int64Array, i64>(this, fn);
1136
+ }
1137
+
1138
+ filter(fn: (value: i64, index: i32, self: Int64Array) => bool): Int64Array {
1139
+ return FILTER<Int64Array, i64>(this, fn);
1140
+ }
1141
+
1142
+ findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {
1143
+ return FIND_INDEX<Int64Array, i64>(this, fn);
1144
+ }
1145
+
1146
+ findLastIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {
1147
+ return FIND_LAST_INDEX<Int64Array, i64>(this, fn);
1148
+ }
1149
+
1150
+ some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {
1151
+ return SOME<Int64Array, i64>(this, fn);
1152
+ }
1153
+
1154
+ every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {
1155
+ return EVERY<Int64Array, i64>(this, fn);
1156
+ }
1157
+
1158
+ forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {
1159
+ FOREACH<Int64Array, i64>(this, fn);
1160
+ }
1161
+
1162
+ reverse(): Int64Array {
1163
+ REVERSE<u64>(this.dataStart, this.length);
1164
+ return this;
1165
+ }
1166
+
1167
+ join(separator: string = ","): string {
1168
+ return joinIntegerArray<i64>(this.dataStart, this.length, separator);
1169
+ }
1170
+
1171
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
1172
+ SET(this, source, offset);
1173
+ }
1174
+
1175
+ toString(): string {
1176
+ return this.join();
1177
+ }
1178
+
1179
+ [Symbol.iterator](): TypedArrayIterator<Int64Array, i64> {
1180
+ return new TypedArrayIterator<Int64Array, i64>(this);
1181
+ }
1182
+
1183
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {
1184
+ return WRAP<Int64Array, i64>(buffer, byteOffset, length);
1185
+ }
1186
+ }
1187
+
1188
+ export class Uint64Array extends ArrayBufferView implements Iterable<u64> {
1189
+ [key: number]: u64;
1190
+
1191
+ // @ts-ignore: decorator
1192
+ @lazy
1193
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<u64>();
1194
+
1195
+ constructor(length: i32) {
1196
+ super(length, alignof<u64>());
1197
+ }
1198
+
1199
+ get length(): i32 {
1200
+ return this.byteLength >>> alignof<u64>();
1201
+ }
1202
+
1203
+ @operator("[]")
1204
+ private __get(index: i32): u64 {
1205
+ if (<u32>index >= <u32>this.byteLength >>> alignof<u64>()) throw new RangeError(E_INDEXOUTOFRANGE);
1206
+ return load<u64>(this.dataStart + (<usize>index << alignof<u64>()));
1207
+ }
1208
+
1209
+ @unsafe @operator("{}")
1210
+ private __uget(index: i32): u64 {
1211
+ return load<u64>(this.dataStart + (<usize>index << alignof<u64>()));
1212
+ }
1213
+
1214
+ @operator("[]=")
1215
+ private __set(index: i32, value: u64): void {
1216
+ if (<u32>index >= <u32>this.byteLength >>> alignof<u64>()) throw new RangeError(E_INDEXOUTOFRANGE);
1217
+ store<u64>(this.dataStart + (<usize>index << alignof<u64>()), value);
1218
+ }
1219
+
1220
+ @unsafe @operator("{}=")
1221
+ private __uset(index: i32, value: u64): void {
1222
+ store<u64>(this.dataStart + (<usize>index << alignof<u64>()), value);
1223
+ }
1224
+
1225
+ at(index: i32): u64 {
1226
+ let len = this.byteLength >>> alignof<u64>();
1227
+ index += select(0, len, index >= 0);
1228
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
1229
+ return load<u64>(this.dataStart + (<usize>index << alignof<u64>()));
1230
+ }
1231
+
1232
+ includes(searchElement: u64, fromIndex: i32 = 0): bool {
1233
+ return INCLUDES<Uint64Array, u64>(this, searchElement, fromIndex);
1234
+ }
1235
+
1236
+ indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {
1237
+ return INDEX_OF<Uint64Array, u64>(this, searchElement, fromIndex);
1238
+ }
1239
+
1240
+ lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {
1241
+ return LAST_INDEX_OF<Uint64Array, u64>(this, searchElement, fromIndex);
1242
+ }
1243
+
1244
+ fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {
1245
+ FILL<u64>(this.dataStart, this.length, value, start, end);
1246
+ return this;
1247
+ }
1248
+
1249
+ sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR<u64>()): Uint64Array {
1250
+ SORT<u64>(this.dataStart, this.length, comparator);
1251
+ return this;
1252
+ }
1253
+
1254
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {
1255
+ return SLICE<Uint64Array, u64>(this, begin, end);
1256
+ }
1257
+
1258
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {
1259
+ return SUBARRAY<Uint64Array, u64>(this, begin, end);
1260
+ }
1261
+
1262
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Uint64Array {
1263
+ return COPY_WITHIN<Uint64Array, u64>(this, target, start, end);
1264
+ }
1265
+
1266
+ reduce<T extends number>(
1267
+ fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,
1268
+ initialValue: T,
1269
+ ): T {
1270
+ return REDUCE<Uint64Array, u64, T>(this, fn, initialValue);
1271
+ }
1272
+
1273
+ reduceRight<T extends number>(
1274
+ fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,
1275
+ initialValue: T,
1276
+ ): T {
1277
+ return REDUCE_RIGHT<Uint64Array, u64, T>(this, fn, initialValue);
1278
+ }
1279
+
1280
+ map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {
1281
+ return MAP<Uint64Array, u64>(this, fn);
1282
+ }
1283
+
1284
+ filter(fn: (value: u64, index: i32, self: Uint64Array) => bool): Uint64Array {
1285
+ return FILTER<Uint64Array, u64>(this, fn);
1286
+ }
1287
+
1288
+ findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {
1289
+ return FIND_INDEX<Uint64Array, u64>(this, fn);
1290
+ }
1291
+
1292
+ findLastIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {
1293
+ return FIND_LAST_INDEX<Uint64Array, u64>(this, fn);
1294
+ }
1295
+
1296
+ some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {
1297
+ return SOME<Uint64Array, u64>(this, fn);
1298
+ }
1299
+
1300
+ every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {
1301
+ return EVERY<Uint64Array, u64>(this, fn);
1302
+ }
1303
+
1304
+ forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {
1305
+ FOREACH<Uint64Array, u64>(this, fn);
1306
+ }
1307
+
1308
+ reverse(): Uint64Array {
1309
+ REVERSE<u64>(this.dataStart, this.length);
1310
+ return this;
1311
+ }
1312
+
1313
+ join(separator: string = ","): string {
1314
+ return joinIntegerArray<u64>(this.dataStart, this.length, separator);
1315
+ }
1316
+
1317
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
1318
+ SET(this, source, offset);
1319
+ }
1320
+
1321
+ toString(): string {
1322
+ return this.join();
1323
+ }
1324
+
1325
+ [Symbol.iterator](): TypedArrayIterator<Uint64Array, u64> {
1326
+ return new TypedArrayIterator<Uint64Array, u64>(this);
1327
+ }
1328
+
1329
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {
1330
+ return WRAP<Uint64Array, u64>(buffer, byteOffset, length);
1331
+ }
1332
+ }
1333
+
1334
+ export class Float32Array extends ArrayBufferView implements Iterable<f32> {
1335
+ [key: number]: f32;
1336
+
1337
+ // @ts-ignore: decorator
1338
+ @lazy
1339
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<f32>();
1340
+
1341
+ constructor(length: i32) {
1342
+ super(length, alignof<f32>());
1343
+ }
1344
+
1345
+ get length(): i32 {
1346
+ return this.byteLength >>> alignof<f32>();
1347
+ }
1348
+
1349
+ @operator("[]")
1350
+ private __get(index: i32): f32 {
1351
+ if (<u32>index >= <u32>this.byteLength >>> alignof<f32>()) throw new RangeError(E_INDEXOUTOFRANGE);
1352
+ return load<f32>(this.dataStart + (<usize>index << alignof<f32>()));
1353
+ }
1354
+
1355
+ @unsafe @operator("{}")
1356
+ private __uget(index: i32): f32 {
1357
+ return load<f32>(this.dataStart + (<usize>index << alignof<f32>()));
1358
+ }
1359
+
1360
+ @operator("[]=")
1361
+ private __set(index: i32, value: f32): void {
1362
+ if (<u32>index >= <u32>this.byteLength >>> alignof<f32>()) throw new RangeError(E_INDEXOUTOFRANGE);
1363
+ store<f32>(this.dataStart + (<usize>index << alignof<f32>()), value);
1364
+ }
1365
+
1366
+ @unsafe @operator("{}=")
1367
+ private __uset(index: i32, value: f32): void {
1368
+ store<f32>(this.dataStart + (<usize>index << alignof<f32>()), value);
1369
+ }
1370
+
1371
+ at(index: i32): f32 {
1372
+ let len = this.byteLength >>> alignof<f32>();
1373
+ index += select(0, len, index >= 0);
1374
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
1375
+ return load<f32>(this.dataStart + (<usize>index << alignof<f32>()));
1376
+ }
1377
+
1378
+ includes(searchElement: f32, fromIndex: i32 = 0): bool {
1379
+ return INCLUDES<Float32Array, f32>(this, searchElement, fromIndex);
1380
+ }
1381
+
1382
+ indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {
1383
+ return INDEX_OF<Float32Array, f32>(this, searchElement, fromIndex);
1384
+ }
1385
+
1386
+ lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {
1387
+ return LAST_INDEX_OF<Float32Array, f32>(this, searchElement, fromIndex);
1388
+ }
1389
+
1390
+ fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {
1391
+ FILL<f32>(this.dataStart, this.length, value, start, end);
1392
+ return this;
1393
+ }
1394
+
1395
+ sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR<f32>()): Float32Array {
1396
+ SORT<f32>(this.dataStart, this.length, comparator);
1397
+ return this;
1398
+ }
1399
+
1400
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {
1401
+ return SLICE<Float32Array, f32>(this, begin, end);
1402
+ }
1403
+
1404
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {
1405
+ return SUBARRAY<Float32Array, f32>(this, begin, end);
1406
+ }
1407
+
1408
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Float32Array {
1409
+ return COPY_WITHIN<Float32Array, f32>(this, target, start, end);
1410
+ }
1411
+
1412
+ reduce<T extends number>(
1413
+ fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,
1414
+ initialValue: T,
1415
+ ): T {
1416
+ return REDUCE<Float32Array, f32, T>(this, fn, initialValue);
1417
+ }
1418
+
1419
+ reduceRight<T extends number>(
1420
+ fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,
1421
+ initialValue: T,
1422
+ ): T {
1423
+ return REDUCE_RIGHT<Float32Array, f32, T>(this, fn, initialValue);
1424
+ }
1425
+
1426
+ map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {
1427
+ return MAP<Float32Array, f32>(this, fn);
1428
+ }
1429
+
1430
+ filter(fn: (value: f32, index: i32, self: Float32Array) => bool): Float32Array {
1431
+ return FILTER<Float32Array, f32>(this, fn);
1432
+ }
1433
+
1434
+ findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {
1435
+ return FIND_INDEX<Float32Array, f32>(this, fn);
1436
+ }
1437
+
1438
+ findLastIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {
1439
+ return FIND_LAST_INDEX<Float32Array, f32>(this, fn);
1440
+ }
1441
+
1442
+ some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {
1443
+ return SOME<Float32Array, f32>(this, fn);
1444
+ }
1445
+
1446
+ every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {
1447
+ return EVERY<Float32Array, f32>(this, fn);
1448
+ }
1449
+
1450
+ forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {
1451
+ FOREACH<Float32Array, f32>(this, fn);
1452
+ }
1453
+
1454
+ reverse(): Float32Array {
1455
+ REVERSE<f32>(this.dataStart, this.length);
1456
+ return this;
1457
+ }
1458
+
1459
+ join(separator: string = ","): string {
1460
+ return joinFloatArray<f32>(this.dataStart, this.length, separator);
1461
+ }
1462
+
1463
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
1464
+ SET(this, source, offset);
1465
+ }
1466
+
1467
+ toString(): string {
1468
+ return this.join();
1469
+ }
1470
+
1471
+ [Symbol.iterator](): TypedArrayIterator<Float32Array, f32> {
1472
+ return new TypedArrayIterator<Float32Array, f32>(this);
1473
+ }
1474
+
1475
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {
1476
+ return WRAP<Float32Array, f32>(buffer, byteOffset, length);
1477
+ }
1478
+ }
1479
+
1480
+ export class Float64Array extends ArrayBufferView implements Iterable<f64> {
1481
+ [key: number]: f64;
1482
+
1483
+ // @ts-ignore: decorator
1484
+ @lazy
1485
+ static readonly BYTES_PER_ELEMENT: i32 = sizeof<f64>();
1486
+
1487
+ constructor(length: i32) {
1488
+ super(length, alignof<f64>());
1489
+ }
1490
+
1491
+ get length(): i32 {
1492
+ return this.byteLength >>> alignof<f64>();
1493
+ }
1494
+
1495
+ @operator("[]")
1496
+ private __get(index: i32): f64 {
1497
+ if (<u32>index >= <u32>this.byteLength >>> alignof<f64>()) throw new RangeError(E_INDEXOUTOFRANGE);
1498
+ return load<f64>(this.dataStart + (<usize>index << alignof<f64>()));
1499
+ }
1500
+
1501
+ @unsafe @operator("{}")
1502
+ private __uget(index: i32): f64 {
1503
+ return load<f64>(this.dataStart + (<usize>index << alignof<f64>()));
1504
+ }
1505
+
1506
+ @operator("[]=")
1507
+ private __set(index: i32, value: f64): void {
1508
+ if (<u32>index >= <u32>this.byteLength >>> alignof<f64>()) throw new RangeError(E_INDEXOUTOFRANGE);
1509
+ store<f64>(this.dataStart + (<usize>index << alignof<f64>()), value);
1510
+ }
1511
+
1512
+ @unsafe @operator("{}=")
1513
+ private __uset(index: i32, value: f64): void {
1514
+ store<f64>(this.dataStart + (<usize>index << alignof<f64>()), value);
1515
+ }
1516
+
1517
+ at(index: i32): f64 {
1518
+ let len = this.byteLength >>> alignof<f64>();
1519
+ index += select(0, len, index >= 0);
1520
+ if (<u32>index >= <u32>len) throw new RangeError(E_INDEXOUTOFRANGE);
1521
+ return load<f64>(this.dataStart + (<usize>index << alignof<f64>()));
1522
+ }
1523
+
1524
+ includes(searchElement: f64, fromIndex: i32 = 0): bool {
1525
+ return INCLUDES<Float64Array, f64>(this, searchElement, fromIndex);
1526
+ }
1527
+
1528
+ indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {
1529
+ return INDEX_OF<Float64Array, f64>(this, searchElement, fromIndex);
1530
+ }
1531
+
1532
+ lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {
1533
+ return LAST_INDEX_OF<Float64Array, f64>(this, searchElement, fromIndex);
1534
+ }
1535
+
1536
+ fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {
1537
+ FILL<f64>(this.dataStart, this.length, value, start, end);
1538
+ return this;
1539
+ }
1540
+
1541
+ sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR<f64>()): Float64Array {
1542
+ SORT<f64>(this.dataStart, this.length, comparator);
1543
+ return this;
1544
+ }
1545
+
1546
+ slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {
1547
+ return SLICE<Float64Array, f64>(this, begin, end);
1548
+ }
1549
+
1550
+ subarray(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {
1551
+ return SUBARRAY<Float64Array, f64>(this, begin, end);
1552
+ }
1553
+
1554
+ copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): Float64Array {
1555
+ return COPY_WITHIN<Float64Array, f64>(this, target, start, end);
1556
+ }
1557
+
1558
+ reduce<T extends number>(
1559
+ fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,
1560
+ initialValue: T,
1561
+ ): T {
1562
+ return REDUCE<Float64Array, f64, T>(this, fn, initialValue);
1563
+ }
1564
+
1565
+ reduceRight<T extends number>(
1566
+ fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,
1567
+ initialValue: T,
1568
+ ): T {
1569
+ return REDUCE_RIGHT<Float64Array, f64, T>(this, fn, initialValue);
1570
+ }
1571
+
1572
+ map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {
1573
+ return MAP<Float64Array, f64>(this, fn);
1574
+ }
1575
+
1576
+ filter(fn: (value: f64, index: i32, self: Float64Array) => bool): Float64Array {
1577
+ return FILTER<Float64Array, f64>(this, fn);
1578
+ }
1579
+
1580
+ findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {
1581
+ return FIND_INDEX<Float64Array, f64>(this, fn);
1582
+ }
1583
+
1584
+ findLastIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {
1585
+ return FIND_LAST_INDEX<Float64Array, f64>(this, fn);
1586
+ }
1587
+
1588
+ some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {
1589
+ return SOME<Float64Array, f64>(this, fn);
1590
+ }
1591
+
1592
+ every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {
1593
+ return EVERY<Float64Array, f64>(this, fn);
1594
+ }
1595
+
1596
+ forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {
1597
+ FOREACH<Float64Array, f64>(this, fn);
1598
+ }
1599
+
1600
+ reverse(): Float64Array {
1601
+ REVERSE<f64>(this.dataStart, this.length);
1602
+ return this;
1603
+ }
1604
+
1605
+ join(separator: string = ","): string {
1606
+ return joinFloatArray<f64>(this.dataStart, this.length, separator);
1607
+ }
1608
+
1609
+ set<U extends ArrayLike<number>>(source: U, offset: i32 = 0): void {
1610
+ SET(this, source, offset);
1611
+ }
1612
+
1613
+ toString(): string {
1614
+ return this.join();
1615
+ }
1616
+
1617
+ [Symbol.iterator](): TypedArrayIterator<Float64Array, f64> {
1618
+ return new TypedArrayIterator<Float64Array, f64>(this);
1619
+ }
1620
+
1621
+ static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {
1622
+ return WRAP<Float64Array, f64>(buffer, byteOffset, length);
1623
+ }
1624
+ }
1625
+
1626
+ // @ts-ignore: decorator
1627
+ @inline
1628
+ function SLICE<TArray extends ArrayBufferView, T extends number>(
1629
+ array: TArray,
1630
+ start: i32,
1631
+ end: i32
1632
+ ): TArray {
1633
+ let len = array.length;
1634
+ start = start < 0 ? max(start + len, 0) : min(start, len);
1635
+ end = end < 0 ? max(end + len, 0) : min(end , len);
1636
+ len = max(end - start, 0);
1637
+ let slice = instantiate<TArray>(len);
1638
+ memory.copy(
1639
+ slice.dataStart,
1640
+ array.dataStart + (<usize>start << alignof<T>()),
1641
+ <usize>len << alignof<T>()
1642
+ );
1643
+ return slice;
1644
+ }
1645
+
1646
+ // @ts-ignore: decorator
1647
+ @inline
1648
+ function SUBARRAY<TArray extends ArrayBufferView, T extends number>(
1649
+ array: TArray,
1650
+ begin: i32,
1651
+ end: i32
1652
+ ): TArray {
1653
+ let len = array.length;
1654
+ begin = begin < 0 ? max(len + begin, 0) : min(begin, len);
1655
+ end = end < 0 ? max(len + end, 0) : min(end, len);
1656
+ end = max(end, begin);
1657
+
1658
+ let out = changetype<TArray>(__new(offsetof<TArray>(), idof<TArray>()));
1659
+ let buf = changetype<usize>(array.buffer);
1660
+ store<usize>(changetype<usize>(out), buf, offsetof<TArray>("buffer"));
1661
+ __link(changetype<usize>(out), buf, false);
1662
+ store<usize>(changetype<usize>(out), array.dataStart + (<usize>begin << alignof<T>()), offsetof<TArray>("dataStart"));
1663
+ store<u32>(changetype<usize>(out), (end - begin) << alignof<T>(), offsetof<TArray>("byteLength"));
1664
+ return out;
1665
+ }
1666
+
1667
+ // @ts-ignore: decorator
1668
+ @inline
1669
+ function COPY_WITHIN<TArray extends ArrayBufferView, T extends number>(
1670
+ array: TArray,
1671
+ target: i32,
1672
+ start: i32,
1673
+ end: i32
1674
+ ): TArray {
1675
+ let len = array.length;
1676
+ let ptr = array.dataStart;
1677
+
1678
+ end = min<i32>(end, len);
1679
+ let to = target < 0 ? max(len + target, 0) : min(target, len);
1680
+ let from = start < 0 ? max(len + start, 0) : min(start, len);
1681
+ let last = end < 0 ? max(len + end, 0) : min(end, len);
1682
+ let count = min(last - from, len - to);
1683
+
1684
+ memory.copy(
1685
+ ptr + (<usize>to << alignof<T>()),
1686
+ ptr + (<usize>from << alignof<T>()),
1687
+ <usize>count << alignof<T>()
1688
+ );
1689
+ return array;
1690
+ }
1691
+
1692
+ // @ts-ignore: decorator
1693
+ @inline
1694
+ function REDUCE<TArray extends ArrayBufferView, T extends number, TRet extends number>(
1695
+ array: TArray,
1696
+ fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,
1697
+ initialValue: TRet
1698
+ ): TRet {
1699
+ let ptr = array.dataStart;
1700
+ for (let i = 0, k = array.length; i < k; i++) {
1701
+ initialValue = fn(initialValue, load<T>(ptr + (<usize>i << alignof<T>())), i, array);
1702
+ }
1703
+ return initialValue;
1704
+ }
1705
+
1706
+ // @ts-ignore: decorator
1707
+ @inline
1708
+ function REDUCE_RIGHT<TArray extends ArrayBufferView, T extends number, TRet extends number>(
1709
+ array: TArray,
1710
+ fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,
1711
+ initialValue: TRet
1712
+ ): TRet {
1713
+ let ptr = array.dataStart;
1714
+ for (let i = array.length - 1; i >= 0; i--) {
1715
+ initialValue = fn(initialValue, load<T>(ptr + (<usize>i << alignof<T>())), i, array);
1716
+ }
1717
+ return initialValue;
1718
+ }
1719
+
1720
+ // @ts-ignore: decorator
1721
+ @inline
1722
+ function MAP<TArray extends ArrayBufferView, T extends number>(
1723
+ array: TArray,
1724
+ fn: (value: T, index: i32, self: TArray) => T,
1725
+ ): TArray {
1726
+ let len = array.length;
1727
+ let ptr = array.dataStart;
1728
+
1729
+ let byteLength = len << alignof<T>();
1730
+ let out = changetype<TArray>(__new(offsetof<TArray>(), idof<TArray>()));
1731
+ let buf = changetype<ArrayBuffer>(__new(byteLength, idof<ArrayBuffer>()));
1732
+ for (let i = 0; i < len; i++) {
1733
+ store<T>(
1734
+ changetype<usize>(buf) + (<usize>i << alignof<T>()),
1735
+ fn(load<T>(ptr + (<usize>i << alignof<T>())), i, array)
1736
+ );
1737
+ }
1738
+ store<usize>(changetype<usize>(out), changetype<usize>(buf), offsetof<TArray>("buffer"));
1739
+ __link(changetype<usize>(out), changetype<usize>(buf), false);
1740
+ store<usize>(changetype<usize>(out), changetype<usize>(buf), offsetof<TArray>("dataStart"));
1741
+ store<u32>(changetype<usize>(out), byteLength, offsetof<TArray>("byteLength"));
1742
+ return out;
1743
+ }
1744
+
1745
+ // @ts-ignore: decorator
1746
+ @inline
1747
+ function FILTER<TArray extends ArrayBufferView, T extends number>(
1748
+ array: TArray,
1749
+ fn: (value: T, index: i32, self: TArray) => bool,
1750
+ ): TArray {
1751
+ let len = array.length;
1752
+ let out = changetype<TArray>(__new(offsetof<TArray>(), idof<TArray>()));
1753
+ let buf = changetype<ArrayBuffer>(__new(len << alignof<T>(), idof<ArrayBuffer>()));
1754
+ let dataStart = array.dataStart;
1755
+ let j: usize = 0;
1756
+ for (let i = 0; i < len; i++) {
1757
+ let value = load<T>(dataStart + (<usize>i << alignof<T>()));
1758
+ if (fn(value, i, array)) {
1759
+ store<T>(
1760
+ changetype<usize>(buf) + (j++ << alignof<T>()),
1761
+ value
1762
+ );
1763
+ }
1764
+ }
1765
+ // shrink output buffer
1766
+ let byteLength = j << alignof<T>();
1767
+ let data = __renew(changetype<usize>(buf), byteLength);
1768
+ store<usize>(changetype<usize>(out), data, offsetof<TArray>("buffer"));
1769
+ __link(changetype<usize>(out), data, false);
1770
+ store<u32>(changetype<usize>(out), byteLength, offsetof<TArray>("byteLength"));
1771
+ store<usize>(changetype<usize>(out), data, offsetof<TArray>("dataStart"));
1772
+ return out;
1773
+ }
1774
+
1775
+ // @ts-ignore: decorator
1776
+ @inline
1777
+ function FIND_INDEX<TArray extends ArrayBufferView, T extends number>(
1778
+ array: TArray,
1779
+ fn: (value: T, index: i32, array: TArray) => bool,
1780
+ ): i32 {
1781
+ let ptr = array.dataStart;
1782
+ for (let i = 0, k = array.length; i < k; i++) {
1783
+ if (fn(load<T>(ptr + (<usize>i << alignof<T>())), i, array)) return i;
1784
+ }
1785
+ return -1;
1786
+ }
1787
+
1788
+ // @ts-ignore: decorator
1789
+ @inline
1790
+ function FIND_LAST_INDEX<TArray extends ArrayBufferView, T extends number>(
1791
+ array: TArray,
1792
+ fn: (value: T, index: i32, array: TArray) => bool,
1793
+ ): i32 {
1794
+ let ptr = array.dataStart;
1795
+ for (let i = array.length - 1; i >= 0; --i) {
1796
+ if (fn(load<T>(ptr + (<usize>i << alignof<T>())), i, array)) return i;
1797
+ }
1798
+ return -1;
1799
+ }
1800
+
1801
+ // @ts-ignore: decorator
1802
+ @inline
1803
+ function INCLUDES<TArray extends ArrayBufferView, T extends number>(
1804
+ array: TArray,
1805
+ searchElement: T,
1806
+ fromIndex: i32,
1807
+ ): bool {
1808
+ if (isFloat<T>()) {
1809
+ let index: isize = fromIndex;
1810
+ let len: isize = array.length;
1811
+ if (len == 0 || index >= len) return false;
1812
+ if (index < 0) index = max(len + index, 0);
1813
+ let dataStart = array.dataStart;
1814
+ while (index < len) {
1815
+ let elem = load<T>(dataStart + (index << alignof<T>()));
1816
+ // @ts-ignore
1817
+ if (elem == searchElement || isNaN(elem) & isNaN(searchElement)) return true;
1818
+ ++index;
1819
+ }
1820
+ return false;
1821
+ } else {
1822
+ return INDEX_OF<TArray, T>(array, searchElement, fromIndex) >= 0;
1823
+ }
1824
+ }
1825
+
1826
+ // @ts-ignore: decorator
1827
+ @inline
1828
+ function INDEX_OF<TArray extends ArrayBufferView, T extends number>(
1829
+ array: TArray,
1830
+ searchElement: T,
1831
+ fromIndex: i32,
1832
+ ): i32 {
1833
+ let index: isize = fromIndex;
1834
+ let len: isize = array.length;
1835
+ if (len == 0 || index >= len) return -1;
1836
+ if (index < 0) index = max(len + index, 0);
1837
+ let dataStart = array.dataStart;
1838
+ while (index < len) {
1839
+ if (load<T>(dataStart + (index << alignof<T>())) == searchElement) return <i32>index;
1840
+ ++index;
1841
+ }
1842
+ return -1;
1843
+ }
1844
+
1845
+ // @ts-ignore: decorator
1846
+ @inline
1847
+ function LAST_INDEX_OF<TArray extends ArrayBufferView, T extends number>(
1848
+ array: TArray,
1849
+ searchElement: T,
1850
+ fromIndex: i32,
1851
+ ): i32 {
1852
+ let index: isize = fromIndex;
1853
+ let len: isize = array.length;
1854
+ if (len == 0) return -1;
1855
+ if (index < 0) index = len + index; // no need to clamp
1856
+ else if (index >= len) index = len - 1;
1857
+ let dataStart = array.dataStart;
1858
+ while (index >= 0) {
1859
+ if (load<T>(dataStart + (index << alignof<T>())) == searchElement) return <i32>index;
1860
+ --index;
1861
+ }
1862
+ return -1;
1863
+ }
1864
+
1865
+ // @ts-ignore: decorator
1866
+ @inline
1867
+ function SOME<TArray extends ArrayBufferView, T extends number>(
1868
+ array: TArray,
1869
+ fn: (value: T, index: i32, array: TArray) => bool,
1870
+ ): bool {
1871
+ let ptr = array.dataStart;
1872
+ for (let i = 0, k = array.length; i < k; i++) {
1873
+ if (fn(load<T>(ptr + (<usize>i << alignof<T>())), i, array)) return true;
1874
+ }
1875
+ return false;
1876
+ }
1877
+
1878
+ // @ts-ignore: decorator
1879
+ @inline
1880
+ function EVERY<TArray extends ArrayBufferView, T extends number>(
1881
+ array: TArray,
1882
+ fn: (value: T, index: i32, array: TArray) => bool,
1883
+ ): bool {
1884
+ let ptr = array.dataStart;
1885
+ for (let i = 0, k = array.length; i < k; i++) {
1886
+ if (fn(load<T>(ptr + (<usize>i << alignof<T>())), i, array)) continue;
1887
+ return false;
1888
+ }
1889
+ return true;
1890
+ }
1891
+
1892
+ // @ts-ignore: decorator
1893
+ @inline
1894
+ function FOREACH<TArray extends ArrayBufferView, T extends number>(
1895
+ array: TArray,
1896
+ fn: (value: T, index: i32, array: TArray) => void,
1897
+ ): void {
1898
+ let ptr = array.dataStart;
1899
+ for (let i = 0, k = array.length; i < k; i++) {
1900
+ fn(load<T>(ptr + (<usize>i << alignof<T>())), i, array);
1901
+ }
1902
+ }
1903
+
1904
+ // @ts-ignore: decorator
1905
+ @inline
1906
+ function WRAP<TArray extends ArrayBufferView, T>(
1907
+ buffer: ArrayBuffer,
1908
+ byteOffset: i32 = 0,
1909
+ len: i32 = -1
1910
+ ): TArray {
1911
+ let byteLength: i32;
1912
+ let bufferByteLength = buffer.byteLength;
1913
+ const mask: u32 = sizeof<T>() - 1;
1914
+ if (i32(<u32>byteOffset > <u32>bufferByteLength) | (byteOffset & mask)) {
1915
+ throw new RangeError(E_INDEXOUTOFRANGE);
1916
+ }
1917
+ if (len < 0) {
1918
+ if (len == -1) {
1919
+ if (bufferByteLength & mask) {
1920
+ throw new RangeError(E_INVALIDLENGTH);
1921
+ }
1922
+ byteLength = bufferByteLength - byteOffset;
1923
+ } else {
1924
+ throw new RangeError(E_INVALIDLENGTH);
1925
+ }
1926
+ } else {
1927
+ byteLength = len << alignof<T>();
1928
+ if (byteOffset + byteLength > bufferByteLength) {
1929
+ throw new RangeError(E_INVALIDLENGTH);
1930
+ }
1931
+ }
1932
+ let out = changetype<TArray>(__new(offsetof<TArray>(), idof<TArray>()));
1933
+ store<usize>(changetype<usize>(out), changetype<usize>(buffer), offsetof<TArray>("buffer"));
1934
+ __link(changetype<usize>(out), changetype<usize>(buffer), false);
1935
+ store<u32>(changetype<usize>(out), byteLength, offsetof<TArray>("byteLength"));
1936
+ store<usize>(changetype<usize>(out), changetype<usize>(buffer) + <usize>byteOffset, offsetof<TArray>("dataStart"));
1937
+ return out;
1938
+ }
1939
+
1940
+ // @ts-ignore: decorator
1941
+ @inline
1942
+ function SET<
1943
+ TArray extends ArrayLike<number>,
1944
+ UArray extends ArrayLike<number>
1945
+ >(
1946
+ target: TArray,
1947
+ source: UArray,
1948
+ offset: i32 = 0
1949
+ ): void {
1950
+ // need to assert at compile time that U is not a reference or a function
1951
+ if (isReference<valueof<UArray>>()) {
1952
+ ERROR(E_NOTIMPLEMENTED);
1953
+ }
1954
+ let sourceLen = source.length;
1955
+ if (offset < 0 || sourceLen + offset > target.length) {
1956
+ // offset is out of bounds
1957
+ throw new RangeError(E_INDEXOUTOFRANGE);
1958
+ }
1959
+ // @ts-ignore: dataStart
1960
+ let targetStart = target.dataStart + (<usize>offset << (alignof<valueof<TArray>>()));
1961
+ // @ts-ignore: dataStart
1962
+ let sourceStart = source.dataStart;
1963
+ // if the types align and match, use memory.copy() instead of manual loop
1964
+ if (
1965
+ isInteger<valueof<TArray>>() == isInteger<valueof<UArray>>() &&
1966
+ alignof<valueof<TArray>>() == alignof<valueof<UArray>>() &&
1967
+ !(isSigned<valueof<UArray>>() && target instanceof Uint8ClampedArray)
1968
+ ) {
1969
+ memory.copy(targetStart, sourceStart, <usize>sourceLen << (alignof<valueof<UArray>>()));
1970
+ } else {
1971
+ for (let i = 0; i < sourceLen; i++) {
1972
+ let ptr = targetStart + (<usize>i << (alignof<valueof<TArray>>()));
1973
+ let value = load<valueof<UArray>>(sourceStart + (<usize>i << (alignof<valueof<UArray>>())));
1974
+ // if TArray is Uint8ClampedArray, then values must be clamped
1975
+ if (target instanceof Uint8ClampedArray) {
1976
+ if (isFloat<valueof<UArray>>()) {
1977
+ store<valueof<TArray>>(ptr,
1978
+ isFinite<valueof<UArray>>(value)
1979
+ ? <valueof<TArray>>max<valueof<UArray>>(0, min<valueof<UArray>>(255, value))
1980
+ : 0
1981
+ );
1982
+ } else {
1983
+ if (!isSigned<valueof<UArray>>()) {
1984
+ store<valueof<TArray>>(ptr, min<valueof<UArray>>(255, value));
1985
+ } else if (sizeof<valueof<TArray>>() <= 4) {
1986
+ store<valueof<TArray>>(ptr, ~(<i32>value >> 31) & (((255 - <i32>value) >> 31) | value));
1987
+ } else {
1988
+ store<valueof<TArray>>(ptr, ~(<i64>value >> 63) & (((255 - <i64>value) >> 63) | value));
1989
+ }
1990
+ }
1991
+ } else {
1992
+ if (isFloat<valueof<UArray>>() && !isFloat<valueof<TArray>>()) {
1993
+ store<valueof<TArray>>(ptr, isFinite<valueof<UArray>>(value) ? <valueof<TArray>>value : 0);
1994
+ } else {
1995
+ store<valueof<TArray>>(ptr, <valueof<TArray>>value);
1996
+ }
1997
+ }
1998
+ }
1999
+ }
2000
+ }