@daneren2005/shared-memory-objects 1.5.2 → 1.6.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 (64) hide show
  1. package/dist/allocated-memory.js.map +1 -1
  2. package/dist/cached-item-list.js.map +1 -1
  3. package/dist/constant-string.js.map +1 -1
  4. package/dist/local-pool.js.map +1 -1
  5. package/dist/lock/read-write-lock.js.map +1 -1
  6. package/dist/lock/simple-lock.js.map +1 -1
  7. package/dist/memory-buffer.js.map +1 -1
  8. package/dist/memory-heap.js.map +1 -1
  9. package/dist/serialize-object.js.map +1 -1
  10. package/dist/shared-list.js.map +1 -1
  11. package/dist/shared-map.d.ts +3 -0
  12. package/dist/shared-map.js +42 -24
  13. package/dist/shared-map.js.map +1 -1
  14. package/dist/shared-pointer-list.js.map +1 -1
  15. package/dist/shared-pool.js.map +1 -1
  16. package/dist/shared-stack.js.map +1 -1
  17. package/dist/shared-string.js.map +1 -1
  18. package/dist/shared-vector.js.map +1 -1
  19. package/dist/spatial/shared-quadtree.js.map +1 -1
  20. package/dist/spatial/shared-spatial-grid.js.map +1 -1
  21. package/dist/spatial/shared-spatial-map.js.map +1 -1
  22. package/dist/spatial/spatial-entity.js.map +1 -1
  23. package/dist/spatial/spatial-neighbors.js.map +1 -1
  24. package/dist/utils/16-from-32-array.d.ts +1 -4
  25. package/dist/utils/16-from-32-array.js +2 -18
  26. package/dist/utils/16-from-32-float.d.ts +4 -0
  27. package/dist/utils/16-from-32-float.js +20 -0
  28. package/dist/utils/16-from-32-float.js.map +1 -0
  29. package/dist/utils/16-from-32-int.d.ts +4 -0
  30. package/dist/utils/16-from-32-int.js +18 -0
  31. package/dist/utils/16-from-32-int.js.map +1 -0
  32. package/dist/utils/16-from-32-uint.d.ts +4 -0
  33. package/dist/utils/16-from-32-uint.js +18 -0
  34. package/dist/utils/16-from-32-uint.js.map +1 -0
  35. package/dist/utils/16-from-64-array.d.ts +1 -2
  36. package/dist/utils/16-from-64-array.js +2 -17
  37. package/dist/utils/16-from-64-float.d.ts +4 -0
  38. package/dist/utils/16-from-64-float.js +30 -0
  39. package/dist/utils/16-from-64-float.js.map +1 -0
  40. package/dist/utils/16-from-64-int.d.ts +4 -0
  41. package/dist/utils/16-from-64-int.js +23 -0
  42. package/dist/utils/16-from-64-int.js.map +1 -0
  43. package/dist/utils/16-from-64-uint.d.ts +4 -0
  44. package/dist/utils/16-from-64-uint.js +23 -0
  45. package/dist/utils/16-from-64-uint.js.map +1 -0
  46. package/dist/utils/32-from-64-float.d.ts +4 -0
  47. package/dist/utils/32-from-64-float.js +20 -0
  48. package/dist/utils/32-from-64-float.js.map +1 -0
  49. package/dist/utils/32-from-64-int.d.ts +4 -0
  50. package/dist/utils/32-from-64-int.js +18 -0
  51. package/dist/utils/32-from-64-int.js.map +1 -0
  52. package/dist/utils/32-from-64-uint.d.ts +4 -0
  53. package/dist/utils/32-from-64-uint.js +18 -0
  54. package/dist/utils/32-from-64-uint.js.map +1 -0
  55. package/dist/utils/array-type.js.map +1 -1
  56. package/dist/utils/atomic-math.js.map +1 -1
  57. package/dist/utils/float32-atomics.js.map +1 -1
  58. package/dist/utils/float64-atomics.js.map +1 -1
  59. package/dist/utils/hash.js.map +1 -1
  60. package/dist/utils/pointer.js.map +1 -1
  61. package/dist/utils/typedarray.js.map +1 -1
  62. package/package.json +10 -10
  63. package/dist/utils/16-from-32-array.js.map +0 -1
  64. package/dist/utils/16-from-64-array.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ export declare function load16From64Int(data: BigInt64Array, index: number): [number, number, number, number];
2
+ export declare function store16In64Int(data: BigInt64Array, index: number, value1: number, value2: number, value3: number, value4?: number): void;
3
+ export declare function convert64To16Int(value: bigint): [number, number, number, number];
4
+ export declare function convert16To64Int(value1: number, value2: number, value3: number, value4?: number): bigint;
@@ -0,0 +1,23 @@
1
+ //#region src/utils/16-from-64-int.ts
2
+ var e = /* @__PURE__ */ new ArrayBuffer(8), t = new BigInt64Array(e), n = new Int16Array(e);
3
+ function r(e, t) {
4
+ return a(Atomics.load(e, t));
5
+ }
6
+ function i(e, t, n, r, i, a = 0) {
7
+ Atomics.store(e, t, o(n, r, i, a));
8
+ }
9
+ function a(e) {
10
+ return t[0] = e, [
11
+ n[0],
12
+ n[1],
13
+ n[2],
14
+ n[3]
15
+ ];
16
+ }
17
+ function o(e, r, i, a = 0) {
18
+ return n[0] = e, n[1] = r, n[2] = i, n[3] = a, t[0];
19
+ }
20
+ //#endregion
21
+ export { o as convert16To64Int, a as convert64To16Int, r as load16From64Int, i as store16In64Int };
22
+
23
+ //# sourceMappingURL=16-from-64-int.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"16-from-64-int.js","names":["buffer","int64Array","int16Array","load16From64Int","convert64To16Int","data","index","store16In64Int","convert16To64Int","value1","value2","value3","value4","value"],"sources":["../../src/utils/16-from-64-int.ts"],"sourcesContent":["const buffer = new ArrayBuffer(8);\nconst int64Array = new BigInt64Array(buffer);\nconst int16Array = new Int16Array(buffer);\n\nexport function load16From64Int(data: BigInt64Array, index: number): [number, number, number, number] {\n\treturn convert64To16Int(Atomics.load(data, index));\n}\n\nexport function store16In64Int(data: BigInt64Array, index: number, value1: number, value2: number, value3: number, value4: number = 0) {\n\tAtomics.store(data, index, convert16To64Int(value1, value2, value3, value4));\n}\n\nexport function convert64To16Int(value: bigint): [number, number, number, number] {\n\tint64Array[0] = value;\n\n\treturn [int16Array[0], int16Array[1], int16Array[2], int16Array[3]];\n}\n\nexport function convert16To64Int(value1: number, value2: number, value3: number, value4: number = 0): bigint {\n\tint16Array[0] = value1;\n\tint16Array[1] = value2;\n\tint16Array[2] = value3;\n\tint16Array[3] = value4;\n\n\treturn int64Array[0];\n}\n"],"mappings":";AAAA,IAAMA,oBAAS,IAAI,YAAY,CAAC,GAC1BC,IAAa,IAAI,cAAcD,CAAM,GACrCE,IAAa,IAAI,WAAWF,CAAM;AAExC,SAAgBG,EAAgB,GAAqB,GAAiD;CACrG,OAAOC,EAAiB,QAAQ,KAAKC,GAAMC,CAAK,CAAC;AAClD;AAEA,SAAgBC,EAAe,GAAqB,GAAe,GAAgB,GAAgB,GAAgB,IAAiB,GAAG;CACtI,QAAQ,MAAMF,GAAMC,GAAOE,EAAiBC,GAAQC,GAAQC,GAAQC,CAAM,CAAC;AAC5E;AAEA,SAAgBR,EAAiB,GAAiD;CAGjF,OAFA,EAAW,KAAKS,GAET;EAACX,EAAW;EAAIA,EAAW;EAAIA,EAAW;EAAIA,EAAW;CAAE;AACnE;AAEA,SAAgBM,EAAiB,GAAgB,GAAgB,GAAgB,IAAiB,GAAW;CAM5G,OALA,EAAW,KAAKC,GAChB,EAAW,KAAKC,GAChB,EAAW,KAAKC,GAChB,EAAW,KAAKC,GAETX,EAAW;AACnB"}
@@ -0,0 +1,4 @@
1
+ export declare function load16From64Uint(data: BigUint64Array, index: number): [number, number, number, number];
2
+ export declare function store16In64Uint(data: BigUint64Array, index: number, value1: number, value2: number, value3: number, value4?: number): void;
3
+ export declare function convert64To16Uint(value: bigint): [number, number, number, number];
4
+ export declare function convert16To64Uint(value1: number, value2: number, value3: number, value4?: number): bigint;
@@ -0,0 +1,23 @@
1
+ //#region src/utils/16-from-64-uint.ts
2
+ var e = /* @__PURE__ */ new ArrayBuffer(8), t = new BigUint64Array(e), n = new Uint16Array(e);
3
+ function r(e, t) {
4
+ return a(Atomics.load(e, t));
5
+ }
6
+ function i(e, t, n, r, i, a = 0) {
7
+ Atomics.store(e, t, o(n, r, i, a));
8
+ }
9
+ function a(e) {
10
+ return t[0] = e, [
11
+ n[0],
12
+ n[1],
13
+ n[2],
14
+ n[3]
15
+ ];
16
+ }
17
+ function o(e, r, i, a = 0) {
18
+ return n[0] = e, n[1] = r, n[2] = i, n[3] = a, t[0];
19
+ }
20
+ //#endregion
21
+ export { o as convert16To64Uint, a as convert64To16Uint, r as load16From64Uint, i as store16In64Uint };
22
+
23
+ //# sourceMappingURL=16-from-64-uint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"16-from-64-uint.js","names":["buffer","uint64Array","uint16Array","load16From64Uint","convert64To16Uint","data","index","store16In64Uint","convert16To64Uint","value1","value2","value3","value4","value"],"sources":["../../src/utils/16-from-64-uint.ts"],"sourcesContent":["const buffer = new ArrayBuffer(8);\nconst uint64Array = new BigUint64Array(buffer);\nconst uint16Array = new Uint16Array(buffer);\n\nexport function load16From64Uint(data: BigUint64Array, index: number): [number, number, number, number] {\n\treturn convert64To16Uint(Atomics.load(data, index));\n}\n\nexport function store16In64Uint(data: BigUint64Array, index: number, value1: number, value2: number, value3: number, value4: number = 0) {\n\tAtomics.store(data, index, convert16To64Uint(value1, value2, value3, value4));\n}\n\nexport function convert64To16Uint(value: bigint): [number, number, number, number] {\n\tuint64Array[0] = value;\n\n\treturn [uint16Array[0], uint16Array[1], uint16Array[2], uint16Array[3]];\n}\n\nexport function convert16To64Uint(value1: number, value2: number, value3: number, value4: number = 0): bigint {\n\tuint16Array[0] = value1;\n\tuint16Array[1] = value2;\n\tuint16Array[2] = value3;\n\tuint16Array[3] = value4;\n\n\treturn uint64Array[0];\n}\n"],"mappings":";AAAA,IAAMA,oBAAS,IAAI,YAAY,CAAC,GAC1BC,IAAc,IAAI,eAAeD,CAAM,GACvCE,IAAc,IAAI,YAAYF,CAAM;AAE1C,SAAgBG,EAAiB,GAAsB,GAAiD;CACvG,OAAOC,EAAkB,QAAQ,KAAKC,GAAMC,CAAK,CAAC;AACnD;AAEA,SAAgBC,EAAgB,GAAsB,GAAe,GAAgB,GAAgB,GAAgB,IAAiB,GAAG;CACxI,QAAQ,MAAMF,GAAMC,GAAOE,EAAkBC,GAAQC,GAAQC,GAAQC,CAAM,CAAC;AAC7E;AAEA,SAAgBR,EAAkB,GAAiD;CAGlF,OAFA,EAAY,KAAKS,GAEV;EAACX,EAAY;EAAIA,EAAY;EAAIA,EAAY;EAAIA,EAAY;CAAE;AACvE;AAEA,SAAgBM,EAAkB,GAAgB,GAAgB,GAAgB,IAAiB,GAAW;CAM7G,OALA,EAAY,KAAKC,GACjB,EAAY,KAAKC,GACjB,EAAY,KAAKC,GACjB,EAAY,KAAKC,GAEVX,EAAY;AACpB"}
@@ -0,0 +1,4 @@
1
+ export declare function load32From64Float(data: Float64Array, index: number): [number, number];
2
+ export declare function store32In64Float(data: Float64Array, index: number, value1: number, value2: number): void;
3
+ export declare function convert64To32Float(value: number): [number, number];
4
+ export declare function convert32To64Float(value1: number, value2: number): number;
@@ -0,0 +1,20 @@
1
+ //#region src/utils/32-from-64-float.ts
2
+ var e = /* @__PURE__ */ new ArrayBuffer(8), t = new Float64Array(e), n = new Float32Array(e), r = new BigInt64Array(e);
3
+ function i(e, t) {
4
+ let i = new BigInt64Array(e.buffer, e.byteOffset, e.length);
5
+ return r[0] = Atomics.load(i, t), [n[0], n[1]];
6
+ }
7
+ function a(e, t, i, a) {
8
+ let o = new BigInt64Array(e.buffer, e.byteOffset, e.length);
9
+ n[0] = i, n[1] = a, Atomics.store(o, t, r[0]);
10
+ }
11
+ function o(e) {
12
+ return t[0] = e, [n[0], n[1]];
13
+ }
14
+ function s(e, r) {
15
+ return n[0] = e, n[1] = r, t[0];
16
+ }
17
+ //#endregion
18
+ export { s as convert32To64Float, o as convert64To32Float, i as load32From64Float, a as store32In64Float };
19
+
20
+ //# sourceMappingURL=32-from-64-float.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"32-from-64-float.js","names":["buffer","float64Array","float32Array","int64Array","load32From64Float","atomicData","data","index","store32In64Float","value1","value2","convert64To32Float","value","convert32To64Float"],"sources":["../../src/utils/32-from-64-float.ts"],"sourcesContent":["const buffer = new ArrayBuffer(8);\nconst float64Array = new Float64Array(buffer);\nconst float32Array = new Float32Array(buffer);\nconst int64Array = new BigInt64Array(buffer);\n\nexport function load32From64Float(data: Float64Array, index: number): [number, number] {\n\tconst atomicData = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\tint64Array[0] = Atomics.load(atomicData, index);\n\treturn [float32Array[0], float32Array[1]];\n}\n\nexport function store32In64Float(data: Float64Array, index: number, value1: number, value2: number) {\n\tconst atomicData = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\tfloat32Array[0] = value1;\n\tfloat32Array[1] = value2;\n\tAtomics.store(atomicData, index, int64Array[0]);\n}\n\nexport function convert64To32Float(value: number): [number, number] {\n\tfloat64Array[0] = value;\n\treturn [float32Array[0], float32Array[1]];\n}\n\nexport function convert32To64Float(value1: number, value2: number): number {\n\tfloat32Array[0] = value1;\n\tfloat32Array[1] = value2;\n\treturn float64Array[0];\n}\n"],"mappings":";AAAA,IAAMA,oBAAS,IAAI,YAAY,CAAC,GAC1BC,IAAe,IAAI,aAAaD,CAAM,GACtCE,IAAe,IAAI,aAAaF,CAAM,GACtCG,IAAa,IAAI,cAAcH,CAAM;AAE3C,SAAgBI,EAAkB,GAAoB,GAAiC;CACtF,IAAMC,IAAa,IAAI,cAAcC,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM;CAE9E,OADA,EAAW,KAAK,QAAQ,KAAKD,GAAYE,CAAK,GACvC,CAACL,EAAa,IAAIA,EAAa,EAAE;AACzC;AAEA,SAAgBM,EAAiB,GAAoB,GAAe,GAAgB,GAAgB;CACnG,IAAMH,IAAa,IAAI,cAAcC,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM;CAG9E,AAFA,EAAa,KAAKG,GAClB,EAAa,KAAKC,GAClB,QAAQ,MAAML,GAAYE,GAAOJ,EAAW,EAAE;AAC/C;AAEA,SAAgBQ,EAAmB,GAAiC;CAEnE,OADA,EAAa,KAAKC,GACX,CAACV,EAAa,IAAIA,EAAa,EAAE;AACzC;AAEA,SAAgBW,EAAmB,GAAgB,GAAwB;CAG1E,OAFA,EAAa,KAAKJ,GAClB,EAAa,KAAKC,GACXT,EAAa;AACrB"}
@@ -0,0 +1,4 @@
1
+ export declare function load32From64Int(data: BigInt64Array, index: number): [number, number];
2
+ export declare function store32In64Int(data: BigInt64Array, index: number, value1: number, value2: number): void;
3
+ export declare function convert64To32Int(value: bigint): [number, number];
4
+ export declare function convert32To64Int(value1: number, value2: number): bigint;
@@ -0,0 +1,18 @@
1
+ //#region src/utils/32-from-64-int.ts
2
+ var e = /* @__PURE__ */ new ArrayBuffer(8), t = new BigInt64Array(e), n = new Int32Array(e);
3
+ function r(e, t) {
4
+ return a(Atomics.load(e, t));
5
+ }
6
+ function i(e, t, n, r) {
7
+ Atomics.store(e, t, o(n, r));
8
+ }
9
+ function a(e) {
10
+ return t[0] = e, [n[0], n[1]];
11
+ }
12
+ function o(e, r) {
13
+ return n[0] = e, n[1] = r, t[0];
14
+ }
15
+ //#endregion
16
+ export { o as convert32To64Int, a as convert64To32Int, r as load32From64Int, i as store32In64Int };
17
+
18
+ //# sourceMappingURL=32-from-64-int.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"32-from-64-int.js","names":["buffer","int64Array","int32Array","load32From64Int","convert64To32Int","data","index","store32In64Int","convert32To64Int","value1","value2","value"],"sources":["../../src/utils/32-from-64-int.ts"],"sourcesContent":["const buffer = new ArrayBuffer(8);\nconst int64Array = new BigInt64Array(buffer);\nconst int32Array = new Int32Array(buffer);\n\nexport function load32From64Int(data: BigInt64Array, index: number): [number, number] {\n\treturn convert64To32Int(Atomics.load(data, index));\n}\n\nexport function store32In64Int(data: BigInt64Array, index: number, value1: number, value2: number) {\n\tAtomics.store(data, index, convert32To64Int(value1, value2));\n}\n\nexport function convert64To32Int(value: bigint): [number, number] {\n\tint64Array[0] = value;\n\n\treturn [int32Array[0], int32Array[1]];\n}\n\nexport function convert32To64Int(value1: number, value2: number): bigint {\n\tint32Array[0] = value1;\n\tint32Array[1] = value2;\n\n\treturn int64Array[0];\n}\n"],"mappings":";AAAA,IAAMA,oBAAS,IAAI,YAAY,CAAC,GAC1BC,IAAa,IAAI,cAAcD,CAAM,GACrCE,IAAa,IAAI,WAAWF,CAAM;AAExC,SAAgBG,EAAgB,GAAqB,GAAiC;CACrF,OAAOC,EAAiB,QAAQ,KAAKC,GAAMC,CAAK,CAAC;AAClD;AAEA,SAAgBC,EAAe,GAAqB,GAAe,GAAgB,GAAgB;CAClG,QAAQ,MAAMF,GAAMC,GAAOE,EAAiBC,GAAQC,CAAM,CAAC;AAC5D;AAEA,SAAgBN,EAAiB,GAAiC;CAGjE,OAFA,EAAW,KAAKO,GAET,CAACT,EAAW,IAAIA,EAAW,EAAE;AACrC;AAEA,SAAgBM,EAAiB,GAAgB,GAAwB;CAIxE,OAHA,EAAW,KAAKC,GAChB,EAAW,KAAKC,GAETT,EAAW;AACnB"}
@@ -0,0 +1,4 @@
1
+ export declare function load32From64Uint(data: BigUint64Array, index: number): [number, number];
2
+ export declare function store32In64Uint(data: BigUint64Array, index: number, value1: number, value2: number): void;
3
+ export declare function convert64To32Uint(value: bigint): [number, number];
4
+ export declare function convert32To64Uint(value1: number, value2: number): bigint;
@@ -0,0 +1,18 @@
1
+ //#region src/utils/32-from-64-uint.ts
2
+ var e = /* @__PURE__ */ new ArrayBuffer(8), t = new BigUint64Array(e), n = new Uint32Array(e);
3
+ function r(e, t) {
4
+ return a(Atomics.load(e, t));
5
+ }
6
+ function i(e, t, n, r) {
7
+ Atomics.store(e, t, o(n, r));
8
+ }
9
+ function a(e) {
10
+ return t[0] = e, [n[0], n[1]];
11
+ }
12
+ function o(e, r) {
13
+ return n[0] = e, n[1] = r, t[0];
14
+ }
15
+ //#endregion
16
+ export { o as convert32To64Uint, a as convert64To32Uint, r as load32From64Uint, i as store32In64Uint };
17
+
18
+ //# sourceMappingURL=32-from-64-uint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"32-from-64-uint.js","names":["buffer","uint64Array","uint32Array","load32From64Uint","convert64To32Uint","data","index","store32In64Uint","convert32To64Uint","value1","value2","value"],"sources":["../../src/utils/32-from-64-uint.ts"],"sourcesContent":["const buffer = new ArrayBuffer(8);\nconst uint64Array = new BigUint64Array(buffer);\nconst uint32Array = new Uint32Array(buffer);\n\nexport function load32From64Uint(data: BigUint64Array, index: number): [number, number] {\n\treturn convert64To32Uint(Atomics.load(data, index));\n}\n\nexport function store32In64Uint(data: BigUint64Array, index: number, value1: number, value2: number) {\n\tAtomics.store(data, index, convert32To64Uint(value1, value2));\n}\n\nexport function convert64To32Uint(value: bigint): [number, number] {\n\tuint64Array[0] = value;\n\n\treturn [uint32Array[0], uint32Array[1]];\n}\n\nexport function convert32To64Uint(value1: number, value2: number): bigint {\n\tuint32Array[0] = value1;\n\tuint32Array[1] = value2;\n\n\treturn uint64Array[0];\n}\n"],"mappings":";AAAA,IAAMA,oBAAS,IAAI,YAAY,CAAC,GAC1BC,IAAc,IAAI,eAAeD,CAAM,GACvCE,IAAc,IAAI,YAAYF,CAAM;AAE1C,SAAgBG,EAAiB,GAAsB,GAAiC;CACvF,OAAOC,EAAkB,QAAQ,KAAKC,GAAMC,CAAK,CAAC;AACnD;AAEA,SAAgBC,EAAgB,GAAsB,GAAe,GAAgB,GAAgB;CACpG,QAAQ,MAAMF,GAAMC,GAAOE,EAAkBC,GAAQC,CAAM,CAAC;AAC7D;AAEA,SAAgBN,EAAkB,GAAiC;CAGlE,OAFA,EAAY,KAAKO,GAEV,CAACT,EAAY,IAAIA,EAAY,EAAE;AACvC;AAEA,SAAgBM,EAAkB,GAAgB,GAAwB;CAIzE,OAHA,EAAY,KAAKC,GACjB,EAAY,KAAKC,GAEVT,EAAY;AACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"array-type.js","names":[],"sources":["../../src/utils/array-type.ts"],"sourcesContent":["import type { TypedArrayConstructor } from '../interfaces/typed-array-constructor';\n\n// Every numeric view a data structure can store values in. The BigInt views (int64/uint64) carry bigint elements;\n// all others carry number. A view's scalar type is T[number], so public signatures derive it straight from T.\ntype NumericArray = Uint32Array | Int32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;\n\n// Persisted in shared memory (the TYPE slot), so the order is append-only - never renumber an existing entry.\nconst ARRAY_TYPE = {\n\tuint32: 0,\n\tint32: 1,\n\tfloat32: 2,\n\tfloat64: 3,\n\tint64: 4,\n\tuint64: 5,\n} as const;\n\n// A numeric view whose element getter/setter accepts number or bigint. TypeScript can't prove `view[i] = value` on a\n// generic (possibly-bigint) view because the union's index signatures collapse to `never`; going through this alias\n// keeps the write type-safe at the boundary. Types are erased, so the emitted store is identical to a direct one.\ntype NumericArrayIO = { [index: number]: number | bigint };\n\nfunction getArrayTypeCode(type: unknown): number {\n\tif(type === Int32Array) {\n\t\treturn ARRAY_TYPE.int32;\n\t} else if(type === Float32Array) {\n\t\treturn ARRAY_TYPE.float32;\n\t} else if(type === Float64Array) {\n\t\treturn ARRAY_TYPE.float64;\n\t} else if(type === BigInt64Array) {\n\t\treturn ARRAY_TYPE.int64;\n\t} else if(type === BigUint64Array) {\n\t\treturn ARRAY_TYPE.uint64;\n\t} else {\n\t\treturn ARRAY_TYPE.uint32;\n\t}\n}\n\n// 64-bit elements occupy two u32 allocation units; everything else occupies one. Callers size blocks as count * this.\nfunction getByteMultipler(typeCode: number): number {\n\treturn typeCode >= ARRAY_TYPE.float64 ? 2 : 1;\n}\n\nfunction isBigIntType(typeCode: number): boolean {\n\treturn typeCode === ARRAY_TYPE.int64 || typeCode === ARRAY_TYPE.uint64;\n}\n\n// Float views don't support Atomics; callers that publish elements atomically must fall back to a plain store for these.\nfunction isFloatType(typeCode: number): boolean {\n\treturn typeCode === ARRAY_TYPE.float32 || typeCode === ARRAY_TYPE.float64;\n}\n\n// Builds the typed view for a resolved type code. `length` is the element count (not u32 units); for 64-bit types the\n// backing block must already reserve length * getByteMultipler(typeCode) u32s.\nfunction makeArrayView(typeCode: number, buffer: ArrayBufferLike, byteOffset: number, length: number): NumericArray {\n\tswitch(typeCode) {\n\t\tcase ARRAY_TYPE.int32:\n\t\t\treturn new Int32Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.float32:\n\t\t\treturn new Float32Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.float64:\n\t\t\treturn new Float64Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.int64:\n\t\t\treturn new BigInt64Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.uint64:\n\t\t\treturn new BigUint64Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.uint32:\n\t\t\treturn new Uint32Array(buffer, byteOffset, length);\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown data block type ${typeCode}`);\n\t}\n}\n\nexport { ARRAY_TYPE, getArrayTypeCode, getByteMultipler, isBigIntType, isFloatType, makeArrayView };\nexport type { NumericArray, NumericArrayIO, TypedArrayConstructor };\n"],"mappings":";AAOA,IAAM,IAAa;CAClB,QAAQ;CACR,OAAO;CACP,SAAS;CACT,SAAS;CACT,OAAO;CACP,QAAQ;AACT;AAOA,SAAS,EAAiB,GAAuB;CAY/C,OAXE,MAAS,aACJ,EAAW,QACT,MAAS,eACX,EAAW,UACT,MAAS,eACX,EAAW,UACT,MAAS,gBACX,EAAW,QACT,MAAS,iBACX,EAAW,SAEX,EAAW;AAEpB;AAGA,SAAS,EAAiB,GAA0B;CACnD,OAAO,KAAY,EAAW,UAAU,IAAI;AAC7C;AAEA,SAAS,EAAa,GAA2B;CAChD,OAAO,MAAa,EAAW,SAAS,MAAa,EAAW;AACjE;AAGA,SAAS,EAAY,GAA2B;CAC/C,OAAO,MAAa,EAAW,WAAW,MAAa,EAAW;AACnE;AAIA,SAAS,EAAc,GAAkB,GAAyB,GAAoB,GAA8B;CACnH,QAAO,GAAP;EACC,KAAK,EAAW,OACf,OAAO,IAAI,WAAW,GAAQ,GAAY,CAAM;EACjD,KAAK,EAAW,SACf,OAAO,IAAI,aAAa,GAAQ,GAAY,CAAM;EACnD,KAAK,EAAW,SACf,OAAO,IAAI,aAAa,GAAQ,GAAY,CAAM;EACnD,KAAK,EAAW,OACf,OAAO,IAAI,cAAc,GAAQ,GAAY,CAAM;EACpD,KAAK,EAAW,QACf,OAAO,IAAI,eAAe,GAAQ,GAAY,CAAM;EACrD,KAAK,EAAW,QACf,OAAO,IAAI,YAAY,GAAQ,GAAY,CAAM;EAClD,SACC,MAAU,MAAM,2BAA2B,GAAU;CACvD;AACD"}
1
+ {"version":3,"file":"array-type.js","names":["ARRAY_TYPE","getArrayTypeCode","type","getByteMultipler","typeCode","isBigIntType","isFloatType","makeArrayView","buffer","byteOffset","length"],"sources":["../../src/utils/array-type.ts"],"sourcesContent":["import type { TypedArrayConstructor } from '../interfaces/typed-array-constructor';\n\n// Every numeric view a data structure can store values in. The BigInt views (int64/uint64) carry bigint elements;\n// all others carry number. A view's scalar type is T[number], so public signatures derive it straight from T.\ntype NumericArray = Uint32Array | Int32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;\n\n// Persisted in shared memory (the TYPE slot), so the order is append-only - never renumber an existing entry.\nconst ARRAY_TYPE = {\n\tuint32: 0,\n\tint32: 1,\n\tfloat32: 2,\n\tfloat64: 3,\n\tint64: 4,\n\tuint64: 5,\n} as const;\n\n// A numeric view whose element getter/setter accepts number or bigint. TypeScript can't prove `view[i] = value` on a\n// generic (possibly-bigint) view because the union's index signatures collapse to `never`; going through this alias\n// keeps the write type-safe at the boundary. Types are erased, so the emitted store is identical to a direct one.\ntype NumericArrayIO = { [index: number]: number | bigint };\n\nfunction getArrayTypeCode(type: unknown): number {\n\tif(type === Int32Array) {\n\t\treturn ARRAY_TYPE.int32;\n\t} else if(type === Float32Array) {\n\t\treturn ARRAY_TYPE.float32;\n\t} else if(type === Float64Array) {\n\t\treturn ARRAY_TYPE.float64;\n\t} else if(type === BigInt64Array) {\n\t\treturn ARRAY_TYPE.int64;\n\t} else if(type === BigUint64Array) {\n\t\treturn ARRAY_TYPE.uint64;\n\t} else {\n\t\treturn ARRAY_TYPE.uint32;\n\t}\n}\n\n// 64-bit elements occupy two u32 allocation units; everything else occupies one. Callers size blocks as count * this.\nfunction getByteMultipler(typeCode: number): number {\n\treturn typeCode >= ARRAY_TYPE.float64 ? 2 : 1;\n}\n\nfunction isBigIntType(typeCode: number): boolean {\n\treturn typeCode === ARRAY_TYPE.int64 || typeCode === ARRAY_TYPE.uint64;\n}\n\n// Float views don't support Atomics; callers that publish elements atomically must fall back to a plain store for these.\nfunction isFloatType(typeCode: number): boolean {\n\treturn typeCode === ARRAY_TYPE.float32 || typeCode === ARRAY_TYPE.float64;\n}\n\n// Builds the typed view for a resolved type code. `length` is the element count (not u32 units); for 64-bit types the\n// backing block must already reserve length * getByteMultipler(typeCode) u32s.\nfunction makeArrayView(typeCode: number, buffer: ArrayBufferLike, byteOffset: number, length: number): NumericArray {\n\tswitch(typeCode) {\n\t\tcase ARRAY_TYPE.int32:\n\t\t\treturn new Int32Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.float32:\n\t\t\treturn new Float32Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.float64:\n\t\t\treturn new Float64Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.int64:\n\t\t\treturn new BigInt64Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.uint64:\n\t\t\treturn new BigUint64Array(buffer, byteOffset, length);\n\t\tcase ARRAY_TYPE.uint32:\n\t\t\treturn new Uint32Array(buffer, byteOffset, length);\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown data block type ${typeCode}`);\n\t}\n}\n\nexport { ARRAY_TYPE, getArrayTypeCode, getByteMultipler, isBigIntType, isFloatType, makeArrayView };\nexport type { NumericArray, NumericArrayIO, TypedArrayConstructor };\n"],"mappings":";AAOA,IAAMA,IAAa;CAClB,QAAQ;CACR,OAAO;CACP,SAAS;CACT,SAAS;CACT,OAAO;CACP,QAAQ;AACT;AAOA,SAASC,EAAiB,GAAuB;CAY/C,OAXEC,MAAS,aACJF,EAAW,QACTE,MAAS,eACXF,EAAW,UACTE,MAAS,eACXF,EAAW,UACTE,MAAS,gBACXF,EAAW,QACTE,MAAS,iBACXF,EAAW,SAEXA,EAAW;AAEpB;AAGA,SAASG,EAAiB,GAA0B;CACnD,OAAOC,KAAYJ,EAAW,UAAU,IAAI;AAC7C;AAEA,SAASK,EAAa,GAA2B;CAChD,OAAOD,MAAaJ,EAAW,SAASI,MAAaJ,EAAW;AACjE;AAGA,SAASM,EAAY,GAA2B;CAC/C,OAAOF,MAAaJ,EAAW,WAAWI,MAAaJ,EAAW;AACnE;AAIA,SAASO,EAAc,GAAkB,GAAyB,GAAoB,GAA8B;CACnH,QAAOH,GAAP;EACC,KAAKJ,EAAW,OACf,OAAO,IAAI,WAAWQ,GAAQC,GAAYC,CAAM;EACjD,KAAKV,EAAW,SACf,OAAO,IAAI,aAAaQ,GAAQC,GAAYC,CAAM;EACnD,KAAKV,EAAW,SACf,OAAO,IAAI,aAAaQ,GAAQC,GAAYC,CAAM;EACnD,KAAKV,EAAW,OACf,OAAO,IAAI,cAAcQ,GAAQC,GAAYC,CAAM;EACpD,KAAKV,EAAW,QACf,OAAO,IAAI,eAAeQ,GAAQC,GAAYC,CAAM;EACrD,KAAKV,EAAW,QACf,OAAO,IAAI,YAAYQ,GAAQC,GAAYC,CAAM;EAClD,SACC,MAAU,MAAM,2BAA2BN,GAAU;CACvD;AACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"atomic-math.js","names":[],"sources":["../../src/utils/atomic-math.ts"],"sourcesContent":["import { compareExchangeFloat32, loadFloat32 } from './float32-atomics';\n\nexport function addAtomicInt(array: Uint32Array | Int32Array, index: number, amount: number, max: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = Atomics.load(array, index);\n\t\tnewValue = Math.min(oldValue + amount, max);\n\t} while(Atomics.compareExchange(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}\n\nexport function subtractAtomicInt(array: Uint32Array | Int32Array, index: number, amount: number, min: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = Atomics.load(array, index);\n\t\tnewValue = Math.max(oldValue - amount, min);\n\t} while(Atomics.compareExchange(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}\n\nexport function addAtomicFloat32(array: Float32Array, index: number, amount: number, max: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = loadFloat32(array, index);\n\t\tnewValue = Math.min(oldValue + amount, max);\n\t} while(compareExchangeFloat32(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}\n\nexport function subtractAtomicFloat(array: Float32Array, index: number, amount: number, min: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = loadFloat32(array, index);\n\t\tnewValue = Math.max(oldValue - amount, min);\n\t} while(compareExchangeFloat32(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}"],"mappings":";;AAEA,SAAgB,EAAa,GAAiC,GAAe,GAAgB,GAAa;CACzG,IAAI,GACA;CACJ;EAEC,AADA,IAAW,QAAQ,KAAK,GAAO,CAAK,GACpC,IAAW,KAAK,IAAI,IAAW,GAAQ,CAAG;QACnC,QAAQ,gBAAgB,GAAO,GAAO,GAAU,CAAQ,MAAM;CAEtE,OAAO;AACR;AAEA,SAAgB,EAAkB,GAAiC,GAAe,GAAgB,GAAa;CAC9G,IAAI,GACA;CACJ;EAEC,AADA,IAAW,QAAQ,KAAK,GAAO,CAAK,GACpC,IAAW,KAAK,IAAI,IAAW,GAAQ,CAAG;QACnC,QAAQ,gBAAgB,GAAO,GAAO,GAAU,CAAQ,MAAM;CAEtE,OAAO;AACR;AAEA,SAAgB,EAAiB,GAAqB,GAAe,GAAgB,GAAa;CACjG,IAAI,GACA;CACJ;EAEC,AADA,IAAW,EAAY,GAAO,CAAK,GACnC,IAAW,KAAK,IAAI,IAAW,GAAQ,CAAG;QACnC,EAAuB,GAAO,GAAO,GAAU,CAAQ,MAAM;CAErE,OAAO;AACR;AAEA,SAAgB,EAAoB,GAAqB,GAAe,GAAgB,GAAa;CACpG,IAAI,GACA;CACJ;EAEC,AADA,IAAW,EAAY,GAAO,CAAK,GACnC,IAAW,KAAK,IAAI,IAAW,GAAQ,CAAG;QACnC,EAAuB,GAAO,GAAO,GAAU,CAAQ,MAAM;CAErE,OAAO;AACR"}
1
+ {"version":3,"file":"atomic-math.js","names":["addAtomicInt","oldValue","newValue","array","index","amount","max","subtractAtomicInt","min","addAtomicFloat32","loadFloat32","compareExchangeFloat32","subtractAtomicFloat"],"sources":["../../src/utils/atomic-math.ts"],"sourcesContent":["import { compareExchangeFloat32, loadFloat32 } from './float32-atomics';\n\nexport function addAtomicInt(array: Uint32Array | Int32Array, index: number, amount: number, max: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = Atomics.load(array, index);\n\t\tnewValue = Math.min(oldValue + amount, max);\n\t} while(Atomics.compareExchange(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}\n\nexport function subtractAtomicInt(array: Uint32Array | Int32Array, index: number, amount: number, min: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = Atomics.load(array, index);\n\t\tnewValue = Math.max(oldValue - amount, min);\n\t} while(Atomics.compareExchange(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}\n\nexport function addAtomicFloat32(array: Float32Array, index: number, amount: number, max: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = loadFloat32(array, index);\n\t\tnewValue = Math.min(oldValue + amount, max);\n\t} while(compareExchangeFloat32(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}\n\nexport function subtractAtomicFloat(array: Float32Array, index: number, amount: number, min: number) {\n\tlet oldValue;\n\tlet newValue;\n\tdo {\n\t\toldValue = loadFloat32(array, index);\n\t\tnewValue = Math.max(oldValue - amount, min);\n\t} while(compareExchangeFloat32(array, index, oldValue, newValue) !== oldValue);\n\n\treturn newValue;\n}"],"mappings":";;AAEA,SAAgBA,EAAa,GAAiC,GAAe,GAAgB,GAAa;CACzG,IAAIC,GACAC;CACJ;EAEC,AADA,IAAW,QAAQ,KAAKC,GAAOC,CAAK,GACpC,IAAW,KAAK,IAAIH,IAAWI,GAAQC,CAAG;QACnC,QAAQ,gBAAgBH,GAAOC,GAAOH,GAAUC,CAAQ,MAAMD;CAEtE,OAAOC;AACR;AAEA,SAAgBK,EAAkB,GAAiC,GAAe,GAAgB,GAAa;CAC9G,IAAIN,GACAC;CACJ;EAEC,AADA,IAAW,QAAQ,KAAKC,GAAOC,CAAK,GACpC,IAAW,KAAK,IAAIH,IAAWI,GAAQG,CAAG;QACnC,QAAQ,gBAAgBL,GAAOC,GAAOH,GAAUC,CAAQ,MAAMD;CAEtE,OAAOC;AACR;AAEA,SAAgBO,EAAiB,GAAqB,GAAe,GAAgB,GAAa;CACjG,IAAIR,GACAC;CACJ;EAEC,AADA,IAAWQ,EAAYP,GAAOC,CAAK,GACnC,IAAW,KAAK,IAAIH,IAAWI,GAAQC,CAAG;QACnCK,EAAuBR,GAAOC,GAAOH,GAAUC,CAAQ,MAAMD;CAErE,OAAOC;AACR;AAEA,SAAgBU,EAAoB,GAAqB,GAAe,GAAgB,GAAa;CACpG,IAAIX,GACAC;CACJ;EAEC,AADA,IAAWQ,EAAYP,GAAOC,CAAK,GACnC,IAAW,KAAK,IAAIH,IAAWI,GAAQG,CAAG;QACnCG,EAAuBR,GAAOC,GAAOH,GAAUC,CAAQ,MAAMD;CAErE,OAAOC;AACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"float32-atomics.js","names":[],"sources":["../../src/utils/float32-atomics.ts"],"sourcesContent":["// For doing Atomic operations on floats in SharedArrayBuffers\nconst buffer = new ArrayBuffer(4);\nconst float32 = new Float32Array(buffer);\nconst int32 = new Int32Array(buffer);\n\nexport function loadFloat32(data: Int32Array | Uint32Array | Float32Array, index: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt32ToFloat32(Atomics.load(data, index));\n}\nexport function storeFloat32(data: Int32Array | Uint32Array | Float32Array, index: number, value: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\tAtomics.store(data, index, convertFloat32ToInt32(value));\n}\n\nexport function convertInt32ToFloat32(value: number) {\n\tint32[0] = value;\n\n\treturn float32[0];\n}\nexport function convertFloat32ToInt32(value: number) {\n\tfloat32[0] = value;\n\n\treturn int32[0];\n}\n\nexport function exchangeFloat32(data: Int32Array | Uint32Array | Float32Array, index: number, value: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt32ToFloat32(Atomics.exchange(data, index, convertFloat32ToInt32(value)));\n}\n\nexport function compareExchangeFloat32(data: Int32Array | Uint32Array | Float32Array, index: number, expectedValue: number, replacementValue: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt32ToFloat32(Atomics.compareExchange(data, index, convertFloat32ToInt32(expectedValue), convertFloat32ToInt32(replacementValue)));\n}"],"mappings":";AACA,IAAM,oBAAS,IAAI,YAAY,CAAC,GAC1B,IAAU,IAAI,aAAa,CAAM,GACjC,IAAQ,IAAI,WAAW,CAAM;AAEnC,SAAgB,EAAY,GAA+C,GAAe;CAKzF,OAJG,aAAgB,iBAClB,IAAO,IAAI,WAAW,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAGzD,EAAsB,QAAQ,KAAK,GAAM,CAAK,CAAC;AACvD;AACA,SAAgB,EAAa,GAA+C,GAAe,GAAe;CAKzG,AAJG,aAAgB,iBAClB,IAAO,IAAI,WAAW,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAGhE,QAAQ,MAAM,GAAM,GAAO,EAAsB,CAAK,CAAC;AACxD;AAEA,SAAgB,EAAsB,GAAe;CAGpD,OAFA,EAAM,KAAK,GAEJ,EAAQ;AAChB;AACA,SAAgB,EAAsB,GAAe;CAGpD,OAFA,EAAQ,KAAK,GAEN,EAAM;AACd;AAEA,SAAgB,EAAgB,GAA+C,GAAe,GAAe;CAK5G,OAJG,aAAgB,iBAClB,IAAO,IAAI,WAAW,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAGzD,EAAsB,QAAQ,SAAS,GAAM,GAAO,EAAsB,CAAK,CAAC,CAAC;AACzF;AAEA,SAAgB,EAAuB,GAA+C,GAAe,GAAuB,GAA0B;CAKrJ,OAJG,aAAgB,iBAClB,IAAO,IAAI,WAAW,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAGzD,EAAsB,QAAQ,gBAAgB,GAAM,GAAO,EAAsB,CAAa,GAAG,EAAsB,CAAgB,CAAC,CAAC;AACjJ"}
1
+ {"version":3,"file":"float32-atomics.js","names":["buffer","float32","int32","loadFloat32","data","convertInt32ToFloat32","index","storeFloat32","convertFloat32ToInt32","value","exchangeFloat32","compareExchangeFloat32","expectedValue","replacementValue"],"sources":["../../src/utils/float32-atomics.ts"],"sourcesContent":["// For doing Atomic operations on floats in SharedArrayBuffers\nconst buffer = new ArrayBuffer(4);\nconst float32 = new Float32Array(buffer);\nconst int32 = new Int32Array(buffer);\n\nexport function loadFloat32(data: Int32Array | Uint32Array | Float32Array, index: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt32ToFloat32(Atomics.load(data, index));\n}\nexport function storeFloat32(data: Int32Array | Uint32Array | Float32Array, index: number, value: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\tAtomics.store(data, index, convertFloat32ToInt32(value));\n}\n\nexport function convertInt32ToFloat32(value: number) {\n\tint32[0] = value;\n\n\treturn float32[0];\n}\nexport function convertFloat32ToInt32(value: number) {\n\tfloat32[0] = value;\n\n\treturn int32[0];\n}\n\nexport function exchangeFloat32(data: Int32Array | Uint32Array | Float32Array, index: number, value: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt32ToFloat32(Atomics.exchange(data, index, convertFloat32ToInt32(value)));\n}\n\nexport function compareExchangeFloat32(data: Int32Array | Uint32Array | Float32Array, index: number, expectedValue: number, replacementValue: number) {\n\tif(data instanceof Float32Array) {\n\t\tdata = new Int32Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt32ToFloat32(Atomics.compareExchange(data, index, convertFloat32ToInt32(expectedValue), convertFloat32ToInt32(replacementValue)));\n}"],"mappings":";AACA,IAAMA,oBAAS,IAAI,YAAY,CAAC,GAC1BC,IAAU,IAAI,aAAaD,CAAM,GACjCE,IAAQ,IAAI,WAAWF,CAAM;AAEnC,SAAgBG,EAAY,GAA+C,GAAe;CAKzF,OAJGC,aAAgB,iBAClB,IAAO,IAAI,WAAWA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAGzDC,EAAsB,QAAQ,KAAKD,GAAME,CAAK,CAAC;AACvD;AACA,SAAgBC,EAAa,GAA+C,GAAe,GAAe;CAKzG,AAJGH,aAAgB,iBAClB,IAAO,IAAI,WAAWA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAGhE,QAAQ,MAAMA,GAAME,GAAOE,EAAsBC,CAAK,CAAC;AACxD;AAEA,SAAgBJ,EAAsB,GAAe;CAGpD,OAFA,EAAM,KAAKI,GAEJR,EAAQ;AAChB;AACA,SAAgBO,EAAsB,GAAe;CAGpD,OAFA,EAAQ,KAAKC,GAENP,EAAM;AACd;AAEA,SAAgBQ,EAAgB,GAA+C,GAAe,GAAe;CAK5G,OAJGN,aAAgB,iBAClB,IAAO,IAAI,WAAWA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAGzDC,EAAsB,QAAQ,SAASD,GAAME,GAAOE,EAAsBC,CAAK,CAAC,CAAC;AACzF;AAEA,SAAgBE,EAAuB,GAA+C,GAAe,GAAuB,GAA0B;CAKrJ,OAJGP,aAAgB,iBAClB,IAAO,IAAI,WAAWA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAGzDC,EAAsB,QAAQ,gBAAgBD,GAAME,GAAOE,EAAsBI,CAAa,GAAGJ,EAAsBK,CAAgB,CAAC,CAAC;AACjJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"float64-atomics.js","names":[],"sources":["../../src/utils/float64-atomics.ts"],"sourcesContent":["// For doing Atomic operations on floats in SharedArrayBuffers\nconst buffer = new ArrayBuffer(8);\nconst float64 = new Float64Array(buffer);\nconst int64 = new BigInt64Array(buffer);\n\nexport function loadFloat64(data: BigInt64Array | Float64Array, index: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt64ToFloat64(Atomics.load(data, index));\n}\nexport function storeFloat64(data: BigInt64Array | Float64Array, index: number, value: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\tAtomics.store(data, index, convertFloat64ToInt64(value));\n}\n\nexport function convertInt64ToFloat64(value: bigint) {\n\tint64[0] = value;\n\n\treturn float64[0];\n}\nexport function convertFloat64ToInt64(value: number) {\n\tfloat64[0] = value;\n\n\treturn int64[0];\n}\n\nexport function exchangeFloat64(data: BigInt64Array | Float64Array, index: number, value: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt64ToFloat64(Atomics.exchange(data, index, convertFloat64ToInt64(value)));\n}\n\nexport function compareExchangeFloat64(data: BigInt64Array | Float64Array, index: number, expectedValue: number, replacementValue: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt64ToFloat64(Atomics.compareExchange(data, index, convertFloat64ToInt64(expectedValue), convertFloat64ToInt64(replacementValue)));\n}"],"mappings":";AACA,IAAM,oBAAS,IAAI,YAAY,CAAC,GAC1B,IAAU,IAAI,aAAa,CAAM,GACjC,IAAQ,IAAI,cAAc,CAAM;AAEtC,SAAgB,EAAY,GAAoC,GAAe;CAK9E,OAJG,aAAgB,iBAClB,IAAO,IAAI,cAAc,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAG5D,EAAsB,QAAQ,KAAK,GAAM,CAAK,CAAC;AACvD;AACA,SAAgB,EAAa,GAAoC,GAAe,GAAe;CAK9F,AAJG,aAAgB,iBAClB,IAAO,IAAI,cAAc,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAGnE,QAAQ,MAAM,GAAM,GAAO,EAAsB,CAAK,CAAC;AACxD;AAEA,SAAgB,EAAsB,GAAe;CAGpD,OAFA,EAAM,KAAK,GAEJ,EAAQ;AAChB;AACA,SAAgB,EAAsB,GAAe;CAGpD,OAFA,EAAQ,KAAK,GAEN,EAAM;AACd;AAEA,SAAgB,EAAgB,GAAoC,GAAe,GAAe;CAKjG,OAJG,aAAgB,iBAClB,IAAO,IAAI,cAAc,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAG5D,EAAsB,QAAQ,SAAS,GAAM,GAAO,EAAsB,CAAK,CAAC,CAAC;AACzF;AAEA,SAAgB,EAAuB,GAAoC,GAAe,GAAuB,GAA0B;CAK1I,OAJG,aAAgB,iBAClB,IAAO,IAAI,cAAc,EAAK,QAAQ,EAAK,YAAY,EAAK,MAAM,IAG5D,EAAsB,QAAQ,gBAAgB,GAAM,GAAO,EAAsB,CAAa,GAAG,EAAsB,CAAgB,CAAC,CAAC;AACjJ"}
1
+ {"version":3,"file":"float64-atomics.js","names":["buffer","float64","int64","loadFloat64","data","convertInt64ToFloat64","index","storeFloat64","convertFloat64ToInt64","value","exchangeFloat64","compareExchangeFloat64","expectedValue","replacementValue"],"sources":["../../src/utils/float64-atomics.ts"],"sourcesContent":["// For doing Atomic operations on floats in SharedArrayBuffers\nconst buffer = new ArrayBuffer(8);\nconst float64 = new Float64Array(buffer);\nconst int64 = new BigInt64Array(buffer);\n\nexport function loadFloat64(data: BigInt64Array | Float64Array, index: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt64ToFloat64(Atomics.load(data, index));\n}\nexport function storeFloat64(data: BigInt64Array | Float64Array, index: number, value: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\tAtomics.store(data, index, convertFloat64ToInt64(value));\n}\n\nexport function convertInt64ToFloat64(value: bigint) {\n\tint64[0] = value;\n\n\treturn float64[0];\n}\nexport function convertFloat64ToInt64(value: number) {\n\tfloat64[0] = value;\n\n\treturn int64[0];\n}\n\nexport function exchangeFloat64(data: BigInt64Array | Float64Array, index: number, value: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt64ToFloat64(Atomics.exchange(data, index, convertFloat64ToInt64(value)));\n}\n\nexport function compareExchangeFloat64(data: BigInt64Array | Float64Array, index: number, expectedValue: number, replacementValue: number) {\n\tif(data instanceof Float64Array) {\n\t\tdata = new BigInt64Array(data.buffer, data.byteOffset, data.length);\n\t}\n\n\treturn convertInt64ToFloat64(Atomics.compareExchange(data, index, convertFloat64ToInt64(expectedValue), convertFloat64ToInt64(replacementValue)));\n}"],"mappings":";AACA,IAAMA,oBAAS,IAAI,YAAY,CAAC,GAC1BC,IAAU,IAAI,aAAaD,CAAM,GACjCE,IAAQ,IAAI,cAAcF,CAAM;AAEtC,SAAgBG,EAAY,GAAoC,GAAe;CAK9E,OAJGC,aAAgB,iBAClB,IAAO,IAAI,cAAcA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAG5DC,EAAsB,QAAQ,KAAKD,GAAME,CAAK,CAAC;AACvD;AACA,SAAgBC,EAAa,GAAoC,GAAe,GAAe;CAK9F,AAJGH,aAAgB,iBAClB,IAAO,IAAI,cAAcA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAGnE,QAAQ,MAAMA,GAAME,GAAOE,EAAsBC,CAAK,CAAC;AACxD;AAEA,SAAgBJ,EAAsB,GAAe;CAGpD,OAFA,EAAM,KAAKI,GAEJR,EAAQ;AAChB;AACA,SAAgBO,EAAsB,GAAe;CAGpD,OAFA,EAAQ,KAAKC,GAENP,EAAM;AACd;AAEA,SAAgBQ,EAAgB,GAAoC,GAAe,GAAe;CAKjG,OAJGN,aAAgB,iBAClB,IAAO,IAAI,cAAcA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAG5DC,EAAsB,QAAQ,SAASD,GAAME,GAAOE,EAAsBC,CAAK,CAAC,CAAC;AACzF;AAEA,SAAgBE,EAAuB,GAAoC,GAAe,GAAuB,GAA0B;CAK1I,OAJGP,aAAgB,iBAClB,IAAO,IAAI,cAAcA,EAAK,QAAQA,EAAK,YAAYA,EAAK,MAAM,IAG5DC,EAAsB,QAAQ,gBAAgBD,GAAME,GAAOE,EAAsBI,CAAa,GAAGJ,EAAsBK,CAAgB,CAAC,CAAC;AACjJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","names":[],"sources":["../../src/utils/hash.ts"],"sourcesContent":["export function get32BitHash<K extends string | number>(key: K): number {\n\tif(typeof key === 'number') {\n\t\treturn key;\n\t} else if(typeof key === 'string') {\n\t\treturn hashString(key);\n\t} else {\n\t\treturn key;\n\t}\n}\n\n// Copied from https://github.com/mmomtchev/SharedMap/blob/master/index.js - MurmurHash2\nexport function hashString(str: string): number {\n\tlet\n\t\tl = str.length,\n\t\th = 17 ^ l,\n\t\ti = 0,\n\t\tk;\n\twhile(l >= 4) {\n\t\tk =\n\t\t\t((str.charCodeAt(i) & 0xff)) |\n\t\t\t((str.charCodeAt(++i) & 0xff) << 8) |\n\t\t\t((str.charCodeAt(++i) & 0xff) << 16) |\n\t\t\t((str.charCodeAt(++i) & 0xff) << 14);\n\t\tk = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\t\tk ^= k >>> 14;\n\t\tk = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\t\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\t\tl -= 4;\n\t\t++i;\n\t}\n\t/* eslint-disable no-fallthrough */\n\tswitch(l) {\n\t\tcase 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\t\tcase 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\t\tcase 1: h ^= (str.charCodeAt(i) & 0xff);\n\t\t\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\t}\n\t/* eslint-enable no-fallthrough */\n\th ^= h >>> 13;\n\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\th ^= h >>> 15;\n\th = h >>> 0;\n\treturn h;\n}\n\n// Fibonacci/avalanche mix so patterned integer keys (e.g. sequential ids) spread across a power-of-two table instead of\n// clustering. Returns an unsigned 32-bit value; callers mask with (capacity - 1).\nexport function mix32(h: number): number {\n\th = Math.imul(h ^ (h >>> 16), 0x45d9f3b);\n\th = Math.imul(h ^ (h >>> 16), 0x45d9f3b);\n\th = (h ^ (h >>> 16)) >>> 0;\n\treturn h;\n}\n"],"mappings":";AAAA,SAAgB,EAAwC,GAAgB;CAMtE,OALE,OAAO,KAAQ,WACV,IACE,OAAO,KAAQ,WACjB,EAAW,CAAG,IAEd;AAET;AAGA,SAAgB,EAAW,GAAqB;CAC/C,IACC,IAAI,EAAI,QACR,IAAI,KAAK,GACT,IAAI,GACJ;CACD,OAAM,KAAK,IAWV,AAVA,IACG,EAAI,WAAW,CAAC,IAAI,OACpB,EAAI,WAAW,EAAE,CAAC,IAAI,QAAS,KAC/B,EAAI,WAAW,EAAE,CAAC,IAAI,QAAS,MAC/B,EAAI,WAAW,EAAE,CAAC,IAAI,QAAS,IAClC,KAAO,IAAI,SAAU,gBAAkB,MAAM,MAAM,aAAc,UAAW,KAC5E,KAAK,MAAM,IACX,KAAO,IAAI,SAAU,gBAAkB,MAAM,MAAM,aAAc,UAAW,KAC5E,KAAO,IAAI,SAAU,gBAAkB,MAAM,MAAM,aAAc,UAAW,MAAO,GACnF,KAAK,GACL,EAAE;CAGH,QAAO,GAAP;EACC,KAAK,GAAG,MAAM,EAAI,WAAW,IAAI,CAAC,IAAI,QAAS;EAC/C,KAAK,GAAG,MAAM,EAAI,WAAW,IAAI,CAAC,IAAI,QAAS;EAC/C,KAAK,GACJ,AADO,KAAM,EAAI,WAAW,CAAC,IAAI,KACjC,KAAO,IAAI,SAAU,gBAAkB,MAAM,MAAM,aAAc,UAAW;CAC9E;CAMA,OAJA,KAAK,MAAM,IACX,KAAO,IAAI,SAAU,gBAAkB,MAAM,MAAM,aAAc,UAAW,KAC5E,KAAK,MAAM,IACX,OAAU,GACH;AACR;AAIA,SAAgB,EAAM,GAAmB;CAIxC,OAHA,IAAI,KAAK,KAAK,IAAK,MAAM,IAAK,QAAS,GACvC,IAAI,KAAK,KAAK,IAAK,MAAM,IAAK,QAAS,GACvC,KAAK,IAAK,MAAM,QAAS,GAClB;AACR"}
1
+ {"version":3,"file":"hash.js","names":["get32BitHash","key","hashString","l","str","h","i","k","mix32"],"sources":["../../src/utils/hash.ts"],"sourcesContent":["export function get32BitHash<K extends string | number>(key: K): number {\n\tif(typeof key === 'number') {\n\t\treturn key;\n\t} else if(typeof key === 'string') {\n\t\treturn hashString(key);\n\t} else {\n\t\treturn key;\n\t}\n}\n\n// Copied from https://github.com/mmomtchev/SharedMap/blob/master/index.js - MurmurHash2\nexport function hashString(str: string): number {\n\tlet\n\t\tl = str.length,\n\t\th = 17 ^ l,\n\t\ti = 0,\n\t\tk;\n\twhile(l >= 4) {\n\t\tk =\n\t\t\t((str.charCodeAt(i) & 0xff)) |\n\t\t\t((str.charCodeAt(++i) & 0xff) << 8) |\n\t\t\t((str.charCodeAt(++i) & 0xff) << 16) |\n\t\t\t((str.charCodeAt(++i) & 0xff) << 14);\n\t\tk = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\t\tk ^= k >>> 14;\n\t\tk = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\t\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\t\tl -= 4;\n\t\t++i;\n\t}\n\t/* eslint-disable no-fallthrough */\n\tswitch(l) {\n\t\tcase 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\t\tcase 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\t\tcase 1: h ^= (str.charCodeAt(i) & 0xff);\n\t\t\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\t}\n\t/* eslint-enable no-fallthrough */\n\th ^= h >>> 13;\n\th = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\th ^= h >>> 15;\n\th = h >>> 0;\n\treturn h;\n}\n\n// Fibonacci/avalanche mix so patterned integer keys (e.g. sequential ids) spread across a power-of-two table instead of\n// clustering. Returns an unsigned 32-bit value; callers mask with (capacity - 1).\nexport function mix32(h: number): number {\n\th = Math.imul(h ^ (h >>> 16), 0x45d9f3b);\n\th = Math.imul(h ^ (h >>> 16), 0x45d9f3b);\n\th = (h ^ (h >>> 16)) >>> 0;\n\treturn h;\n}\n"],"mappings":";AAAA,SAAgBA,EAAwC,GAAgB;CAMtE,OALE,OAAOC,KAAQ,WACVA,IACE,OAAOA,KAAQ,WACjBC,EAAWD,CAAG,IAEdA;AAET;AAGA,SAAgBC,EAAW,GAAqB;CAC/C,IACCC,IAAIC,EAAI,QACRC,IAAI,KAAKF,GACTG,IAAI,GACJC;CACD,OAAMJ,KAAK,IAWV,AAVA,IACGC,EAAI,WAAWE,CAAC,IAAI,OACpBF,EAAI,WAAW,EAAEE,CAAC,IAAI,QAAS,KAC/BF,EAAI,WAAW,EAAEE,CAAC,IAAI,QAAS,MAC/BF,EAAI,WAAW,EAAEE,CAAC,IAAI,QAAS,IAClC,KAAOC,IAAI,SAAU,gBAAkBA,MAAM,MAAM,aAAc,UAAW,KAC5E,KAAKA,MAAM,IACX,KAAOA,IAAI,SAAU,gBAAkBA,MAAM,MAAM,aAAc,UAAW,KAC5E,KAAOF,IAAI,SAAU,gBAAkBA,MAAM,MAAM,aAAc,UAAW,MAAOE,GACnF,KAAK,GACL,EAAED;CAGH,QAAOH,GAAP;EACC,KAAK,GAAG,MAAMC,EAAI,WAAWE,IAAI,CAAC,IAAI,QAAS;EAC/C,KAAK,GAAG,MAAMF,EAAI,WAAWE,IAAI,CAAC,IAAI,QAAS;EAC/C,KAAK,GACJ,AADO,KAAMF,EAAI,WAAWE,CAAC,IAAI,KACjC,KAAOD,IAAI,SAAU,gBAAkBA,MAAM,MAAM,aAAc,UAAW;CAC9E;CAMA,OAJA,KAAKA,MAAM,IACX,KAAOA,IAAI,SAAU,gBAAkBA,MAAM,MAAM,aAAc,UAAW,KAC5E,KAAKA,MAAM,IACX,OAAU,GACHA;AACR;AAIA,SAAgBG,EAAM,GAAmB;CAIxC,OAHA,IAAI,KAAK,KAAKH,IAAKA,MAAM,IAAK,QAAS,GACvC,IAAI,KAAK,KAAKA,IAAKA,MAAM,IAAK,QAAS,GACvC,KAAKA,IAAKA,MAAM,QAAS,GAClBA;AACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"pointer.js","names":[],"sources":["../../src/utils/pointer.ts"],"sourcesContent":["// A pointer packs (bufferByteOffset, bufferPosition) into one u32: the low `positionBits` bits hold the buffer position,\n// the high `32 - positionBits` bits hold the byte offset within that buffer. The split is per-heap (derived from the\n// heap's bufferSize) so a heap with larger buffers trades buffer count for buffer size while keeping the full 32-bit\n// (4GB) address space. `positionBits` defaults to DEFAULT_POSITION_BITS so callers that predate the per-heap split keep\n// working on default-sized heaps.\n\n// bottom 12 bits (4096) for bufferPosition, top 20 bits (1MB) for bufferByteOffset\nconst BYTE_OFFSET_BIT_COUNT = 20;\nconst POSITION_BIT_COUNT = 32 - BYTE_OFFSET_BIT_COUNT;\nconst DEFAULT_POSITION_BITS = POSITION_BIT_COUNT;\nconst MAX_BYTE_OFFSET_LENGTH = Math.pow(2, BYTE_OFFSET_BIT_COUNT);\nconst MAX_POSITION_LENGTH = Math.pow(2, POSITION_BIT_COUNT);\n\n// Smallest byte-offset bit count that can address a buffer of `bufferSize` bytes, and the resulting position bits.\nexport function positionBitsForBufferSize(bufferSize: number): number {\n\tlet offsetBits = bufferSize <= 1 ? 0 : 32 - Math.clz32(bufferSize - 1);\n\tlet positionBits = 32 - offsetBits;\n\tif(positionBits < 1) {\n\t\tthrow new Error(`Buffer size ${bufferSize} leaves no bits for buffer position (max ${Math.pow(2, 31)})`);\n\t}\n\treturn positionBits;\n}\n\nexport function loadPointer(data: Uint32Array, index: number = 0, positionBits: number = DEFAULT_POSITION_BITS) {\n\treturn getPointer(Atomics.load(data, index), positionBits);\n}\nexport function loadRawPointer(data: Uint32Array, index: number = 0) {\n\treturn Atomics.load(data, index);\n}\n\nexport function storePointer(data: Uint32Array, index: number = 0, bufferPosition: number, bufferByteOffset: number, positionBits: number = DEFAULT_POSITION_BITS) {\n\tAtomics.store(data, index, createPointer(bufferPosition, bufferByteOffset, positionBits));\n}\nexport function storeRawPointer(data: Uint32Array, index: number = 0, pointer: number) {\n\tAtomics.store(data, index, pointer);\n}\n\nexport function replacePointer(\n\tdata: Uint32Array,\n\tindex: number,\n\tnewBufferPosition: number,\n\tnewBufferByteOffset: number,\n\toldBufferPosition: number,\n\toldBufferByteOffset: number,\n\tpositionBits: number = DEFAULT_POSITION_BITS,\n) {\n\tlet oldPointer = createPointer(oldBufferPosition, oldBufferByteOffset, positionBits);\n\treturn Atomics.compareExchange(data, index, oldPointer, createPointer(newBufferPosition, newBufferByteOffset, positionBits)) === oldPointer;\n}\nexport function replaceRawPointer(data: Uint32Array, index: number, newPointer: number, oldPointer: number): boolean {\n\treturn Atomics.compareExchange(data, index, oldPointer, newPointer) === oldPointer;\n}\n\nexport function getPointer(value: number, positionBits: number = DEFAULT_POSITION_BITS) {\n\treturn {\n\t\tbufferPosition: value & ((1 << positionBits) - 1),\n\t\tbufferByteOffset: value >>> positionBits,\n\t};\n}\nexport function createPointer(bufferPosition: number, bufferByteOffset: number, positionBits: number = DEFAULT_POSITION_BITS) {\n\treturn bufferPosition + (bufferByteOffset << positionBits);\n}\n\nexport { BYTE_OFFSET_BIT_COUNT, POSITION_BIT_COUNT, DEFAULT_POSITION_BITS, MAX_BYTE_OFFSET_LENGTH, MAX_POSITION_LENGTH };\n"],"mappings":";AAOA,IAAM,IAAwB,IACxB,IAAqB,IACrB,IAAA,IACA,IAAkC,KAAA,IAClC,IAAsB;AAG5B,SAAgB,EAA0B,GAA4B;CAErE,IAAI,IAAe,MADF,KAAc,IAAI,IAAI,KAAK,KAAK,MAAM,IAAa,CAAC;CAErE,IAAG,IAAe,GACjB,MAAU,MAAM,eAAe,EAAW,2CAAoD,KAAG,GAAI,EAAE;CAExG,OAAO;AACR;AAEA,SAAgB,EAAY,GAAmB,IAAgB,GAAG,IAAA,IAA8C;CAC/G,OAAO,EAAW,QAAQ,KAAK,GAAM,CAAK,GAAG,CAAY;AAC1D;AACA,SAAgB,EAAe,GAAmB,IAAgB,GAAG;CACpE,OAAO,QAAQ,KAAK,GAAM,CAAK;AAChC;AAEA,SAAgB,EAAa,GAAmB,IAAgB,GAAG,GAAwB,GAA0B,IAAA,IAA8C;CAClK,QAAQ,MAAM,GAAM,GAAO,EAAc,GAAgB,GAAkB,CAAY,CAAC;AACzF;AACA,SAAgB,EAAgB,GAAmB,IAAgB,GAAG,GAAiB;CACtF,QAAQ,MAAM,GAAM,GAAO,CAAO;AACnC;AAEA,SAAgB,EACf,GACA,GACA,GACA,GACA,GACA,GACA,IAAA,IACC;CACD,IAAI,IAAa,EAAc,GAAmB,GAAqB,CAAY;CACnF,OAAO,QAAQ,gBAAgB,GAAM,GAAO,GAAY,EAAc,GAAmB,GAAqB,CAAY,CAAC,MAAM;AAClI;AACA,SAAgB,EAAkB,GAAmB,GAAe,GAAoB,GAA6B;CACpH,OAAO,QAAQ,gBAAgB,GAAM,GAAO,GAAY,CAAU,MAAM;AACzE;AAEA,SAAgB,EAAW,GAAe,IAAA,IAA8C;CACvF,OAAO;EACN,gBAAgB,KAAU,KAAK,KAAgB;EAC/C,kBAAkB,MAAU;CAC7B;AACD;AACA,SAAgB,EAAc,GAAwB,GAA0B,IAAA,IAA8C;CAC7H,OAAO,KAAkB,KAAoB;AAC9C"}
1
+ {"version":3,"file":"pointer.js","names":["BYTE_OFFSET_BIT_COUNT","POSITION_BIT_COUNT","DEFAULT_POSITION_BITS","MAX_BYTE_OFFSET_LENGTH","MAX_POSITION_LENGTH","positionBitsForBufferSize","positionBits","bufferSize","loadPointer","getPointer","data","index","loadRawPointer","storePointer","createPointer","bufferPosition","bufferByteOffset","storeRawPointer","pointer","replacePointer","oldPointer","oldBufferPosition","oldBufferByteOffset","newBufferPosition","newBufferByteOffset","replaceRawPointer","newPointer","value"],"sources":["../../src/utils/pointer.ts"],"sourcesContent":["// A pointer packs (bufferByteOffset, bufferPosition) into one u32: the low `positionBits` bits hold the buffer position,\n// the high `32 - positionBits` bits hold the byte offset within that buffer. The split is per-heap (derived from the\n// heap's bufferSize) so a heap with larger buffers trades buffer count for buffer size while keeping the full 32-bit\n// (4GB) address space. `positionBits` defaults to DEFAULT_POSITION_BITS so callers that predate the per-heap split keep\n// working on default-sized heaps.\n\n// bottom 12 bits (4096) for bufferPosition, top 20 bits (1MB) for bufferByteOffset\nconst BYTE_OFFSET_BIT_COUNT = 20;\nconst POSITION_BIT_COUNT = 32 - BYTE_OFFSET_BIT_COUNT;\nconst DEFAULT_POSITION_BITS = POSITION_BIT_COUNT;\nconst MAX_BYTE_OFFSET_LENGTH = Math.pow(2, BYTE_OFFSET_BIT_COUNT);\nconst MAX_POSITION_LENGTH = Math.pow(2, POSITION_BIT_COUNT);\n\n// Smallest byte-offset bit count that can address a buffer of `bufferSize` bytes, and the resulting position bits.\nexport function positionBitsForBufferSize(bufferSize: number): number {\n\tlet offsetBits = bufferSize <= 1 ? 0 : 32 - Math.clz32(bufferSize - 1);\n\tlet positionBits = 32 - offsetBits;\n\tif(positionBits < 1) {\n\t\tthrow new Error(`Buffer size ${bufferSize} leaves no bits for buffer position (max ${Math.pow(2, 31)})`);\n\t}\n\treturn positionBits;\n}\n\nexport function loadPointer(data: Uint32Array, index: number = 0, positionBits: number = DEFAULT_POSITION_BITS) {\n\treturn getPointer(Atomics.load(data, index), positionBits);\n}\nexport function loadRawPointer(data: Uint32Array, index: number = 0) {\n\treturn Atomics.load(data, index);\n}\n\nexport function storePointer(data: Uint32Array, index: number = 0, bufferPosition: number, bufferByteOffset: number, positionBits: number = DEFAULT_POSITION_BITS) {\n\tAtomics.store(data, index, createPointer(bufferPosition, bufferByteOffset, positionBits));\n}\nexport function storeRawPointer(data: Uint32Array, index: number = 0, pointer: number) {\n\tAtomics.store(data, index, pointer);\n}\n\nexport function replacePointer(\n\tdata: Uint32Array,\n\tindex: number,\n\tnewBufferPosition: number,\n\tnewBufferByteOffset: number,\n\toldBufferPosition: number,\n\toldBufferByteOffset: number,\n\tpositionBits: number = DEFAULT_POSITION_BITS,\n) {\n\tlet oldPointer = createPointer(oldBufferPosition, oldBufferByteOffset, positionBits);\n\treturn Atomics.compareExchange(data, index, oldPointer, createPointer(newBufferPosition, newBufferByteOffset, positionBits)) === oldPointer;\n}\nexport function replaceRawPointer(data: Uint32Array, index: number, newPointer: number, oldPointer: number): boolean {\n\treturn Atomics.compareExchange(data, index, oldPointer, newPointer) === oldPointer;\n}\n\nexport function getPointer(value: number, positionBits: number = DEFAULT_POSITION_BITS) {\n\treturn {\n\t\tbufferPosition: value & ((1 << positionBits) - 1),\n\t\tbufferByteOffset: value >>> positionBits,\n\t};\n}\nexport function createPointer(bufferPosition: number, bufferByteOffset: number, positionBits: number = DEFAULT_POSITION_BITS) {\n\treturn bufferPosition + (bufferByteOffset << positionBits);\n}\n\nexport { BYTE_OFFSET_BIT_COUNT, POSITION_BIT_COUNT, DEFAULT_POSITION_BITS, MAX_BYTE_OFFSET_LENGTH, MAX_POSITION_LENGTH };\n"],"mappings":";AAOA,IAAMA,IAAwB,IACxBC,IAAqB,IACrBC,IAAA,IACAC,IAAkC,KAAA,IAClCC,IAAsB;AAG5B,SAAgBC,EAA0B,GAA4B;CAErE,IAAIC,IAAe,MADFC,KAAc,IAAI,IAAI,KAAK,KAAK,MAAMA,IAAa,CAAC;CAErE,IAAGD,IAAe,GACjB,MAAU,MAAM,eAAeC,EAAW,2CAAoD,KAAG,GAAI,EAAE;CAExG,OAAOD;AACR;AAEA,SAAgBE,EAAY,GAAmB,IAAgB,GAAG,IAAA,IAA8C;CAC/G,OAAOC,EAAW,QAAQ,KAAKC,GAAMC,CAAK,GAAGL,CAAY;AAC1D;AACA,SAAgBM,EAAe,GAAmB,IAAgB,GAAG;CACpE,OAAO,QAAQ,KAAKF,GAAMC,CAAK;AAChC;AAEA,SAAgBE,EAAa,GAAmB,IAAgB,GAAG,GAAwB,GAA0B,IAAA,IAA8C;CAClK,QAAQ,MAAMH,GAAMC,GAAOG,EAAcC,GAAgBC,GAAkBV,CAAY,CAAC;AACzF;AACA,SAAgBW,EAAgB,GAAmB,IAAgB,GAAG,GAAiB;CACtF,QAAQ,MAAMP,GAAMC,GAAOO,CAAO;AACnC;AAEA,SAAgBC,EACf,GACA,GACA,GACA,GACA,GACA,GACA,IAAA,IACC;CACD,IAAIC,IAAaN,EAAcO,GAAmBC,GAAqBhB,CAAY;CACnF,OAAO,QAAQ,gBAAgBI,GAAMC,GAAOS,GAAYN,EAAcS,GAAmBC,GAAqBlB,CAAY,CAAC,MAAMc;AAClI;AACA,SAAgBK,EAAkB,GAAmB,GAAe,GAAoB,GAA6B;CACpH,OAAO,QAAQ,gBAAgBf,GAAMC,GAAOS,GAAYM,CAAU,MAAMN;AACzE;AAEA,SAAgBX,EAAW,GAAe,IAAA,IAA8C;CACvF,OAAO;EACN,gBAAgBkB,KAAU,KAAKrB,KAAgB;EAC/C,kBAAkBqB,MAAUrB;CAC7B;AACD;AACA,SAAgBQ,EAAc,GAAwB,GAA0B,IAAA,IAA8C;CAC7H,OAAOC,KAAkBC,KAAoBV;AAC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"typedarray.js","names":[],"sources":["../../src/utils/typedarray.js"],"sourcesContent":["// Copied from @thi.ng/api/typedarray\n// TODO: rewrite without this but for now just forked in order to add Atomics to base library\n\nvar GLType = /* @__PURE__ */ ((GLType2) => {\n\tGLType2[GLType2['I8'] = 5120] = 'I8';\n\tGLType2[GLType2['U8'] = 5121] = 'U8';\n\tGLType2[GLType2['I16'] = 5122] = 'I16';\n\tGLType2[GLType2['U16'] = 5123] = 'U16';\n\tGLType2[GLType2['I32'] = 5124] = 'I32';\n\tGLType2[GLType2['U32'] = 5125] = 'U32';\n\tGLType2[GLType2['F32'] = 5126] = 'F32';\n\treturn GLType2;\n})(GLType || {});\nconst GL2TYPE = {\n\t[5120 /* I8 */]: 'i8',\n\t[5121 /* U8 */]: 'u8',\n\t[5122 /* I16 */]: 'i16',\n\t[5123 /* U16 */]: 'u16',\n\t[5124 /* I32 */]: 'i32',\n\t[5125 /* U32 */]: 'u32',\n\t[5126 /* F32 */]: 'f32',\n};\nconst TYPE2GL = {\n\ti8: 5120 /* I8 */,\n\tu8: 5121 /* U8 */,\n\tu8c: 5121 /* U8 */,\n\ti16: 5122 /* I16 */,\n\tu16: 5123 /* U16 */,\n\ti32: 5124 /* I32 */,\n\tu32: 5125 /* U32 */,\n\tf32: 5126 /* F32 */,\n\tf64: void 0,\n};\nconst SIZEOF = {\n\tu8: 1,\n\tu8c: 1,\n\ti8: 1,\n\tu16: 2,\n\ti16: 2,\n\tu32: 4,\n\ti32: 4,\n\ti64: 8,\n\tu64: 8,\n\tf32: 4,\n\tf64: 8,\n};\nconst BIT_SHIFTS = {\n\ti8: 0,\n\tu8: 0,\n\tu8c: 0,\n\ti16: 1,\n\tu16: 1,\n\ti32: 2,\n\tu32: 2,\n\ti64: 3,\n\tu64: 3,\n\tf32: 2,\n\tf64: 3,\n};\nconst FLOAT_ARRAY_CTORS = {\n\tf32: Float32Array,\n\tf64: Float64Array,\n};\nconst INT_ARRAY_CTORS = {\n\ti8: Int8Array,\n\ti16: Int16Array,\n\ti32: Int32Array,\n};\nconst UINT_ARRAY_CTORS = {\n\tu8: Uint8Array,\n\tu8c: Uint8ClampedArray,\n\tu16: Uint16Array,\n\tu32: Uint32Array,\n};\nconst BIGINT_ARRAY_CTORS = {\n\ti64: BigInt64Array,\n\tu64: BigUint64Array,\n};\nconst TYPEDARRAY_CTORS = {\n\t...FLOAT_ARRAY_CTORS,\n\t...INT_ARRAY_CTORS,\n\t...UINT_ARRAY_CTORS,\n};\nconst asNativeType = (type) => {\n\tconst t = GL2TYPE[type];\n\treturn t !== void 0 ? t : type;\n};\nconst asGLType = (type) => {\n\tconst t = TYPE2GL[type];\n\treturn t !== void 0 ? t : type;\n};\nconst asInt = (...args) => args.map((x) => x | 0);\nconst sizeOf = (type) => SIZEOF[type] || SIZEOF[asNativeType(type)];\nfunction typedArray(type, ...xs) {\n\tconst ctor = BIGINT_ARRAY_CTORS[type];\n\treturn new (ctor || TYPEDARRAY_CTORS[asNativeType(type)])(...xs);\n}\nfunction typedArrayOfVec(type, data, stride) {\n\tconst $data = Array.isArray(data) ? data : [...data];\n\tif(stride === void 0)\n\t\tstride = $data[0].length;\n\tconst num = $data.length;\n\tconst res = typedArray(type, num * stride);\n\tfor(let i = 0, j = 0; i < num; i++, j += stride) {\n\t\tres.set($data[i], j);\n\t}\n\treturn res;\n}\nconst typedArrayType = (x) => {\n\tif(Array.isArray(x))\n\t\treturn 'f64';\n\tfor(let id in TYPEDARRAY_CTORS) {\n\t\tif(x instanceof TYPEDARRAY_CTORS[id])\n\t\t\treturn id;\n\t}\n\treturn 'f64';\n};\nconst uintTypeForSize = (x) => x <= 256 ? 'u8' : x <= 65536 ? 'u16' : 'u32';\nconst intTypeForSize = (x) => x >= -128 && x < 128 ? 'i8' : x >= -32768 && x < 32768 ? 'i16' : 'i32';\nconst uintTypeForBits = (x) => x > 16 ? 'u32' : x > 8 ? 'u16' : 'u8';\nconst intTypeForBits = (x) => x > 16 ? 'i32' : x > 8 ? 'i16' : 'i8';\nconst narrowInt = (t) => t === 'i64' ? 'i32' : t === 'i32' ? 'i16' : t === 'i16' ? 'i8' : 'i8';\nconst widenInt = (t) => t === 'i8' ? 'i16' : t === 'i16' ? 'i32' : t === 'i32' ? 'i64' : 'i64';\nconst narrowUint = (t) => t === 'u64' ? 'u32' : t === 'u32' ? 'u16' : t === 'u16' ? 'u8' : 'u8';\nconst widenUint = (t) => t === 'u8' || t === 'u8c' ? 'u16' : t === 'u16' ? 'u32' : t === 'u32' ? 'u64' : 'u64';\nconst narrowFloat = (t) => t === 'f64' ? 'f32' : 'f32';\nconst widenFloat = (t) => t === 'f32' ? 'f64' : 'f64';\nconst narrowType = (t) => t[0] === 'i' ? narrowInt(t) : t[0] === 'u' ? narrowUint(t) : narrowFloat(t);\nconst widenType = (t) => t[0] === 'i' ? widenInt(t) : t[0] === 'u' ? widenUint(t) : widenFloat(t);\nexport {\n\tBIGINT_ARRAY_CTORS,\n\tBIT_SHIFTS,\n\tFLOAT_ARRAY_CTORS,\n\tGL2TYPE,\n\tGLType,\n\tINT_ARRAY_CTORS,\n\tSIZEOF,\n\tTYPE2GL,\n\tTYPEDARRAY_CTORS,\n\tUINT_ARRAY_CTORS,\n\tasGLType,\n\tasInt,\n\tasNativeType,\n\tintTypeForBits,\n\tintTypeForSize,\n\tnarrowFloat,\n\tnarrowInt,\n\tnarrowType,\n\tnarrowUint,\n\tsizeOf,\n\ttypedArray,\n\ttypedArrayOfVec,\n\ttypedArrayType,\n\tuintTypeForBits,\n\tuintTypeForSize,\n\twidenFloat,\n\twidenInt,\n\twidenType,\n\twidenUint,\n};\n"],"mappings":";AAaA,IAAM,IAAU;CACd,MAAgB;CAChB,MAAgB;CAChB,MAAiB;CACjB,MAAiB;CACjB,MAAiB;CACjB,MAAiB;CACjB,MAAiB;AACnB,GAsCM,IAAoB;CACzB,KAAK;CACL,KAAK;AACN,GACM,IAAkB;CACvB,IAAI;CACJ,KAAK;CACL,KAAK;AACN,GACM,IAAmB;CACxB,IAAI;CACJ,KAAK;CACL,KAAK;CACL,KAAK;AACN,GACM,IAAqB;CAC1B,KAAK;CACL,KAAK;AACN,GACM,IAAmB;CACxB,GAAG;CACH,GAAG;CACH,GAAG;AACJ,GACM,KAAgB,MAAS;CAC9B,IAAM,IAAI,EAAQ;CAClB,OAAO,MAAM,KAAK,IAAQ,IAAJ;AACvB;AAOA,SAAS,EAAW,GAAM,GAAG,GAAI;CAEhC,OAAO,KADM,EAAmB,MACZ,EAAiB,EAAa,CAAI,IAAI,GAAG,CAAE;AAChE"}
1
+ {"version":3,"file":"typedarray.js","names":["GL2TYPE","FLOAT_ARRAY_CTORS","INT_ARRAY_CTORS","UINT_ARRAY_CTORS","BIGINT_ARRAY_CTORS","TYPEDARRAY_CTORS","asNativeType","t","type","typedArray","xs"],"sources":["../../src/utils/typedarray.js"],"sourcesContent":["// Copied from @thi.ng/api/typedarray\n// TODO: rewrite without this but for now just forked in order to add Atomics to base library\n\nconst GLType = /* @__PURE__ */ ((GLType2) => {\n\tGLType2[GLType2['I8'] = 5120] = 'I8';\n\tGLType2[GLType2['U8'] = 5121] = 'U8';\n\tGLType2[GLType2['I16'] = 5122] = 'I16';\n\tGLType2[GLType2['U16'] = 5123] = 'U16';\n\tGLType2[GLType2['I32'] = 5124] = 'I32';\n\tGLType2[GLType2['U32'] = 5125] = 'U32';\n\tGLType2[GLType2['F32'] = 5126] = 'F32';\n\treturn GLType2;\n})({});\nconst GL2TYPE = {\n\t[5120 /* I8 */]: 'i8',\n\t[5121 /* U8 */]: 'u8',\n\t[5122 /* I16 */]: 'i16',\n\t[5123 /* U16 */]: 'u16',\n\t[5124 /* I32 */]: 'i32',\n\t[5125 /* U32 */]: 'u32',\n\t[5126 /* F32 */]: 'f32',\n};\nconst TYPE2GL = {\n\ti8: 5120 /* I8 */,\n\tu8: 5121 /* U8 */,\n\tu8c: 5121 /* U8 */,\n\ti16: 5122 /* I16 */,\n\tu16: 5123 /* U16 */,\n\ti32: 5124 /* I32 */,\n\tu32: 5125 /* U32 */,\n\tf32: 5126 /* F32 */,\n\tf64: void 0,\n};\nconst SIZEOF = {\n\tu8: 1,\n\tu8c: 1,\n\ti8: 1,\n\tu16: 2,\n\ti16: 2,\n\tu32: 4,\n\ti32: 4,\n\ti64: 8,\n\tu64: 8,\n\tf32: 4,\n\tf64: 8,\n};\nconst BIT_SHIFTS = {\n\ti8: 0,\n\tu8: 0,\n\tu8c: 0,\n\ti16: 1,\n\tu16: 1,\n\ti32: 2,\n\tu32: 2,\n\ti64: 3,\n\tu64: 3,\n\tf32: 2,\n\tf64: 3,\n};\nconst FLOAT_ARRAY_CTORS = {\n\tf32: Float32Array,\n\tf64: Float64Array,\n};\nconst INT_ARRAY_CTORS = {\n\ti8: Int8Array,\n\ti16: Int16Array,\n\ti32: Int32Array,\n};\nconst UINT_ARRAY_CTORS = {\n\tu8: Uint8Array,\n\tu8c: Uint8ClampedArray,\n\tu16: Uint16Array,\n\tu32: Uint32Array,\n};\nconst BIGINT_ARRAY_CTORS = {\n\ti64: BigInt64Array,\n\tu64: BigUint64Array,\n};\nconst TYPEDARRAY_CTORS = {\n\t...FLOAT_ARRAY_CTORS,\n\t...INT_ARRAY_CTORS,\n\t...UINT_ARRAY_CTORS,\n};\nconst asNativeType = (type) => {\n\tconst t = GL2TYPE[type];\n\treturn t !== void 0 ? t : type;\n};\nconst asGLType = (type) => {\n\tconst t = TYPE2GL[type];\n\treturn t !== void 0 ? t : type;\n};\nconst asInt = (...args) => args.map((x) => x | 0);\nconst sizeOf = (type) => SIZEOF[type] || SIZEOF[asNativeType(type)];\nfunction typedArray(type, ...xs) {\n\tconst ctor = BIGINT_ARRAY_CTORS[type];\n\treturn new (ctor || TYPEDARRAY_CTORS[asNativeType(type)])(...xs);\n}\nfunction typedArrayOfVec(type, data, stride) {\n\tconst $data = Array.isArray(data) ? data : [...data];\n\tif(stride === void 0) {\n\t\tstride = $data[0].length;\n\t}\n\tconst num = $data.length;\n\tconst res = typedArray(type, num * stride);\n\tfor(let i = 0, j = 0; i < num; i++, j += stride) {\n\t\tres.set($data[i], j);\n\t}\n\treturn res;\n}\nconst typedArrayType = (x) => {\n\tif(Array.isArray(x)) {\n\t\treturn 'f64';\n\t}\n\tfor(let id in TYPEDARRAY_CTORS) {\n\t\tif(x instanceof TYPEDARRAY_CTORS[id]) {\n\t\t\treturn id;\n\t\t}\n\t}\n\treturn 'f64';\n};\nconst uintTypeForSize = (x) => x <= 256 ? 'u8' : x <= 65536 ? 'u16' : 'u32';\nconst intTypeForSize = (x) => x >= -128 && x < 128 ? 'i8' : x >= -32768 && x < 32768 ? 'i16' : 'i32';\nconst uintTypeForBits = (x) => x > 16 ? 'u32' : x > 8 ? 'u16' : 'u8';\nconst intTypeForBits = (x) => x > 16 ? 'i32' : x > 8 ? 'i16' : 'i8';\nconst narrowInt = (t) => t === 'i64' ? 'i32' : t === 'i32' ? 'i16' : t === 'i16' ? 'i8' : 'i8';\nconst widenInt = (t) => t === 'i8' ? 'i16' : t === 'i16' ? 'i32' : t === 'i32' ? 'i64' : 'i64';\nconst narrowUint = (t) => t === 'u64' ? 'u32' : t === 'u32' ? 'u16' : t === 'u16' ? 'u8' : 'u8';\nconst widenUint = (t) => t === 'u8' || t === 'u8c' ? 'u16' : t === 'u16' ? 'u32' : t === 'u32' ? 'u64' : 'u64';\nconst narrowFloat = (t) => t === 'f64' ? 'f32' : 'f32';\nconst widenFloat = (t) => t === 'f32' ? 'f64' : 'f64';\nconst narrowType = (t) => t[0] === 'i' ? narrowInt(t) : t[0] === 'u' ? narrowUint(t) : narrowFloat(t);\nconst widenType = (t) => t[0] === 'i' ? widenInt(t) : t[0] === 'u' ? widenUint(t) : widenFloat(t);\nexport {\n\tBIGINT_ARRAY_CTORS,\n\tBIT_SHIFTS,\n\tFLOAT_ARRAY_CTORS,\n\tGL2TYPE,\n\tGLType,\n\tINT_ARRAY_CTORS,\n\tSIZEOF,\n\tTYPE2GL,\n\tTYPEDARRAY_CTORS,\n\tUINT_ARRAY_CTORS,\n\tasGLType,\n\tasInt,\n\tasNativeType,\n\tintTypeForBits,\n\tintTypeForSize,\n\tnarrowFloat,\n\tnarrowInt,\n\tnarrowType,\n\tnarrowUint,\n\tsizeOf,\n\ttypedArray,\n\ttypedArrayOfVec,\n\ttypedArrayType,\n\tuintTypeForBits,\n\tuintTypeForSize,\n\twidenFloat,\n\twidenInt,\n\twidenType,\n\twidenUint,\n};\n"],"mappings":";AAaA,IAAMA,IAAU;CACd,MAAgB;CAChB,MAAgB;CAChB,MAAiB;CACjB,MAAiB;CACjB,MAAiB;CACjB,MAAiB;CACjB,MAAiB;AACnB,GAsCMC,IAAoB;CACzB,KAAK;CACL,KAAK;AACN,GACMC,IAAkB;CACvB,IAAI;CACJ,KAAK;CACL,KAAK;AACN,GACMC,IAAmB;CACxB,IAAI;CACJ,KAAK;CACL,KAAK;CACL,KAAK;AACN,GACMC,IAAqB;CAC1B,KAAK;CACL,KAAK;AACN,GACMC,IAAmB;CACxB,GAAGJ;CACH,GAAGC;CACH,GAAGC;AACJ,GACMG,KAAgB,MAAS;CAC9B,IAAMC,IAAIP,EAAQQ;CAClB,OAAOD,MAAM,KAAK,IAAQC,IAAJD;AACvB;AAOA,SAASE,EAAW,GAAM,GAAGC,GAAI;CAEhC,OAAO,KADMN,EAAmBI,MACZH,EAAiBC,EAAaE,CAAI,IAAI,GAAGE,CAAE;AAChE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daneren2005/shared-memory-objects",
3
- "version": "1.5.2",
3
+ "version": "1.6.1",
4
4
  "author": "daneren2005@gmail.com",
5
5
  "description": "Creating objects with a SharedArrayBuffer",
6
6
  "homepage": "https://github.com/daneren2005/shared-memory-objects#readme",
@@ -54,19 +54,19 @@
54
54
  "@semantic-release/git": "^11.0.1",
55
55
  "@stylistic/eslint-plugin": "^5.10.0",
56
56
  "@timohausmann/quadtree-ts": "^2.3.0",
57
- "@types/node": "^26.2.0",
58
- "@vitest/coverage-v8": "^4.1.10",
59
- "@vitest/ui": "^4.1.10",
57
+ "@types/node": "^26.6.2",
58
+ "@vitest/coverage-v8": "^5.0.1",
59
+ "@vitest/ui": "^5.0.1",
60
60
  "cross-env": "^10.1.0",
61
61
  "flatbush": "^4.6.2",
62
62
  "husky": "^9.1.7",
63
- "lint-staged": "^17.3.0",
64
- "oxlint": "^1.78.0",
65
- "oxlint-tsgolint": "^7.0.2001",
66
- "pretty-bytes": "^7.1.1",
63
+ "lint-staged": "^17.5.1",
64
+ "oxlint": "^1.85.0",
65
+ "oxlint-tsgolint": "^7.0.2003",
66
+ "pretty-bytes": "^7.1.3",
67
67
  "semantic-release": "^25.0.9",
68
68
  "typescript": "^7.0.2",
69
- "vite": "^8.2.1",
70
- "vitest": "^4.1.10"
69
+ "vite": "^8.3.1",
70
+ "vitest": "^5.0.1"
71
71
  }
72
72
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"16-from-32-array.js","names":[],"sources":["../../src/utils/16-from-32-array.ts"],"sourcesContent":["const buffer = new ArrayBuffer(4);\nconst uint32Array = new Uint32Array(buffer);\nconst uint16Array = new Uint16Array(buffer);\n\nexport function load16From32(data: Uint32Array, index: number): [number, number] {\n\treturn convert32To16(Atomics.load(data, index));\n}\n\nexport function store16In32(data: Uint32Array, index: number, value1: number, value2: number) {\n\tAtomics.store(data, index, convert16To32(value1, value2));\n}\n\nexport function convert32To16(value: number): [number, number] {\n\tuint32Array[0] = value;\n\n\treturn [uint16Array[0], uint16Array[1]];\n}\nexport function convert16To32(value1: number, value2: number): number {\n\tuint16Array[0] = value1;\n\tuint16Array[1] = value2;\n\n\treturn uint32Array[0];\n}"],"mappings":";AAAA,IAAM,oBAAS,IAAI,YAAY,CAAC,GAC1B,IAAc,IAAI,YAAY,CAAM,GACpC,IAAc,IAAI,YAAY,CAAM;AAE1C,SAAgB,EAAa,GAAmB,GAAiC;CAChF,OAAO,EAAc,QAAQ,KAAK,GAAM,CAAK,CAAC;AAC/C;AAEA,SAAgB,EAAY,GAAmB,GAAe,GAAgB,GAAgB;CAC7F,QAAQ,MAAM,GAAM,GAAO,EAAc,GAAQ,CAAM,CAAC;AACzD;AAEA,SAAgB,EAAc,GAAiC;CAG9D,OAFA,EAAY,KAAK,GAEV,CAAC,EAAY,IAAI,EAAY,EAAE;AACvC;AACA,SAAgB,EAAc,GAAgB,GAAwB;CAIrE,OAHA,EAAY,KAAK,GACjB,EAAY,KAAK,GAEV,EAAY;AACpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"16-from-64-array.js","names":[],"sources":["../../src/utils/16-from-64-array.ts"],"sourcesContent":["const buffer = new ArrayBuffer(8);\nconst uint64Array = new BigUint64Array(buffer);\nconst uint16Array = new Uint16Array(buffer);\n\nexport function load16From64(data: BigUint64Array, index: number): [number, number, number, number] {\n\tuint64Array[0] = Atomics.load(data, index);\n\t\n\treturn [uint16Array[0], uint16Array[1], uint16Array[2], uint16Array[3]];\n}\n\nexport function store16In64(data: BigUint64Array, index: number, value1: number, value2: number, value3: number, value4: number = 0) {\n\tuint16Array[0] = value1;\n\tuint16Array[1] = value2;\n\tuint16Array[2] = value3;\n\tuint16Array[3] = value4;\n\n\tAtomics.store(data, index, uint64Array[0]);\n}"],"mappings":";AAAA,IAAM,oBAAS,IAAI,YAAY,CAAC,GAC1B,IAAc,IAAI,eAAe,CAAM,GACvC,IAAc,IAAI,YAAY,CAAM;AAE1C,SAAgB,EAAa,GAAsB,GAAiD;CAGnG,OAFA,EAAY,KAAK,QAAQ,KAAK,GAAM,CAAK,GAElC;EAAC,EAAY;EAAI,EAAY;EAAI,EAAY;EAAI,EAAY;CAAE;AACvE;AAEA,SAAgB,EAAY,GAAsB,GAAe,GAAgB,GAAgB,GAAgB,IAAiB,GAAG;CAMpI,AALA,EAAY,KAAK,GACjB,EAAY,KAAK,GACjB,EAAY,KAAK,GACjB,EAAY,KAAK,GAEjB,QAAQ,MAAM,GAAM,GAAO,EAAY,EAAE;AAC1C"}