@adobe/data 0.9.46 → 0.9.48

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 (69) hide show
  1. package/dist/ecs/archetype/archetype.d.ts +1 -1
  2. package/dist/ecs/archetype/create-archetype.d.ts +1 -1
  3. package/dist/ecs/archetype/create-archetype.test.js +1 -1
  4. package/dist/ecs/archetype/create-archetype.test.js.map +1 -1
  5. package/dist/ecs/archetype/delete-row.test.js +1 -1
  6. package/dist/ecs/archetype/delete-row.test.js.map +1 -1
  7. package/dist/ecs/database/database.d.ts +1 -1
  8. package/dist/ecs/database/observed/create-observed-database.js +9 -2
  9. package/dist/ecs/database/observed/create-observed-database.js.map +1 -1
  10. package/dist/ecs/database/observed/observed-database.d.ts +1 -1
  11. package/dist/ecs/database/reconciling/reconciling-entry.d.ts +1 -1
  12. package/dist/ecs/database/transactional-store/coalesce-actions.js +1 -1
  13. package/dist/ecs/database/transactional-store/coalesce-actions.js.map +1 -1
  14. package/dist/ecs/database/transactional-store/coalesce-actions.test.js +28 -0
  15. package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -1
  16. package/dist/ecs/database/transactional-store/create-transactional-store.js +22 -8
  17. package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
  18. package/dist/ecs/database/transactional-store/create-transactional-store.test.js +177 -0
  19. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  20. package/dist/ecs/database/transactional-store/transactional-store.d.ts +4 -1
  21. package/dist/ecs/entity/entity.d.ts +4 -0
  22. package/dist/ecs/entity/entity.js +2 -0
  23. package/dist/ecs/entity/entity.js.map +1 -0
  24. package/dist/ecs/entity/is-ephemeral.d.ts +2 -0
  25. package/dist/ecs/entity/is-ephemeral.js +2 -0
  26. package/dist/ecs/entity/is-ephemeral.js.map +1 -0
  27. package/dist/ecs/entity/is-ephemeral.test.d.ts +1 -0
  28. package/dist/ecs/entity/is-ephemeral.test.js +15 -0
  29. package/dist/ecs/entity/is-ephemeral.test.js.map +1 -0
  30. package/dist/ecs/entity/public.d.ts +2 -0
  31. package/dist/ecs/entity/public.js +4 -0
  32. package/dist/ecs/entity/public.js.map +1 -0
  33. package/dist/ecs/entity/schema.d.ts +6 -0
  34. package/dist/ecs/entity/schema.js +4 -0
  35. package/dist/ecs/entity/schema.js.map +1 -0
  36. package/dist/ecs/entity-location-table/entity-location-table.d.ts +1 -1
  37. package/dist/ecs/entity.d.ts +1 -0
  38. package/dist/ecs/entity.js +1 -0
  39. package/dist/ecs/entity.js.map +1 -1
  40. package/dist/ecs/index.d.ts +1 -1
  41. package/dist/ecs/index.js +1 -1
  42. package/dist/ecs/index.js.map +1 -1
  43. package/dist/ecs/persistence-service/create-storage-persistence-service.js +1 -1
  44. package/dist/ecs/persistence-service/create-storage-persistence-service.js.map +1 -1
  45. package/dist/ecs/required-components.d.ts +1 -1
  46. package/dist/ecs/store/core/core.d.ts +1 -1
  47. package/dist/ecs/store/core/create-core.js +1 -1
  48. package/dist/ecs/store/core/create-core.js.map +1 -1
  49. package/dist/ecs/store/core/select-entities.d.ts +1 -1
  50. package/dist/ecs/store/public/create-store.js +9 -2
  51. package/dist/ecs/store/public/create-store.js.map +1 -1
  52. package/dist/ecs/store/store.d.ts +1 -1
  53. package/dist/ecs/store/transaction-functions.d.ts +1 -1
  54. package/dist/observe/public.d.ts +1 -0
  55. package/dist/observe/public.js +1 -0
  56. package/dist/observe/public.js.map +1 -1
  57. package/dist/observe/with-switch.d.ts +18 -0
  58. package/dist/observe/with-switch.js +45 -0
  59. package/dist/observe/with-switch.js.map +1 -0
  60. package/dist/observe/with-switch.test.d.ts +1 -0
  61. package/dist/observe/with-switch.test.js +142 -0
  62. package/dist/observe/with-switch.test.js.map +1 -0
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +1 -1
  65. package/references/data-lit/package.json +1 -1
  66. package/references/data-lit-tictactoe/package.json +1 -1
  67. package/references/data-react/package.json +1 -1
  68. package/references/data-react-hello/package.json +1 -1
  69. package/references/data-react-pixie/package.json +1 -1
@@ -25,9 +25,16 @@ export function createStore(schema) {
25
25
  // The resource component we added above will contain the resource value
26
26
  const ensureResourceInitialized = (name, resourceSchema) => {
27
27
  const resourceId = name;
28
- const archetype = core.ensureArchetype(["id", resourceId]);
28
+ const isEphemeral = resourceSchema.ephemeral;
29
+ const componentNames = isEphemeral
30
+ ? ["id", resourceId, "ephemeral"]
31
+ : ["id", resourceId];
32
+ const archetype = core.ensureArchetype(componentNames);
29
33
  if (archetype.rowCount === 0) {
30
- archetype.insert({ [resourceId]: resourceSchema.default });
34
+ const insertValues = isEphemeral
35
+ ? { [resourceId]: resourceSchema.default, ephemeral: true }
36
+ : { [resourceId]: resourceSchema.default };
37
+ archetype.insert(insertValues);
31
38
  }
32
39
  if (!Object.prototype.hasOwnProperty.call(resources, name)) {
33
40
  const row = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"create-store.js","sourceRoot":"","sources":["../../../../src/ecs/store/public/create-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-store.js","sourceRoot":"","sources":["../../../../src/ecs/store/public/create-store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { RequiredComponents } from "../required-components.js";
2
2
  import { ResourceComponents } from "./resource-components.js";
3
3
  import { Core, ReadonlyCore } from "./core/core.js";
4
- import { Entity } from "../entity.js";
4
+ import { Entity } from "../entity/entity.js";
5
5
  import { IntersectTuple, Simplify, StringKeyof } from "../../types/types.js";
6
6
  import { Components } from "./components.js";
7
7
  import { ArchetypeComponents } from "./archetype-components.js";
@@ -1,5 +1,5 @@
1
1
  import type { Store } from "./store.js";
2
- import { Entity } from "../entity.js";
2
+ import { Entity } from "../entity/entity.js";
3
3
  import { Components } from "./components.js";
4
4
  import { ResourceComponents } from "./resource-components.js";
5
5
  import { ArchetypeComponents } from "./archetype-components.js";
@@ -23,6 +23,7 @@ export * from "./with-async-map.js";
23
23
  export * from "./with-map.js";
24
24
  export * from "./with-map-data.js";
25
25
  export * from "./with-optional.js";
26
+ export * from "./with-switch.js";
26
27
  export * from "./with-unwrap.js";
27
28
  export * from "./with-lazy.js";
28
29
  export * from "./with-batch.js";
@@ -24,6 +24,7 @@ export * from "./with-async-map.js";
24
24
  export * from "./with-map.js";
25
25
  export * from "./with-map-data.js";
26
26
  export * from "./with-optional.js";
27
+ export * from "./with-switch.js";
27
28
  export * from "./with-unwrap.js";
28
29
  export * from "./with-lazy.js";
29
30
  export * from "./with-batch.js";
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/observe/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/observe/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Observe } from "./index.js";
2
+ /**
3
+ * Dynamically switches between observables in a record based on a key observable.
4
+ * When the key changes, automatically unsubscribes from the previous observable and subscribes to the new one.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * const data = {
9
+ * home: homeData$,
10
+ * profile: profileData$,
11
+ * settings: settingsData$
12
+ * };
13
+ * const currentTab$ = createState('home');
14
+ * const currentData$ = withSwitch(data, currentTab$);
15
+ * // When currentTab$ changes, automatically switches to observing the corresponding data observable
16
+ * ```
17
+ */
18
+ export declare function withSwitch<K extends string, T extends Record<K, Observe<any>>>(record: T, key: Observe<K>): Observe<T[K] extends Observe<infer U> ? U : never>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Dynamically switches between observables in a record based on a key observable.
3
+ * When the key changes, automatically unsubscribes from the previous observable and subscribes to the new one.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const data = {
8
+ * home: homeData$,
9
+ * profile: profileData$,
10
+ * settings: settingsData$
11
+ * };
12
+ * const currentTab$ = createState('home');
13
+ * const currentData$ = withSwitch(data, currentTab$);
14
+ * // When currentTab$ changes, automatically switches to observing the corresponding data observable
15
+ * ```
16
+ */
17
+ export function withSwitch(record, key) {
18
+ return (observer) => {
19
+ let currentUnsubscribe = null;
20
+ const keyUnsubscribe = key((selectedKey) => {
21
+ // Unsubscribe from the previous observable before subscribing to the new one
22
+ currentUnsubscribe?.();
23
+ if (currentUnsubscribe) {
24
+ currentUnsubscribe();
25
+ currentUnsubscribe = null;
26
+ }
27
+ // Validate that the key exists in the record
28
+ if (!(selectedKey in record)) {
29
+ throw new Error(`Key "${selectedKey}" not found in observable record. Available keys: ${Object.keys(record).join(", ")}`);
30
+ }
31
+ // Subscribe to the newly selected observable
32
+ const selectedObservable = record[selectedKey];
33
+ currentUnsubscribe = selectedObservable(observer);
34
+ });
35
+ // Return a new unsubscribe function that unsubscribes from both the key observable and current selected observable
36
+ return () => {
37
+ keyUnsubscribe();
38
+ if (currentUnsubscribe) {
39
+ currentUnsubscribe();
40
+ currentUnsubscribe = null;
41
+ }
42
+ };
43
+ };
44
+ }
45
+ //# sourceMappingURL=with-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-switch.js","sourceRoot":"","sources":["../../src/observe/with-switch.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CACxB,MAAS,EACT,GAAe;IAEf,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,IAAI,kBAAkB,GAAqB,IAAI,CAAC;QAEhD,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YACzC,6EAA6E;YAC7E,kBAAkB,EAAE,EAAE,CAAC;YACvB,IAAI,kBAAkB,EAAE,CAAC;gBACvB,kBAAkB,EAAE,CAAC;gBACrB,kBAAkB,GAAG,IAAI,CAAC;YAC5B,CAAC;YAED,6CAA6C;YAC7C,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,QAAQ,WAAW,qDAAqD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzG,CAAC;YACJ,CAAC;YAED,6CAA6C;YAC7C,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/C,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,mHAAmH;QACnH,OAAO,GAAG,EAAE;YACV,cAAc,EAAE,CAAC;YACjB,IAAI,kBAAkB,EAAE,CAAC;gBACvB,kBAAkB,EAAE,CAAC;gBACrB,kBAAkB,GAAG,IAAI,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,142 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, test, expect, assertType } from "vitest";
3
+ import { withSwitch } from "./with-switch.js";
4
+ import { fromConstant } from "./from-constant.js";
5
+ import { createState } from "./create-state.js";
6
+ describe("withSwitch", () => {
7
+ test("should switch and observe the selected observable", () => {
8
+ const record = {
9
+ a: fromConstant(1),
10
+ b: fromConstant(2),
11
+ c: fromConstant(3),
12
+ };
13
+ const key = fromConstant("b");
14
+ const picked = withSwitch(record, key);
15
+ let result;
16
+ picked((value) => {
17
+ result = value;
18
+ })();
19
+ expect(result).toBe(2);
20
+ });
21
+ test("should switch observables when key changes", () => {
22
+ const record = {
23
+ a: fromConstant(10),
24
+ b: fromConstant(20),
25
+ c: fromConstant(30),
26
+ };
27
+ const [key, setKey] = createState("a");
28
+ const picked = withSwitch(record, key);
29
+ const values = [];
30
+ const unsubscribe = picked((value) => {
31
+ values.push(value);
32
+ });
33
+ setKey("b");
34
+ setKey("c");
35
+ unsubscribe();
36
+ expect(values).toEqual([10, 20, 30]);
37
+ });
38
+ test("should unsubscribe from previous observable when key changes", () => {
39
+ const [observableA, setA] = createState(100);
40
+ const [observableB, setB] = createState(200);
41
+ const record = { a: observableA, b: observableB };
42
+ const [key, setKey] = createState("a");
43
+ const picked = withSwitch(record, key);
44
+ const values = [];
45
+ const unsubscribe = picked((value) => {
46
+ values.push(value);
47
+ });
48
+ setA(101); // Should be observed
49
+ setKey("b"); // Switch to b
50
+ setA(102); // Should NOT be observed (unsubscribed from a)
51
+ setB(201); // Should be observed
52
+ unsubscribe();
53
+ expect(values).toEqual([100, 101, 200, 201]);
54
+ });
55
+ test("should clean up all subscriptions on unobserve", () => {
56
+ const [observableA, setA] = createState(1);
57
+ const [observableB, setB] = createState(2);
58
+ const record = { a: observableA, b: observableB };
59
+ const [key, setKey] = createState("a");
60
+ const picked = withSwitch(record, key);
61
+ const values = [];
62
+ const unsubscribe = picked((value) => {
63
+ values.push(value);
64
+ });
65
+ setA(10);
66
+ unsubscribe();
67
+ // After unsubscribe, no further notifications
68
+ setA(20);
69
+ setB(30);
70
+ setKey("b");
71
+ expect(values).toEqual([1, 10]);
72
+ });
73
+ test("should handle rapid key changes", () => {
74
+ const record = {
75
+ x: fromConstant("first"),
76
+ y: fromConstant("second"),
77
+ z: fromConstant("third"),
78
+ };
79
+ const [key, setKey] = createState("x");
80
+ const picked = withSwitch(record, key);
81
+ const values = [];
82
+ const unsubscribe = picked((value) => {
83
+ values.push(value);
84
+ });
85
+ setKey("y");
86
+ setKey("z");
87
+ setKey("x");
88
+ setKey("z");
89
+ unsubscribe();
90
+ expect(values).toEqual(["first", "second", "third", "first", "third"]);
91
+ });
92
+ test("should throw error when key is not in record", () => {
93
+ const record = {
94
+ a: fromConstant(1),
95
+ b: fromConstant(2),
96
+ };
97
+ const [key, setKey] = createState("a");
98
+ const picked = withSwitch(record, key);
99
+ const unsubscribe = picked(() => { });
100
+ expect(() => {
101
+ setKey("invalid");
102
+ }).toThrow('Key "invalid" not found in observable record');
103
+ unsubscribe();
104
+ });
105
+ test("type inference: should infer union type from subset of keys", () => {
106
+ // Compile-time type test
107
+ const record = {
108
+ a: fromConstant(true),
109
+ b: fromConstant("hello"),
110
+ c: fromConstant(42),
111
+ };
112
+ const key = fromConstant("a");
113
+ const result = withSwitch(record, key);
114
+ // Type should be Observe<boolean | string>, not Observe<boolean | string | number>
115
+ assertType(result);
116
+ });
117
+ test("type inference: should work with all keys", () => {
118
+ // Compile-time type test
119
+ const record = {
120
+ a: fromConstant(true),
121
+ b: fromConstant("hello"),
122
+ c: fromConstant(42),
123
+ };
124
+ const key = fromConstant("a");
125
+ const result = withSwitch(record, key);
126
+ // Type should be Observe<boolean | string | number>
127
+ assertType(result);
128
+ });
129
+ test("type inference: should work with single key", () => {
130
+ // Compile-time type test
131
+ const record = {
132
+ a: fromConstant(true),
133
+ b: fromConstant("hello"),
134
+ c: fromConstant(42),
135
+ };
136
+ const key = fromConstant("b");
137
+ const result = withSwitch(record, key);
138
+ // Type should be Observe<string>
139
+ assertType(result);
140
+ });
141
+ });
142
+ //# sourceMappingURL=with-switch.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-switch.test.js","sourceRoot":"","sources":["../../src/observe/with-switch.test.ts"],"names":[],"mappings":"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"}