@daneren2005/shared-memory-objects 0.0.10 → 0.0.11

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 (44) hide show
  1. package/dist/shared-memory-objects.js +1325 -0
  2. package/dist/shared-memory-objects.umd.cjs +1 -0
  3. package/dist/src/allocated-memory.d.ts +26 -0
  4. package/dist/src/cached-item-list.d.ts +37 -0
  5. package/{src/interfaces/pow2.ts → dist/src/interfaces/pow2.d.ts} +2 -3
  6. package/dist/src/interfaces/typed-array-constructor.d.ts +5 -0
  7. package/{src/interfaces/typed-array.ts → dist/src/interfaces/typed-array.d.ts} +1 -1
  8. package/dist/src/lock/read-write-lock.d.ts +5 -0
  9. package/dist/src/lock/simple-lock.d.ts +3 -0
  10. package/dist/src/main.d.ts +18 -0
  11. package/dist/src/memory-buffer.d.ts +185 -0
  12. package/dist/src/memory-heap.d.ts +34 -0
  13. package/dist/src/serialize-object.d.ts +5 -0
  14. package/dist/src/shared-list.d.ts +44 -0
  15. package/dist/src/shared-map.d.ts +25 -0
  16. package/dist/src/shared-pointer-list.d.ts +21 -0
  17. package/dist/src/shared-string.d.ts +23 -0
  18. package/dist/src/shared-vector.d.ts +40 -0
  19. package/dist/src/utils/16-from-32-array.d.ts +4 -0
  20. package/dist/src/utils/16-from-64-array.d.ts +2 -0
  21. package/dist/src/utils/float32-atomics.d.ts +5 -0
  22. package/dist/src/utils/pointer.d.ts +19 -0
  23. package/package.json +17 -5
  24. package/src/allocated-memory.ts +0 -89
  25. package/src/cached-item-list.ts +0 -143
  26. package/src/interfaces/typed-array-constructor.ts +0 -6
  27. package/src/lock/read-write-lock.ts +0 -41
  28. package/src/lock/simple-lock.ts +0 -21
  29. package/src/main.ts +0 -40
  30. package/src/memory-buffer.ts +0 -666
  31. package/src/memory-heap.ts +0 -206
  32. package/src/serialize-object.ts +0 -95
  33. package/src/shared-list.ts +0 -339
  34. package/src/shared-map.ts +0 -252
  35. package/src/shared-pointer-list.ts +0 -80
  36. package/src/shared-string.ts +0 -144
  37. package/src/shared-vector.ts +0 -236
  38. package/src/utils/16-from-32-array.ts +0 -23
  39. package/src/utils/16-from-64-array.ts +0 -18
  40. package/src/utils/float32-atomics.ts +0 -26
  41. package/src/utils/pointer.ts +0 -40
  42. package/src/utils/typedarray.js +0 -162
  43. package/src/vite-env.d.ts +0 -1
  44. /package/{src → dist/src}/utils/typedarray.d.ts +0 -0
@@ -1,23 +0,0 @@
1
- const buffer = new ArrayBuffer(4);
2
- const uint32Array = new Uint32Array(buffer);
3
- const uint16Array = new Uint16Array(buffer);
4
-
5
- export function load16From32(data: Uint32Array, index: number): [number, number] {
6
- return convert32To16(Atomics.load(data, index));
7
- }
8
-
9
- export function store16In32(data: Uint32Array, index: number, value1: number, value2: number) {
10
- Atomics.store(data, index, convert16To32(value1, value2));
11
- }
12
-
13
- export function convert32To16(value: number): [number, number] {
14
- uint32Array[0] = value;
15
-
16
- return [uint16Array[0], uint16Array[1]];
17
- }
18
- export function convert16To32(value1: number, value2: number): number {
19
- uint16Array[0] = value1;
20
- uint16Array[1] = value2;
21
-
22
- return uint32Array[0];
23
- }
@@ -1,18 +0,0 @@
1
- const buffer = new ArrayBuffer(8);
2
- const uint64Array = new BigUint64Array(buffer);
3
- const uint16Array = new Uint16Array(buffer);
4
-
5
- export function load16From64(data: BigUint64Array, index: number): [number, number, number, number] {
6
- uint64Array[0] = Atomics.load(data, index);
7
-
8
- return [uint16Array[0], uint16Array[1], uint16Array[2], uint16Array[3]];
9
- }
10
-
11
- export function store16In64(data: BigUint64Array, index: number, value1: number, value2: number, value3: number, value4: number = 0) {
12
- uint16Array[0] = value1;
13
- uint16Array[1] = value2;
14
- uint16Array[2] = value3;
15
- uint16Array[3] = value4;
16
-
17
- Atomics.store(data, index, uint64Array[0]);
18
- }
@@ -1,26 +0,0 @@
1
- // For doing Atomic operations on floats in SharedArrayBuffers
2
- const buffer = new ArrayBuffer(4);
3
- const float32 = new Float32Array(buffer);
4
- const int32 = new Int32Array(buffer);
5
-
6
- export function loadFloat32(data: Int32Array | Uint32Array, index: number) {
7
- return convertInt32ToFloat32(Atomics.load(data, index));
8
- }
9
- export function storeFloat32(data: Int32Array | Uint32Array, index: number, value: number) {
10
- Atomics.store(data, index, convertFloat32ToInt32(value));
11
- }
12
-
13
- export function convertInt32ToFloat32(value: number) {
14
- int32[0] = value;
15
-
16
- return float32[0];
17
- }
18
- export function convertFloat32ToInt32(value: number) {
19
- float32[0] = value;
20
-
21
- return int32[0];
22
- }
23
-
24
- export function exchangeFloat32(data: Int32Array | Uint32Array, index: number, value: number) {
25
- return convertInt32ToFloat32(Atomics.exchange(data, index, convertFloat32ToInt32(value)));
26
- }
@@ -1,40 +0,0 @@
1
- // bottom 12 bits (4096) for bufferPosition
2
- // top 20 bits (1MB) for bufferByteOffset
3
- const BYTE_OFFSET_BIT_COUNT = 20;
4
- const POSITION_BIT_COUNT = 32 - BYTE_OFFSET_BIT_COUNT;
5
- const MAX_BYTE_OFFSET_LENGTH = Math.pow(2, BYTE_OFFSET_BIT_COUNT);
6
- const MAX_POSITION_LENGTH = Math.pow(2, POSITION_BIT_COUNT);
7
-
8
- export function loadPointer(data: Uint32Array, index: number = 0) {
9
- return getPointer(Atomics.load(data, index));
10
- }
11
- export function loadRawPointer(data: Uint32Array, index: number = 0) {
12
- return Atomics.load(data, index);
13
- }
14
-
15
- export function storePointer(data: Uint32Array, index: number = 0, bufferPosition: number, bufferByteOffset: number) {
16
- Atomics.store(data, index, createPointer(bufferPosition, bufferByteOffset));
17
- }
18
- export function storeRawPointer(data: Uint32Array, index: number = 0, pointer: number) {
19
- Atomics.store(data, index, pointer);
20
- }
21
-
22
- export function replacePointer(data: Uint32Array, index: number, newBufferPosition: number, newBufferByteOffset: number, oldBufferPosition: number, oldBufferByteOffset: number) {
23
- let oldPointer = createPointer(oldBufferPosition, oldBufferByteOffset);
24
- return Atomics.compareExchange(data, index, oldPointer, createPointer(newBufferPosition, newBufferByteOffset)) === oldPointer;
25
- }
26
- export function replaceRawPointer(data: Uint32Array, index: number, newPointer: number, oldPointer: number): boolean {
27
- return Atomics.compareExchange(data, index, oldPointer, newPointer) === oldPointer;
28
- }
29
-
30
- export function getPointer(value: number) {
31
- return {
32
- bufferPosition: value & 0b00000000000000000000111111111111,
33
- bufferByteOffset: value >>> POSITION_BIT_COUNT
34
- };
35
- }
36
- export function createPointer(bufferPosition: number, bufferByteOffset: number) {
37
- return bufferPosition + (bufferByteOffset << POSITION_BIT_COUNT);
38
- }
39
-
40
- export { BYTE_OFFSET_BIT_COUNT, POSITION_BIT_COUNT, MAX_BYTE_OFFSET_LENGTH, MAX_POSITION_LENGTH };
@@ -1,162 +0,0 @@
1
- // Copied from @thi.ng/api/typedarray
2
- // TODO: rewrite without this but for now just forked in order to add Atomics to base library
3
-
4
- var GLType = /* @__PURE__ */ ((GLType2) => {
5
- GLType2[GLType2['I8'] = 5120] = 'I8';
6
- GLType2[GLType2['U8'] = 5121] = 'U8';
7
- GLType2[GLType2['I16'] = 5122] = 'I16';
8
- GLType2[GLType2['U16'] = 5123] = 'U16';
9
- GLType2[GLType2['I32'] = 5124] = 'I32';
10
- GLType2[GLType2['U32'] = 5125] = 'U32';
11
- GLType2[GLType2['F32'] = 5126] = 'F32';
12
- return GLType2;
13
- })(GLType || {});
14
- const GL2TYPE = {
15
- [5120 /* I8 */]: 'i8',
16
- [5121 /* U8 */]: 'u8',
17
- [5122 /* I16 */]: 'i16',
18
- [5123 /* U16 */]: 'u16',
19
- [5124 /* I32 */]: 'i32',
20
- [5125 /* U32 */]: 'u32',
21
- [5126 /* F32 */]: 'f32'
22
- };
23
- const TYPE2GL = {
24
- i8: 5120 /* I8 */,
25
- u8: 5121 /* U8 */,
26
- u8c: 5121 /* U8 */,
27
- i16: 5122 /* I16 */,
28
- u16: 5123 /* U16 */,
29
- i32: 5124 /* I32 */,
30
- u32: 5125 /* U32 */,
31
- f32: 5126 /* F32 */,
32
- f64: void 0
33
- };
34
- const SIZEOF = {
35
- u8: 1,
36
- u8c: 1,
37
- i8: 1,
38
- u16: 2,
39
- i16: 2,
40
- u32: 4,
41
- i32: 4,
42
- i64: 8,
43
- u64: 8,
44
- f32: 4,
45
- f64: 8
46
- };
47
- const BIT_SHIFTS = {
48
- i8: 0,
49
- u8: 0,
50
- u8c: 0,
51
- i16: 1,
52
- u16: 1,
53
- i32: 2,
54
- u32: 2,
55
- i64: 3,
56
- u64: 3,
57
- f32: 2,
58
- f64: 3
59
- };
60
- const FLOAT_ARRAY_CTORS = {
61
- f32: Float32Array,
62
- f64: Float64Array
63
- };
64
- const INT_ARRAY_CTORS = {
65
- i8: Int8Array,
66
- i16: Int16Array,
67
- i32: Int32Array
68
- };
69
- const UINT_ARRAY_CTORS = {
70
- u8: Uint8Array,
71
- u8c: Uint8ClampedArray,
72
- u16: Uint16Array,
73
- u32: Uint32Array
74
- };
75
- const BIGINT_ARRAY_CTORS = {
76
- // eslint-disable-next-line
77
- i64: BigInt64Array,
78
- // eslint-disable-next-line
79
- u64: BigUint64Array
80
- };
81
- const TYPEDARRAY_CTORS = {
82
- ...FLOAT_ARRAY_CTORS,
83
- ...INT_ARRAY_CTORS,
84
- ...UINT_ARRAY_CTORS
85
- };
86
- const asNativeType = (type) => {
87
- const t = GL2TYPE[type];
88
- return t !== void 0 ? t : type;
89
- };
90
- const asGLType = (type) => {
91
- const t = TYPE2GL[type];
92
- return t !== void 0 ? t : type;
93
- };
94
- const asInt = (...args) => args.map((x) => x | 0);
95
- const sizeOf = (type) => SIZEOF[type] || SIZEOF[asNativeType(type)];
96
- function typedArray(type, ...xs) {
97
- const ctor = BIGINT_ARRAY_CTORS[type];
98
- return new (ctor || TYPEDARRAY_CTORS[asNativeType(type)])(...xs);
99
- }
100
- function typedArrayOfVec(type, data, stride) {
101
- const $data = Array.isArray(data) ? data : [...data];
102
- if(stride === void 0)
103
- stride = $data[0].length;
104
- const num = $data.length;
105
- const res = typedArray(type, num * stride);
106
- for(let i = 0, j = 0; i < num; i++, j += stride) {
107
- res.set($data[i], j);
108
- }
109
- return res;
110
- }
111
- const typedArrayType = (x) => {
112
- if(Array.isArray(x))
113
- return 'f64';
114
- for(let id in TYPEDARRAY_CTORS) {
115
- if(x instanceof TYPEDARRAY_CTORS[id])
116
- return id;
117
- }
118
- return 'f64';
119
- };
120
- const uintTypeForSize = (x) => x <= 256 ? 'u8' : x <= 65536 ? 'u16' : 'u32';
121
- const intTypeForSize = (x) => x >= -128 && x < 128 ? 'i8' : x >= -32768 && x < 32768 ? 'i16' : 'i32';
122
- const uintTypeForBits = (x) => x > 16 ? 'u32' : x > 8 ? 'u16' : 'u8';
123
- const intTypeForBits = (x) => x > 16 ? 'i32' : x > 8 ? 'i16' : 'i8';
124
- const narrowInt = (t) => t === 'i64' ? 'i32' : t === 'i32' ? 'i16' : t === 'i16' ? 'i8' : 'i8';
125
- const widenInt = (t) => t === 'i8' ? 'i16' : t === 'i16' ? 'i32' : t === 'i32' ? 'i64' : 'i64';
126
- const narrowUint = (t) => t === 'u64' ? 'u32' : t === 'u32' ? 'u16' : t === 'u16' ? 'u8' : 'u8';
127
- const widenUint = (t) => t === 'u8' || t === 'u8c' ? 'u16' : t === 'u16' ? 'u32' : t === 'u32' ? 'u64' : 'u64';
128
- const narrowFloat = (t) => t === 'f64' ? 'f32' : 'f32';
129
- const widenFloat = (t) => t === 'f32' ? 'f64' : 'f64';
130
- const narrowType = (t) => t[0] === 'i' ? narrowInt(t) : t[0] === 'u' ? narrowUint(t) : narrowFloat(t);
131
- const widenType = (t) => t[0] === 'i' ? widenInt(t) : t[0] === 'u' ? widenUint(t) : widenFloat(t);
132
- export {
133
- BIGINT_ARRAY_CTORS,
134
- BIT_SHIFTS,
135
- FLOAT_ARRAY_CTORS,
136
- GL2TYPE,
137
- GLType,
138
- INT_ARRAY_CTORS,
139
- SIZEOF,
140
- TYPE2GL,
141
- TYPEDARRAY_CTORS,
142
- UINT_ARRAY_CTORS,
143
- asGLType,
144
- asInt,
145
- asNativeType,
146
- intTypeForBits,
147
- intTypeForSize,
148
- narrowFloat,
149
- narrowInt,
150
- narrowType,
151
- narrowUint,
152
- sizeOf,
153
- typedArray,
154
- typedArrayOfVec,
155
- typedArrayType,
156
- uintTypeForBits,
157
- uintTypeForSize,
158
- widenFloat,
159
- widenInt,
160
- widenType,
161
- widenUint
162
- };
package/src/vite-env.d.ts DELETED
@@ -1 +0,0 @@
1
- /// <reference types="vite/client" />
File without changes