@adobe/data 0.9.53 → 0.9.55

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 (147) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/blob-store.browser.test.d.ts +1 -0
  3. package/dist/cache/blob-store.browser.test.js +122 -0
  4. package/dist/cache/blob-store.browser.test.js.map +1 -0
  5. package/dist/cache/data-cache.browser.test.d.ts +1 -0
  6. package/dist/cache/data-cache.browser.test.js +41 -0
  7. package/dist/cache/data-cache.browser.test.js.map +1 -0
  8. package/dist/cache/data-cache.js +26 -6
  9. package/dist/cache/data-cache.js.map +1 -1
  10. package/dist/cache/data-cache.test.js +12 -1
  11. package/dist/cache/data-cache.test.js.map +1 -1
  12. package/dist/cache/expiring-data-cache.browser.test.d.ts +1 -0
  13. package/dist/cache/expiring-data-cache.browser.test.js +42 -0
  14. package/dist/cache/expiring-data-cache.browser.test.js.map +1 -0
  15. package/dist/cache/functions/functions.browser.test.d.ts +1 -0
  16. package/dist/cache/functions/functions.browser.test.js +72 -0
  17. package/dist/cache/functions/functions.browser.test.js.map +1 -0
  18. package/dist/cache/managed-array.js +72 -68
  19. package/dist/cache/managed-array.js.map +1 -1
  20. package/dist/ecs/archetype/create-archetype.js +131 -7
  21. package/dist/ecs/archetype/create-archetype.js.map +1 -1
  22. package/dist/ecs/database/public/create-database-scheduler.browser.test.d.ts +1 -0
  23. package/dist/ecs/database/public/create-database-scheduler.browser.test.js +67 -0
  24. package/dist/ecs/database/public/create-database-scheduler.browser.test.js.map +1 -0
  25. package/dist/ecs/database/transactional-store/coalesce-actions.js +15 -41
  26. package/dist/ecs/database/transactional-store/coalesce-actions.js.map +1 -1
  27. package/dist/ecs/database/transactional-store/coalesce-actions.test.js +30 -1
  28. package/dist/ecs/database/transactional-store/coalesce-actions.test.js.map +1 -1
  29. package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.d.ts +1 -0
  30. package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.js +52 -0
  31. package/dist/ecs/persistence-service/create-storage-persistence-service.browser.test.js.map +1 -0
  32. package/dist/functions/serialization/serialize-to-storage.browser.test.d.ts +1 -0
  33. package/dist/functions/serialization/serialize-to-storage.browser.test.js +161 -0
  34. package/dist/functions/serialization/serialize-to-storage.browser.test.js.map +1 -0
  35. package/dist/math/aabb/face/all.d.ts +2 -0
  36. package/dist/math/aabb/face/all.js +10 -0
  37. package/dist/math/aabb/face/all.js.map +1 -0
  38. package/dist/math/aabb/face/face.d.ts +4 -0
  39. package/dist/math/aabb/face/face.js +3 -0
  40. package/dist/math/aabb/face/face.js.map +1 -0
  41. package/dist/math/aabb/face/from-position.d.ts +9 -0
  42. package/dist/math/aabb/face/from-position.js +32 -0
  43. package/dist/math/aabb/face/from-position.js.map +1 -0
  44. package/dist/math/aabb/face/from-position.test.d.ts +1 -0
  45. package/dist/math/aabb/face/from-position.test.js +21 -0
  46. package/dist/math/aabb/face/from-position.test.js.map +1 -0
  47. package/dist/math/aabb/face/get-adjacent.d.ts +3 -0
  48. package/dist/math/aabb/face/get-adjacent.js +24 -0
  49. package/dist/math/aabb/face/get-adjacent.js.map +1 -0
  50. package/dist/math/aabb/face/get-adjacent.test.d.ts +1 -0
  51. package/dist/math/aabb/face/get-adjacent.test.js +27 -0
  52. package/dist/math/aabb/face/get-adjacent.test.js.map +1 -0
  53. package/dist/math/aabb/face/get-faces.d.ts +3 -0
  54. package/dist/math/aabb/face/get-faces.js +11 -0
  55. package/dist/math/aabb/face/get-faces.js.map +1 -0
  56. package/dist/math/aabb/face/get-faces.test.d.ts +1 -0
  57. package/dist/math/aabb/face/get-faces.test.js +16 -0
  58. package/dist/math/aabb/face/get-faces.test.js.map +1 -0
  59. package/dist/math/aabb/face/get-name.d.ts +3 -0
  60. package/dist/math/aabb/face/get-name.js +7 -0
  61. package/dist/math/aabb/face/get-name.js.map +1 -0
  62. package/dist/math/aabb/face/get-name.test.d.ts +1 -0
  63. package/dist/math/aabb/face/get-name.test.js +13 -0
  64. package/dist/math/aabb/face/get-name.test.js.map +1 -0
  65. package/dist/math/aabb/face/get-normal.d.ts +4 -0
  66. package/dist/math/aabb/face/get-normal.js +11 -0
  67. package/dist/math/aabb/face/get-normal.js.map +1 -0
  68. package/dist/math/aabb/face/get-normal.test.d.ts +1 -0
  69. package/dist/math/aabb/face/get-normal.test.js +13 -0
  70. package/dist/math/aabb/face/get-normal.test.js.map +1 -0
  71. package/dist/math/aabb/face/get-opposite.d.ts +3 -0
  72. package/dist/math/aabb/face/get-opposite.js +27 -0
  73. package/dist/math/aabb/face/get-opposite.js.map +1 -0
  74. package/dist/math/aabb/face/get-opposite.test.d.ts +1 -0
  75. package/dist/math/aabb/face/get-opposite.test.js +20 -0
  76. package/dist/math/aabb/face/get-opposite.test.js.map +1 -0
  77. package/dist/math/aabb/face/internals.d.ts +6 -0
  78. package/dist/math/aabb/face/internals.js +34 -0
  79. package/dist/math/aabb/face/internals.js.map +1 -0
  80. package/dist/math/aabb/face/is-adjacent.d.ts +3 -0
  81. package/dist/math/aabb/face/is-adjacent.js +7 -0
  82. package/dist/math/aabb/face/is-adjacent.js.map +1 -0
  83. package/dist/math/aabb/face/is-adjacent.test.d.ts +1 -0
  84. package/dist/math/aabb/face/is-adjacent.test.js +15 -0
  85. package/dist/math/aabb/face/is-adjacent.test.js.map +1 -0
  86. package/dist/math/aabb/face/is-opposite.d.ts +3 -0
  87. package/dist/math/aabb/face/is-opposite.js +7 -0
  88. package/dist/math/aabb/face/is-opposite.js.map +1 -0
  89. package/dist/math/aabb/face/is-opposite.test.d.ts +1 -0
  90. package/dist/math/aabb/face/is-opposite.test.js +15 -0
  91. package/dist/math/aabb/face/is-opposite.test.js.map +1 -0
  92. package/dist/math/aabb/face/neg-x.d.ts +2 -0
  93. package/dist/math/aabb/face/neg-x.js +4 -0
  94. package/dist/math/aabb/face/neg-x.js.map +1 -0
  95. package/dist/math/aabb/face/neg-y.d.ts +2 -0
  96. package/dist/math/aabb/face/neg-y.js +4 -0
  97. package/dist/math/aabb/face/neg-y.js.map +1 -0
  98. package/dist/math/aabb/face/neg-z.d.ts +2 -0
  99. package/dist/math/aabb/face/neg-z.js +4 -0
  100. package/dist/math/aabb/face/neg-z.js.map +1 -0
  101. package/dist/math/aabb/face/none.d.ts +2 -0
  102. package/dist/math/aabb/face/none.js +4 -0
  103. package/dist/math/aabb/face/none.js.map +1 -0
  104. package/dist/math/aabb/face/pos-x.d.ts +2 -0
  105. package/dist/math/aabb/face/pos-x.js +4 -0
  106. package/dist/math/aabb/face/pos-x.js.map +1 -0
  107. package/dist/math/aabb/face/pos-y.d.ts +2 -0
  108. package/dist/math/aabb/face/pos-y.js +4 -0
  109. package/dist/math/aabb/face/pos-y.js.map +1 -0
  110. package/dist/math/aabb/face/pos-z.d.ts +2 -0
  111. package/dist/math/aabb/face/pos-z.js +4 -0
  112. package/dist/math/aabb/face/pos-z.js.map +1 -0
  113. package/dist/math/aabb/face/public.d.ts +16 -1
  114. package/dist/math/aabb/face/public.js +16 -1
  115. package/dist/math/aabb/face/public.js.map +1 -1
  116. package/dist/math/aabb/public.d.ts +1 -1
  117. package/dist/math/aabb/public.js +1 -1
  118. package/dist/math/aabb/public.js.map +1 -1
  119. package/dist/perftest/ecs1-perf.d.ts +54 -0
  120. package/dist/perftest/ecs1-perf.js +214 -0
  121. package/dist/perftest/ecs1-perf.js.map +1 -0
  122. package/dist/perftest/ecs2-perf.d.ts +5 -0
  123. package/dist/perftest/ecs2-perf.js +162 -0
  124. package/dist/perftest/ecs2-perf.js.map +1 -0
  125. package/dist/perftest/index.js +8 -3
  126. package/dist/perftest/index.js.map +1 -1
  127. package/dist/perftest/perf-test.d.ts +7 -0
  128. package/dist/perftest/perf-test.js +69 -7
  129. package/dist/perftest/perf-test.js.map +1 -1
  130. package/dist/perftest/typed-buffer-perf.d.ts +8 -0
  131. package/dist/perftest/typed-buffer-perf.js +133 -0
  132. package/dist/perftest/typed-buffer-perf.js.map +1 -0
  133. package/dist/service/agentic-service/action.d.ts +8 -4
  134. package/dist/service/agentic-service/create.d.ts +5 -1
  135. package/dist/service/agentic-service/create.js +1 -1
  136. package/dist/service/agentic-service/create.js.map +1 -1
  137. package/dist/service/agentic-service/create.test.js +1 -1
  138. package/dist/service/agentic-service/create.test.js.map +1 -1
  139. package/dist/service/agentic-service/create.type-test.js +23 -0
  140. package/dist/service/agentic-service/create.type-test.js.map +1 -1
  141. package/dist/tsconfig.tsbuildinfo +1 -1
  142. package/package.json +2 -2
  143. package/references/data-lit/package.json +1 -1
  144. package/references/data-lit-tictactoe/package.json +1 -1
  145. package/references/data-react/package.json +1 -1
  146. package/references/data-react-hello/package.json +1 -1
  147. package/references/data-react-pixie/package.json +1 -1
package/README.md CHANGED
@@ -76,7 +76,7 @@ An `Observable<T>` is a subscription function that you can pass a callback funct
76
76
 
77
77
  Your callback function *may* be called back synchronously (before the initial call returns) zero or one times and asynchronously later any number of times.
78
78
 
79
- For more information see the [Observable API documentation](https://adobe.github.io/data/)
79
+ For more information see the [Observable API documentation](https://adobe.github.io/data/api/modules/observe.html)
80
80
 
81
81
  ### Observable Types
82
82
 
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,122 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
3
+ import { createBlobStore } from "./blob-store.js";
4
+ describe("blobStore", () => {
5
+ // Mock URL.createObjectURL and URL.revokeObjectURL
6
+ const mockCreateObjectURL = vi.fn((blob) => `blob:${Math.random()}`);
7
+ const mockRevokeObjectURL = vi.fn();
8
+ let testBlobStore;
9
+ let createdUrl;
10
+ beforeEach(async () => {
11
+ // Setup URL mock functions
12
+ const originalCreateObjectURL = URL.createObjectURL;
13
+ const originalRevokeObjectURL = URL.revokeObjectURL;
14
+ // Ensure we create a non-http URL
15
+ mockCreateObjectURL.mockImplementation((blob) => {
16
+ createdUrl = `blob:${Math.random()}`;
17
+ return createdUrl;
18
+ });
19
+ URL.createObjectURL = mockCreateObjectURL;
20
+ URL.revokeObjectURL = mockRevokeObjectURL;
21
+ // Clear mock call history
22
+ mockCreateObjectURL.mockClear();
23
+ mockRevokeObjectURL.mockClear();
24
+ testBlobStore = await createBlobStore();
25
+ return () => {
26
+ URL.createObjectURL = originalCreateObjectURL;
27
+ URL.revokeObjectURL = originalRevokeObjectURL;
28
+ };
29
+ });
30
+ afterEach(() => {
31
+ // Clean up any remaining borrowed URLs
32
+ mockCreateObjectURL.mockReset();
33
+ mockRevokeObjectURL.mockReset();
34
+ });
35
+ describe("URL reference counting", () => {
36
+ it("should reuse the same URL for multiple borrows of the same blob", async () => {
37
+ // Create a test blob
38
+ const testBlob = new Blob(["test"], { type: "text/plain" });
39
+ const blobRef = await testBlobStore.getRef(testBlob);
40
+ // Borrow the URL multiple times
41
+ const url1 = await testBlobStore.borrowUrl(blobRef);
42
+ const url2 = await testBlobStore.borrowUrl(blobRef);
43
+ const url3 = await testBlobStore.borrowUrl(blobRef);
44
+ expect(url1).toBeTruthy();
45
+ expect(url1).toBe(url2);
46
+ expect(url2).toBe(url3);
47
+ expect(url1).toMatch(/^blob:/); // Verify it's a blob URL
48
+ // createObjectURL should only be called once
49
+ expect(mockCreateObjectURL).toHaveBeenCalledTimes(1);
50
+ // Clean up
51
+ testBlobStore.returnUrl(url1);
52
+ testBlobStore.returnUrl(url2);
53
+ testBlobStore.returnUrl(url3);
54
+ });
55
+ it("should only revoke URL when all references are returned", async () => {
56
+ const testBlob = new Blob(["test"], { type: "text/plain" });
57
+ const blobRef = await testBlobStore.getRef(testBlob);
58
+ // Borrow the URL three times
59
+ const url1 = await testBlobStore.borrowUrl(blobRef);
60
+ const url2 = await testBlobStore.borrowUrl(blobRef);
61
+ const url3 = await testBlobStore.borrowUrl(blobRef);
62
+ expect(url1).toMatch(/^blob:/); // Verify it's a blob URL
63
+ // Return URLs one by one
64
+ testBlobStore.returnUrl(url1);
65
+ expect(mockRevokeObjectURL).not.toHaveBeenCalled();
66
+ testBlobStore.returnUrl(url2);
67
+ expect(mockRevokeObjectURL).not.toHaveBeenCalled();
68
+ testBlobStore.returnUrl(url3);
69
+ expect(mockRevokeObjectURL).toHaveBeenCalledTimes(1);
70
+ expect(mockRevokeObjectURL).toHaveBeenCalledWith(createdUrl);
71
+ });
72
+ it("should handle remote URLs correctly", async () => {
73
+ const remoteRef = testBlobStore.createRemoteBlobRef("http://example.com/image.jpg");
74
+ // Borrow remote URL multiple times
75
+ const url1 = await testBlobStore.borrowUrl(remoteRef);
76
+ const url2 = await testBlobStore.borrowUrl(remoteRef);
77
+ expect(url1).toBe("http://example.com/image.jpg");
78
+ expect(url2).toBe("http://example.com/image.jpg");
79
+ expect(mockCreateObjectURL).not.toHaveBeenCalled();
80
+ // Return URLs
81
+ testBlobStore.returnUrl(url1);
82
+ testBlobStore.returnUrl(url2);
83
+ // Should not revoke remote URLs
84
+ expect(mockRevokeObjectURL).not.toHaveBeenCalled();
85
+ });
86
+ it("should handle null inputs gracefully", async () => {
87
+ const nullUrl = await testBlobStore.borrowUrl(null);
88
+ expect(nullUrl).toBeNull();
89
+ // Should not throw when returning null
90
+ expect(() => testBlobStore.returnUrl(null)).not.toThrow();
91
+ });
92
+ it('demonstrates race condition in borrowUrl', async () => {
93
+ const store = testBlobStore;
94
+ const testBlob = new Blob(['test data'], { type: 'text/plain' });
95
+ const blobRef = await store.getRef(testBlob);
96
+ // Create an artificially delayed getBlob to simulate network latency
97
+ const originalGetBlob = store.getBlob;
98
+ store.getBlob = async (ref) => {
99
+ await new Promise(resolve => setTimeout(resolve, 50)); // Add delay
100
+ return originalGetBlob(ref);
101
+ };
102
+ // Make two parallel borrowUrl calls
103
+ const [url1, url2] = await Promise.all([
104
+ store.borrowUrl(blobRef),
105
+ store.borrowUrl(blobRef)
106
+ ]);
107
+ expect(url1).toBe(url2); // Same URL should be returned
108
+ // Return one of the URLs
109
+ store.returnUrl(url1);
110
+ // Verify that the borrow count is still 1 since we borrowed twice and returned once
111
+ expect(store._testGetBorrowCount(blobRef)).toBe(1);
112
+ // Return the second URL
113
+ store.returnUrl(url2);
114
+ // Verify the borrow count is now 0
115
+ expect(store._testGetBorrowCount(blobRef)).toBe(0);
116
+ // Verify the URL was revoked
117
+ expect(mockRevokeObjectURL).toHaveBeenCalledTimes(1);
118
+ expect(mockRevokeObjectURL).toHaveBeenCalledWith(url1);
119
+ });
120
+ });
121
+ });
122
+ //# sourceMappingURL=blob-store.browser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-store.browser.test.js","sourceRoot":"","sources":["../../src/cache/blob-store.browser.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { dataCache, getDataCache } from "./data-cache.js";
3
+ import { beforeAll, describe, expect, it } from "vitest";
4
+ describe("DataCache", () => {
5
+ beforeAll(() => { });
6
+ it("dataCache is not a top-level await", () => {
7
+ expect(typeof dataCache.then === "undefined");
8
+ });
9
+ it("dataCache is lazily initialized and supports put/match/delete directly", async () => {
10
+ const key = { test: "lazy-init", n: Date.now() };
11
+ const value = { hello: "world" };
12
+ await dataCache.put(key, value);
13
+ expect(await dataCache.match(key)).toEqual(value);
14
+ await dataCache.delete(key);
15
+ expect(await dataCache.match(key)).toBeUndefined();
16
+ });
17
+ it("should allow storing and retrieving values in namespaced/versioned caches", async () => {
18
+ // get a namespaced cache
19
+ const cache = await getDataCache("test:v1");
20
+ // create some keys and values to store
21
+ const key = { foo: 1, bar: [{ baz: 12 }] };
22
+ const valueIn = { alpha: "bet", bar: ["a", "b"] };
23
+ // store a key/value pair
24
+ await cache.put(key, valueIn);
25
+ // retrieve the value
26
+ const valueOut = await cache.match(key);
27
+ // output is NOT identical
28
+ expect(valueOut !== valueIn).toBe(true);
29
+ // output IS structurally equal
30
+ expect(valueOut).toEqual(valueIn);
31
+ // output from structurally equivalent key is the same
32
+ expect(await cache.match(JSON.parse(JSON.stringify(key)))).toEqual(valueIn);
33
+ // output from equivalent cache (constructed with same name/version) is the same.
34
+ expect(await (await getDataCache("test:v1")).match(key)).toEqual(valueIn);
35
+ // output from different named cache is undefined
36
+ expect(await (await getDataCache("test2:v1")).match(key)).toEqual(undefined);
37
+ // output from different cache version is undefined
38
+ expect(await (await getDataCache("test:v2")).match(key)).toEqual(undefined);
39
+ });
40
+ });
41
+ //# sourceMappingURL=data-cache.browser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-cache.browser.test.js","sourceRoot":"","sources":["../../src/cache/data-cache.browser.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpB,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,OAAQ,SAAiB,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAEjC,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,0BAA0B;QAC1B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAE5C,wCAAwC;QACxC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAElD,0BAA0B;QAC1B,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9B,sBAAsB;QACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,2BAA2B;QAC3B,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,gCAAgC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElC,uDAAuD;QACvD,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5E,kFAAkF;QAClF,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1E,kDAAkD;QAClD,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAC/D,SAAS,CACV,CAAC;QAEF,oDAAoD;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -60,12 +60,32 @@ export function createBlobRefAwareDataCache(baseCache = dataCache, blobstore = b
60
60
  },
61
61
  };
62
62
  }
63
- const managedPersistentCache = await getManagedPersistentCache("datacache", {
64
- maximumMemoryEntries: 100,
65
- maximumStorageEntries: 1000,
66
- });
67
- const blobRefAwareDataCache = await createBlobRefAwareDataCache(createDataCache(managedPersistentCache));
68
- export const dataCache = createExpiringDataCache(blobRefAwareDataCache);
63
+ // Lazy-init the global cache to avoid a top-level await. Rolldown / Vite 8
64
+ // can deadlock when modules with TLA are reachable through a barrel cycle
65
+ // in downstream bundles, so we defer the async work to first use.
66
+ function createGlobalDataCache() {
67
+ let cachePromise;
68
+ const init = () => (cachePromise ??= (async () => {
69
+ const managedPersistentCache = await getManagedPersistentCache("datacache", {
70
+ maximumMemoryEntries: 100,
71
+ maximumStorageEntries: 1000,
72
+ });
73
+ const blobRefAwareDataCache = await createBlobRefAwareDataCache(createDataCache(managedPersistentCache));
74
+ return createExpiringDataCache(blobRefAwareDataCache);
75
+ })());
76
+ return {
77
+ async match(key) {
78
+ return (await init()).match(key);
79
+ },
80
+ async put(key, value, options) {
81
+ return (await init()).put(key, value, options);
82
+ },
83
+ async delete(key) {
84
+ return (await init()).delete(key);
85
+ },
86
+ };
87
+ }
88
+ export const dataCache = createGlobalDataCache();
69
89
  /**
70
90
  * Retrieves a namespaced data cache. Calling it multiple times will return an equivalent cache.
71
91
  * Values stored within a data cache generally persist across sessions.
@@ -1 +1 @@
1
- {"version":3,"file":"data-cache.js","sourceRoot":"","sources":["../../src/cache/data-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-cache.js","sourceRoot":"","sources":["../../src/cache/data-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAGtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AA8BnE;;GAEG;AACH,SAAS,mBAAmB,CAC1B,CAAO,EACP,OAAuB,EAAE;IAEzB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAO;IACjC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,IAAU;IAC3B,OAAO,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,KAAK,UAAU,gCAAgC,CAC7C,SAAoB,EACpB,IAAU;IAEV,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,gFAAgF;QAChF,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpC,2EAA2E;YAC3E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAoC;IAEpC,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,CAAI;YACd,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAI,EAAE,CAAI;YAClB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACzE,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,CAAI;YACf,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAIzC,YAAqC,SAAoC,EACzE,SAAS,GAAG,SAAS;IAErB,OAAO;QACL,GAAG,SAAS;QACZ,KAAK,CAAC,KAAK,CAAC,CAAI;YACd,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxC,IACE,MAAM,KAAK,SAAS;gBACpB,CAAC,CAAC,MAAM,gCAAgC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAC5D,CAAC;gBACD,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC1B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,0EAA0E;AAC1E,kEAAkE;AAClE,SAAS,qBAAqB;IAC5B,IAAI,YAAwD,CAAC;IAC7D,MAAM,IAAI,GAAG,GAAmC,EAAE,CAChD,CAAC,YAAY,KAAK,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,sBAAsB,GAAG,MAAM,yBAAyB,CAAC,WAAW,EAAE;YAC1E,oBAAoB,EAAE,GAAG;YACzB,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QACH,MAAM,qBAAqB,GAAG,MAAM,2BAA2B,CAC7D,eAAe,CAAC,sBAAsB,CAAC,CACxC,CAAC;QACF,OAAO,uBAAuB,CAAC,qBAAqB,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,CAAC,CAAC;IAER,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,GAAG;YACb,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO;YAC3B,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,GAAG;YACd,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAA0B,qBAAqB,EAAE,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAiB;IAEjB,OAAO,8BAA8B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,8BAA8B,CACrC,IAAY,EACZ,SAAS,GAAG,SAAS;IAErB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,GAAM,EAAE,EAAE;QAC1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,GAAM;YAChB,OAAO,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAkB,CAAC;QACjE,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAM,EAAE,KAAQ,EAAE,OAAO;YACjC,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,GAAM;YACjB,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,8 +1,19 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
- import { getDataCache } from "./data-cache.js";
2
+ import { dataCache, getDataCache } from "./data-cache.js";
3
3
  import { beforeAll, describe, expect, it } from "vitest";
4
4
  describe("DataCache", () => {
5
5
  beforeAll(() => { });
6
+ it("dataCache is not a top-level await", () => {
7
+ expect(typeof dataCache.then === "undefined");
8
+ });
9
+ it("dataCache is lazily initialized and supports put/match/delete directly", async () => {
10
+ const key = { test: "lazy-init", n: Date.now() };
11
+ const value = { hello: "world" };
12
+ await dataCache.put(key, value);
13
+ expect(await dataCache.match(key)).toEqual(value);
14
+ await dataCache.delete(key);
15
+ expect(await dataCache.match(key)).toBeUndefined();
16
+ });
6
17
  it("should allow storing and retrieving values in namespaced/versioned caches", async () => {
7
18
  // get a namespaced cache
8
19
  const cache = await getDataCache("test:v1");
@@ -1 +1 @@
1
- {"version":3,"file":"data-cache.test.js","sourceRoot":"","sources":["../../src/cache/data-cache.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpB,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,0BAA0B;QAC1B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAE5C,wCAAwC;QACxC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAElD,0BAA0B;QAC1B,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9B,sBAAsB;QACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,2BAA2B;QAC3B,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,gCAAgC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElC,uDAAuD;QACvD,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5E,kFAAkF;QAClF,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1E,kDAAkD;QAClD,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAC/D,SAAS,CACV,CAAC;QAEF,oDAAoD;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"data-cache.test.js","sourceRoot":"","sources":["../../src/cache/data-cache.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpB,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,OAAQ,SAAiB,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAEjC,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,0BAA0B;QAC1B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAE5C,wCAAwC;QACxC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAElD,0BAA0B;QAC1B,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9B,sBAAsB;QACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,2BAA2B;QAC3B,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,gCAAgC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElC,uDAAuD;QACvD,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5E,kFAAkF;QAClF,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1E,kDAAkD;QAClD,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAC/D,SAAS,CACV,CAAC;QAEF,oDAAoD;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { createExpiringDataCache } from "./expiring-data-cache.js"; // Adjust the import path as necessary
3
+ import { describe, expect, it } from "vitest";
4
+ import { createDataCache } from "./data-cache.js";
5
+ import { getManagedPersistentCache } from "./get-persistent-cache.js";
6
+ describe("ExpiringDataCache", () => {
7
+ it("should store and retrieve an item before it expires", async () => {
8
+ const time = Date.now();
9
+ let timePassed = 0;
10
+ const getTime = () => time + timePassed;
11
+ const cache = createExpiringDataCache(createDataCache(await getManagedPersistentCache("expiring-data-cache-test", {
12
+ maximumMemoryEntries: 10,
13
+ maximumStorageEntries: 100,
14
+ })), getTime);
15
+ cache.put("key1", "value1", { maximumDuration: 1000 }); // Expires in 1000ms
16
+ expect(await cache.match("key1")).toBe("value1");
17
+ timePassed = 500;
18
+ expect(await cache.match("key1")).toBe("value1");
19
+ timePassed = 999;
20
+ expect(await cache.match("key1")).toBe("value1");
21
+ timePassed = 1000;
22
+ expect(await cache.match("key1")).toBeUndefined();
23
+ timePassed = 1001;
24
+ expect(await cache.match("key1")).toBeUndefined();
25
+ timePassed = 2000;
26
+ expect(await cache.match("key1")).toBeUndefined();
27
+ });
28
+ it("should immediately expire items when maximumDuration is 0", async () => {
29
+ const time = Date.now();
30
+ let timePassed = 0;
31
+ const getTime = () => time + timePassed;
32
+ const cache = createExpiringDataCache(createDataCache(await getManagedPersistentCache("expiring-data-cache-test", {
33
+ maximumMemoryEntries: 10,
34
+ maximumStorageEntries: 100,
35
+ })), getTime);
36
+ cache.put("key1", "value1", { maximumDuration: 0 }); // Expires immediately
37
+ expect(await cache.match("key1")).toBeUndefined();
38
+ timePassed = 1000;
39
+ expect(await cache.match("key1")).toBeUndefined();
40
+ });
41
+ });
42
+ //# sourceMappingURL=expiring-data-cache.browser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expiring-data-cache.browser.test.js","sourceRoot":"","sources":["../../src/cache/expiring-data-cache.browser.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC,CAAC,sCAAsC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC;QACxC,MAAM,KAAK,GAAG,uBAAuB,CACnC,eAAe,CACb,MAAM,yBAAyB,CAAC,0BAA0B,EAAE;YAC1D,oBAAoB,EAAE,EAAE;YACxB,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CACH,EACD,OAAO,CACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,oBAAoB;QAC5E,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjD,UAAU,GAAG,GAAG,CAAC;QACjB,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjD,UAAU,GAAG,GAAG,CAAC;QACjB,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjD,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAElD,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAElD,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC;QACxC,MAAM,KAAK,GAAG,uBAAuB,CACnC,eAAe,CACb,MAAM,yBAAyB,CAAC,0BAA0B,EAAE;YAC1D,oBAAoB,EAAE,EAAE;YACxB,qBAAqB,EAAE,GAAG;SAC3B,CAAC,CACH,EACD,OAAO,CACR,CAAC;QAEF,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB;QAC3E,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAElD,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,72 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { memoize } from "./memoize.js";
3
+ import { preventParallelExecution } from "./prevent-parallel-execution.js";
4
+ import { describe, expect, it } from "vitest";
5
+ describe("Function", () => {
6
+ describe("prevent parallel execution", () => {
7
+ it("should block parallel execution and return same promise", async () => {
8
+ let addCallCount = 0;
9
+ async function add(a, b) {
10
+ addCallCount++;
11
+ return new Promise((resolve) => {
12
+ setTimeout(() => {
13
+ resolve(a + b);
14
+ }, 100);
15
+ });
16
+ }
17
+ async function testAddBlocksParallelExecution(addFn) {
18
+ addCallCount = 0;
19
+ const promises = [addFn(1, 2), addFn(1, 2), addFn(1, 2)];
20
+ const results = await Promise.all(promises);
21
+ expect(results).toEqual([3, 3, 3]);
22
+ }
23
+ const addFn = preventParallelExecution(add);
24
+ await testAddBlocksParallelExecution(addFn);
25
+ // after all have completed... then another can execute
26
+ addCallCount = 0;
27
+ expect(await addFn(1, 2)).toEqual(3);
28
+ expect(addCallCount).toEqual(1);
29
+ });
30
+ });
31
+ describe("memoize", () => {
32
+ it("should block parallel execution and return same promise", async () => {
33
+ let addCallCount = 0;
34
+ async function add(a, b) {
35
+ addCallCount++;
36
+ return new Promise((resolve) => {
37
+ setTimeout(() => {
38
+ resolve(a + b);
39
+ }, 100);
40
+ });
41
+ }
42
+ async function testAddBlocksParallelExecution(addFn) {
43
+ addCallCount = 0;
44
+ const promises = [addFn(1, 2), addFn(1, 2), addFn(1, 2)];
45
+ const results = await Promise.all(promises);
46
+ expect(results).toEqual([3, 3, 3]);
47
+ }
48
+ // now memoize the addFn and verify that it is cached.
49
+ const addFn = memoize("addFn-v1", add);
50
+ await testAddBlocksParallelExecution(addFn);
51
+ // after all have completed... then another can execute
52
+ addCallCount = 0;
53
+ expect(await addFn(1, 2)).toEqual(3);
54
+ // with memoize, the count should be 0 because we get a cached result.
55
+ expect(addCallCount).toEqual(0);
56
+ });
57
+ it("should reuse cached result for repeated object references", () => {
58
+ let callCount = 0;
59
+ const multiply = memoize(({ value }) => {
60
+ callCount++;
61
+ return value * 2;
62
+ });
63
+ const input = { value: 2 };
64
+ expect(multiply(input)).toEqual(4);
65
+ expect(multiply(input)).toEqual(4);
66
+ expect(callCount).toEqual(1);
67
+ expect(multiply({ value: 2 })).toEqual(4);
68
+ expect(callCount).toEqual(2);
69
+ });
70
+ });
71
+ });
72
+ //# sourceMappingURL=functions.browser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.browser.test.js","sourceRoot":"","sources":["../../../src/cache/functions/functions.browser.test.ts"],"names":[],"mappings":"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"}
@@ -53,79 +53,83 @@ function binaryDecode(data, length, ctor) {
53
53
  }
54
54
  return new ctor(byteArray.buffer, byteArray.byteOffset, length);
55
55
  }
56
- function createManagedTypedArray(ctor, allocator) {
57
- let capacity = 16;
58
- let array = allocator.allocate(ctor, capacity);
59
- // when the main wasm memory is resized, we need to refresh the array.
60
- allocator.needsRefresh(() => {
61
- array = allocator.refresh(array);
62
- });
63
- const grow = (newCapacity) => {
64
- if (newCapacity && newCapacity > capacity) {
65
- array = allocator.refresh(array);
66
- const oldArray = array;
56
+ // Methods live on the prototype so every numeric column shares one hidden
57
+ // class. This lets V8 monomorphize the IC at hot get/set call sites in tight
58
+ // per-row loops (~20× speedup over the previous closure-per-instance shape).
59
+ class ManagedTypedArrayColumn {
60
+ constructor(ctor, allocator) {
61
+ this.constant = false;
62
+ this.ctor = ctor;
63
+ this.allocator = allocator;
64
+ this.capacity = 16;
65
+ this.array = allocator.allocate(ctor, this.capacity);
66
+ // when the main wasm memory is resized, we need to refresh the array.
67
+ allocator.needsRefresh(() => {
68
+ this.array = allocator.refresh(this.array);
69
+ });
70
+ }
71
+ get native() {
72
+ return this.array;
73
+ }
74
+ get(index) {
75
+ return this.array[index];
76
+ }
77
+ set(index, value) {
78
+ this.array[index] = value;
79
+ }
80
+ move(from, to) {
81
+ this.array[to] = this.array[from];
82
+ }
83
+ slice(start, end) {
84
+ return [...this.array.subarray(start, end)];
85
+ }
86
+ ensureCapacity(newCapacity) {
87
+ this.grow(newCapacity);
88
+ }
89
+ grow(newCapacity) {
90
+ if (newCapacity && newCapacity > this.capacity) {
91
+ this.array = this.allocator.refresh(this.array);
92
+ const oldArray = this.array;
67
93
  const growthFactor = 2;
68
- capacity = Math.max(newCapacity, capacity * growthFactor);
69
- const newArray = allocator.allocate(ctor, capacity);
70
- newArray.set(array);
71
- array = newArray;
72
- allocator.release(oldArray);
94
+ this.capacity = Math.max(newCapacity, this.capacity * growthFactor);
95
+ const newArray = this.allocator.allocate(this.ctor, this.capacity);
96
+ newArray.set(this.array);
97
+ this.array = newArray;
98
+ this.allocator.release(oldArray);
73
99
  }
74
- };
75
- const result = {
76
- constant: false,
77
- get native() {
78
- return array;
79
- },
80
- get(index) {
81
- return array[index];
82
- },
83
- set(index, value) {
84
- // if (index >= capacity) {
85
- // grow();
86
- // }
87
- array[index] = value;
88
- },
89
- move(from, to) {
90
- array[to] = array[from];
91
- },
92
- slice(start, end) {
93
- return [...array.subarray(start, end)];
94
- },
95
- ensureCapacity(newCapacity) {
96
- grow(newCapacity);
97
- },
98
- toJSON(length, allowEncoding = true) {
99
- const subarray = array.subarray(0, length);
100
- if (!allowEncoding) {
101
- return Array.from(subarray);
100
+ }
101
+ toJSON(length, allowEncoding = true) {
102
+ const subarray = this.array.subarray(0, length);
103
+ if (!allowEncoding) {
104
+ return Array.from(subarray);
105
+ }
106
+ const jsonString = JSON.stringify(Array.from(subarray));
107
+ const binaryString = binaryEncode(subarray);
108
+ return binaryString.length < jsonString.length
109
+ ? binaryString
110
+ : Array.from(subarray);
111
+ }
112
+ fromJSON(data, length) {
113
+ if (typeof data === "string") {
114
+ const decodedArray = binaryDecode(data, length, this.ctor);
115
+ if (decodedArray.length > this.capacity) {
116
+ this.grow(decodedArray.length);
102
117
  }
103
- const jsonString = JSON.stringify(Array.from(subarray));
104
- const binaryString = binaryEncode(subarray);
105
- return binaryString.length < jsonString.length
106
- ? binaryString
107
- : Array.from(subarray);
108
- },
109
- fromJSON(data, length) {
110
- if (typeof data === "string") {
111
- const decodedArray = binaryDecode(data, length, ctor);
112
- if (decodedArray.length > capacity) {
113
- grow(decodedArray.length);
114
- }
115
- array.set(decodedArray);
118
+ this.array.set(decodedArray);
119
+ }
120
+ else {
121
+ if (!Array.isArray(data)) {
122
+ throw new Error(`Cannot set array to ${data}`);
116
123
  }
117
- else {
118
- if (!Array.isArray(data)) {
119
- throw new Error(`Cannot set array to ${data}`);
120
- }
121
- if (data.length > capacity) {
122
- grow(data.length);
123
- }
124
- array.set(data);
124
+ if (data.length > this.capacity) {
125
+ this.grow(data.length);
125
126
  }
126
- },
127
- };
128
- return result;
127
+ this.array.set(data);
128
+ }
129
+ }
130
+ }
131
+ function createManagedTypedArray(ctor, allocator) {
132
+ return new ManagedTypedArrayColumn(ctor, allocator);
129
133
  }
130
134
  export function createManagedArray(s, allocator) {
131
135
  if (s.const !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"managed-array.js","sourceRoot":"","sources":["../../src/cache/managed-array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-array.js","sourceRoot":"","sources":["../../src/cache/managed-array.ts"],"names":[],"mappings":"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"}