@adobe/data 0.9.47 → 0.9.50
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 +18 -101
- package/dist/ecs/database/combine-plugins.d.ts +35 -19
- package/dist/ecs/database/combine-plugins.js.map +1 -1
- package/dist/ecs/database/create-plugin.d.ts +11 -10
- package/dist/ecs/database/create-plugin.js.map +1 -1
- package/dist/ecs/database/database.d.ts +17 -23
- package/dist/ecs/database/database.js.map +1 -1
- package/dist/ecs/database/deep-extends-chain.type-test.d.ts +40963 -0
- package/dist/ecs/database/deep-extends-chain.type-test.js +282 -0
- package/dist/ecs/database/deep-extends-chain.type-test.js.map +1 -0
- package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
- package/dist/ecs/database/observed/observed-database.d.ts +1 -3
- package/dist/ecs/database/public/create-database.d.ts +2 -5
- package/dist/ecs/database/public/create-database.js.map +1 -1
- package/dist/ecs/plugins/scheduler/scheduler.d.ts +13 -8
- package/dist/ecs/store/core/core.d.ts +3 -7
- package/dist/functions/serialization/compression.d.ts +2 -0
- package/dist/functions/serialization/compression.js +32 -0
- package/dist/functions/serialization/compression.js.map +1 -0
- package/dist/functions/serialization/serialization.test.js +66 -0
- package/dist/functions/serialization/serialization.test.js.map +1 -1
- package/dist/functions/serialization/serialize-to-blobs.js +20 -4
- package/dist/functions/serialization/serialize-to-blobs.js.map +1 -1
- package/dist/functions/serialization/serialize-to-blobs.test.js +21 -0
- package/dist/functions/serialization/serialize-to-blobs.test.js.map +1 -1
- package/dist/functions/serialization/serialize-to-json.js +5 -70
- package/dist/functions/serialization/serialize-to-json.js.map +1 -1
- package/dist/observe/public.d.ts +1 -0
- package/dist/observe/public.js +1 -0
- package/dist/observe/public.js.map +1 -1
- package/dist/observe/with-switch.d.ts +18 -0
- package/dist/observe/with-switch.js +45 -0
- package/dist/observe/with-switch.js.map +1 -0
- package/dist/observe/with-switch.test.d.ts +1 -0
- package/dist/observe/with-switch.test.js +142 -0
- package/dist/observe/with-switch.test.js.map +1 -0
- package/dist/old-ecs/index.d.ts +4 -0
- package/dist/old-ecs/index.js +4 -0
- package/dist/old-ecs/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/typed-buffer/create-enum-buffer.d.ts +4 -0
- package/dist/typed-buffer/create-enum-buffer.js +82 -0
- package/dist/typed-buffer/create-enum-buffer.js.map +1 -0
- package/dist/typed-buffer/create-enum-buffer.test.d.ts +1 -0
- package/dist/typed-buffer/create-enum-buffer.test.js +248 -0
- package/dist/typed-buffer/create-enum-buffer.test.js.map +1 -0
- package/dist/typed-buffer/create-typed-buffer.js +4 -0
- package/dist/typed-buffer/create-typed-buffer.js.map +1 -1
- package/dist/typed-buffer/register-typed-buffer-codecs.js +20 -2
- package/dist/typed-buffer/register-typed-buffer-codecs.js.map +1 -1
- package/dist/typed-buffer/typed-buffer.d.ts +1 -1
- package/dist/types/types.d.ts +9 -1
- package/dist/types/types.js.map +1 -1
- package/package.json +1 -2
- package/references/data-lit/package.json +1 -1
- package/references/data-lit-tictactoe/package.json +1 -1
- package/references/data-react/package.json +1 -1
- package/references/data-react-hello/package.json +1 -1
- package/references/data-react-pixie/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { resize } from "../internal/array-buffer-like/resize.js";
|
|
3
|
+
import { TypedBuffer } from "./typed-buffer.js";
|
|
4
|
+
import { createSharedArrayBuffer } from "../internal/shared-array-buffer/create-shared-array-buffer.js";
|
|
5
|
+
export const enumBufferType = "enum";
|
|
6
|
+
const MAX_ENUM_VALUES = 256;
|
|
7
|
+
class EnumTypedBuffer extends TypedBuffer {
|
|
8
|
+
constructor(schema, initialCapacity) {
|
|
9
|
+
super(schema);
|
|
10
|
+
this.type = enumBufferType;
|
|
11
|
+
this.typedArrayElementSizeInBytes = 1;
|
|
12
|
+
const enumValues = schema.enum;
|
|
13
|
+
if (enumValues.length > MAX_ENUM_VALUES) {
|
|
14
|
+
throw new Error(`Enum schema has ${enumValues.length} values, but the maximum is ${MAX_ENUM_VALUES}. ` +
|
|
15
|
+
`Enum buffers use a Uint8Array and cannot represent more than ${MAX_ENUM_VALUES} distinct values.`);
|
|
16
|
+
}
|
|
17
|
+
this.indexToValue = enumValues;
|
|
18
|
+
this.valueToIndex = new Map();
|
|
19
|
+
for (let i = 0; i < enumValues.length; i++) {
|
|
20
|
+
this.valueToIndex.set(enumValues[i], i);
|
|
21
|
+
}
|
|
22
|
+
this.defaultIndex = schema.default !== undefined
|
|
23
|
+
? this.valueToIndex.get(schema.default) ?? 0
|
|
24
|
+
: 0;
|
|
25
|
+
this._capacity = initialCapacity;
|
|
26
|
+
this.arrayBuffer = createSharedArrayBuffer(initialCapacity);
|
|
27
|
+
this.array = new Uint8Array(this.arrayBuffer);
|
|
28
|
+
if (this.defaultIndex !== 0) {
|
|
29
|
+
this.array.fill(this.defaultIndex);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
get capacity() {
|
|
33
|
+
return this._capacity;
|
|
34
|
+
}
|
|
35
|
+
set capacity(value) {
|
|
36
|
+
if (value !== this._capacity) {
|
|
37
|
+
const oldCapacity = this._capacity;
|
|
38
|
+
this._capacity = value;
|
|
39
|
+
this.arrayBuffer = resize(this.arrayBuffer, value);
|
|
40
|
+
this.array = new Uint8Array(this.arrayBuffer);
|
|
41
|
+
if (this.defaultIndex !== 0 && value > oldCapacity) {
|
|
42
|
+
this.array.fill(this.defaultIndex, oldCapacity, value);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
getTypedArray() {
|
|
47
|
+
return this.array;
|
|
48
|
+
}
|
|
49
|
+
get(index) {
|
|
50
|
+
return this.indexToValue[this.array[index]];
|
|
51
|
+
}
|
|
52
|
+
set(index, value) {
|
|
53
|
+
const enumIndex = this.valueToIndex.get(value);
|
|
54
|
+
if (enumIndex === undefined) {
|
|
55
|
+
throw new Error(`Value ${JSON.stringify(value)} is not a valid enum value. ` +
|
|
56
|
+
`Expected one of: ${this.indexToValue.map(v => JSON.stringify(v)).join(", ")}`);
|
|
57
|
+
}
|
|
58
|
+
this.array[index] = enumIndex;
|
|
59
|
+
}
|
|
60
|
+
isDefault(index) {
|
|
61
|
+
return this.array[index] === this.defaultIndex;
|
|
62
|
+
}
|
|
63
|
+
copyWithin(target, start, end) {
|
|
64
|
+
this.array.copyWithin(target, start, end);
|
|
65
|
+
}
|
|
66
|
+
slice(start = 0, end = this._capacity) {
|
|
67
|
+
const result = [];
|
|
68
|
+
for (let i = start; i < end; i++) {
|
|
69
|
+
result.push(this.indexToValue[this.array[i]]);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
copy() {
|
|
74
|
+
const copy = new EnumTypedBuffer(this.schema, this._capacity);
|
|
75
|
+
copy.array.set(this.array);
|
|
76
|
+
return copy;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export const createEnumBuffer = (schema, initialCapacity) => {
|
|
80
|
+
return new EnumTypedBuffer(schema, initialCapacity);
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=create-enum-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-enum-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-enum-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { describe, it, expect } from "vitest";
|
|
3
|
+
import { createEnumBuffer } from "./create-enum-buffer.js";
|
|
4
|
+
import { createTypedBuffer } from "./create-typed-buffer.js";
|
|
5
|
+
describe("createEnumBuffer", () => {
|
|
6
|
+
describe("get and set", () => {
|
|
7
|
+
it("should store and retrieve string enum values", () => {
|
|
8
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
9
|
+
const buf = createEnumBuffer(schema, 3);
|
|
10
|
+
buf.set(0, "a");
|
|
11
|
+
buf.set(1, "b");
|
|
12
|
+
buf.set(2, "c");
|
|
13
|
+
expect(buf.get(0)).toBe("a");
|
|
14
|
+
expect(buf.get(1)).toBe("b");
|
|
15
|
+
expect(buf.get(2)).toBe("c");
|
|
16
|
+
});
|
|
17
|
+
it("should store and retrieve number enum values", () => {
|
|
18
|
+
const schema = { enum: [10, 20, 30], default: 10 };
|
|
19
|
+
const buf = createEnumBuffer(schema, 2);
|
|
20
|
+
buf.set(0, 20);
|
|
21
|
+
buf.set(1, 30);
|
|
22
|
+
expect(buf.get(0)).toBe(20);
|
|
23
|
+
expect(buf.get(1)).toBe(30);
|
|
24
|
+
});
|
|
25
|
+
it("should store and retrieve boolean enum values", () => {
|
|
26
|
+
const schema = { enum: [true, false], default: true };
|
|
27
|
+
const buf = createEnumBuffer(schema, 2);
|
|
28
|
+
buf.set(0, true);
|
|
29
|
+
buf.set(1, false);
|
|
30
|
+
expect(buf.get(0)).toBe(true);
|
|
31
|
+
expect(buf.get(1)).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
it("should store and retrieve mixed-type enum values", () => {
|
|
34
|
+
const schema = { enum: ["a", 12, false, null], default: "a" };
|
|
35
|
+
const buf = createEnumBuffer(schema, 4);
|
|
36
|
+
buf.set(0, "a");
|
|
37
|
+
buf.set(1, 12);
|
|
38
|
+
buf.set(2, false);
|
|
39
|
+
buf.set(3, null);
|
|
40
|
+
expect(buf.get(0)).toBe("a");
|
|
41
|
+
expect(buf.get(1)).toBe(12);
|
|
42
|
+
expect(buf.get(2)).toBe(false);
|
|
43
|
+
expect(buf.get(3)).toBe(null);
|
|
44
|
+
});
|
|
45
|
+
it("should throw on set with a value not in the enum", () => {
|
|
46
|
+
const schema = { enum: ["x", "y"], default: "x" };
|
|
47
|
+
const buf = createEnumBuffer(schema, 1);
|
|
48
|
+
expect(() => buf.set(0, "z")).toThrow(/Value "z" is not a valid enum value/);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("construction errors", () => {
|
|
52
|
+
it("should throw if enum has more than 256 values", () => {
|
|
53
|
+
const values = Array.from({ length: 257 }, (_, i) => `val${i}`);
|
|
54
|
+
const schema = { enum: values, default: values[0] };
|
|
55
|
+
expect(() => createEnumBuffer(schema, 1)).toThrow(/257 values.*maximum is 256/);
|
|
56
|
+
});
|
|
57
|
+
it("should accept exactly 256 values", () => {
|
|
58
|
+
const values = Array.from({ length: 256 }, (_, i) => i);
|
|
59
|
+
const schema = { enum: values, default: 0 };
|
|
60
|
+
const buf = createEnumBuffer(schema, 2);
|
|
61
|
+
buf.set(0, 0);
|
|
62
|
+
buf.set(1, 255);
|
|
63
|
+
expect(buf.get(0)).toBe(0);
|
|
64
|
+
expect(buf.get(1)).toBe(255);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe("isDefault", () => {
|
|
68
|
+
it("should return true for unset slots (default is first enum value)", () => {
|
|
69
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
70
|
+
const buf = createEnumBuffer(schema, 3);
|
|
71
|
+
expect(buf.isDefault(0)).toBe(true);
|
|
72
|
+
expect(buf.isDefault(1)).toBe(true);
|
|
73
|
+
expect(buf.isDefault(2)).toBe(true);
|
|
74
|
+
});
|
|
75
|
+
it("should return false after setting a non-default value", () => {
|
|
76
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
77
|
+
const buf = createEnumBuffer(schema, 2);
|
|
78
|
+
buf.set(0, "b");
|
|
79
|
+
expect(buf.isDefault(0)).toBe(false);
|
|
80
|
+
expect(buf.isDefault(1)).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
it("should use schema.default when it is not the first enum value", () => {
|
|
83
|
+
const schema = { enum: ["a", "b", "c"], default: "b" };
|
|
84
|
+
const buf = createEnumBuffer(schema, 2);
|
|
85
|
+
expect(buf.isDefault(0)).toBe(true);
|
|
86
|
+
expect(buf.get(0)).toBe("b");
|
|
87
|
+
buf.set(0, "a");
|
|
88
|
+
expect(buf.isDefault(0)).toBe(false);
|
|
89
|
+
buf.set(1, "b");
|
|
90
|
+
expect(buf.isDefault(1)).toBe(true);
|
|
91
|
+
});
|
|
92
|
+
it("should default to index 0 when schema.default is not provided", () => {
|
|
93
|
+
const schema = { enum: ["x", "y"] };
|
|
94
|
+
const buf = createEnumBuffer(schema, 1);
|
|
95
|
+
expect(buf.isDefault(0)).toBe(true);
|
|
96
|
+
expect(buf.get(0)).toBe("x");
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe("copyWithin", () => {
|
|
100
|
+
it("should copy elements within the buffer", () => {
|
|
101
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
102
|
+
const buf = createEnumBuffer(schema, 4);
|
|
103
|
+
buf.set(0, "a");
|
|
104
|
+
buf.set(1, "b");
|
|
105
|
+
buf.set(2, "c");
|
|
106
|
+
buf.set(3, "a");
|
|
107
|
+
buf.copyWithin(2, 0, 2);
|
|
108
|
+
expect(buf.get(0)).toBe("a");
|
|
109
|
+
expect(buf.get(1)).toBe("b");
|
|
110
|
+
expect(buf.get(2)).toBe("a");
|
|
111
|
+
expect(buf.get(3)).toBe("b");
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe("slice", () => {
|
|
115
|
+
it("should return all values when called without arguments", () => {
|
|
116
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
117
|
+
const buf = createEnumBuffer(schema, 3);
|
|
118
|
+
buf.set(0, "a");
|
|
119
|
+
buf.set(1, "b");
|
|
120
|
+
buf.set(2, "c");
|
|
121
|
+
expect(Array.from(buf.slice())).toEqual(["a", "b", "c"]);
|
|
122
|
+
});
|
|
123
|
+
it("should return a partial slice", () => {
|
|
124
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
125
|
+
const buf = createEnumBuffer(schema, 4);
|
|
126
|
+
buf.set(0, "a");
|
|
127
|
+
buf.set(1, "b");
|
|
128
|
+
buf.set(2, "c");
|
|
129
|
+
buf.set(3, "a");
|
|
130
|
+
expect(Array.from(buf.slice(1, 3))).toEqual(["b", "c"]);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe("copy", () => {
|
|
134
|
+
it("should produce an independent clone", () => {
|
|
135
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
136
|
+
const buf = createEnumBuffer(schema, 3);
|
|
137
|
+
buf.set(0, "a");
|
|
138
|
+
buf.set(1, "b");
|
|
139
|
+
buf.set(2, "c");
|
|
140
|
+
const clone = buf.copy();
|
|
141
|
+
expect(clone.get(0)).toBe("a");
|
|
142
|
+
expect(clone.get(1)).toBe("b");
|
|
143
|
+
expect(clone.get(2)).toBe("c");
|
|
144
|
+
expect(clone.capacity).toBe(3);
|
|
145
|
+
buf.set(0, "c");
|
|
146
|
+
expect(clone.get(0)).toBe("a");
|
|
147
|
+
});
|
|
148
|
+
it("should have an independent typed array backing", () => {
|
|
149
|
+
const schema = { enum: [1, 2, 3], default: 1 };
|
|
150
|
+
const buf = createEnumBuffer(schema, 2);
|
|
151
|
+
buf.set(0, 2);
|
|
152
|
+
const clone = buf.copy();
|
|
153
|
+
const srcTA = buf.getTypedArray();
|
|
154
|
+
const dstTA = clone.getTypedArray();
|
|
155
|
+
expect(dstTA).not.toBe(srcTA);
|
|
156
|
+
expect(dstTA.buffer).not.toBe(srcTA.buffer);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe("getTypedArray", () => {
|
|
160
|
+
it("should return a Uint8Array", () => {
|
|
161
|
+
const schema = { enum: ["a", "b"], default: "a" };
|
|
162
|
+
const buf = createEnumBuffer(schema, 4);
|
|
163
|
+
const ta = buf.getTypedArray();
|
|
164
|
+
expect(ta).toBeInstanceOf(Uint8Array);
|
|
165
|
+
expect(ta.length).toBe(4);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
describe("capacity resize", () => {
|
|
169
|
+
it("should preserve data when growing", () => {
|
|
170
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
171
|
+
const buf = createEnumBuffer(schema, 2);
|
|
172
|
+
buf.set(0, "b");
|
|
173
|
+
buf.set(1, "c");
|
|
174
|
+
buf.capacity = 4;
|
|
175
|
+
expect(buf.capacity).toBe(4);
|
|
176
|
+
expect(buf.get(0)).toBe("b");
|
|
177
|
+
expect(buf.get(1)).toBe("c");
|
|
178
|
+
});
|
|
179
|
+
it("should truncate data when shrinking", () => {
|
|
180
|
+
const schema = { enum: ["a", "b", "c"], default: "a" };
|
|
181
|
+
const buf = createEnumBuffer(schema, 4);
|
|
182
|
+
buf.set(0, "a");
|
|
183
|
+
buf.set(1, "b");
|
|
184
|
+
buf.set(2, "c");
|
|
185
|
+
buf.set(3, "a");
|
|
186
|
+
buf.capacity = 2;
|
|
187
|
+
expect(buf.capacity).toBe(2);
|
|
188
|
+
expect(buf.get(0)).toBe("a");
|
|
189
|
+
expect(buf.get(1)).toBe("b");
|
|
190
|
+
});
|
|
191
|
+
it("should fill new slots with default when growing and default is not index 0", () => {
|
|
192
|
+
const schema = { enum: ["a", "b", "c"], default: "b" };
|
|
193
|
+
const buf = createEnumBuffer(schema, 2);
|
|
194
|
+
buf.set(0, "c");
|
|
195
|
+
buf.capacity = 4;
|
|
196
|
+
expect(buf.get(0)).toBe("c");
|
|
197
|
+
expect(buf.get(1)).toBe("b");
|
|
198
|
+
expect(buf.get(2)).toBe("b");
|
|
199
|
+
expect(buf.get(3)).toBe("b");
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe("type and metadata", () => {
|
|
203
|
+
it('should have type "enum"', () => {
|
|
204
|
+
const schema = { enum: ["a", "b"], default: "a" };
|
|
205
|
+
const buf = createEnumBuffer(schema, 1);
|
|
206
|
+
expect(buf.type).toBe("enum");
|
|
207
|
+
});
|
|
208
|
+
it("should have typedArrayElementSizeInBytes of 1", () => {
|
|
209
|
+
const schema = { enum: ["a", "b"], default: "a" };
|
|
210
|
+
const buf = createEnumBuffer(schema, 1);
|
|
211
|
+
expect(buf.typedArrayElementSizeInBytes).toBe(1);
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
describe("createTypedBuffer enum integration", () => {
|
|
216
|
+
it("should auto-select enum buffer when schema has enum property", () => {
|
|
217
|
+
const schema = { enum: ["landscape", "portrait"] };
|
|
218
|
+
const buf = createTypedBuffer(schema, 2);
|
|
219
|
+
expect(buf.type).toBe("enum");
|
|
220
|
+
buf.set(0, "landscape");
|
|
221
|
+
buf.set(1, "portrait");
|
|
222
|
+
expect(buf.get(0)).toBe("landscape");
|
|
223
|
+
expect(buf.get(1)).toBe("portrait");
|
|
224
|
+
});
|
|
225
|
+
it("should prefer enum over number for integer enum schemas", () => {
|
|
226
|
+
const schema = { type: "integer", enum: [0, 1, 2] };
|
|
227
|
+
const buf = createTypedBuffer(schema, 3);
|
|
228
|
+
expect(buf.type).toBe("enum");
|
|
229
|
+
});
|
|
230
|
+
it("should prefer enum over array for string enum schemas", () => {
|
|
231
|
+
const schema = { type: "string", enum: ["a", "b", "c"] };
|
|
232
|
+
const buf = createTypedBuffer(schema, 2);
|
|
233
|
+
expect(buf.type).toBe("enum");
|
|
234
|
+
});
|
|
235
|
+
it("should prefer const over enum when both are present", () => {
|
|
236
|
+
const schema = { const: "a", enum: ["a", "b"] };
|
|
237
|
+
const buf = createTypedBuffer(schema, 1);
|
|
238
|
+
expect(buf.type).toBe("const");
|
|
239
|
+
});
|
|
240
|
+
it("should support initial values array", () => {
|
|
241
|
+
const schema = { enum: ["x", "y", "z"] };
|
|
242
|
+
const buf = createTypedBuffer(schema, ["x", "z", "y"]);
|
|
243
|
+
expect(buf.get(0)).toBe("x");
|
|
244
|
+
expect(buf.get(1)).toBe("z");
|
|
245
|
+
expect(buf.get(2)).toBe("y");
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
//# sourceMappingURL=create-enum-buffer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-enum-buffer.test.js","sourceRoot":"","sources":["../../src/typed-buffer/create-enum-buffer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { getStructLayout } from "./structs/get-struct-layout.js";
|
|
|
3
3
|
import { createNumberBuffer } from "./create-number-buffer.js";
|
|
4
4
|
import { createArrayBuffer } from "./create-array-buffer.js";
|
|
5
5
|
import { createConstBuffer } from "./create-const-buffer.js";
|
|
6
|
+
import { createEnumBuffer } from "./create-enum-buffer.js";
|
|
6
7
|
export function createTypedBuffer(schema, initialCapacityOrValues) {
|
|
7
8
|
if (Array.isArray(initialCapacityOrValues)) {
|
|
8
9
|
const buffer = createTypedBufferInternal(schema, initialCapacityOrValues.length);
|
|
@@ -17,6 +18,9 @@ function createTypedBufferInternal(schema, initialCapacity) {
|
|
|
17
18
|
if (schema.const !== undefined) {
|
|
18
19
|
return createConstBuffer(schema, initialCapacity);
|
|
19
20
|
}
|
|
21
|
+
if (schema.enum !== undefined && schema.enum.length > 0) {
|
|
22
|
+
return createEnumBuffer(schema, initialCapacity);
|
|
23
|
+
}
|
|
20
24
|
if (schema.type === 'number' || schema.type === 'integer') {
|
|
21
25
|
return createNumberBuffer(schema, initialCapacity);
|
|
22
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-typed-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-typed-buffer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"create-typed-buffer.js","sourceRoot":"","sources":["../../src/typed-buffer/create-typed-buffer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAU3D,MAAM,UAAU,iBAAiB,CAC7B,MAAS,EACT,uBAAqD;IAErD,IAAI,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,yBAAyB,CAAI,MAAM,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,yBAAyB,CAAI,MAAM,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,yBAAyB,CAC9B,MAAS,EACT,eAAuB;IAGvB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAkC,CAAC;IACvF,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAkC,CAAC;IACtF,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxD,OAAO,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAkC,CAAC;IACxF,CAAC;IAED,yEAAyE;IACzE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;IACnD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { registerCodec } from "../functions/serialization/codec.js";
|
|
|
5
5
|
import { createArrayBuffer } from "./create-array-buffer.js";
|
|
6
6
|
import { createConstBuffer } from "./create-const-buffer.js";
|
|
7
7
|
import { createNumberBuffer } from "./create-number-buffer.js";
|
|
8
|
+
import { createEnumBuffer } from "./create-enum-buffer.js";
|
|
8
9
|
import { createStructBuffer } from "./create-struct-buffer.js";
|
|
9
10
|
import { isTypedBuffer } from "./is-typed-buffer.js";
|
|
10
11
|
export function registerTypedBufferCodecs() {
|
|
@@ -20,7 +21,7 @@ export function registerTypedBufferCodecs() {
|
|
|
20
21
|
else if (type === "array") {
|
|
21
22
|
return { json: { type, schema, capacity, array: data.slice() } };
|
|
22
23
|
}
|
|
23
|
-
else if (type === "number" || type === "struct") {
|
|
24
|
+
else if (type === "enum" || type === "number" || type === "struct") {
|
|
24
25
|
const typedArray = data.getTypedArray();
|
|
25
26
|
const view = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
|
|
26
27
|
return { json: { type, schema, capacity }, binary: [toArrayBufferBacked(view)] };
|
|
@@ -41,7 +42,10 @@ export function registerTypedBufferCodecs() {
|
|
|
41
42
|
return createConstBuffer(schema, capacity);
|
|
42
43
|
}
|
|
43
44
|
else if (type === "array") {
|
|
44
|
-
const
|
|
45
|
+
const isEnum = schema.enum !== undefined && schema.enum.length > 0;
|
|
46
|
+
const buffer = isEnum
|
|
47
|
+
? createEnumBuffer(schema, capacity)
|
|
48
|
+
: createArrayBuffer(schema, capacity);
|
|
45
49
|
if (schema.ephemeral) {
|
|
46
50
|
if (schema.default !== undefined && schema.default !== 0) {
|
|
47
51
|
for (let i = 0; i < capacity; i++) {
|
|
@@ -56,6 +60,20 @@ export function registerTypedBufferCodecs() {
|
|
|
56
60
|
}
|
|
57
61
|
return buffer;
|
|
58
62
|
}
|
|
63
|
+
else if (type === "enum") {
|
|
64
|
+
const buffer = createEnumBuffer(schema, capacity);
|
|
65
|
+
if (!schema.ephemeral) {
|
|
66
|
+
if (binary[0]) {
|
|
67
|
+
copyViewBytes(binary[0], buffer.getTypedArray());
|
|
68
|
+
}
|
|
69
|
+
else if (array) {
|
|
70
|
+
for (let i = 0; i < capacity; i++) {
|
|
71
|
+
buffer.set(i, array[i]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return buffer;
|
|
76
|
+
}
|
|
59
77
|
else if (type === "number" || type === "struct") {
|
|
60
78
|
const buffer = type === "number" ? createNumberBuffer(schema, capacity) : createStructBuffer(schema, capacity);
|
|
61
79
|
if (schema.ephemeral) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-typed-buffer-codecs.js","sourceRoot":"","sources":["../../src/typed-buffer/register-typed-buffer-codecs.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,UAAU,yBAAyB;IACrC,aAAa,CAAmB;QAC5B,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,CAAC,IAAsB,EAAE,EAAE;YAClC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC;gBACD,IAAI,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACvC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;gBAChD,CAAC;qBACI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACxB,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAsB,EAAE,EAAE,CAAC;gBACzF,CAAC;qBACI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"register-typed-buffer-codecs.js","sourceRoot":"","sources":["../../src/typed-buffer/register-typed-buffer-codecs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TypedArray } from "../internal/typed-array/index.js";
|
|
2
2
|
import { Schema } from "../schema/index.js";
|
|
3
3
|
import { typedBufferEquals } from "./typed-buffer-equals.js";
|
|
4
|
-
export type TypedBufferType = "array" | "const" | "number" | "struct";
|
|
4
|
+
export type TypedBufferType = "array" | "const" | "enum" | "number" | "struct";
|
|
5
5
|
export interface ReadonlyTypedBuffer<T> {
|
|
6
6
|
readonly type: TypedBufferType;
|
|
7
7
|
readonly schema: Schema;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export type True<A extends true> = A extends boolean ? true : true;
|
|
|
31
31
|
export type Extends<A, B> = [A] extends [B] ? true : false;
|
|
32
32
|
export type EquivalentTypes<A, B> = [A] extends [B] ? [B] extends [A] ? true : false : false;
|
|
33
33
|
export type AnyFunction = (...args: unknown[]) => unknown;
|
|
34
|
-
export type DeepReadonly<T> = T extends Function | Branded | Element | Blob ? T : T extends Array<infer U> ? IsTuple<T> extends true ? {
|
|
34
|
+
export type DeepReadonly<T> = T extends Function | Branded | Element | Blob ? T : T extends number | string | boolean | symbol | bigint ? T : T extends Array<infer U> ? IsTuple<T> extends true ? {
|
|
35
35
|
readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
36
36
|
} : ReadonlyArray<DeepReadonly<U>> : T extends object ? {
|
|
37
37
|
readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
@@ -40,6 +40,14 @@ export type IsTuple<T> = T extends readonly [...infer Elements] ? number extends
|
|
|
40
40
|
export type Simplify<T> = T extends object ? {
|
|
41
41
|
[K in keyof T]: T[K];
|
|
42
42
|
} : T;
|
|
43
|
+
/**
|
|
44
|
+
* Strips index signatures (`[K: string]`, `[K: number]`, `[K: symbol]`) from
|
|
45
|
+
* an object type, keeping only explicitly-named keys. Useful when a type flows
|
|
46
|
+
* through a constraint like `Record<string, V>` which adds an implicit index.
|
|
47
|
+
*/
|
|
48
|
+
export type RemoveIndex<T> = Simplify<{
|
|
49
|
+
[K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K];
|
|
50
|
+
}>;
|
|
43
51
|
export type IsNever<T> = [T] extends [never] ? true : false;
|
|
44
52
|
export type RequiredKeys<T extends object> = {
|
|
45
53
|
[K in keyof T]-?: {} extends {
|
package/dist/types/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAuDvD,CAAC;AAID,CAAC;AAOD,CAAC;AAID,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAuDvD,CAAC;AAID,CAAC;AAOD,CAAC;AAID,CAAC;AAmHD,oCAAoC;AACpC,CAAC;AAcD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adobe/data",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.50",
|
|
4
4
|
"description": "Adobe data oriented programming library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -171,7 +171,6 @@
|
|
|
171
171
|
"build-assembly": "run-p asbuild:release",
|
|
172
172
|
"clean": "rm -rf dist build node_modules",
|
|
173
173
|
"clean-cache": "rm -rf node_modules/.cache",
|
|
174
|
-
"deploy-docs": "pnpm build && ./scripts/deploy-docs.sh",
|
|
175
174
|
"dev": "pnpm clean-cache && run-p dev:* dev:serve",
|
|
176
175
|
"dev:serve": "vite",
|
|
177
176
|
"dev:build": "tsc -b -w --preserveWatchOutput",
|