@party-stack/foundry-ontology 0.3.2 → 0.4.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 (86) hide show
  1. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
  2. package/lib/adapter/convertLoadSubsetOptions.js +21 -6
  3. package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
  4. package/lib/adapter/convertLoadSubsetOptions.test.js +11 -1
  5. package/lib/adapter/convertLoadSubsetOptions.test.js.map +1 -1
  6. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +14 -0
  7. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +1 -0
  8. package/lib/adapter/createFoundryOntologyBackendAdapter.js +251 -0
  9. package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +1 -0
  10. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts +2 -0
  11. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts.map +1 -0
  12. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js +175 -0
  13. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js.map +1 -0
  14. package/lib/adapter/foundryCodec.d.ts +5 -1
  15. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  16. package/lib/adapter/foundryCodec.js +24 -3
  17. package/lib/adapter/foundryCodec.js.map +1 -1
  18. package/lib/adapter/foundryCodec.test.js +23 -15
  19. package/lib/adapter/foundryCodec.test.js.map +1 -1
  20. package/lib/adapter/foundryMediaId.d.ts +11 -0
  21. package/lib/adapter/foundryMediaId.d.ts.map +1 -0
  22. package/lib/adapter/foundryMediaId.js +39 -0
  23. package/lib/adapter/foundryMediaId.js.map +1 -0
  24. package/lib/adapter/foundryMediaId.test.d.ts +2 -0
  25. package/lib/adapter/foundryMediaId.test.d.ts.map +1 -0
  26. package/lib/adapter/foundryMediaId.test.js +23 -0
  27. package/lib/adapter/foundryMediaId.test.js.map +1 -0
  28. package/lib/adapter/index.d.ts +1 -1
  29. package/lib/adapter/index.d.ts.map +1 -1
  30. package/lib/adapter/index.js +1 -1
  31. package/lib/adapter/index.js.map +1 -1
  32. package/lib/adapter/objectCollectionOptions.d.ts +1 -0
  33. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
  34. package/lib/adapter/objectCollectionOptions.js +179 -56
  35. package/lib/adapter/objectCollectionOptions.js.map +1 -1
  36. package/lib/adapter/objectCollectionOptions.test.js +394 -6
  37. package/lib/adapter/objectCollectionOptions.test.js.map +1 -1
  38. package/lib/config/index.js +2 -2
  39. package/lib/config/index.js.map +1 -1
  40. package/lib/index.d.ts +1 -0
  41. package/lib/index.d.ts.map +1 -1
  42. package/lib/index.js +1 -0
  43. package/lib/index.js.map +1 -1
  44. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  45. package/lib/meta/convertMetaActionType.js +9 -4
  46. package/lib/meta/convertMetaActionType.js.map +1 -1
  47. package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -0
  48. package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -0
  49. package/lib/meta/convertMetaQueryFunctionType.js +109 -0
  50. package/lib/meta/convertMetaQueryFunctionType.js.map +1 -0
  51. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +7 -0
  52. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +1 -0
  53. package/lib/meta/{createFoundryMetaOntologyAdapter.js → createFoundryMetaOntologyBackendAdapter.js} +8 -2
  54. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +1 -0
  55. package/lib/meta/index.d.ts +1 -1
  56. package/lib/meta/index.d.ts.map +1 -1
  57. package/lib/meta/index.js +1 -1
  58. package/lib/meta/index.js.map +1 -1
  59. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +9 -0
  60. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -0
  61. package/lib/meta/queryFunctionTypeCollectionOptions.js +60 -0
  62. package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -0
  63. package/lib/stagedWrites.d.ts +40 -0
  64. package/lib/stagedWrites.d.ts.map +1 -0
  65. package/lib/stagedWrites.js +74 -0
  66. package/lib/stagedWrites.js.map +1 -0
  67. package/lib/stagedWrites.test.d.ts +2 -0
  68. package/lib/stagedWrites.test.d.ts.map +1 -0
  69. package/lib/stagedWrites.test.js +71 -0
  70. package/lib/stagedWrites.test.js.map +1 -0
  71. package/package.json +9 -8
  72. package/lib/adapter/createFoundryOntologyAdapter.d.ts +0 -7
  73. package/lib/adapter/createFoundryOntologyAdapter.d.ts.map +0 -1
  74. package/lib/adapter/createFoundryOntologyAdapter.js +0 -177
  75. package/lib/adapter/createFoundryOntologyAdapter.js.map +0 -1
  76. package/lib/adapter/sync.d.ts +0 -14
  77. package/lib/adapter/sync.d.ts.map +0 -1
  78. package/lib/adapter/sync.js +0 -238
  79. package/lib/adapter/sync.js.map +0 -1
  80. package/lib/adapter/sync.test.d.ts +0 -2
  81. package/lib/adapter/sync.test.d.ts.map +0 -1
  82. package/lib/adapter/sync.test.js +0 -245
  83. package/lib/adapter/sync.test.js.map +0 -1
  84. package/lib/meta/createFoundryMetaOntologyAdapter.d.ts +0 -7
  85. package/lib/meta/createFoundryMetaOntologyAdapter.d.ts.map +0 -1
  86. package/lib/meta/createFoundryMetaOntologyAdapter.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@party-stack/foundry-ontology",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -28,6 +28,7 @@
28
28
  "@bobbyfidz/panic": "^0.1.0",
29
29
  "@bobbyfidz/urls": "^0.2.1",
30
30
  "@osdk/foundry.admin": "^2.59.0",
31
+ "@osdk/foundry.core": "^2.59.0",
31
32
  "@osdk/foundry.mediasets": "^2.59.0",
32
33
  "@osdk/foundry.ontologies": "^2.59.0",
33
34
  "@tanstack/store": "^0.11.0",
@@ -37,13 +38,13 @@
37
38
  "zod": "^4.1.13",
38
39
  "@bobbyfidz/osdk-utils": "0.2.1",
39
40
  "@party-stack/foundry-client": "0.2.0",
40
- "@party-stack/ontology": "0.3.0",
41
- "@party-stack/foundry-object-set-watcher": "0.3.0"
41
+ "@party-stack/foundry-object-set-watcher": "0.3.0",
42
+ "@party-stack/ontology": "0.4.0"
42
43
  },
43
44
  "devDependencies": {
44
45
  "@bobbyfidz/react-build-config": "^0.1.1",
45
- "@tanstack/db": "^0.6.5",
46
- "@tanstack/query-db-collection": "^1.0.36",
46
+ "@tanstack/db": "^0.6.14",
47
+ "@tanstack/query-db-collection": "^1.0.47",
47
48
  "@types/node": "^24.10.1",
48
49
  "@types/react": "^19.2.6",
49
50
  "eslint": "^9.25.0",
@@ -54,9 +55,9 @@
54
55
  "vitest": "^3.1.1"
55
56
  },
56
57
  "peerDependencies": {
57
- "@tanstack/db": "^0.6.5",
58
- "@tanstack/query-core": "^5.0.0",
59
- "@tanstack/query-db-collection": "^1.0.36",
58
+ "@tanstack/db": "^0.6.14",
59
+ "@tanstack/query-core": "^5.101.2",
60
+ "@tanstack/query-db-collection": "^1.0.47",
60
61
  "react": "^18.0.0 || ^19.0.0"
61
62
  },
62
63
  "scripts": {
@@ -1,7 +0,0 @@
1
- import { type OntologyAdapter, type OntologyIR } from "@party-stack/ontology";
2
- import type { OntologyClient } from "@party-stack/foundry-client";
3
- export declare function createFoundryOntologyAdapter(opts: {
4
- client: OntologyClient;
5
- ir: OntologyIR;
6
- }): OntologyAdapter;
7
- //# sourceMappingURL=createFoundryOntologyAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createFoundryOntologyAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/createFoundryOntologyAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,eAAe,EAEpB,KAAK,UAAU,EAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAiFlE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;CAClB,GAAG,eAAe,CAwIlB"}
@@ -1,177 +0,0 @@
1
- import { invariant } from "@bobbyfidz/panic";
2
- import { Actions, Attachments, } from "@osdk/foundry.ontologies";
3
- import { NonRetriableError } from "@tanstack/db";
4
- import { Temporal } from "temporal-polyfill";
5
- import { getFoundryActionOverrideParameterMapping } from "../meta/convertMetaActionType.js";
6
- import { toFoundryActionTypeName } from "../utils/actionTypeName.js";
7
- import { createFoundryCodec } from "./foundryCodec.js";
8
- import { objectCollectionOptions } from "./objectCollectionOptions.js";
9
- function serializeOverrideValue(value) {
10
- if (typeof value === "string") {
11
- return value;
12
- }
13
- if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
14
- return String(value);
15
- }
16
- if (value instanceof Date) {
17
- return value.toISOString();
18
- }
19
- if (value instanceof Temporal.Instant) {
20
- return value.toString();
21
- }
22
- if (value instanceof Temporal.PlainDate || value instanceof Temporal.PlainDateTime) {
23
- return value.toString();
24
- }
25
- return JSON.stringify(value) ?? "";
26
- }
27
- function getApplyActionOperationId(result) {
28
- const operationId = result.operationId;
29
- if (typeof operationId !== "string" || operationId.length === 0) {
30
- throw new Error("Foundry apply action response did not include an operationId.");
31
- }
32
- return operationId;
33
- }
34
- function getAttachmentName(attachment) {
35
- if (typeof attachment !== "object" || attachment === null || Array.isArray(attachment)) {
36
- return undefined;
37
- }
38
- const name = attachment.name;
39
- return typeof name === "string" ? name : undefined;
40
- }
41
- function getAttachmentProviderType(target) {
42
- return target?.meta?.type === "media" ? "media" : "attachment";
43
- }
44
- function getAttachmentProviderTypeFromId(id) {
45
- return id.startsWith("ri.mio.") ? "media" : "attachment";
46
- }
47
- function unsupportedMediaAttachmentOperation() {
48
- throw new Error("Foundry media attachment operations are not supported yet because Foundry does not currently expose enough MediaSet metadata to resolve media items by attachment id.");
49
- }
50
- function getEditedObjectTypes(edits) {
51
- const objectTypes = new Set();
52
- if (!edits || edits.type !== "edits") {
53
- return objectTypes;
54
- }
55
- for (const edit of edits.edits) {
56
- if (edit.type === "addObject" || edit.type === "modifyObject" || edit.type === "deleteObject") {
57
- objectTypes.add(edit.objectType);
58
- }
59
- }
60
- return objectTypes;
61
- }
62
- export function createFoundryOntologyAdapter(opts) {
63
- const codec = createFoundryCodec(opts.ir);
64
- const attachments = {
65
- generateAttachmentId: (_, { target }) => {
66
- invariant(target, "A property target must be passed to generateAttachmentId in the Foundry adapter so that we know whether to target attachments or media.");
67
- const meta = target.meta;
68
- if (meta.type === "attachment") {
69
- return `ri.attachments.main.attachment.${crypto.randomUUID()}`;
70
- }
71
- unsupportedMediaAttachmentOperation();
72
- },
73
- materializeAttachment: async (attachment, blob, { target }) => {
74
- invariant(target, "A property target must be passed to materializeAttachment in the Foundry adapter so that we know whether to target attachments or media.");
75
- const attachmentName = getAttachmentName(attachment);
76
- if (getAttachmentProviderType(target) === "attachment") {
77
- await Attachments.uploadWithRid(opts.client, attachment.id, blob, {
78
- filename: attachmentName ?? "",
79
- preview: true,
80
- });
81
- return;
82
- }
83
- void attachment;
84
- void blob;
85
- unsupportedMediaAttachmentOperation();
86
- },
87
- getAttachmentContent: async (attachment) => {
88
- if (getAttachmentProviderTypeFromId(attachment.id) === "media") {
89
- unsupportedMediaAttachmentOperation();
90
- }
91
- const contents = await Attachments.read(opts.client, attachment.id);
92
- return contents.blob();
93
- },
94
- getAttachmentMetadata: async (attachment) => {
95
- if (getAttachmentProviderTypeFromId(attachment.id) === "media") {
96
- unsupportedMediaAttachmentOperation();
97
- }
98
- const metadata = await Attachments.get(opts.client, attachment.id);
99
- return {
100
- id: attachment.id,
101
- size: Number(metadata.sizeBytes),
102
- type: metadata.mediaType,
103
- name: metadata.filename,
104
- };
105
- },
106
- };
107
- return {
108
- name: "foundry",
109
- getCollectionOptions: (objectType) => {
110
- const objectTypeDef = opts.ir.objectTypes.find((ot) => ot.name === objectType);
111
- return objectCollectionOptions({
112
- client: opts.client,
113
- objectType,
114
- primaryKeyProperty: objectTypeDef.primaryKey,
115
- decodeObject: (object) => codec.decodeObject(objectType, object),
116
- });
117
- },
118
- applyAction: async (name, parameters, context) => {
119
- const actionType = opts.ir.actionTypes.find((actionType) => actionType.name === name);
120
- const overrideMapping = getFoundryActionOverrideParameterMapping(actionType);
121
- const parameterTypes = new Map(actionType.parameters.map((p) => [p.name, p.type]));
122
- const requestParameters = {};
123
- const uniqueIdentifierLinkIdValues = {};
124
- let actionExecutionTime;
125
- for (const [parameterName, value] of Object.entries(parameters)) {
126
- if (overrideMapping.uuidByParameterName.has(parameterName)) {
127
- if (value !== undefined) {
128
- uniqueIdentifierLinkIdValues[overrideMapping.uuidByParameterName.get(parameterName)] = serializeOverrideValue(value);
129
- }
130
- continue;
131
- }
132
- if (overrideMapping.nowParameterName === parameterName) {
133
- if (value !== undefined) {
134
- actionExecutionTime = serializeOverrideValue(value);
135
- }
136
- continue;
137
- }
138
- if (value !== undefined) {
139
- const paramType = parameterTypes.get(parameterName);
140
- requestParameters[parameterName] = paramType
141
- ? codec.encodeValue(paramType, value)
142
- : value;
143
- }
144
- }
145
- const result = await Actions.applyWithOverrides(opts.client, opts.client.ontologyRid, toFoundryActionTypeName(name), {
146
- request: {
147
- options: {
148
- mode: "VALIDATE_AND_EXECUTE",
149
- returnEdits: "ALL_V2_WITH_DELETIONS",
150
- },
151
- parameters: requestParameters,
152
- },
153
- overrides: {
154
- uniqueIdentifierLinkIdValues,
155
- actionExecutionTime,
156
- },
157
- },
158
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
159
- {
160
- preview: true,
161
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
162
- });
163
- if (result.validation?.result === "INVALID") {
164
- throw new NonRetriableError("Invalid Action arguments.");
165
- }
166
- if (context) {
167
- const operationId = getApplyActionOperationId(result);
168
- const targetCollections = Array.from(getEditedObjectTypes(result.edits))
169
- .map((objectType) => context.objects[objectType])
170
- .filter((collection) => Boolean(collection?.utils?.awaitOperationId));
171
- await Promise.all(targetCollections.map((collection) => collection.utils.awaitOperationId(operationId)));
172
- }
173
- },
174
- attachments,
175
- };
176
- }
177
- //# sourceMappingURL=createFoundryOntologyAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createFoundryOntologyAdapter.js","sourceRoot":"","sources":["../../src/adapter/createFoundryOntologyAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACH,OAAO,EAEP,WAAW,GACd,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAc,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,wCAAwC,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAA8B,MAAM,8BAA8B,CAAC;AASnG,SAAS,sBAAsB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,YAAY,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,YAAY,QAAQ,CAAC,SAAS,IAAI,KAAK,YAAY,QAAQ,CAAC,aAAa,EAAE,CAAC;QACjF,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAyB;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAmB;IAC1C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACrF,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,GAAI,UAAsC,CAAC,IAAI,CAAC;IAC1D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,yBAAyB,CAC9B,MAAsD;IAEtD,OAAO,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AACnE,CAAC;AAED,SAAS,+BAA+B,CAAC,EAAU;IAC/C,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7D,CAAC;AAED,SAAS,mCAAmC;IACxC,MAAM,IAAI,KAAK,CACX,uKAAuK,CAC1K,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,KAAsE;IAEtE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnC,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5F,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAG5C;IACG,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,WAAW,GAA+B;QAC5C,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpC,SAAS,CACL,MAAM,EACN,yIAAyI,CAC5I,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAwC,CAAC;YAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC7B,OAAO,kCAAkC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;YACnE,CAAC;YACD,mCAAmC,EAAE,CAAC;QAC1C,CAAC;QACD,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC1D,SAAS,CACL,MAAM,EACN,0IAA0I,CAC7I,CAAC;YACF,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAqB,CAAC,CAAC;YAChE,IAAI,yBAAyB,CAAC,MAAM,CAAC,KAAK,YAAY,EAAE,CAAC;gBACrD,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAmB,EAAE,IAAI,EAAE;oBAC/E,QAAQ,EAAE,cAAc,IAAI,EAAE;oBAC9B,OAAO,EAAE,IAAI;iBAChB,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI,CAAC;YACV,mCAAmC,EAAE,CAAC;QAC1C,CAAC;QACD,oBAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YACvC,IAAI,+BAA+B,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC7D,mCAAmC,EAAE,CAAC;YAC1C,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAmB,CAAC,CAAC;YACrF,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QACD,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YACxC,IAAI,+BAA+B,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC7D,mCAAmC,EAAE,CAAC;YAC1C,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAmB,CAAC,CAAC;YACpF,OAAO;gBACH,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAChC,IAAI,EAAE,QAAQ,CAAC,SAAS;gBACxB,IAAI,EAAE,QAAQ,CAAC,QAAQ;aAC1B,CAAC;QACN,CAAC;KACJ,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,SAAS;QACf,oBAAoB,EAAE,CAAC,UAAkB,EAAE,EAAE;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAE,CAAC;YAChF,OAAO,uBAAuB,CAAC;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU;gBACV,kBAAkB,EAAE,aAAa,CAAC,UAAU;gBAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAkB;aACpF,CAAC,CAAC;QACP,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAE,CAAC;YACvF,MAAM,eAAe,GAAG,wCAAwC,CAAC,UAAU,CAAC,CAAC;YAC7E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,iBAAiB,GAA4B,EAAE,CAAC;YACtD,MAAM,4BAA4B,GAA2B,EAAE,CAAC;YAChE,IAAI,mBAAuC,CAAC;YAE5C,KAAK,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9D,IAAI,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;oBACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACtB,4BAA4B,CACxB,eAAe,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAE,CAC1D,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;oBACtC,CAAC;oBACD,SAAS;gBACb,CAAC;gBACD,IAAI,eAAe,CAAC,gBAAgB,KAAK,aAAa,EAAE,CAAC;oBACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACtB,mBAAmB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;oBACxD,CAAC;oBACD,SAAS;gBACb,CAAC;gBACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACpD,iBAAiB,CAAC,aAAa,CAAC,GAAG,SAAS;wBACxC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC;wBACrC,CAAC,CAAC,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAsB,MAAM,OAAO,CAAC,kBAAkB,CAC9D,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,uBAAuB,CAAC,IAAI,CAAC,EAC7B;gBACI,OAAO,EAAE;oBACL,OAAO,EAAE;wBACL,IAAI,EAAE,sBAAsB;wBAC5B,WAAW,EAAE,uBAAuB;qBACvC;oBACD,UAAU,EAAE,iBAAiB;iBAChC;gBACD,SAAS,EAAE;oBACP,4BAA4B;oBAC5B,mBAAmB;iBACtB;aACJ;YACD,iEAAiE;YACjE;gBACI,OAAO,EAAE,IAAI;gBACb,8DAA8D;aAC1D,CACX,CAAC;YACF,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;YAC7D,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBACtD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBACnE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAoC,CAAC;qBACnF,MAAM,CAAC,CAAC,UAAU,EAAqC,EAAE,CACtD,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAC/C,CAAC;gBAEN,MAAM,OAAO,CAAC,GAAG,CACb,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CACxF,CAAC;YACN,CAAC;QACL,CAAC;QACD,WAAW;KACd,CAAC;AACN,CAAC"}
@@ -1,14 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,238 +0,0 @@
1
- import { ObjectTypesV2, } from "@osdk/foundry.ontologies";
2
- import { useObjectSetWatcherSubscription } from "@party-stack/foundry-object-set-watcher/effection";
3
- import { call, createSignal, run, spawn, suspend } from "effection";
4
- const EDIT_HISTORY_PAGE_SIZE = 1_000;
5
- function createEditHistoryCursor(timestamp = new Date().toISOString()) {
6
- return { timestamp, seenEntryKeysAtTimestamp: new Set() };
7
- }
8
- function getEditHistoryEntryKey(entry) {
9
- return JSON.stringify({
10
- objectPrimaryKey: entry.objectPrimaryKey,
11
- operationId: entry.operationId,
12
- timestamp: entry.timestamp,
13
- edit: entry.edit,
14
- });
15
- }
16
- function shouldProcessEditHistoryEntry(cursor, entry) {
17
- if (entry.timestamp < cursor.timestamp)
18
- return false;
19
- if (entry.timestamp === cursor.timestamp) {
20
- return !cursor.seenEntryKeysAtTimestamp.has(getEditHistoryEntryKey(entry));
21
- }
22
- return true;
23
- }
24
- function advanceEditHistoryCursor(cursor, entry) {
25
- const entryKey = getEditHistoryEntryKey(entry);
26
- if (entry.timestamp > cursor.timestamp) {
27
- cursor.timestamp = entry.timestamp;
28
- cursor.seenEntryKeysAtTimestamp.clear();
29
- }
30
- cursor.seenEntryKeysAtTimestamp.add(entryKey);
31
- }
32
- function isPlainObject(value) {
33
- return typeof value === "object" && value !== null && !Array.isArray(value);
34
- }
35
- function isNullPropertyValue(value) {
36
- return value === "NullPropertyValue{}";
37
- }
38
- const geoPointPattern = /^GeoPointPropertyValue\{latitude:\s*(-?[\d.]+),\s*longitude:\s*(-?[\d.]+)\}$/;
39
- function parseGeoPointPropertyValue(value) {
40
- if (typeof value !== "string")
41
- return undefined;
42
- const match = geoPointPattern.exec(value);
43
- if (!match)
44
- return undefined;
45
- const lat = Number(match[1]);
46
- const lon = Number(match[2]);
47
- if (Number.isNaN(lat) || Number.isNaN(lon))
48
- return undefined;
49
- return { lat, lon };
50
- }
51
- function isWrappedPrimitivePropertyValue(value) {
52
- if (!isPlainObject(value) || typeof value.type !== "string" || !("value" in value)) {
53
- return false;
54
- }
55
- return [
56
- "stringValue",
57
- "integerValue",
58
- "doubleValue",
59
- "longValue",
60
- "booleanValue",
61
- "dateValue",
62
- "timestampValue",
63
- ].includes(value.type);
64
- }
65
- function normalizeEditPropertyValue(value) {
66
- if (isNullPropertyValue(value))
67
- return undefined;
68
- const geoPoint = parseGeoPointPropertyValue(value);
69
- if (geoPoint)
70
- return geoPoint;
71
- if (isWrappedPrimitivePropertyValue(value))
72
- return value.value;
73
- if (Array.isArray(value))
74
- return value.map(normalizeEditPropertyValue);
75
- if (isPlainObject(value)) {
76
- return Object.fromEntries(Object.entries(value).map(([key, nestedValue]) => [key, normalizeEditPropertyValue(nestedValue)]));
77
- }
78
- return value;
79
- }
80
- function getPrimaryKeyValue(primaryKey) {
81
- const values = Object.values(primaryKey);
82
- if (values.length !== 1) {
83
- throw new Error("Foundry object collections currently only support single-field primary keys.");
84
- }
85
- const value = normalizeEditPropertyValue(values[0]);
86
- if (typeof value !== "string" && typeof value !== "number") {
87
- throw new Error("Foundry object collections currently only support string or number primary keys.");
88
- }
89
- return value;
90
- }
91
- export function createSyncConfig(opts) {
92
- const { client, objectType, operationIds, primaryKeyProperty, decodeObject = (object) => object } = opts;
93
- return {
94
- sync: (params) => {
95
- const { begin, write, commit, markReady } = params;
96
- const syncedKeys = new Set(params.collection.keys());
97
- const editHistoryCursor = createEditHistoryCursor();
98
- const invalidations = createSignal();
99
- const fetchEditHistoryPage = (body) => ObjectTypesV2.getEditsHistory(client, client.ontologyRid, objectType, body,
100
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
101
- {
102
- preview: true,
103
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
- });
105
- const decodeEditProperties = (properties, primaryKey) => decodeObject({
106
- ...Object.fromEntries(Object.entries(properties).map(([key, value]) => [
107
- key,
108
- normalizeEditPropertyValue(value),
109
- ])),
110
- [primaryKeyProperty]: primaryKey,
111
- });
112
- const getObjectKey = (object) => object[primaryKeyProperty];
113
- const upsertObject = (object) => {
114
- const key = getObjectKey(object);
115
- write({ type: syncedKeys.has(key) ? "update" : "insert", value: object });
116
- syncedKeys.add(key);
117
- };
118
- const deleteObjectByKey = (key) => {
119
- if (!syncedKeys.has(key))
120
- return false;
121
- write({ type: "delete", key });
122
- syncedKeys.delete(key);
123
- return true;
124
- };
125
- const catchUpFromEditHistory = function* () {
126
- const pendingMutations = new Map();
127
- const newOperationIds = new Set();
128
- let pageToken;
129
- while (true) {
130
- const page = yield* call(() => fetchEditHistoryPage({
131
- filters: {
132
- type: "timestampFilter",
133
- startTime: editHistoryCursor.timestamp,
134
- },
135
- includeAllPreviousProperties: true,
136
- pageSize: EDIT_HISTORY_PAGE_SIZE,
137
- pageToken,
138
- sortOrder: "oldest_first",
139
- }));
140
- for (const entry of page.data) {
141
- if (!shouldProcessEditHistoryEntry(editHistoryCursor, entry))
142
- continue;
143
- advanceEditHistoryCursor(editHistoryCursor, entry);
144
- newOperationIds.add(entry.operationId);
145
- const primaryKey = getPrimaryKeyValue(entry.objectPrimaryKey);
146
- switch (entry.edit.type) {
147
- case "createEdit":
148
- case "modifyEdit":
149
- pendingMutations.set(primaryKey, {
150
- type: "upsert",
151
- object: decodeEditProperties(entry.edit.properties, primaryKey),
152
- });
153
- break;
154
- case "deleteEdit":
155
- pendingMutations.set(primaryKey, { type: "delete" });
156
- break;
157
- }
158
- }
159
- if (page.nextPageToken === undefined) {
160
- break;
161
- }
162
- pageToken = page.nextPageToken;
163
- }
164
- let transactionStarted = false;
165
- for (const [primaryKey, mutation] of pendingMutations) {
166
- if (mutation.type === "delete" && !syncedKeys.has(primaryKey)) {
167
- continue;
168
- }
169
- if (!transactionStarted) {
170
- begin({ immediate: true });
171
- transactionStarted = true;
172
- }
173
- if (mutation.type === "delete") {
174
- deleteObjectByKey(primaryKey);
175
- }
176
- else {
177
- upsertObject(mutation.object);
178
- }
179
- }
180
- if (transactionStarted) {
181
- commit();
182
- }
183
- for (const operationId of newOperationIds) {
184
- yield* operationIds.send(operationId);
185
- }
186
- };
187
- const task = run(function* () {
188
- void (yield* spawn(function* () {
189
- const messages = yield* useObjectSetWatcherSubscription({
190
- type: "base",
191
- objectType,
192
- });
193
- while (true) {
194
- const nextMessage = yield* messages.next();
195
- if (nextMessage.done) {
196
- break;
197
- }
198
- const message = nextMessage.value;
199
- switch (message.type) {
200
- case "change":
201
- case "refresh":
202
- invalidations.send();
203
- break;
204
- case "state":
205
- if (message.status === "open") {
206
- invalidations.send();
207
- }
208
- break;
209
- }
210
- }
211
- }));
212
- void (yield* spawn(function* () {
213
- const requests = yield* invalidations;
214
- while (true) {
215
- const nextRequest = yield* requests.next();
216
- if (nextRequest.done) {
217
- break;
218
- }
219
- try {
220
- yield* catchUpFromEditHistory();
221
- }
222
- catch (error) {
223
- console.error("Error during edit history catch-up", error);
224
- }
225
- }
226
- }));
227
- markReady();
228
- yield* suspend();
229
- });
230
- return {
231
- cleanup: () => {
232
- void task.halt();
233
- },
234
- };
235
- },
236
- };
237
- }
238
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/adapter/sync.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sync.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../../src/adapter/sync.test.ts"],"names":[],"mappings":""}