@party-stack/foundry-ontology 0.1.1 → 0.2.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 (91) hide show
  1. package/lib/adapter/createFoundryOntologyAdapter.d.ts +7 -0
  2. package/lib/adapter/createFoundryOntologyAdapter.d.ts.map +1 -0
  3. package/lib/adapter/createFoundryOntologyAdapter.js +147 -0
  4. package/lib/adapter/createFoundryOntologyAdapter.js.map +1 -0
  5. package/lib/adapter/foundryCodec.d.ts +8 -3
  6. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  7. package/lib/adapter/foundryCodec.js +71 -5
  8. package/lib/adapter/foundryCodec.js.map +1 -1
  9. package/lib/adapter/index.d.ts +2 -1
  10. package/lib/adapter/index.d.ts.map +1 -1
  11. package/lib/adapter/index.js +2 -1
  12. package/lib/adapter/index.js.map +1 -1
  13. package/lib/adapter/objectCollectionOptions.d.ts +35 -0
  14. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -0
  15. package/lib/adapter/objectCollectionOptions.js +356 -0
  16. package/lib/adapter/objectCollectionOptions.js.map +1 -0
  17. package/lib/adapter/objectCollectionOptions.test.d.ts +2 -0
  18. package/lib/adapter/objectCollectionOptions.test.d.ts.map +1 -0
  19. package/lib/adapter/objectCollectionOptions.test.js +412 -0
  20. package/lib/adapter/objectCollectionOptions.test.js.map +1 -0
  21. package/lib/config/index.d.ts +2 -0
  22. package/lib/config/index.d.ts.map +1 -1
  23. package/lib/config/index.js +2 -2
  24. package/lib/config/index.js.map +1 -1
  25. package/lib/meta/actionTypeCollectionOptions.d.ts +9 -0
  26. package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -0
  27. package/lib/meta/actionTypeCollectionOptions.js +55 -0
  28. package/lib/meta/actionTypeCollectionOptions.js.map +1 -0
  29. package/lib/meta/convertMetaActionType.d.ts +8 -0
  30. package/lib/meta/convertMetaActionType.d.ts.map +1 -0
  31. package/lib/meta/convertMetaActionType.js +368 -0
  32. package/lib/meta/convertMetaActionType.js.map +1 -0
  33. package/lib/meta/convertMetaLinkType.d.ts +4 -0
  34. package/lib/meta/convertMetaLinkType.d.ts.map +1 -0
  35. package/lib/meta/convertMetaLinkType.js +50 -0
  36. package/lib/meta/convertMetaLinkType.js.map +1 -0
  37. package/lib/meta/convertMetaObjectType.d.ts +4 -0
  38. package/lib/meta/convertMetaObjectType.d.ts.map +1 -0
  39. package/lib/meta/convertMetaObjectType.js +22 -0
  40. package/lib/meta/convertMetaObjectType.js.map +1 -0
  41. package/lib/meta/convertMetaTypeDef.d.ts +6 -0
  42. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -0
  43. package/lib/meta/convertMetaTypeDef.js +170 -0
  44. package/lib/meta/convertMetaTypeDef.js.map +1 -0
  45. package/lib/meta/convertMetaValueType.d.ts +4 -0
  46. package/lib/meta/convertMetaValueType.d.ts.map +1 -0
  47. package/lib/meta/convertMetaValueType.js +10 -0
  48. package/lib/meta/convertMetaValueType.js.map +1 -0
  49. package/lib/meta/{createOntologyMetadataCollections.d.ts → createFoundryMetaOntologyAdapter.d.ts} +3 -3
  50. package/lib/meta/createFoundryMetaOntologyAdapter.d.ts.map +1 -0
  51. package/lib/meta/createFoundryMetaOntologyAdapter.js +30 -0
  52. package/lib/meta/createFoundryMetaOntologyAdapter.js.map +1 -0
  53. package/lib/meta/entityCollectionOptions.d.ts +22 -0
  54. package/lib/meta/entityCollectionOptions.d.ts.map +1 -0
  55. package/lib/meta/entityCollectionOptions.js +77 -0
  56. package/lib/meta/entityCollectionOptions.js.map +1 -0
  57. package/lib/meta/index.d.ts +4 -1
  58. package/lib/meta/index.d.ts.map +1 -1
  59. package/lib/meta/index.js +4 -1
  60. package/lib/meta/index.js.map +1 -1
  61. package/lib/users/index.d.ts +1 -1
  62. package/lib/users/index.d.ts.map +1 -1
  63. package/lib/users/index.js +1 -1
  64. package/lib/users/index.js.map +1 -1
  65. package/lib/users/userCollectionOptions.d.ts +10 -0
  66. package/lib/users/userCollectionOptions.d.ts.map +1 -0
  67. package/lib/users/{createUserCollection.js → userCollectionOptions.js} +5 -7
  68. package/lib/users/userCollectionOptions.js.map +1 -0
  69. package/lib/utils/actionTypeName.d.ts +3 -0
  70. package/lib/utils/actionTypeName.d.ts.map +1 -0
  71. package/lib/utils/actionTypeName.js +8 -0
  72. package/lib/utils/actionTypeName.js.map +1 -0
  73. package/lib/utils/actionTypeName.test.d.ts +2 -0
  74. package/lib/utils/actionTypeName.test.d.ts.map +1 -0
  75. package/lib/utils/actionTypeName.test.js +13 -0
  76. package/lib/utils/actionTypeName.test.js.map +1 -0
  77. package/package.json +8 -6
  78. package/lib/adapter/createAction.d.ts +0 -9
  79. package/lib/adapter/createAction.d.ts.map +0 -1
  80. package/lib/adapter/createAction.js +0 -42
  81. package/lib/adapter/createAction.js.map +0 -1
  82. package/lib/adapter/createObjectCollection.d.ts +0 -23
  83. package/lib/adapter/createObjectCollection.d.ts.map +0 -1
  84. package/lib/adapter/createObjectCollection.js +0 -117
  85. package/lib/adapter/createObjectCollection.js.map +0 -1
  86. package/lib/meta/createOntologyMetadataCollections.d.ts.map +0 -1
  87. package/lib/meta/createOntologyMetadataCollections.js +0 -304
  88. package/lib/meta/createOntologyMetadataCollections.js.map +0 -1
  89. package/lib/users/createUserCollection.d.ts +0 -7
  90. package/lib/users/createUserCollection.d.ts.map +0 -1
  91. package/lib/users/createUserCollection.js.map +0 -1
@@ -0,0 +1,368 @@
1
+ import { Temporal } from "temporal-polyfill";
2
+ import { toOntologyActionTypeName } from "../utils/actionTypeName.js";
3
+ const FOUNDRY_CURRENT_USER_CONTEXT_PATH = ["userId"];
4
+ const FOUNDRY_UUID_PARAMETER_PREFIX = "__uuid_";
5
+ const FOUNDRY_NOW_PARAMETER_NAME = "__now";
6
+ function maybeOptional(type, required) {
7
+ return required ? type : { kind: "optional", value: { type } };
8
+ }
9
+ function stringType() {
10
+ return { kind: "string", value: {} };
11
+ }
12
+ function booleanType() {
13
+ return { kind: "boolean", value: {} };
14
+ }
15
+ function integerType() {
16
+ return { kind: "integer", value: {} };
17
+ }
18
+ function floatType() {
19
+ return { kind: "float", value: {} };
20
+ }
21
+ function doubleType() {
22
+ return { kind: "double", value: {} };
23
+ }
24
+ function dateType() {
25
+ return { kind: "date", value: {} };
26
+ }
27
+ function timestampType() {
28
+ return { kind: "timestamp", value: {} };
29
+ }
30
+ function geopointType() {
31
+ return { kind: "geopoint", value: {} };
32
+ }
33
+ function attachmentType() {
34
+ return { kind: "attachment", value: {} };
35
+ }
36
+ function createUniqueIdentifierParameterName(linkId) {
37
+ return `${FOUNDRY_UUID_PARAMETER_PREFIX}${encodeURIComponent(linkId)}`;
38
+ }
39
+ function getUniqueIdentifierLinkIdFromParameterName(parameterName) {
40
+ if (!parameterName.startsWith(FOUNDRY_UUID_PARAMETER_PREFIX)) {
41
+ return undefined;
42
+ }
43
+ return decodeURIComponent(parameterName.slice(FOUNDRY_UUID_PARAMETER_PREFIX.length));
44
+ }
45
+ function convertActionParameterType(type, required = true) {
46
+ const baseType = (() => {
47
+ switch (type.type) {
48
+ case "string":
49
+ return stringType();
50
+ case "boolean":
51
+ return booleanType();
52
+ case "integer":
53
+ case "long":
54
+ return integerType();
55
+ case "double":
56
+ return doubleType();
57
+ case "date":
58
+ return dateType();
59
+ case "timestamp":
60
+ return timestampType();
61
+ case "attachment":
62
+ case "mediaReference":
63
+ return attachmentType();
64
+ case "geohash":
65
+ return geopointType();
66
+ case "geoshape":
67
+ case "marking":
68
+ return stringType();
69
+ case "vector":
70
+ return {
71
+ kind: "list",
72
+ value: { elementType: doubleType() },
73
+ };
74
+ case "array":
75
+ return {
76
+ kind: "list",
77
+ value: { elementType: convertActionParameterType(type.subType) },
78
+ };
79
+ case "struct":
80
+ return {
81
+ kind: "struct",
82
+ value: {
83
+ fields: type.fields.map((field, index) => ({
84
+ name: field.name ?? `field${index + 1}`,
85
+ displayName: field.name ?? `Field ${index + 1}`,
86
+ type: convertOntologyDataType(field.fieldType, field.required),
87
+ })),
88
+ },
89
+ };
90
+ case "object":
91
+ return {
92
+ kind: "objectReference",
93
+ value: { objectType: type.objectTypeApiName },
94
+ };
95
+ case "objectType":
96
+ case "interfaceObject":
97
+ case "objectSet":
98
+ return stringType();
99
+ }
100
+ })();
101
+ return maybeOptional(baseType, required);
102
+ }
103
+ function convertOntologyDataType(type, required = true) {
104
+ const baseType = (() => {
105
+ switch (type.type) {
106
+ case "string":
107
+ return stringType();
108
+ case "boolean":
109
+ return booleanType();
110
+ case "byte":
111
+ case "short":
112
+ case "integer":
113
+ case "long":
114
+ return integerType();
115
+ case "float":
116
+ return floatType();
117
+ case "double":
118
+ case "decimal":
119
+ return doubleType();
120
+ case "date":
121
+ return dateType();
122
+ case "timestamp":
123
+ return timestampType();
124
+ case "binary":
125
+ case "mediaReference":
126
+ return attachmentType();
127
+ case "array":
128
+ case "set":
129
+ return {
130
+ kind: "list",
131
+ value: { elementType: convertOntologyDataType(type.itemType) },
132
+ };
133
+ case "struct":
134
+ return {
135
+ kind: "struct",
136
+ value: {
137
+ fields: type.fields.map((field, index) => ({
138
+ name: field.name ?? `field${index + 1}`,
139
+ displayName: field.name ?? `Field ${index + 1}`,
140
+ type: convertOntologyDataType(field.fieldType, field.required),
141
+ })),
142
+ },
143
+ };
144
+ default:
145
+ return stringType();
146
+ }
147
+ })();
148
+ return maybeOptional(baseType, required);
149
+ }
150
+ function collectRuleArguments(rule) {
151
+ switch (rule.type) {
152
+ case "createObject":
153
+ case "modifyObject":
154
+ return [
155
+ ...Object.values(rule.propertyArguments),
156
+ ...Object.values(rule.structPropertyArguments).flatMap((fields) => Object.values(fields)),
157
+ ];
158
+ default:
159
+ return [];
160
+ }
161
+ }
162
+ function createSyntheticParameters(actionType) {
163
+ const uniqueIdentifierParametersByLinkId = new Map();
164
+ let nowParameterName;
165
+ for (const rule of actionType.fullLogicRules) {
166
+ for (const argument of collectRuleArguments(rule)) {
167
+ if (argument.type === "uniqueIdentifier" && argument.linkId) {
168
+ if (!uniqueIdentifierParametersByLinkId.has(argument.linkId)) {
169
+ uniqueIdentifierParametersByLinkId.set(argument.linkId, createUniqueIdentifierParameterName(argument.linkId));
170
+ }
171
+ }
172
+ if (argument.type === "currentTime" && !nowParameterName) {
173
+ nowParameterName = FOUNDRY_NOW_PARAMETER_NAME;
174
+ }
175
+ }
176
+ }
177
+ const parameters = Array.from(uniqueIdentifierParametersByLinkId.values()).map((name, index) => ({
178
+ name,
179
+ displayName: `Generated UUID ${index + 1}`,
180
+ type: { kind: "string", value: {} },
181
+ defaultValue: {
182
+ kind: "functionCall",
183
+ value: { kind: "uuid", value: {} },
184
+ },
185
+ }));
186
+ if (nowParameterName) {
187
+ parameters.push({
188
+ name: nowParameterName,
189
+ displayName: "Current time",
190
+ type: { kind: "timestamp", value: {} },
191
+ defaultValue: {
192
+ kind: "functionCall",
193
+ value: { kind: "now", value: {} },
194
+ },
195
+ });
196
+ }
197
+ return { parameters, uniqueIdentifierParametersByLinkId, nowParameterName };
198
+ }
199
+ export function getFoundryActionOverrideParameterMapping(actionType) {
200
+ const uuidByParameterName = new Map();
201
+ let nowParameterName;
202
+ for (const parameter of actionType.parameters) {
203
+ if (parameter.defaultValue?.kind !== "functionCall") {
204
+ continue;
205
+ }
206
+ switch (parameter.defaultValue.value.kind) {
207
+ case "uuid": {
208
+ const linkId = getUniqueIdentifierLinkIdFromParameterName(parameter.name);
209
+ if (linkId) {
210
+ uuidByParameterName.set(parameter.name, linkId);
211
+ }
212
+ break;
213
+ }
214
+ case "now":
215
+ nowParameterName ??= parameter.name;
216
+ break;
217
+ }
218
+ }
219
+ return { uuidByParameterName, nowParameterName };
220
+ }
221
+ function valueReference(path) {
222
+ return {
223
+ kind: "valueReference",
224
+ value: { path },
225
+ };
226
+ }
227
+ // TODO: This uses regex heuristics to infer the type of static literal values without
228
+ // knowing the target property type. We should eventually resolve the target property's
229
+ // TypeDef from the object type definition so we decode accurately instead of guessing
230
+ // from the string format.
231
+ const ISO_TIMESTAMP_RE = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;
232
+ const ISO_DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
233
+ const GEO_POINT_RE = /^(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)$/;
234
+ function decodeLiteralValue(value) {
235
+ if (typeof value !== "string") {
236
+ return value;
237
+ }
238
+ if (ISO_TIMESTAMP_RE.test(value)) {
239
+ try {
240
+ return Temporal.Instant.from(value);
241
+ }
242
+ catch {
243
+ return value;
244
+ }
245
+ }
246
+ if (ISO_DATE_RE.test(value)) {
247
+ try {
248
+ return Temporal.PlainDate.from(value);
249
+ }
250
+ catch {
251
+ return value;
252
+ }
253
+ }
254
+ const geoMatch = GEO_POINT_RE.exec(value);
255
+ if (geoMatch) {
256
+ return { lat: Number(geoMatch[1]), lon: Number(geoMatch[2]) };
257
+ }
258
+ return value;
259
+ }
260
+ function convertLogicRuleArgument(argument, syntheticParameters) {
261
+ switch (argument.type) {
262
+ case "parameterId":
263
+ return valueReference([argument.parameterId]);
264
+ case "objectParameterPropertyValue":
265
+ return valueReference([argument.parameterId, argument.propertyTypeApiName]);
266
+ case "structParameterFieldValue":
267
+ case "structListParameterFieldValue":
268
+ return valueReference([argument.parameterId, argument.structParameterFieldApiName]);
269
+ case "uniqueIdentifier": {
270
+ const parameterName = argument.linkId
271
+ ? syntheticParameters.uniqueIdentifierParametersByLinkId.get(argument.linkId)
272
+ : undefined;
273
+ return parameterName
274
+ ? valueReference([parameterName])
275
+ : {
276
+ kind: "functionCall",
277
+ value: { kind: "uuid", value: {} },
278
+ };
279
+ }
280
+ case "currentTime":
281
+ return syntheticParameters.nowParameterName
282
+ ? valueReference([syntheticParameters.nowParameterName])
283
+ : {
284
+ kind: "functionCall",
285
+ value: { kind: "now", value: {} },
286
+ };
287
+ case "staticValue":
288
+ return {
289
+ kind: "literal",
290
+ value: { value: decodeLiteralValue(argument.value) },
291
+ };
292
+ case "currentUser":
293
+ return {
294
+ kind: "contextReference",
295
+ value: { path: FOUNDRY_CURRENT_USER_CONTEXT_PATH },
296
+ };
297
+ default:
298
+ throw new Error(`Unsupported Foundry action argument "${argument.type}".`);
299
+ }
300
+ }
301
+ function convertAssignments(rule, syntheticParameters) {
302
+ return [
303
+ ...Object.entries(rule.propertyArguments).map(([property, argument]) => ({
304
+ property: [property],
305
+ value: convertLogicRuleArgument(argument, syntheticParameters),
306
+ })),
307
+ ...Object.entries(rule.structPropertyArguments).flatMap(([property, fields]) => Object.entries(fields).map(([field, argument]) => ({
308
+ property: [property, field],
309
+ value: convertLogicRuleArgument(argument, syntheticParameters),
310
+ }))),
311
+ ];
312
+ }
313
+ function convertLogicStep(rule, syntheticParameters) {
314
+ switch (rule.type) {
315
+ case "createObject":
316
+ return {
317
+ kind: "createObject",
318
+ value: {
319
+ objectType: rule.objectTypeApiName,
320
+ values: convertAssignments(rule, syntheticParameters),
321
+ },
322
+ };
323
+ case "modifyObject":
324
+ return {
325
+ kind: "updateObject",
326
+ value: {
327
+ object: {
328
+ path: [rule.objectToModify],
329
+ },
330
+ values: convertAssignments(rule, syntheticParameters),
331
+ },
332
+ };
333
+ case "deleteObject":
334
+ return {
335
+ kind: "deleteObject",
336
+ value: {
337
+ object: {
338
+ path: [rule.objectToDelete],
339
+ },
340
+ },
341
+ };
342
+ default:
343
+ return null;
344
+ }
345
+ }
346
+ export function convertFoundryMetaActionType(actionType) {
347
+ const syntheticParameters = createSyntheticParameters(actionType);
348
+ const fullLogicRules = actionType.fullLogicRules
349
+ .map((rule) => convertLogicStep(rule, syntheticParameters))
350
+ .filter((rule) => rule !== null);
351
+ return {
352
+ name: toOntologyActionTypeName(actionType.actionType.apiName),
353
+ displayName: actionType.actionType.displayName ?? actionType.actionType.apiName,
354
+ description: actionType.actionType.description,
355
+ deprecated: actionType.actionType.status === "DEPRECATED" ? { message: "Deprecated in Foundry." } : undefined,
356
+ parameters: [
357
+ ...Object.entries(actionType.actionType.parameters).map(([name, parameter]) => ({
358
+ name,
359
+ displayName: parameter.displayName ?? name,
360
+ type: convertActionParameterType(parameter.dataType, parameter.required),
361
+ description: parameter.description,
362
+ })),
363
+ ...syntheticParameters.parameters,
364
+ ],
365
+ logic: fullLogicRules,
366
+ };
367
+ }
368
+ //# sourceMappingURL=convertMetaActionType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertMetaActionType.js","sourceRoot":"","sources":["../../src/meta/convertMetaActionType.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { MetaLinkType } from "@party-stack/ontology";
2
+ import type { ObjectTypeFullMetadata } from "@osdk/foundry.ontologies";
3
+ export declare function convertFoundryMetaLinkTypes(objectTypes: ObjectTypeFullMetadata[]): MetaLinkType[];
4
+ //# sourceMappingURL=convertMetaLinkType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertMetaLinkType.d.ts","sourceRoot":"","sources":["../../src/meta/convertMetaLinkType.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAA2C,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEhH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,sBAAsB,EAAE,GAAG,YAAY,EAAE,CAejG"}
@@ -0,0 +1,50 @@
1
+ import { invariant } from "@bobbyfidz/panic";
2
+ export function convertFoundryMetaLinkTypes(objectTypes) {
3
+ const sidesByRid = new Map();
4
+ for (const objectType of objectTypes) {
5
+ for (const linkType of objectType.linkTypes) {
6
+ const key = linkType.linkTypeRid;
7
+ const sides = sidesByRid.get(key) ?? [];
8
+ sides.push(linkType);
9
+ sidesByRid.set(key, sides);
10
+ }
11
+ }
12
+ return Array.from(sidesByRid.entries())
13
+ .map(([id, sides]) => convertFoundryMetaLinkType(id, sides))
14
+ .filter((linkType) => linkType !== null);
15
+ }
16
+ function convertFoundryMetaLinkType(id, sides) {
17
+ if (sides.length !== 2) {
18
+ return null;
19
+ }
20
+ const source = sides.find((side) => side.foreignKeyPropertyApiName);
21
+ if (!source) {
22
+ return null;
23
+ }
24
+ const target = sides.find((side) => side !== source);
25
+ if (!target) {
26
+ return null;
27
+ }
28
+ return {
29
+ id,
30
+ source: {
31
+ objectType: source.objectTypeApiName,
32
+ name: source.apiName,
33
+ displayName: source.displayName,
34
+ },
35
+ target: {
36
+ objectType: target.objectTypeApiName,
37
+ name: target.apiName,
38
+ displayName: target.displayName,
39
+ },
40
+ foreignKey: (() => {
41
+ invariant(source.foreignKeyPropertyApiName, "Expected Foundry link foreign key.");
42
+ return source.foreignKeyPropertyApiName;
43
+ })(),
44
+ cardinality: convertFoundryLinkCardinality(source.cardinality),
45
+ };
46
+ }
47
+ function convertFoundryLinkCardinality(cardinality) {
48
+ return cardinality === "ONE" ? "one" : "many";
49
+ }
50
+ //# sourceMappingURL=convertMetaLinkType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertMetaLinkType.js","sourceRoot":"","sources":["../../src/meta/convertMetaLinkType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,MAAM,UAAU,2BAA2B,CAAC,WAAqC;IAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEvD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC;YACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;SAC3D,MAAM,CAAC,CAAC,QAAQ,EAA4B,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,0BAA0B,CAAC,EAAU,EAAE,KAAuB;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,EAAE;QACF,MAAM,EAAE;YACJ,UAAU,EAAE,MAAM,CAAC,iBAAiB;YACpC,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,WAAW,EAAE,MAAM,CAAC,WAAW;SAClC;QACD,MAAM,EAAE;YACJ,UAAU,EAAE,MAAM,CAAC,iBAAiB;YACpC,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,WAAW,EAAE,MAAM,CAAC,WAAW;SAClC;QACD,UAAU,EAAE,CAAC,GAAG,EAAE;YACd,SAAS,CAAC,MAAM,CAAC,yBAAyB,EAAE,oCAAoC,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC,yBAAyB,CAAC;QAC5C,CAAC,CAAC,EAAE;QACJ,WAAW,EAAE,6BAA6B,CAAC,MAAM,CAAC,WAAW,CAAC;KACjE,CAAC;AACN,CAAC;AAED,SAAS,6BAA6B,CAAC,WAAoC;IACvE,OAAO,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MetaObjectType } from "@party-stack/ontology";
2
+ import type { ObjectTypeFullMetadata } from "@osdk/foundry.ontologies";
3
+ export declare function convertFoundryMetaObjectType(objectType: ObjectTypeFullMetadata): MetaObjectType;
4
+ //# sourceMappingURL=convertMetaObjectType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertMetaObjectType.d.ts","sourceRoot":"","sources":["../../src/meta/convertMetaObjectType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAc,MAAM,0BAA0B,CAAC;AAEnF,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,sBAAsB,GAAG,cAAc,CAW/F"}
@@ -0,0 +1,22 @@
1
+ import { convertFoundryObjectPropertyType } from "./convertMetaTypeDef.js";
2
+ export function convertFoundryMetaObjectType(objectType) {
3
+ return {
4
+ name: objectType.objectType.apiName,
5
+ displayName: objectType.objectType.displayName,
6
+ pluralDisplayName: objectType.objectType.pluralDisplayName,
7
+ primaryKey: objectType.objectType.primaryKey,
8
+ description: objectType.objectType.description,
9
+ properties: Object.entries(objectType.objectType.properties).map(([name, property]) => convertFoundryObjectProperty(name, property)),
10
+ };
11
+ }
12
+ function convertFoundryObjectProperty(name, property) {
13
+ return {
14
+ name,
15
+ displayName: property.displayName ?? name,
16
+ description: property.description,
17
+ type: property.valueTypeApiName
18
+ ? { kind: "ref", value: { name: property.valueTypeApiName } }
19
+ : convertFoundryObjectPropertyType(property.dataType),
20
+ };
21
+ }
22
+ //# sourceMappingURL=convertMetaObjectType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertMetaObjectType.js","sourceRoot":"","sources":["../../src/meta/convertMetaObjectType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAG3E,MAAM,UAAU,4BAA4B,CAAC,UAAkC;IAC3E,OAAO;QACH,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO;QACnC,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,WAAW;QAC9C,iBAAiB,EAAE,UAAU,CAAC,UAAU,CAAC,iBAAiB;QAC1D,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU;QAC5C,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,WAAW;QAC9C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAClF,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC/C;KACJ,CAAC;AACN,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAY,EAAE,QAAoB;IACpE,OAAO;QACH,IAAI;QACJ,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;QACzC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,IAAI,EAAE,QAAQ,CAAC,gBAAgB;YAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,gBAAgB,EAAE,EAAE;YAC7D,CAAC,CAAC,gCAAgC,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC5D,CAAC;AACN,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PropertyDef, TypeDef } from "@party-stack/ontology";
2
+ import type { ObjectPropertyType, StructFieldType, ValueTypeConstraint, ValueTypeFieldType } from "@osdk/foundry.ontologies";
3
+ export declare function convertFoundryValueTypeFieldType(type: ValueTypeFieldType, constraints?: ValueTypeConstraint[]): TypeDef;
4
+ export declare function convertFoundryObjectPropertyType(type: ObjectPropertyType): TypeDef;
5
+ export declare function convertFoundryStructField(field: StructFieldType): PropertyDef;
6
+ //# sourceMappingURL=convertMetaTypeDef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertMetaTypeDef.d.ts","sourceRoot":"","sources":["../../src/meta/convertMetaTypeDef.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAoB,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,KAAK,EACR,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EACrB,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,gCAAgC,CAC5C,IAAI,EAAE,kBAAkB,EACxB,WAAW,GAAE,mBAAmB,EAAO,GACxC,OAAO,CAoFT;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAwDlF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,CAM7E"}
@@ -0,0 +1,170 @@
1
+ import { invariant } from "@bobbyfidz/panic";
2
+ export function convertFoundryValueTypeFieldType(type, constraints = []) {
3
+ switch (type.type) {
4
+ case "string":
5
+ return { kind: "string", value: { constraint: extractStringConstraint(constraints) } };
6
+ case "boolean":
7
+ return { kind: "boolean", value: {} };
8
+ case "byte":
9
+ case "short":
10
+ case "integer":
11
+ case "long":
12
+ return { kind: "integer", value: {} };
13
+ case "float":
14
+ return { kind: "float", value: {} };
15
+ case "double":
16
+ case "decimal":
17
+ return { kind: "double", value: {} };
18
+ case "date":
19
+ return { kind: "date", value: {} };
20
+ case "timestamp":
21
+ return { kind: "timestamp", value: {} };
22
+ case "array":
23
+ return {
24
+ kind: "list",
25
+ value: {
26
+ elementType: (() => {
27
+ invariant(type.subType, "Expected Foundry array subtype.");
28
+ return convertFoundryValueTypeFieldType(type.subType);
29
+ })(),
30
+ },
31
+ };
32
+ case "optional":
33
+ return {
34
+ kind: "optional",
35
+ value: {
36
+ type: (() => {
37
+ invariant(type.wrappedType, "Expected Foundry optional type.");
38
+ return convertFoundryValueTypeFieldType(type.wrappedType);
39
+ })(),
40
+ },
41
+ };
42
+ case "map":
43
+ return {
44
+ kind: "map",
45
+ value: {
46
+ keyType: (() => {
47
+ invariant(type.keyType, "Expected Foundry map key type.");
48
+ return convertFoundryValueTypeFieldType(type.keyType);
49
+ })(),
50
+ valueType: (() => {
51
+ invariant(type.valueType, "Expected Foundry map value type.");
52
+ return convertFoundryValueTypeFieldType(type.valueType);
53
+ })(),
54
+ },
55
+ };
56
+ case "struct":
57
+ return {
58
+ kind: "struct",
59
+ value: {
60
+ fields: type.fields.map((field, index) => ({
61
+ name: field.name ?? `field${index + 1}`,
62
+ displayName: field.name ?? `Field ${index + 1}`,
63
+ type: (() => {
64
+ invariant(field.fieldType, `Expected Foundry struct field "${field.name ?? index}" type.`);
65
+ return convertFoundryValueTypeFieldType(field.fieldType);
66
+ })(),
67
+ })),
68
+ },
69
+ };
70
+ case "union":
71
+ return {
72
+ kind: "union",
73
+ value: {
74
+ variants: type.memberTypes.map((memberType, index) => ({
75
+ name: `variant${index + 1}`,
76
+ type: convertFoundryValueTypeFieldType(memberType),
77
+ })),
78
+ },
79
+ };
80
+ default:
81
+ throw new Error(`Unsupported Foundry value type "${type.type}".`);
82
+ }
83
+ }
84
+ export function convertFoundryObjectPropertyType(type) {
85
+ switch (type.type) {
86
+ case "string":
87
+ return { kind: "string", value: {} };
88
+ case "boolean":
89
+ return { kind: "boolean", value: {} };
90
+ case "byte":
91
+ case "short":
92
+ case "integer":
93
+ case "long":
94
+ return { kind: "integer", value: {} };
95
+ case "float":
96
+ return { kind: "float", value: {} };
97
+ case "double":
98
+ case "decimal":
99
+ return { kind: "double", value: {} };
100
+ case "date":
101
+ return { kind: "date", value: {} };
102
+ case "timestamp":
103
+ return { kind: "timestamp", value: {} };
104
+ case "geopoint":
105
+ return { kind: "geopoint", value: {} };
106
+ case "cipherText":
107
+ case "geoshape":
108
+ case "geotimeSeriesReference":
109
+ case "marking":
110
+ case "timeseries":
111
+ return { kind: "string", value: {} };
112
+ case "attachment":
113
+ case "mediaReference":
114
+ return { kind: "attachment", value: {} };
115
+ case "vector":
116
+ return {
117
+ kind: "list",
118
+ value: {
119
+ elementType: { kind: "double", value: {} },
120
+ },
121
+ };
122
+ case "array":
123
+ return {
124
+ kind: "list",
125
+ value: {
126
+ elementType: (() => {
127
+ invariant(type.subType, "Expected Foundry array subtype.");
128
+ return convertFoundryObjectPropertyType(type.subType);
129
+ })(),
130
+ },
131
+ };
132
+ case "struct":
133
+ return {
134
+ kind: "struct",
135
+ value: {
136
+ fields: type.structFieldTypes.map(convertFoundryStructField),
137
+ },
138
+ };
139
+ }
140
+ }
141
+ export function convertFoundryStructField(field) {
142
+ return {
143
+ name: field.apiName,
144
+ displayName: field.apiName,
145
+ type: convertFoundryObjectPropertyType(field.dataType),
146
+ };
147
+ }
148
+ function extractStringConstraint(constraints) {
149
+ const enumConstraint = constraints.find((constraint) => constraint.type === "enum");
150
+ if (enumConstraint) {
151
+ const options = enumConstraint.options
152
+ .filter((option) => typeof option === "string")
153
+ .map((value) => ({ value }));
154
+ if (options.length > 0) {
155
+ return {
156
+ kind: "enum",
157
+ value: { options },
158
+ };
159
+ }
160
+ }
161
+ const regexConstraint = constraints.find((constraint) => constraint.type === "regex");
162
+ if (regexConstraint) {
163
+ return {
164
+ kind: "regex",
165
+ value: { regex: regexConstraint.pattern },
166
+ };
167
+ }
168
+ return undefined;
169
+ }
170
+ //# sourceMappingURL=convertMetaTypeDef.js.map