@party-stack/foundry-ontology 0.1.1 → 0.3.0

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 (142) hide show
  1. package/lib/adapter/convertLoadSubsetOptions.d.ts +1 -0
  2. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
  3. package/lib/adapter/convertLoadSubsetOptions.js +32 -20
  4. package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
  5. package/lib/adapter/convertLoadSubsetOptions.test.d.ts +2 -0
  6. package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +1 -0
  7. package/lib/adapter/convertLoadSubsetOptions.test.js +10 -0
  8. package/lib/adapter/convertLoadSubsetOptions.test.js.map +1 -0
  9. package/lib/adapter/createFoundryOntologyAdapter.d.ts +7 -0
  10. package/lib/adapter/createFoundryOntologyAdapter.d.ts.map +1 -0
  11. package/lib/adapter/createFoundryOntologyAdapter.js +177 -0
  12. package/lib/adapter/createFoundryOntologyAdapter.js.map +1 -0
  13. package/lib/adapter/foundryCodec.d.ts +10 -4
  14. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  15. package/lib/adapter/foundryCodec.js +86 -5
  16. package/lib/adapter/foundryCodec.js.map +1 -1
  17. package/lib/adapter/foundryCodec.test.d.ts +2 -0
  18. package/lib/adapter/foundryCodec.test.d.ts.map +1 -0
  19. package/lib/adapter/foundryCodec.test.js +80 -0
  20. package/lib/adapter/foundryCodec.test.js.map +1 -0
  21. package/lib/adapter/index.d.ts +2 -1
  22. package/lib/adapter/index.d.ts.map +1 -1
  23. package/lib/adapter/index.js +2 -1
  24. package/lib/adapter/index.js.map +1 -1
  25. package/lib/adapter/objectCollectionOptions.d.ts +29 -0
  26. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -0
  27. package/lib/adapter/objectCollectionOptions.js +371 -0
  28. package/lib/adapter/objectCollectionOptions.js.map +1 -0
  29. package/lib/adapter/objectCollectionOptions.test.d.ts +2 -0
  30. package/lib/adapter/objectCollectionOptions.test.d.ts.map +1 -0
  31. package/lib/adapter/objectCollectionOptions.test.js +550 -0
  32. package/lib/adapter/objectCollectionOptions.test.js.map +1 -0
  33. package/lib/adapter/sync.d.ts +14 -0
  34. package/lib/adapter/sync.d.ts.map +1 -0
  35. package/lib/adapter/sync.js +238 -0
  36. package/lib/adapter/sync.js.map +1 -0
  37. package/lib/adapter/sync.test.d.ts +2 -0
  38. package/lib/adapter/sync.test.d.ts.map +1 -0
  39. package/lib/adapter/sync.test.js +245 -0
  40. package/lib/adapter/sync.test.js.map +1 -0
  41. package/lib/config/index.d.ts +2 -0
  42. package/lib/config/index.d.ts.map +1 -1
  43. package/lib/config/index.js +3 -3
  44. package/lib/config/index.js.map +1 -1
  45. package/lib/index.d.ts +1 -1
  46. package/lib/index.d.ts.map +1 -1
  47. package/lib/index.js +1 -1
  48. package/lib/index.js.map +1 -1
  49. package/lib/meta/actionTypeCollectionOptions.d.ts +9 -0
  50. package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -0
  51. package/lib/meta/actionTypeCollectionOptions.js +55 -0
  52. package/lib/meta/actionTypeCollectionOptions.js.map +1 -0
  53. package/lib/meta/convertMetaActionType.d.ts +8 -0
  54. package/lib/meta/convertMetaActionType.d.ts.map +1 -0
  55. package/lib/meta/convertMetaActionType.js +368 -0
  56. package/lib/meta/convertMetaActionType.js.map +1 -0
  57. package/lib/meta/convertMetaLinkType.d.ts +4 -0
  58. package/lib/meta/convertMetaLinkType.d.ts.map +1 -0
  59. package/lib/meta/convertMetaLinkType.js +50 -0
  60. package/lib/meta/convertMetaLinkType.js.map +1 -0
  61. package/lib/meta/convertMetaObjectType.d.ts +4 -0
  62. package/lib/meta/convertMetaObjectType.d.ts.map +1 -0
  63. package/lib/meta/convertMetaObjectType.js +27 -0
  64. package/lib/meta/convertMetaObjectType.js.map +1 -0
  65. package/lib/meta/convertMetaTypeDef.d.ts +6 -0
  66. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -0
  67. package/lib/meta/convertMetaTypeDef.js +177 -0
  68. package/lib/meta/convertMetaTypeDef.js.map +1 -0
  69. package/lib/meta/convertMetaValueType.d.ts +4 -0
  70. package/lib/meta/convertMetaValueType.d.ts.map +1 -0
  71. package/lib/meta/convertMetaValueType.js +10 -0
  72. package/lib/meta/convertMetaValueType.js.map +1 -0
  73. package/lib/meta/createFoundryMetaOntologyAdapter.d.ts +7 -0
  74. package/lib/meta/createFoundryMetaOntologyAdapter.d.ts.map +1 -0
  75. package/lib/meta/createFoundryMetaOntologyAdapter.js +30 -0
  76. package/lib/meta/createFoundryMetaOntologyAdapter.js.map +1 -0
  77. package/lib/meta/entityCollectionOptions.d.ts +22 -0
  78. package/lib/meta/entityCollectionOptions.d.ts.map +1 -0
  79. package/lib/meta/entityCollectionOptions.js +77 -0
  80. package/lib/meta/entityCollectionOptions.js.map +1 -0
  81. package/lib/meta/index.d.ts +4 -1
  82. package/lib/meta/index.d.ts.map +1 -1
  83. package/lib/meta/index.js +4 -1
  84. package/lib/meta/index.js.map +1 -1
  85. package/lib/users/index.d.ts +1 -1
  86. package/lib/users/index.d.ts.map +1 -1
  87. package/lib/users/index.js +1 -1
  88. package/lib/users/index.js.map +1 -1
  89. package/lib/users/userCollectionOptions.d.ts +10 -0
  90. package/lib/users/userCollectionOptions.d.ts.map +1 -0
  91. package/lib/users/{createUserCollection.js → userCollectionOptions.js} +5 -7
  92. package/lib/users/userCollectionOptions.js.map +1 -0
  93. package/lib/utils/AsyncIterable.d.ts +1 -1
  94. package/lib/utils/AsyncIterable.js +2 -2
  95. package/lib/utils/actionTypeName.d.ts +3 -0
  96. package/lib/utils/actionTypeName.d.ts.map +1 -0
  97. package/lib/utils/actionTypeName.js +8 -0
  98. package/lib/utils/actionTypeName.js.map +1 -0
  99. package/lib/utils/actionTypeName.test.d.ts +2 -0
  100. package/lib/utils/actionTypeName.test.d.ts.map +1 -0
  101. package/lib/utils/actionTypeName.test.js +13 -0
  102. package/lib/utils/actionTypeName.test.js.map +1 -0
  103. package/package.json +13 -13
  104. package/lib/adapter/createAction.d.ts +0 -9
  105. package/lib/adapter/createAction.d.ts.map +0 -1
  106. package/lib/adapter/createAction.js +0 -42
  107. package/lib/adapter/createAction.js.map +0 -1
  108. package/lib/adapter/createObjectCollection.d.ts +0 -23
  109. package/lib/adapter/createObjectCollection.d.ts.map +0 -1
  110. package/lib/adapter/createObjectCollection.js +0 -117
  111. package/lib/adapter/createObjectCollection.js.map +0 -1
  112. package/lib/adapter/sync/ObjectSetSubscription.d.ts +0 -35
  113. package/lib/adapter/sync/ObjectSetSubscription.d.ts.map +0 -1
  114. package/lib/adapter/sync/ObjectSetSubscription.js +0 -2
  115. package/lib/adapter/sync/ObjectSetSubscription.js.map +0 -1
  116. package/lib/adapter/sync/ObjectSetWatcherManager.d.ts +0 -11
  117. package/lib/adapter/sync/ObjectSetWatcherManager.d.ts.map +0 -1
  118. package/lib/adapter/sync/ObjectSetWatcherManager.js +0 -86
  119. package/lib/adapter/sync/ObjectSetWatcherManager.js.map +0 -1
  120. package/lib/adapter/sync/effection-utils/useValueSignal.d.ts +0 -4
  121. package/lib/adapter/sync/effection-utils/useValueSignal.d.ts.map +0 -1
  122. package/lib/adapter/sync/effection-utils/useValueSignal.js +0 -31
  123. package/lib/adapter/sync/effection-utils/useValueSignal.js.map +0 -1
  124. package/lib/adapter/sync/useObjectSetWatcherConnection.d.ts +0 -10
  125. package/lib/adapter/sync/useObjectSetWatcherConnection.d.ts.map +0 -1
  126. package/lib/adapter/sync/useObjectSetWatcherConnection.js +0 -184
  127. package/lib/adapter/sync/useObjectSetWatcherConnection.js.map +0 -1
  128. package/lib/adapter/sync/useObjectSetWatcherSession.d.ts +0 -9
  129. package/lib/adapter/sync/useObjectSetWatcherSession.d.ts.map +0 -1
  130. package/lib/adapter/sync/useObjectSetWatcherSession.js +0 -69
  131. package/lib/adapter/sync/useObjectSetWatcherSession.js.map +0 -1
  132. package/lib/meta/createOntologyMetadataCollections.d.ts +0 -7
  133. package/lib/meta/createOntologyMetadataCollections.d.ts.map +0 -1
  134. package/lib/meta/createOntologyMetadataCollections.js +0 -304
  135. package/lib/meta/createOntologyMetadataCollections.js.map +0 -1
  136. package/lib/users/createUserCollection.d.ts +0 -7
  137. package/lib/users/createUserCollection.d.ts.map +0 -1
  138. package/lib/users/createUserCollection.js.map +0 -1
  139. package/lib/utils/client.d.ts +0 -11
  140. package/lib/utils/client.d.ts.map +0 -1
  141. package/lib/utils/client.js +0 -22
  142. package/lib/utils/client.js.map +0 -1
@@ -0,0 +1,550 @@
1
+ import { o } from "@party-stack/ontology";
2
+ import { beforeEach, describe, expect, it, vi } from "vitest";
3
+ const mockState = vi.hoisted(() => ({
4
+ getEditsHistory: vi.fn(),
5
+ getObject: vi.fn(),
6
+ subscribeCallback: undefined,
7
+ }));
8
+ vi.mock("@osdk/foundry.ontologies", () => ({
9
+ OntologyObjectsV2: {
10
+ get: mockState.getObject,
11
+ search: vi.fn(),
12
+ },
13
+ ObjectTypesV2: {
14
+ getEditsHistory: mockState.getEditsHistory,
15
+ },
16
+ }));
17
+ vi.mock("@party-stack/foundry-object-set-watcher", () => ({
18
+ getObjectSetWatcherManager: () => ({
19
+ subscribe: (_objectSet, callback) => {
20
+ mockState.subscribeCallback = callback;
21
+ return () => {
22
+ mockState.subscribeCallback = undefined;
23
+ };
24
+ },
25
+ }),
26
+ }));
27
+ import { createFoundryCodec } from "./foundryCodec.js";
28
+ import { objectCollectionOptions } from "./objectCollectionOptions.js";
29
+ function createSyncHarness(initialObjects = [], opts = {}) {
30
+ const syncedData = new Map(initialObjects.map((object) => [object.employeeId, object]));
31
+ const writes = [];
32
+ const { sync: syncConfig, utils } = objectCollectionOptions({
33
+ client: {
34
+ baseUrl: "https://example.com",
35
+ fetch: vi.fn(),
36
+ ontologyRid: "ri.ontology.main",
37
+ tokenProvider: () => Promise.resolve("token"),
38
+ },
39
+ objectType: "Employee",
40
+ primaryKeyProperty: "employeeId",
41
+ decodeObject: opts.decodeObject,
42
+ });
43
+ const handle = syncConfig.sync({
44
+ begin: vi.fn(),
45
+ collection: {
46
+ *keys() {
47
+ yield* syncedData.keys();
48
+ },
49
+ syncedData,
50
+ },
51
+ commit: vi.fn(),
52
+ markReady: vi.fn(),
53
+ truncate: vi.fn(),
54
+ write: (mutation) => {
55
+ const key = mutation.type === "delete"
56
+ ? mutation.key
57
+ : mutation.value
58
+ .employeeId;
59
+ writes.push({ type: mutation.type, primaryKey: key });
60
+ if (mutation.type === "delete") {
61
+ syncedData.delete(key);
62
+ }
63
+ else {
64
+ const value = mutation.value;
65
+ syncedData.set(key, value);
66
+ }
67
+ },
68
+ });
69
+ return {
70
+ cleanup: handle.cleanup,
71
+ syncedData,
72
+ utils,
73
+ writes,
74
+ };
75
+ }
76
+ describe("objectCollectionOptions", () => {
77
+ beforeEach(() => {
78
+ mockState.getEditsHistory.mockReset();
79
+ mockState.getObject.mockReset();
80
+ mockState.subscribeCallback = undefined;
81
+ });
82
+ it("reconciles modify edits from history on watcher open", async () => {
83
+ mockState.getEditsHistory.mockResolvedValue({
84
+ data: [
85
+ {
86
+ objectPrimaryKey: { employeeId: 1 },
87
+ operationId: "op-1",
88
+ actionTypeRid: "action-1",
89
+ userId: "user-1",
90
+ timestamp: "2099-03-12T12:00:00.000Z",
91
+ edit: {
92
+ type: "modifyEdit",
93
+ previousProperties: {},
94
+ properties: {
95
+ employeeId: 1,
96
+ name: "Updated Employee",
97
+ },
98
+ },
99
+ },
100
+ ],
101
+ nextPageToken: undefined,
102
+ });
103
+ const harness = createSyncHarness();
104
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
105
+ await vi.waitFor(() => {
106
+ expect(mockState.getEditsHistory).toHaveBeenCalledTimes(1);
107
+ expect(harness.syncedData.get(1)).toEqual({
108
+ employeeId: 1,
109
+ name: "Updated Employee",
110
+ });
111
+ });
112
+ expect(mockState.getObject).not.toHaveBeenCalled();
113
+ harness.cleanup();
114
+ });
115
+ it("applies delete edits from history", async () => {
116
+ mockState.getEditsHistory.mockResolvedValue({
117
+ data: [
118
+ {
119
+ objectPrimaryKey: { employeeId: 2 },
120
+ operationId: "op-2",
121
+ actionTypeRid: "action-1",
122
+ userId: "user-1",
123
+ timestamp: "2099-03-12T12:01:00.000Z",
124
+ edit: {
125
+ type: "deleteEdit",
126
+ previousProperties: {},
127
+ },
128
+ },
129
+ ],
130
+ nextPageToken: undefined,
131
+ });
132
+ const harness = createSyncHarness([{ employeeId: 2, name: "Should Stay" }]);
133
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
134
+ await vi.waitFor(() => {
135
+ expect(mockState.getEditsHistory).toHaveBeenCalledTimes(1);
136
+ expect(harness.syncedData.has(2)).toBe(false);
137
+ });
138
+ expect(mockState.getObject).not.toHaveBeenCalled();
139
+ harness.cleanup();
140
+ });
141
+ it("treats watcher REMOVED events as a history catch-up signal", async () => {
142
+ mockState.getEditsHistory.mockResolvedValue({
143
+ data: [
144
+ {
145
+ objectPrimaryKey: { employeeId: 5 },
146
+ operationId: "op-5",
147
+ actionTypeRid: "action-1",
148
+ userId: "user-1",
149
+ timestamp: "2099-03-12T12:00:00.000Z",
150
+ edit: {
151
+ type: "createEdit",
152
+ properties: {
153
+ employeeId: 5,
154
+ name: "Employee Five",
155
+ },
156
+ },
157
+ },
158
+ ],
159
+ nextPageToken: undefined,
160
+ });
161
+ mockState.getEditsHistory.mockResolvedValueOnce({
162
+ data: [
163
+ {
164
+ objectPrimaryKey: { employeeId: 5 },
165
+ operationId: "op-5",
166
+ actionTypeRid: "action-1",
167
+ userId: "user-1",
168
+ timestamp: "2099-03-12T12:00:00.000Z",
169
+ edit: {
170
+ type: "createEdit",
171
+ properties: {
172
+ employeeId: 5,
173
+ name: "Employee Five",
174
+ },
175
+ },
176
+ },
177
+ ],
178
+ nextPageToken: undefined,
179
+ });
180
+ mockState.getEditsHistory.mockResolvedValueOnce({
181
+ data: [
182
+ {
183
+ objectPrimaryKey: { employeeId: 5 },
184
+ operationId: "op-6",
185
+ actionTypeRid: "action-1",
186
+ userId: "user-1",
187
+ timestamp: "2099-03-12T12:01:00.000Z",
188
+ edit: {
189
+ type: "deleteEdit",
190
+ previousProperties: {},
191
+ },
192
+ },
193
+ ],
194
+ nextPageToken: undefined,
195
+ });
196
+ const harness = createSyncHarness();
197
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
198
+ await vi.waitFor(() => {
199
+ expect(harness.syncedData.has(5)).toBe(true);
200
+ });
201
+ mockState.subscribeCallback?.({
202
+ type: "change",
203
+ updates: [
204
+ {
205
+ type: "object",
206
+ state: "REMOVED",
207
+ object: { employeeId: 5 },
208
+ },
209
+ ],
210
+ });
211
+ await vi.waitFor(() => {
212
+ expect(mockState.getEditsHistory).toHaveBeenCalledTimes(2);
213
+ expect(harness.syncedData.has(5)).toBe(false);
214
+ expect(harness.writes).toContainEqual({ type: "delete", primaryKey: 5 });
215
+ });
216
+ harness.cleanup();
217
+ });
218
+ it("dedupes inclusive timestamp results across catch-up runs", async () => {
219
+ mockState.getEditsHistory
220
+ .mockResolvedValueOnce({
221
+ data: [
222
+ {
223
+ objectPrimaryKey: { employeeId: 1 },
224
+ operationId: "op-1",
225
+ actionTypeRid: "action-1",
226
+ userId: "user-1",
227
+ timestamp: "2099-03-12T12:00:00.000Z",
228
+ edit: {
229
+ type: "modifyEdit",
230
+ previousProperties: {},
231
+ properties: {
232
+ employeeId: 1,
233
+ name: "Employee One",
234
+ },
235
+ },
236
+ },
237
+ ],
238
+ nextPageToken: undefined,
239
+ })
240
+ .mockResolvedValueOnce({
241
+ data: [
242
+ {
243
+ objectPrimaryKey: { employeeId: 1 },
244
+ operationId: "op-1",
245
+ actionTypeRid: "action-1",
246
+ userId: "user-1",
247
+ timestamp: "2099-03-12T12:00:00.000Z",
248
+ edit: {
249
+ type: "modifyEdit",
250
+ previousProperties: {},
251
+ properties: {
252
+ employeeId: 1,
253
+ name: "Employee One",
254
+ },
255
+ },
256
+ },
257
+ {
258
+ objectPrimaryKey: { employeeId: 2 },
259
+ operationId: "op-2",
260
+ actionTypeRid: "action-1",
261
+ userId: "user-1",
262
+ timestamp: "2099-03-12T12:00:00.000Z",
263
+ edit: {
264
+ type: "modifyEdit",
265
+ previousProperties: {},
266
+ properties: {
267
+ employeeId: 2,
268
+ name: "Employee Two",
269
+ },
270
+ },
271
+ },
272
+ ],
273
+ nextPageToken: undefined,
274
+ });
275
+ const harness = createSyncHarness();
276
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
277
+ mockState.subscribeCallback?.({
278
+ type: "change",
279
+ updates: [
280
+ {
281
+ type: "object",
282
+ state: "ADDED_OR_UPDATED",
283
+ object: { employeeId: 2, name: "Employee Two" },
284
+ },
285
+ ],
286
+ });
287
+ await vi.waitFor(() => {
288
+ expect(mockState.getEditsHistory).toHaveBeenCalledTimes(2);
289
+ expect(harness.syncedData.get(1)).toEqual({
290
+ employeeId: 1,
291
+ name: "Employee One",
292
+ });
293
+ expect(harness.syncedData.get(2)).toEqual({
294
+ employeeId: 2,
295
+ name: "Employee Two",
296
+ });
297
+ });
298
+ expect(mockState.getObject).not.toHaveBeenCalled();
299
+ harness.cleanup();
300
+ });
301
+ it("decodes create edits with null property sentinels from edit history", async () => {
302
+ mockState.getEditsHistory.mockResolvedValue({
303
+ data: [
304
+ {
305
+ objectPrimaryKey: { employeeId: 3 },
306
+ operationId: "op-1",
307
+ actionTypeRid: "action-1",
308
+ userId: "user-1",
309
+ timestamp: "2099-03-12T12:00:00.000Z",
310
+ edit: {
311
+ type: "createEdit",
312
+ properties: {
313
+ employeeId: 3,
314
+ nickname: "NullPropertyValue{}",
315
+ name: "Employee Three",
316
+ createdAt: "2099-03-12T12:00:00.000Z",
317
+ },
318
+ },
319
+ },
320
+ ],
321
+ nextPageToken: undefined,
322
+ });
323
+ const harness = createSyncHarness();
324
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
325
+ await vi.waitFor(() => {
326
+ expect(harness.syncedData.get(3)).toEqual({
327
+ employeeId: 3,
328
+ name: "Employee Three",
329
+ nickname: undefined,
330
+ createdAt: "2099-03-12T12:00:00.000Z",
331
+ });
332
+ });
333
+ expect(mockState.getObject).not.toHaveBeenCalled();
334
+ harness.cleanup();
335
+ });
336
+ it("decodes attachment property wrappers from edit history", async () => {
337
+ mockState.getEditsHistory.mockResolvedValue({
338
+ data: [
339
+ {
340
+ objectPrimaryKey: { employeeId: 7 },
341
+ operationId: "op-7",
342
+ actionTypeRid: "action-1",
343
+ userId: "user-1",
344
+ timestamp: "2099-03-12T12:00:00.000Z",
345
+ edit: {
346
+ type: "createEdit",
347
+ properties: {
348
+ employeeId: 7,
349
+ attachments: [
350
+ {
351
+ type: "attachment",
352
+ attachment: "ri.attachments.main.attachment.7",
353
+ },
354
+ ],
355
+ name: "Employee Seven",
356
+ },
357
+ },
358
+ },
359
+ ],
360
+ nextPageToken: undefined,
361
+ });
362
+ const codec = createFoundryCodec({
363
+ types: [],
364
+ objectTypes: [
365
+ {
366
+ name: "Employee",
367
+ displayName: "Employee",
368
+ pluralDisplayName: "Employees",
369
+ primaryKey: "employeeId",
370
+ properties: [
371
+ { name: "employeeId", displayName: "Employee ID", type: o.integer({}) },
372
+ { name: "name", displayName: "Name", type: o.string({}) },
373
+ {
374
+ name: "attachments",
375
+ displayName: "Attachments",
376
+ type: o.list({
377
+ elementType: o.attachment({ meta: { type: "attachment" } }),
378
+ }),
379
+ },
380
+ ],
381
+ },
382
+ ],
383
+ linkTypes: [],
384
+ actionTypes: [],
385
+ });
386
+ const harness = createSyncHarness([], {
387
+ decodeObject: (object) => codec.decodeObject("Employee", object),
388
+ });
389
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
390
+ await vi.waitFor(() => {
391
+ expect(harness.syncedData.get(7)).toEqual({
392
+ employeeId: 7,
393
+ name: "Employee Seven",
394
+ attachments: [{ id: "ri.attachments.main.attachment.7" }],
395
+ });
396
+ });
397
+ harness.cleanup();
398
+ });
399
+ it("decodes GeoPointPropertyValue strings from edit history", async () => {
400
+ mockState.getEditsHistory.mockResolvedValue({
401
+ data: [
402
+ {
403
+ objectPrimaryKey: { employeeId: 5 },
404
+ operationId: "op-1",
405
+ actionTypeRid: "action-1",
406
+ userId: "user-1",
407
+ timestamp: "2099-03-12T12:00:00.000Z",
408
+ edit: {
409
+ type: "createEdit",
410
+ properties: {
411
+ employeeId: 5,
412
+ name: "Employee Five",
413
+ location: "GeoPointPropertyValue{latitude: 40.375786, longitude: -74.11144}",
414
+ },
415
+ },
416
+ },
417
+ ],
418
+ nextPageToken: undefined,
419
+ });
420
+ const harness = createSyncHarness();
421
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
422
+ await vi.waitFor(() => {
423
+ expect(harness.syncedData.get(5)).toEqual({
424
+ employeeId: 5,
425
+ name: "Employee Five",
426
+ location: { lat: 40.375786, lon: -74.11144 },
427
+ });
428
+ });
429
+ expect(mockState.getObject).not.toHaveBeenCalled();
430
+ harness.cleanup();
431
+ });
432
+ it("unwraps tagged primary key values from edit history", async () => {
433
+ mockState.getEditsHistory.mockResolvedValue({
434
+ data: [
435
+ {
436
+ objectPrimaryKey: {
437
+ employeeId: {
438
+ type: "stringValue",
439
+ value: "employee-4",
440
+ },
441
+ },
442
+ operationId: "op-1",
443
+ actionTypeRid: "action-1",
444
+ userId: "user-1",
445
+ timestamp: "2099-03-12T12:00:00.000Z",
446
+ edit: {
447
+ type: "createEdit",
448
+ properties: {
449
+ employeeId: {
450
+ type: "stringValue",
451
+ value: "employee-4",
452
+ },
453
+ name: "Employee Four",
454
+ },
455
+ },
456
+ },
457
+ ],
458
+ nextPageToken: undefined,
459
+ });
460
+ const harness = createSyncHarness();
461
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
462
+ await vi.waitFor(() => {
463
+ expect(harness.syncedData.get("employee-4")).toEqual({
464
+ employeeId: "employee-4",
465
+ name: "Employee Four",
466
+ });
467
+ });
468
+ expect(mockState.getObject).not.toHaveBeenCalled();
469
+ harness.cleanup();
470
+ });
471
+ it("triggers history catch-up on ADDED_OR_UPDATED watcher events", async () => {
472
+ mockState.getEditsHistory
473
+ .mockResolvedValueOnce({
474
+ data: [],
475
+ nextPageToken: undefined,
476
+ })
477
+ .mockResolvedValueOnce({
478
+ data: [
479
+ {
480
+ objectPrimaryKey: { employeeId: 10 },
481
+ operationId: "op-10",
482
+ actionTypeRid: "action-1",
483
+ userId: "user-1",
484
+ timestamp: "2099-03-12T12:05:00.000Z",
485
+ edit: {
486
+ type: "createEdit",
487
+ properties: {
488
+ employeeId: 10,
489
+ name: "New Employee",
490
+ },
491
+ },
492
+ },
493
+ ],
494
+ nextPageToken: undefined,
495
+ });
496
+ const harness = createSyncHarness();
497
+ mockState.subscribeCallback?.({ type: "state", status: "open" });
498
+ await vi.waitFor(() => {
499
+ expect(mockState.getEditsHistory).toHaveBeenCalledTimes(1);
500
+ });
501
+ mockState.subscribeCallback?.({
502
+ type: "change",
503
+ updates: [
504
+ {
505
+ type: "object",
506
+ state: "ADDED_OR_UPDATED",
507
+ object: { employeeId: 10, name: "New Employee" },
508
+ },
509
+ ],
510
+ });
511
+ await vi.waitFor(() => {
512
+ expect(mockState.getEditsHistory).toHaveBeenCalledTimes(2);
513
+ expect(harness.syncedData.get(10)).toEqual({
514
+ employeeId: 10,
515
+ name: "New Employee",
516
+ });
517
+ });
518
+ harness.cleanup();
519
+ });
520
+ it("awaitOperationId resolves after the matching edit is observed", async () => {
521
+ mockState.getEditsHistory.mockResolvedValue({
522
+ data: [
523
+ {
524
+ objectPrimaryKey: { employeeId: 11 },
525
+ operationId: "op-11",
526
+ actionTypeRid: "action-1",
527
+ userId: "user-1",
528
+ timestamp: "2099-03-12T12:06:00.000Z",
529
+ edit: {
530
+ type: "createEdit",
531
+ properties: {
532
+ employeeId: 11,
533
+ name: "Operation Eleven",
534
+ },
535
+ },
536
+ },
537
+ ],
538
+ nextPageToken: undefined,
539
+ });
540
+ const harness = createSyncHarness();
541
+ await expect(harness.utils.awaitOperationId("op-11")).resolves.toBe(true);
542
+ expect(mockState.getEditsHistory).toHaveBeenCalledTimes(1);
543
+ expect(harness.syncedData.get(11)).toEqual({
544
+ employeeId: 11,
545
+ name: "Operation Eleven",
546
+ });
547
+ harness.cleanup();
548
+ });
549
+ });
550
+ //# sourceMappingURL=objectCollectionOptions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectCollectionOptions.test.js","sourceRoot":"","sources":["../../src/adapter/objectCollectionOptions.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { OntologyClient } from "@party-stack/foundry-client";
2
+ import type { SyncConfig } from "@tanstack/db";
3
+ import type { Channel } from "effection";
4
+ type FoundryObject = Record<string, unknown>;
5
+ interface CreateSyncConfigOpts {
6
+ client: OntologyClient;
7
+ objectType: string;
8
+ operationIds: Channel<string, void>;
9
+ primaryKeyProperty: string;
10
+ decodeObject?: (object: FoundryObject) => FoundryObject;
11
+ }
12
+ export declare function createSyncConfig(opts: CreateSyncConfigOpts): SyncConfig<Record<string, unknown>, string | number>;
13
+ export {};
14
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/adapter/sync.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAI7C,UAAU,oBAAoB;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAa,CAAC;CAC3D;AAoGD,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,oBAAoB,GAC3B,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAyLtD"}