@adobe/data 0.9.48 → 0.9.51

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 (51) hide show
  1. package/AGENTS.md +2 -0
  2. package/README.md +18 -101
  3. package/dist/ecs/database/combine-plugins.d.ts +35 -19
  4. package/dist/ecs/database/combine-plugins.js.map +1 -1
  5. package/dist/ecs/database/create-plugin.d.ts +11 -10
  6. package/dist/ecs/database/create-plugin.js.map +1 -1
  7. package/dist/ecs/database/database.d.ts +17 -23
  8. package/dist/ecs/database/database.js.map +1 -1
  9. package/dist/ecs/database/deep-extends-chain.type-test.d.ts +40963 -0
  10. package/dist/ecs/database/deep-extends-chain.type-test.js +282 -0
  11. package/dist/ecs/database/deep-extends-chain.type-test.js.map +1 -0
  12. package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
  13. package/dist/ecs/database/observed/observed-database.d.ts +1 -3
  14. package/dist/ecs/database/public/create-database.d.ts +2 -5
  15. package/dist/ecs/database/public/create-database.js.map +1 -1
  16. package/dist/ecs/plugins/scheduler/scheduler.d.ts +13 -8
  17. package/dist/ecs/store/core/core.d.ts +3 -7
  18. package/dist/functions/serialization/compression.d.ts +2 -0
  19. package/dist/functions/serialization/compression.js +32 -0
  20. package/dist/functions/serialization/compression.js.map +1 -0
  21. package/dist/functions/serialization/serialization.test.js +66 -0
  22. package/dist/functions/serialization/serialization.test.js.map +1 -1
  23. package/dist/functions/serialization/serialize-to-blobs.js +20 -4
  24. package/dist/functions/serialization/serialize-to-blobs.js.map +1 -1
  25. package/dist/functions/serialization/serialize-to-blobs.test.js +21 -0
  26. package/dist/functions/serialization/serialize-to-blobs.test.js.map +1 -1
  27. package/dist/functions/serialization/serialize-to-json.js +5 -70
  28. package/dist/functions/serialization/serialize-to-json.js.map +1 -1
  29. package/dist/old-ecs/index.d.ts +4 -0
  30. package/dist/old-ecs/index.js +4 -0
  31. package/dist/old-ecs/index.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/dist/typed-buffer/create-enum-buffer.d.ts +4 -0
  34. package/dist/typed-buffer/create-enum-buffer.js +82 -0
  35. package/dist/typed-buffer/create-enum-buffer.js.map +1 -0
  36. package/dist/typed-buffer/create-enum-buffer.test.d.ts +1 -0
  37. package/dist/typed-buffer/create-enum-buffer.test.js +248 -0
  38. package/dist/typed-buffer/create-enum-buffer.test.js.map +1 -0
  39. package/dist/typed-buffer/create-typed-buffer.js +4 -0
  40. package/dist/typed-buffer/create-typed-buffer.js.map +1 -1
  41. package/dist/typed-buffer/register-typed-buffer-codecs.js +20 -2
  42. package/dist/typed-buffer/register-typed-buffer-codecs.js.map +1 -1
  43. package/dist/typed-buffer/typed-buffer.d.ts +1 -1
  44. package/dist/types/types.d.ts +9 -1
  45. package/dist/types/types.js.map +1 -1
  46. package/package.json +1 -2
  47. package/references/data-lit/package.json +1 -1
  48. package/references/data-lit-tictactoe/package.json +1 -1
  49. package/references/data-react/package.json +1 -1
  50. package/references/data-react-hello/package.json +1 -1
  51. package/references/data-react-pixie/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ import { Schema } from "../schema/index.js";
2
+ import { TypedBuffer } from "./typed-buffer.js";
3
+ export declare const enumBufferType = "enum";
4
+ export declare const createEnumBuffer: <T>(schema: Schema, initialCapacity: number) => TypedBuffer<T>;
@@ -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;AAU7D,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,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"}
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 buffer = createArrayBuffer(schema, capacity);
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":"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"}
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;
@@ -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 {
@@ -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;AAmGD,oCAAoC;AACpC,CAAC;AAcD,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.48",
3
+ "version": "0.9.51",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/data-lit",
3
- "version": "0.9.48",
3
+ "version": "0.9.51",
4
4
  "description": "Adobe data Lit bindings - hooks, elements, decorators",
5
5
  "type": "module",
6
6
  "private": false,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-lit-tictactoe",
3
- "version": "0.9.48",
3
+ "version": "0.9.51",
4
4
  "description": "Tic-Tac-Toe sample - Lit web components with @adobe/data-lit and AgenticService",
5
5
  "type": "module",
6
6
  "private": true,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/data-react",
3
- "version": "0.9.48",
3
+ "version": "0.9.51",
4
4
  "description": "Adobe data React bindings — hooks and context for ECS database",
5
5
  "type": "module",
6
6
  "private": false,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-react-hello",
3
- "version": "0.9.48",
3
+ "version": "0.9.51",
4
4
  "description": "Hello World sample - click counter using @adobe/data-react",
5
5
  "type": "module",
6
6
  "private": true,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-react-pixie",
3
- "version": "0.9.48",
3
+ "version": "0.9.51",
4
4
  "description": "PixiJS React sample - ECS sprites (bunny, fox) with @adobe/data-react",
5
5
  "type": "module",
6
6
  "private": true,