@adobe/data 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cache/functions/hashing/array-buffer-to-hex.d.ts +1 -0
- package/dist/cache/functions/hashing/array-buffer-to-hex.js +27 -0
- package/dist/cache/functions/hashing/array-buffer-to-hex.js.map +1 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.d.ts +1 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.js +27 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.js.map +1 -0
- package/dist/cache/functions/hashing/blob-to-hash.d.ts +5 -0
- package/dist/cache/functions/hashing/blob-to-hash.js +34 -8
- package/dist/cache/functions/hashing/blob-to-hash.js.map +1 -1
- package/dist/cache/functions/hashing/buffer-to-hash.js +1 -5
- package/dist/cache/functions/hashing/buffer-to-hash.js.map +1 -1
- package/dist/cache/functions/hashing/hashing.test.js +322 -65
- package/dist/cache/functions/hashing/hashing.test.js.map +1 -1
- package/dist/ecs/archetype/archetype.d.ts +8 -3
- package/dist/ecs/archetype/create-archetype.js +2 -1
- package/dist/ecs/archetype/create-archetype.js.map +1 -1
- package/dist/ecs/archetype/create-archetype.test.js +4 -4
- package/dist/ecs/archetype/create-archetype.test.js.map +1 -1
- package/dist/ecs/archetype/delete-row.test.js +3 -3
- package/dist/ecs/archetype/delete-row.test.js.map +1 -1
- package/dist/ecs/database/create-database.js +17 -2
- package/dist/ecs/database/create-database.js.map +1 -1
- package/dist/ecs/database/create-database.test.js +234 -0
- package/dist/ecs/database/create-database.test.js.map +1 -1
- package/dist/ecs/database/database.d.ts +7 -4
- package/dist/ecs/database/observe-select-entities.d.ts +1 -1
- package/dist/ecs/database/observe-select-entities.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.js +3 -0
- package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js +29 -2
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
- package/dist/ecs/database/transactional-store/patch-entity-values.d.ts +2 -2
- package/dist/ecs/database/transactional-store/patch-entity-values.js.map +1 -1
- package/dist/ecs/entity-location-table/create-entity-location-table.d.ts +7 -0
- package/dist/ecs/entity-location-table/create-entity-location-table.js +14 -3
- package/dist/ecs/entity-location-table/create-entity-location-table.js.map +1 -1
- package/dist/ecs/store/core/core.d.ts +13 -5
- package/dist/ecs/store/core/create-core.js +8 -3
- package/dist/ecs/store/core/create-core.js.map +1 -1
- package/dist/ecs/store/core/create-core.test.js +118 -0
- package/dist/ecs/store/core/create-core.test.js.map +1 -1
- package/dist/ecs/store/core/select-entities.d.ts +1 -1
- package/dist/ecs/store/core/select-entities.js +2 -2
- package/dist/ecs/store/core/select-entities.js.map +1 -1
- package/dist/ecs/store/create-store.js.map +1 -1
- package/dist/ecs/store/create-store.test.js +21 -0
- package/dist/ecs/store/create-store.test.js.map +1 -1
- package/dist/ecs/store/store.d.ts +1 -1
- package/dist/equals.js +17 -11
- package/dist/equals.js.map +1 -1
- package/dist/equals.test.js +47 -0
- package/dist/equals.test.js.map +1 -1
- package/dist/functions/blit.d.ts +9 -0
- package/dist/functions/blit.js +42 -0
- package/dist/functions/blit.js.map +1 -0
- package/dist/functions/copy-view-bytes.d.ts +2 -0
- package/dist/functions/copy-view-bytes.js +29 -0
- package/dist/functions/copy-view-bytes.js.map +1 -0
- package/dist/functions/index.d.ts +3 -0
- package/dist/functions/index.js +3 -0
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/serialization/codec.d.ts +24 -0
- package/dist/functions/serialization/codec.js +48 -0
- package/dist/functions/serialization/codec.js.map +1 -0
- package/dist/functions/serialization/deserialize.d.ts +4 -0
- package/dist/functions/serialization/deserialize.js +15 -0
- package/dist/functions/serialization/deserialize.js.map +1 -0
- package/dist/functions/serialization/index.d.ts +2 -0
- package/dist/functions/serialization/index.js +3 -0
- package/dist/functions/serialization/index.js.map +1 -0
- package/dist/functions/serialization/register-typed-array-codecs.d.ts +1 -0
- package/dist/functions/serialization/register-typed-array-codecs.js +13 -0
- package/dist/functions/serialization/register-typed-array-codecs.js.map +1 -0
- package/dist/functions/serialization/serialization.test.d.ts +1 -0
- package/dist/functions/serialization/serialization.test.js +79 -0
- package/dist/functions/serialization/serialization.test.js.map +1 -0
- package/dist/functions/serialization/serialize.d.ts +4 -0
- package/dist/functions/serialization/serialize.js +19 -0
- package/dist/functions/serialization/serialize.js.map +1 -0
- package/dist/observe/index.d.ts +1 -0
- package/dist/observe/index.js +1 -0
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/observe.test.js +24 -0
- package/dist/observe/observe.test.js.map +1 -1
- package/dist/observe/to-async-generator.d.ts +9 -0
- package/dist/observe/to-async-generator.js +129 -0
- package/dist/observe/to-async-generator.js.map +1 -0
- package/dist/observe/to-async-generator.test.d.ts +1 -0
- package/dist/observe/to-async-generator.test.js +413 -0
- package/dist/observe/to-async-generator.test.js.map +1 -0
- package/dist/observe/with-map.d.ts +1 -1
- package/dist/observe/with-map.js +4 -1
- package/dist/observe/with-map.js.map +1 -1
- package/dist/schema/f32 copy.d.ts +6 -0
- package/dist/schema/f32 copy.js +6 -0
- package/dist/schema/f32 copy.js.map +1 -0
- package/dist/schema/f64.d.ts +6 -0
- package/dist/schema/f64.js +6 -0
- package/dist/schema/f64.js.map +1 -0
- package/dist/schema/schema.d.ts +5 -1
- package/dist/schema/time.d.ts +1 -1
- package/dist/schema/time.js +2 -2
- package/dist/table/add-row.js +4 -3
- package/dist/table/add-row.js.map +1 -1
- package/dist/table/copy-column-to-gpu-buffer.js +2 -2
- package/dist/table/copy-column-to-gpu-buffer.js.map +1 -1
- package/dist/table/create-table.js +4 -2
- package/dist/table/create-table.js.map +1 -1
- package/dist/table/create-table.test.js +1 -1
- package/dist/table/create-table.test.js.map +1 -1
- package/dist/table/delete-row.js +1 -1
- package/dist/table/delete-row.js.map +1 -1
- package/dist/table/ensure-capacity.d.ts +1 -1
- package/dist/table/ensure-capacity.js +10 -10
- package/dist/table/ensure-capacity.js.map +1 -1
- package/dist/table/select-rows.js +2 -2
- package/dist/table/select-rows.js.map +1 -1
- package/dist/table/table.d.ts +4 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/typed-buffer/create-array-buffer.d.ts +3 -3
- package/dist/typed-buffer/create-array-buffer.js +36 -32
- package/dist/typed-buffer/create-array-buffer.js.map +1 -1
- package/dist/typed-buffer/create-const-buffer.d.ts +3 -1
- package/dist/typed-buffer/create-const-buffer.js +30 -28
- package/dist/typed-buffer/create-const-buffer.js.map +1 -1
- package/dist/typed-buffer/create-const-buffer.test.js +18 -46
- package/dist/typed-buffer/create-const-buffer.test.js.map +1 -1
- package/dist/typed-buffer/create-number-buffer.d.ts +2 -6
- package/dist/typed-buffer/create-number-buffer.js +40 -33
- package/dist/typed-buffer/create-number-buffer.js.map +1 -1
- package/dist/typed-buffer/create-struct-buffer.d.ts +3 -7
- package/dist/typed-buffer/create-struct-buffer.js +58 -41
- package/dist/typed-buffer/create-struct-buffer.js.map +1 -1
- package/dist/typed-buffer/create-typed-buffer.d.ts +2 -5
- package/dist/typed-buffer/create-typed-buffer.js +16 -8
- package/dist/typed-buffer/create-typed-buffer.js.map +1 -1
- package/dist/typed-buffer/is-typed-buffer.d.ts +2 -0
- package/dist/typed-buffer/is-typed-buffer.js +5 -0
- package/dist/typed-buffer/is-typed-buffer.js.map +1 -0
- package/dist/typed-buffer/is-typed-buffer.test.d.ts +1 -0
- package/dist/typed-buffer/is-typed-buffer.test.js +26 -0
- package/dist/typed-buffer/is-typed-buffer.test.js.map +1 -0
- package/dist/typed-buffer/register-typed-buffer-codecs.d.ts +1 -0
- package/dist/typed-buffer/register-typed-buffer-codecs.js +80 -0
- package/dist/typed-buffer/register-typed-buffer-codecs.js.map +1 -0
- package/dist/typed-buffer/typed-buffer-equals.d.ts +2 -0
- package/dist/typed-buffer/typed-buffer-equals.js +20 -0
- package/dist/typed-buffer/typed-buffer-equals.js.map +1 -0
- package/dist/typed-buffer/typed-buffer-equals.test.d.ts +1 -0
- package/dist/typed-buffer/typed-buffer-equals.test.js +234 -0
- package/dist/typed-buffer/typed-buffer-equals.test.js.map +1 -0
- package/dist/typed-buffer/typed-buffer.d.ts +18 -8
- package/dist/typed-buffer/typed-buffer.js +6 -1
- package/dist/typed-buffer/typed-buffer.js.map +1 -1
- package/dist/typed-buffer/typed-buffer.test.js +30 -66
- package/dist/typed-buffer/typed-buffer.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
+
import { FromSchema, Schema } from "../schema/schema.js";
|
|
1
2
|
import { TypedBuffer } from "./typed-buffer.js";
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
}) => TypedBuffer<T>;
|
|
3
|
+
export declare const arrayBufferType = "array";
|
|
4
|
+
export declare const createArrayBuffer: <S extends Schema, T = FromSchema<S>>(schema: S, initialCapacity: number) => TypedBuffer<T>;
|
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
import { TypedBuffer } from "./typed-buffer.js";
|
|
2
|
+
export const arrayBufferType = "array";
|
|
3
|
+
class ArrayTypedBuffer extends TypedBuffer {
|
|
4
|
+
constructor(schema, initialCapacity) {
|
|
5
|
+
super(schema);
|
|
6
|
+
this.type = arrayBufferType;
|
|
7
|
+
this.typedArrayElementSizeInBytes = 0;
|
|
8
|
+
this.array = new Array(initialCapacity);
|
|
9
|
+
}
|
|
10
|
+
get capacity() {
|
|
11
|
+
return this.array.length;
|
|
12
|
+
}
|
|
13
|
+
set capacity(value) {
|
|
14
|
+
this.array.length = value;
|
|
15
|
+
}
|
|
16
|
+
getTypedArray() {
|
|
17
|
+
throw new Error("Typed array not supported");
|
|
18
|
+
}
|
|
19
|
+
get(index) {
|
|
20
|
+
return this.array[index];
|
|
21
|
+
}
|
|
22
|
+
set(index, value) {
|
|
23
|
+
this.array[index] = value;
|
|
24
|
+
}
|
|
25
|
+
copyWithin(target, start, end) {
|
|
26
|
+
this.array.copyWithin(target, start, end);
|
|
27
|
+
}
|
|
28
|
+
slice(start = 0, end = this.array.length) {
|
|
29
|
+
if (start === 0 && end === this.array.length) {
|
|
30
|
+
return this.array;
|
|
31
|
+
}
|
|
32
|
+
return this.array.slice(start, end);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export const createArrayBuffer = (schema, initialCapacity) => {
|
|
36
|
+
return new ArrayTypedBuffer(schema, initialCapacity);
|
|
33
37
|
};
|
|
34
38
|
//# sourceMappingURL=create-array-buffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-array-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-array-buffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-array-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-array-buffer.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAGjE,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,gBAAoB,SAAQ,WAAc;IAM5C,YAAY,MAAc,EAAE,eAAuB;QAC/C,KAAK,CAAC,MAAM,CAAC,CAAC;QANF,SAAI,GAAoB,eAAe,CAAC;QACxC,iCAA4B,GAAW,CAAC,CAAC;QAMrD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAI,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,aAAa;QACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,KAAa;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW;QACjD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;QACpC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,MAAS,EACT,eAAuB,EACT,EAAE;IAChB,OAAO,IAAI,gBAAgB,CAAI,MAAM,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
import { Schema } from "../schema/schema.js";
|
|
1
2
|
import { TypedBuffer } from "./typed-buffer.js";
|
|
2
|
-
export declare const
|
|
3
|
+
export declare const constBufferType = "const";
|
|
4
|
+
export declare const createConstBuffer: <T>(schema: Schema, initialCapacity: number) => TypedBuffer<T>;
|
|
@@ -1,30 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
1
|
+
import { TypedBuffer } from "./typed-buffer.js";
|
|
2
|
+
export const constBufferType = "const";
|
|
3
|
+
class ConstTypedBuffer extends TypedBuffer {
|
|
4
|
+
constructor(schema, initialCapacity) {
|
|
5
|
+
super(schema);
|
|
6
|
+
this.type = constBufferType;
|
|
7
|
+
this.capacity = initialCapacity;
|
|
8
|
+
this.constValue = schema.const;
|
|
9
|
+
}
|
|
10
|
+
get typedArrayElementSizeInBytes() {
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
getTypedArray() {
|
|
14
|
+
throw new Error("Const buffer does not support getTypedArray");
|
|
15
|
+
}
|
|
16
|
+
get(_index) {
|
|
17
|
+
return this.constValue;
|
|
18
|
+
}
|
|
19
|
+
set(_index, _value) {
|
|
20
|
+
// No-op: const buffer ignores set calls
|
|
21
|
+
}
|
|
22
|
+
copyWithin(_target, _start, _end) {
|
|
23
|
+
// No-op: const buffer copyWithin is a no-op
|
|
24
|
+
}
|
|
25
|
+
slice(start = 0, end = this.capacity) {
|
|
26
|
+
return Array(Math.max(0, end - start)).fill(this.constValue);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const createConstBuffer = (schema, initialCapacity) => {
|
|
30
|
+
return new ConstTypedBuffer(schema, initialCapacity);
|
|
29
31
|
};
|
|
30
32
|
//# sourceMappingURL=create-const-buffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-const-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-const-buffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-const-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-const-buffer.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAGjE,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC,MAAM,gBAAoB,SAAQ,WAAc;IAM5C,YAAY,MAAc,EAAE,eAAuB;QAC/C,KAAK,CAAC,MAAM,CAAC,CAAC;QAHF,SAAI,GAAoB,eAAe,CAAC;QAIpD,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,4BAA4B;QAC5B,OAAO,CAAC,CAAC;IACb,CAAC;IAED,aAAa;QACT,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC;IAED,GAAG,CAAC,MAAc;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,MAAS;QACzB,wCAAwC;IAC5C,CAAC;IAED,UAAU,CAAC,OAAe,EAAE,MAAc,EAAE,IAAY;QACpD,4CAA4C;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,MAAc,EACd,eAAuB,EACT,EAAE;IAChB,OAAO,IAAI,gBAAgB,CAAI,MAAM,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -24,8 +24,7 @@ import { createConstBuffer } from './create-const-buffer.js';
|
|
|
24
24
|
describe('createConstBuffer', () => {
|
|
25
25
|
it('should always return the same value for any get call', () => {
|
|
26
26
|
const constValue = { x: 10, y: 20 };
|
|
27
|
-
const buffer = createConstBuffer(constValue);
|
|
28
|
-
buffer.size = 5;
|
|
27
|
+
const buffer = createConstBuffer({ const: constValue }, 5);
|
|
29
28
|
// All get calls should return the same value
|
|
30
29
|
expect(buffer.get(0)).toBe(constValue);
|
|
31
30
|
expect(buffer.get(1)).toBe(constValue);
|
|
@@ -34,10 +33,13 @@ describe('createConstBuffer', () => {
|
|
|
34
33
|
expect(buffer.get(4)).toBe(constValue);
|
|
35
34
|
expect(buffer.get(100)).toBe(constValue); // Even out of bounds
|
|
36
35
|
});
|
|
36
|
+
it('should allow capacity and capacity on construction', () => {
|
|
37
|
+
const buffer = createConstBuffer({ const: 10 }, 5);
|
|
38
|
+
expect(buffer.capacity).toBe(5);
|
|
39
|
+
});
|
|
37
40
|
it('should ignore set calls', () => {
|
|
38
41
|
const constValue = 42;
|
|
39
|
-
const buffer = createConstBuffer(constValue);
|
|
40
|
-
buffer.size = 3;
|
|
42
|
+
const buffer = createConstBuffer({ const: constValue }, 3);
|
|
41
43
|
// Set calls should not change the value
|
|
42
44
|
buffer.set(0, 100);
|
|
43
45
|
buffer.set(1, 200);
|
|
@@ -47,45 +49,25 @@ describe('createConstBuffer', () => {
|
|
|
47
49
|
expect(buffer.get(1)).toBe(constValue);
|
|
48
50
|
expect(buffer.get(2)).toBe(constValue);
|
|
49
51
|
});
|
|
50
|
-
it('should track
|
|
51
|
-
const buffer = createConstBuffer('test');
|
|
52
|
-
buffer.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
it('should allow size to be set', () => {
|
|
56
|
-
const buffer = createConstBuffer('test');
|
|
57
|
-
buffer.size = 5;
|
|
58
|
-
expect(buffer.size).toBe(5);
|
|
59
|
-
buffer.size = 100;
|
|
60
|
-
expect(buffer.size).toBe(100);
|
|
61
|
-
});
|
|
62
|
-
it('should have copyWithin as no-op', () => {
|
|
63
|
-
const buffer = createConstBuffer('constant');
|
|
64
|
-
buffer.size = 5;
|
|
65
|
-
// copyWithin should not throw and should not change anything
|
|
66
|
-
expect(() => {
|
|
67
|
-
buffer.copyWithin(0, 1, 3);
|
|
68
|
-
}).not.toThrow();
|
|
69
|
-
// All values should still be the same
|
|
70
|
-
for (let i = 0; i < buffer.size; i++) {
|
|
71
|
-
expect(buffer.get(i)).toBe('constant');
|
|
72
|
-
}
|
|
52
|
+
it('should track capacity correctly', () => {
|
|
53
|
+
const buffer = createConstBuffer({ const: 'test' }, 10);
|
|
54
|
+
expect(buffer.capacity).toBe(10);
|
|
55
|
+
buffer.capacity = 20;
|
|
56
|
+
expect(buffer.capacity).toBe(20);
|
|
73
57
|
});
|
|
74
58
|
it('should throw error for getTypedArray', () => {
|
|
75
|
-
const buffer = createConstBuffer(123);
|
|
59
|
+
const buffer = createConstBuffer({ const: 123 }, 1);
|
|
76
60
|
expect(() => {
|
|
77
61
|
buffer.getTypedArray();
|
|
78
62
|
}).toThrow('Const buffer does not support getTypedArray');
|
|
79
63
|
});
|
|
80
64
|
it('should support slicing', () => {
|
|
81
|
-
const buffer = createConstBuffer('sliceable');
|
|
82
|
-
buffer.size = 5;
|
|
65
|
+
const buffer = createConstBuffer({ const: 'sliceable' }, 5);
|
|
83
66
|
const values = Array.from(buffer.slice());
|
|
84
67
|
expect(values).toEqual(['sliceable', 'sliceable', 'sliceable', 'sliceable', 'sliceable']);
|
|
85
68
|
});
|
|
86
69
|
it('should support partial slicing', () => {
|
|
87
|
-
const buffer = createConstBuffer('partial');
|
|
88
|
-
buffer.size = 4;
|
|
70
|
+
const buffer = createConstBuffer({ const: 'partial' }, 4);
|
|
89
71
|
// Slice first 2 elements
|
|
90
72
|
const firstSlice = Array.from(buffer.slice(0, 2));
|
|
91
73
|
expect(firstSlice).toEqual(['partial', 'partial']);
|
|
@@ -96,30 +78,20 @@ describe('createConstBuffer', () => {
|
|
|
96
78
|
const defaultEndSlice = Array.from(buffer.slice(1));
|
|
97
79
|
expect(defaultEndSlice).toEqual(['partial', 'partial', 'partial']);
|
|
98
80
|
});
|
|
99
|
-
it('should work with default size of 0', () => {
|
|
100
|
-
const buffer = createConstBuffer('default');
|
|
101
|
-
expect(buffer.size).toBe(0);
|
|
102
|
-
// Should still return the value even with size 0
|
|
103
|
-
expect(buffer.get(0)).toBe('default');
|
|
104
|
-
});
|
|
105
81
|
it('should work with complex objects', () => {
|
|
106
82
|
const complexValue = {
|
|
107
83
|
id: 1,
|
|
108
84
|
name: 'test',
|
|
109
85
|
nested: { value: 42 }
|
|
110
86
|
};
|
|
111
|
-
const buffer = createConstBuffer(complexValue);
|
|
112
|
-
buffer.size = 2;
|
|
87
|
+
const buffer = createConstBuffer({ const: complexValue }, 2);
|
|
113
88
|
expect(buffer.get(0)).toBe(complexValue);
|
|
114
89
|
expect(buffer.get(1)).toBe(complexValue);
|
|
115
90
|
});
|
|
116
91
|
it('should work with primitive values', () => {
|
|
117
|
-
const numberBuffer = createConstBuffer(42);
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
stringBuffer.size = 2;
|
|
121
|
-
const booleanBuffer = createConstBuffer(true);
|
|
122
|
-
booleanBuffer.size = 1;
|
|
92
|
+
const numberBuffer = createConstBuffer({ const: 42 }, 1);
|
|
93
|
+
const stringBuffer = createConstBuffer({ const: 'hello' }, 1);
|
|
94
|
+
const booleanBuffer = createConstBuffer({ const: true }, 1);
|
|
123
95
|
expect(numberBuffer.get(0)).toBe(42);
|
|
124
96
|
expect(stringBuffer.get(0)).toBe('hello');
|
|
125
97
|
expect(booleanBuffer.get(0)).toBe(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-const-buffer.test.js","sourceRoot":"","sources":["../../src/typed-buffer/create-const-buffer.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC5D,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"create-const-buffer.test.js","sourceRoot":"","sources":["../../src/typed-buffer/create-const-buffer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { Schema } from "../schema/schema.js";
|
|
2
2
|
import { TypedBuffer } from "./typed-buffer.js";
|
|
3
|
-
export declare const
|
|
4
|
-
|
|
5
|
-
length?: number;
|
|
6
|
-
maxLength?: number;
|
|
7
|
-
arrayBuffer?: ArrayBufferLike;
|
|
8
|
-
}) => TypedBuffer<number>;
|
|
3
|
+
export declare const numberBufferType = "number";
|
|
4
|
+
export declare const createNumberBuffer: (schema: Schema, initialCapacity: number) => TypedBuffer<number>;
|
|
@@ -22,6 +22,7 @@ SOFTWARE.*/
|
|
|
22
22
|
import { grow } from "../internal/array-buffer-like/grow.js";
|
|
23
23
|
import { I32Schema } from "../schema/i32.js";
|
|
24
24
|
import { U32Schema } from "../schema/u32.js";
|
|
25
|
+
import { TypedBuffer } from "./typed-buffer.js";
|
|
25
26
|
import { createSharedArrayBuffer } from "../internal/shared-array-buffer/create-shared-array-buffer.js";
|
|
26
27
|
const getTypedArrayConstructor = (schema) => {
|
|
27
28
|
if (schema.type === 'number' || schema.type === 'integer') {
|
|
@@ -42,38 +43,44 @@ const getTypedArrayConstructor = (schema) => {
|
|
|
42
43
|
}
|
|
43
44
|
throw new Error("Schema is not a valid number schema");
|
|
44
45
|
};
|
|
45
|
-
export const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
typedArrayElementSizeInBytes
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
46
|
+
export const numberBufferType = "number";
|
|
47
|
+
class NumberTypedBuffer extends TypedBuffer {
|
|
48
|
+
constructor(schema, initialCapacity) {
|
|
49
|
+
super(schema);
|
|
50
|
+
this.type = numberBufferType;
|
|
51
|
+
this.typedArrayConstructor = getTypedArrayConstructor(schema);
|
|
52
|
+
this.typedArrayElementSizeInBytes = this.typedArrayConstructor.BYTES_PER_ELEMENT;
|
|
53
|
+
this._capacity = initialCapacity;
|
|
54
|
+
this.arrayBuffer = createSharedArrayBuffer(this.typedArrayElementSizeInBytes * initialCapacity);
|
|
55
|
+
this.array = new this.typedArrayConstructor(this.arrayBuffer);
|
|
56
|
+
}
|
|
57
|
+
get capacity() {
|
|
58
|
+
return this._capacity;
|
|
59
|
+
}
|
|
60
|
+
set capacity(value) {
|
|
61
|
+
if (value !== this._capacity) {
|
|
62
|
+
this._capacity = value;
|
|
63
|
+
this.arrayBuffer = grow(this.arrayBuffer, value * this.typedArrayElementSizeInBytes);
|
|
64
|
+
this.array = new this.typedArrayConstructor(this.arrayBuffer);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
getTypedArray() {
|
|
68
|
+
return this.array;
|
|
69
|
+
}
|
|
70
|
+
get(index) {
|
|
71
|
+
return this.array[index];
|
|
72
|
+
}
|
|
73
|
+
set(index, value) {
|
|
74
|
+
this.array[index] = value;
|
|
75
|
+
}
|
|
76
|
+
copyWithin(target, start, end) {
|
|
77
|
+
this.array.copyWithin(target, start, end);
|
|
78
|
+
}
|
|
79
|
+
slice(start = 0, end = this._capacity) {
|
|
80
|
+
return this.array.subarray(start, end);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export const createNumberBuffer = (schema, initialCapacity) => {
|
|
84
|
+
return new NumberTypedBuffer(schema, initialCapacity);
|
|
78
85
|
};
|
|
79
86
|
//# sourceMappingURL=create-number-buffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-number-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-number-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-number-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-number-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { DataView32 } from "../internal/data-view-32/data-view-32.js";
|
|
2
2
|
import { FromSchema, Schema } from "../schema/schema.js";
|
|
3
3
|
import { TypedBuffer } from "./typed-buffer.js";
|
|
4
|
-
export declare const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
maxLength?: number;
|
|
8
|
-
arrayBuffer?: ArrayBufferLike;
|
|
9
|
-
arrayType?: ArrayType;
|
|
10
|
-
}) => TypedBuffer<FromSchema<S>>;
|
|
4
|
+
export declare const structBufferType = "struct";
|
|
5
|
+
export declare function createStructBuffer<S extends Schema, ArrayType extends keyof DataView32 = "f32">(schema: S, initialCapacity: number): TypedBuffer<FromSchema<S>>;
|
|
6
|
+
export declare function createStructBuffer<S extends Schema, ArrayType extends keyof DataView32 = "f32">(schema: S, arrayBuffer: ArrayBuffer): TypedBuffer<FromSchema<S>>;
|
|
@@ -24,47 +24,64 @@ import { createDataView32 } from "../internal/data-view-32/create-data-view-32.j
|
|
|
24
24
|
import { createReadStruct } from "./structs/create-read-struct.js";
|
|
25
25
|
import { createWriteStruct } from "./structs/create-write-struct.js";
|
|
26
26
|
import { getStructLayout } from "./structs/get-struct-layout.js";
|
|
27
|
+
import { TypedBuffer } from "./typed-buffer.js";
|
|
27
28
|
import { createSharedArrayBuffer } from "../internal/shared-array-buffer/create-shared-array-buffer.js";
|
|
28
|
-
export const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
export const structBufferType = "struct";
|
|
30
|
+
class StructTypedBuffer extends TypedBuffer {
|
|
31
|
+
constructor(schema, initialCapacityOrArrayBuffer) {
|
|
32
|
+
super(schema);
|
|
33
|
+
this.type = structBufferType;
|
|
34
|
+
const layout = getStructLayout(schema);
|
|
35
|
+
if (!layout) {
|
|
36
|
+
throw new Error("Schema is not a valid struct schema");
|
|
37
|
+
}
|
|
38
|
+
this.layout = layout;
|
|
39
|
+
this.typedArrayElementSizeInBytes = this.layout.size;
|
|
40
|
+
this.arrayType = 'f32';
|
|
41
|
+
this.sizeInQuads = this.layout.size / 4;
|
|
42
|
+
this.arrayBuffer
|
|
43
|
+
= initialCapacityOrArrayBuffer instanceof ArrayBuffer
|
|
44
|
+
? initialCapacityOrArrayBuffer
|
|
45
|
+
: createSharedArrayBuffer(initialCapacityOrArrayBuffer * this.layout.size);
|
|
46
|
+
this.dataView = createDataView32(this.arrayBuffer);
|
|
47
|
+
this.typedArray = this.dataView[this.arrayType];
|
|
48
|
+
this._capacity = this.typedArray.length / this.sizeInQuads;
|
|
49
|
+
this.read = createReadStruct(this.layout);
|
|
50
|
+
this.write = createWriteStruct(this.layout);
|
|
33
51
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
};
|
|
52
|
+
get capacity() {
|
|
53
|
+
return this._capacity;
|
|
54
|
+
}
|
|
55
|
+
set capacity(value) {
|
|
56
|
+
if (value !== this._capacity) {
|
|
57
|
+
this._capacity = value;
|
|
58
|
+
this.arrayBuffer = grow(this.arrayBuffer, value * this.layout.size);
|
|
59
|
+
this.dataView = createDataView32(this.arrayBuffer);
|
|
60
|
+
this.typedArray = this.dataView[this.arrayType];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
getTypedArray() {
|
|
64
|
+
return this.typedArray;
|
|
65
|
+
}
|
|
66
|
+
get(index) {
|
|
67
|
+
return this.read(this.dataView, index);
|
|
68
|
+
}
|
|
69
|
+
set(index, value) {
|
|
70
|
+
this.write(this.dataView, index, value);
|
|
71
|
+
}
|
|
72
|
+
copyWithin(target, start, end) {
|
|
73
|
+
this.dataView[this.arrayType].copyWithin(target * this.sizeInQuads, start * this.sizeInQuads, end * this.sizeInQuads);
|
|
74
|
+
}
|
|
75
|
+
slice(start = 0, end = this._capacity) {
|
|
76
|
+
const result = new Array(Math.max(0, end - start));
|
|
77
|
+
for (let i = start; i < end; i++) {
|
|
78
|
+
result[i - start] = this.read(this.dataView, i);
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function createStructBuffer(schema, initialCapacityOrArrayBuffer) {
|
|
84
|
+
return new StructTypedBuffer(schema, initialCapacityOrArrayBuffer);
|
|
85
|
+
}
|
|
86
|
+
;
|
|
70
87
|
//# sourceMappingURL=create-struct-buffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-struct-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-struct-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"create-struct-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-struct-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { FromSchema, Schema } from "../schema/schema.js";
|
|
2
2
|
import { TypedBuffer } from "./typed-buffer.js";
|
|
3
|
-
export declare
|
|
4
|
-
|
|
5
|
-
length?: number;
|
|
6
|
-
maxLength?: number;
|
|
7
|
-
}) => TypedBuffer<FromSchema<S>>;
|
|
3
|
+
export declare function createTypedBuffer<S extends Schema>(schema: S, initialCapacity?: number): TypedBuffer<FromSchema<S>>;
|
|
4
|
+
export declare function createTypedBuffer<S extends Schema>(schema: S, initialValues: FromSchema<S>[]): TypedBuffer<FromSchema<S>>;
|