@party-stack/foundry-ontology 0.3.1 → 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 +256 -40
  35. package/lib/adapter/objectCollectionOptions.js.map +1 -1
  36. package/lib/adapter/objectCollectionOptions.test.js +460 -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
@@ -1 +1 @@
1
- {"version":3,"file":"convertLoadSubsetOptions.d.ts","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iBAAiB,EACjB,eAAe,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAa,iBAAiB,EAAgD,MAAM,cAAc,CAAC;AAoB1G,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAElF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,iBAAiB,GAAG,SAAS,CAmFzG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAS3G"}
1
+ {"version":3,"file":"convertLoadSubsetOptions.d.ts","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iBAAiB,EACjB,eAAe,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAa,iBAAiB,EAAgD,MAAM,cAAc,CAAC;AAqC1G,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAElF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,iBAAiB,GAAG,SAAS,CA8FzG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAS3G"}
@@ -1,5 +1,17 @@
1
1
  import { parseOrderByExpression, parseWhereExpression } from "@tanstack/db";
2
+ import { Temporal } from "temporal-polyfill";
2
3
  const ALWAYS_FALSE_FILTER = { type: "or", value: [] };
4
+ function convertQueryValue(value) {
5
+ if (value instanceof Date) {
6
+ return value.toISOString();
7
+ }
8
+ if (value instanceof Temporal.Instant ||
9
+ value instanceof Temporal.PlainDate ||
10
+ value instanceof Temporal.PlainDateTime) {
11
+ return value.toString();
12
+ }
13
+ return value;
14
+ }
3
15
  function fieldPathToPropertyIdentifier(fieldPath) {
4
16
  if (fieldPath.length === 1) {
5
17
  return {
@@ -34,35 +46,35 @@ export function convertLoadSubsetFilter(filter) {
34
46
  : {
35
47
  type: "eq",
36
48
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
37
- value,
49
+ value: convertQueryValue(value),
38
50
  },
39
51
  gt: (field, value) => value == null
40
52
  ? ALWAYS_FALSE_FILTER
41
53
  : {
42
54
  type: "gt",
43
55
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
44
- value,
56
+ value: convertQueryValue(value),
45
57
  },
46
58
  gte: (field, value) => value == null
47
59
  ? ALWAYS_FALSE_FILTER
48
60
  : {
49
61
  type: "gte",
50
62
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
51
- value,
63
+ value: convertQueryValue(value),
52
64
  },
53
65
  lt: (field, value) => value == null
54
66
  ? ALWAYS_FALSE_FILTER
55
67
  : {
56
68
  type: "lt",
57
69
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
58
- value,
70
+ value: convertQueryValue(value),
59
71
  },
60
72
  lte: (field, value) => value == null
61
73
  ? ALWAYS_FALSE_FILTER
62
74
  : {
63
75
  type: "lte",
64
76
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
65
- value,
77
+ value: convertQueryValue(value),
66
78
  },
67
79
  isNull: (field) => ({
68
80
  type: "isNull",
@@ -72,7 +84,10 @@ export function convertLoadSubsetFilter(filter) {
72
84
  in: (field, value) => ({
73
85
  type: "in",
74
86
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
75
- value: value.filter((v) => v !== null && v !== undefined),
87
+ value: value
88
+ .filter((entry) => entry !== null &&
89
+ entry !== undefined)
90
+ .map(convertQueryValue),
76
91
  }),
77
92
  ilike: (field, value) => value !== "%"
78
93
  ? {
@@ -1 +1 @@
1
- {"version":3,"file":"convertLoadSubsetOptions.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convertLoadSubsetOptions.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { eq, IR, lt } from "@tanstack/db";
1
+ import { eq, gt, IR, lt } from "@tanstack/db";
2
+ import { Temporal } from "temporal-polyfill";
2
3
  import { describe, expect, it } from "vitest";
3
4
  import { convertLoadSubsetFilter, isAlwaysFalseFilter } from "./convertLoadSubsetOptions.js";
4
5
  describe("convertLoadSubsetFilter", () => {
@@ -14,5 +15,14 @@ describe("convertLoadSubsetFilter", () => {
14
15
  const filter = convertLoadSubsetFilter(lt(new IR.PropRef(["completedAt"]), null));
15
16
  expect(isAlwaysFalseFilter(filter)).toBe(true);
16
17
  });
18
+ it("serializes Temporal cursor values for Foundry", () => {
19
+ const filter = convertLoadSubsetFilter(gt(new IR.PropRef([
20
+ "createdAt",
21
+ ]), Temporal.Instant.from("2026-07-27T12:00:00Z")));
22
+ expect(filter).toMatchObject({
23
+ type: "gt",
24
+ value: "2026-07-27T12:00:00Z",
25
+ });
26
+ });
17
27
  });
18
28
  //# sourceMappingURL=convertLoadSubsetOptions.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertLoadSubsetOptions.test.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAc,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,QAAQ;YACd,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE;YAChE,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAc,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"convertLoadSubsetOptions.test.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAc,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,QAAQ;YACd,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE;YAChE,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAc,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,uBAAuB,CAClC,EAAE,CACE,IAAI,EAAE,CAAC,OAAO,CAAmB;YAC7B,WAAW;SACd,CAAC,EACF,QAAQ,CAAC,OAAO,CAAC,IAAI,CACjB,sBAAsB,CACzB,CACJ,CACJ,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YACzB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,sBAAsB;SAChC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type OntologyBackendAdapter, type OntologyBackendAdapterProvider, type OntologyIR } from "@party-stack/ontology";
2
+ import type { OntologyClient } from "@party-stack/foundry-client";
3
+ export declare function isFoundryNotFoundError(error: unknown): boolean;
4
+ export declare function createFoundryOntologyBackendAdapter(opts: {
5
+ client: OntologyClient;
6
+ ir: OntologyIR;
7
+ }): OntologyBackendAdapter;
8
+ export type CreateFoundryOntologyBackendOptions<Context extends Record<string, unknown> = Record<string, unknown>> = {
9
+ client: OntologyClient;
10
+ } | {
11
+ createClient: (ir: OntologyIR, context: Context) => OntologyClient | Promise<OntologyClient>;
12
+ };
13
+ export declare function createFoundryOntologyBackend<Context extends Record<string, unknown> = Record<string, unknown>>(opts: CreateFoundryOntologyBackendOptions<Context>): OntologyBackendAdapterProvider<Context>;
14
+ //# sourceMappingURL=createFoundryOntologyBackendAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFoundryOntologyBackendAdapter.d.ts","sourceRoot":"","sources":["../../src/adapter/createFoundryOntologyBackendAdapter.ts"],"names":[],"mappings":"AASA,OAAO,EAGH,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EAEnC,KAAK,UAAU,EAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAOlE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS9D;AAmED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE;IACtD,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;CAClB,GAAG,sBAAsB,CA2OzB;AAED,MAAM,MAAM,mCAAmC,CAC3C,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAE/D;IACI,MAAM,EAAE,cAAc,CAAC;CAC1B,GACD;IACI,YAAY,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAChG,CAAC;AAER,wBAAgB,4BAA4B,CACxC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,IAAI,EAAE,mCAAmC,CAAC,OAAO,CAAC,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAM7F"}
@@ -0,0 +1,251 @@
1
+ import { invariant } from "@bobbyfidz/panic";
2
+ import { MediaSets } from "@osdk/foundry.mediasets";
3
+ import { Actions, Attachments, MediaReferenceProperties, Queries, } from "@osdk/foundry.ontologies";
4
+ import { NonRetryableError, } from "@party-stack/ontology";
5
+ import { Temporal } from "temporal-polyfill";
6
+ import { getFoundryActionOverrideParameterMapping } from "../meta/convertMetaActionType.js";
7
+ import { toFoundryActionTypeName } from "../utils/actionTypeName.js";
8
+ import { createFoundryCodec } from "./foundryCodec.js";
9
+ import { decodeFoundryMediaId, mediaReferenceToFoundryMediaId } from "./foundryMediaId.js";
10
+ import { objectCollectionOptions } from "./objectCollectionOptions.js";
11
+ export function isFoundryNotFoundError(error) {
12
+ if (typeof error !== "object" || error === null) {
13
+ return false;
14
+ }
15
+ const foundryError = error;
16
+ return foundryError.statusCode === 404 || foundryError.errorCode === "NOT_FOUND";
17
+ }
18
+ function serializeOverrideValue(value) {
19
+ if (typeof value === "string") {
20
+ return value;
21
+ }
22
+ if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
23
+ return String(value);
24
+ }
25
+ if (value instanceof Date) {
26
+ return value.toISOString();
27
+ }
28
+ if (value instanceof Temporal.Instant) {
29
+ return value.toString();
30
+ }
31
+ if (value instanceof Temporal.PlainDate || value instanceof Temporal.PlainDateTime) {
32
+ return value.toString();
33
+ }
34
+ return JSON.stringify(value) ?? "";
35
+ }
36
+ function getApplyActionOperationId(result) {
37
+ const operationId = result.operationId;
38
+ if (typeof operationId !== "string" || operationId.length === 0) {
39
+ throw new Error("Foundry apply action response did not include an operationId.");
40
+ }
41
+ return operationId;
42
+ }
43
+ function getAttachmentName(attachment) {
44
+ if (typeof attachment !== "object" || attachment === null || Array.isArray(attachment)) {
45
+ return undefined;
46
+ }
47
+ const name = attachment.name;
48
+ return typeof name === "string" ? name : undefined;
49
+ }
50
+ function getAttachmentProviderType(target) {
51
+ return target?.meta?.type === "media" ? "media" : "attachment";
52
+ }
53
+ function getEditedObjectTypes(edits) {
54
+ const objectTypes = new Set();
55
+ if (!edits || edits.type !== "edits") {
56
+ return objectTypes;
57
+ }
58
+ for (const edit of edits.edits) {
59
+ if (edit.type === "addObject" || edit.type === "modifyObject" || edit.type === "deleteObject") {
60
+ objectTypes.add(edit.objectType);
61
+ }
62
+ }
63
+ return objectTypes;
64
+ }
65
+ export function createFoundryOntologyBackendAdapter(opts) {
66
+ const codec = createFoundryCodec(opts.ir);
67
+ const attachments = {
68
+ generateAttachmentId: (_, { target }) => {
69
+ invariant(target, "A property target must be passed to generateAttachmentId in the Foundry adapter so that we know whether to target attachments or media.");
70
+ const meta = target.meta;
71
+ if (meta.type === "attachment") {
72
+ return `ri.attachments.main.attachment.${crypto.randomUUID()}`;
73
+ }
74
+ return crypto.randomUUID();
75
+ },
76
+ canMaterializeAttachment: (_, { target }) => getAttachmentProviderType(target) !== "media",
77
+ materializeAttachment: async (attachment, blob, { target }) => {
78
+ invariant(target, "A property target must be passed to materializeAttachment in the Foundry adapter so that we know whether to target attachments or media.");
79
+ invariant(getAttachmentProviderType(target) === "attachment", "Foundry media references must be uploaded during action execution.");
80
+ try {
81
+ await Attachments.get(opts.client, attachment.id);
82
+ return;
83
+ }
84
+ catch {
85
+ // The stable attachment RID has not been materialized yet.
86
+ }
87
+ await Attachments.uploadWithRid(opts.client, attachment.id, blob, {
88
+ filename: getAttachmentName(attachment) ?? "",
89
+ preview: true,
90
+ });
91
+ },
92
+ getAttachmentContent: async (attachment) => {
93
+ const media = decodeFoundryMediaId(attachment.id);
94
+ if (media) {
95
+ const source = attachment.source;
96
+ invariant(source, `Foundry media attachment "${attachment.id}" is missing its object property source.`);
97
+ const response = await MediaReferenceProperties.getMediaContent(opts.client, opts.client.ontologyRid, source.objectType, String(source.primaryKey), source.property, { preview: true });
98
+ return response.blob();
99
+ }
100
+ const contents = await Attachments.read(opts.client, attachment.id);
101
+ return contents.blob();
102
+ },
103
+ getAttachmentMetadata: async (attachment) => {
104
+ const media = decodeFoundryMediaId(attachment.id);
105
+ if (media) {
106
+ const source = attachment.source;
107
+ invariant(source, `Foundry media attachment "${attachment.id}" is missing its object property source.`);
108
+ const info = await MediaReferenceProperties.getMediaMetadata(opts.client, opts.client.ontologyRid, source.objectType, String(source.primaryKey), source.property, { preview: true });
109
+ return {
110
+ ...attachment,
111
+ size: Number(info.sizeBytes),
112
+ type: info.mediaType,
113
+ name: info.path,
114
+ };
115
+ }
116
+ const metadata = await Attachments.get(opts.client, attachment.id);
117
+ return {
118
+ id: attachment.id,
119
+ size: Number(metadata.sizeBytes),
120
+ type: metadata.mediaType,
121
+ name: metadata.filename,
122
+ };
123
+ },
124
+ };
125
+ return {
126
+ name: "foundry",
127
+ getCollectionOptions: (objectType) => {
128
+ const objectTypeDef = opts.ir.objectTypes.find((ot) => ot.name === objectType);
129
+ return objectCollectionOptions({
130
+ client: opts.client,
131
+ objectType,
132
+ primaryKeyProperty: objectTypeDef.primaryKey,
133
+ selectedProperties: objectTypeDef.properties.map((property) => property.name),
134
+ decodeObject: (object) => codec.decodeObject(objectType, object),
135
+ });
136
+ },
137
+ applyAction: async (name, parameters, context) => {
138
+ const actionType = opts.ir.actionTypes.find((actionType) => actionType.name === name);
139
+ const overrideMapping = getFoundryActionOverrideParameterMapping(actionType);
140
+ const parameterTypes = new Map(actionType.parameters.map((p) => [p.name, p.type]));
141
+ const mediaReferences = new Map();
142
+ const attachmentIdMappings = [];
143
+ await Promise.all([
144
+ ...new Map((context.attachmentUploads ?? []).map((upload) => [upload.attachment.id, upload])).values(),
145
+ ].map(async (upload) => {
146
+ invariant(getAttachmentProviderType(upload.target) === "media", `Foundry attachment "${upload.attachment.id}" was not materialized before action execution.`);
147
+ const reference = await MediaSets.uploadMedia(opts.client, upload.blob, {
148
+ filename: getAttachmentName(upload.attachment) ?? upload.attachment.id,
149
+ preview: true,
150
+ });
151
+ mediaReferences.set(upload.attachment.id, reference);
152
+ attachmentIdMappings.push({
153
+ localId: upload.attachment.id,
154
+ remoteId: mediaReferenceToFoundryMediaId(reference),
155
+ });
156
+ }));
157
+ const actionCodec = createFoundryCodec(opts.ir, {
158
+ resolveMediaReference: (id) => mediaReferences.get(id),
159
+ });
160
+ const requestParameters = {};
161
+ const uniqueIdentifierLinkIdValues = {};
162
+ let actionExecutionTime;
163
+ for (const [parameterName, value] of Object.entries(parameters)) {
164
+ if (overrideMapping.uuidByParameterName.has(parameterName)) {
165
+ if (value !== undefined) {
166
+ uniqueIdentifierLinkIdValues[overrideMapping.uuidByParameterName.get(parameterName)] = serializeOverrideValue(value);
167
+ }
168
+ continue;
169
+ }
170
+ if (overrideMapping.nowParameterName === parameterName) {
171
+ if (value !== undefined) {
172
+ actionExecutionTime = serializeOverrideValue(value);
173
+ }
174
+ continue;
175
+ }
176
+ if (value !== undefined) {
177
+ const paramType = parameterTypes.get(parameterName);
178
+ requestParameters[parameterName] = paramType
179
+ ? actionCodec.encodeValue(paramType, value)
180
+ : value;
181
+ }
182
+ }
183
+ let result;
184
+ try {
185
+ result = await Actions.applyWithOverrides(opts.client, opts.client.ontologyRid, toFoundryActionTypeName(name), {
186
+ request: {
187
+ options: {
188
+ mode: "VALIDATE_AND_EXECUTE",
189
+ returnEdits: "ALL_V2_WITH_DELETIONS",
190
+ },
191
+ parameters: requestParameters,
192
+ },
193
+ overrides: {
194
+ uniqueIdentifierLinkIdValues,
195
+ actionExecutionTime,
196
+ },
197
+ },
198
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
199
+ {
200
+ preview: true,
201
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
202
+ });
203
+ }
204
+ catch (error) {
205
+ if (isFoundryNotFoundError(error)) {
206
+ throw new NonRetryableError(error instanceof Error ? error.message : "Foundry action target was not found.", { cause: error });
207
+ }
208
+ throw error;
209
+ }
210
+ if (result.validation?.result === "INVALID") {
211
+ throw new NonRetryableError("Invalid Action arguments.");
212
+ }
213
+ if (context) {
214
+ const operationId = getApplyActionOperationId(result);
215
+ const targetCollections = Array.from(getEditedObjectTypes(result.edits))
216
+ .map((objectType) => context.objects[objectType])
217
+ .filter((collection) => Boolean(collection?.utils?.awaitOperationId));
218
+ await Promise.all(targetCollections.map((collection) => collection.utils.awaitOperationId(operationId)));
219
+ }
220
+ return attachmentIdMappings.length > 0 ? { attachmentIdMappings } : undefined;
221
+ },
222
+ runQueryFunction: async (name, parameters) => {
223
+ const queryFunctionType = opts.ir.queryFunctionTypes.find((candidate) => candidate.name === name);
224
+ if (!queryFunctionType) {
225
+ throw new Error(`Unknown Foundry query function type "${name}".`);
226
+ }
227
+ const parameterTypes = new Map(queryFunctionType.parameters.map((parameter) => [parameter.name, parameter.type]));
228
+ const requestParameters = {};
229
+ for (const [parameterName, value] of Object.entries(parameters)) {
230
+ if (value === undefined)
231
+ continue;
232
+ const parameterType = parameterTypes.get(parameterName);
233
+ requestParameters[parameterName] = parameterType
234
+ ? codec.encodeValue(parameterType, value)
235
+ : value;
236
+ }
237
+ const result = await Queries.execute(opts.client, opts.client.ontologyRid, name, {
238
+ parameters: requestParameters,
239
+ });
240
+ return codec.decodeValue(queryFunctionType.returnType, result.value);
241
+ },
242
+ attachments,
243
+ };
244
+ }
245
+ export function createFoundryOntologyBackend(opts) {
246
+ return async (ir, context) => createFoundryOntologyBackendAdapter({
247
+ ir,
248
+ client: "client" in opts ? opts.client : await opts.createClient(ir, context),
249
+ });
250
+ }
251
+ //# sourceMappingURL=createFoundryOntologyBackendAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFoundryOntologyBackendAdapter.js","sourceRoot":"","sources":["../../src/adapter/createFoundryOntologyBackendAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=createFoundryOntologyBackendAdapter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFoundryOntologyBackendAdapter.test.d.ts","sourceRoot":"","sources":["../../src/adapter/createFoundryOntologyBackendAdapter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,175 @@
1
+ import { o } from "@party-stack/ontology";
2
+ import { beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { createFoundryOntologyBackendAdapter, isFoundryNotFoundError, } from "./createFoundryOntologyBackendAdapter.js";
4
+ import { encodeFoundryMediaId } from "./foundryMediaId.js";
5
+ const mediaMocks = vi.hoisted(() => ({
6
+ uploadMedia: vi.fn(),
7
+ }));
8
+ const ontologyMocks = vi.hoisted(() => ({
9
+ applyWithOverrides: vi.fn(),
10
+ getMediaContent: vi.fn(),
11
+ getMediaMetadata: vi.fn(),
12
+ }));
13
+ vi.mock("@osdk/foundry.mediasets", () => ({
14
+ MediaSets: mediaMocks,
15
+ }));
16
+ vi.mock("@osdk/foundry.ontologies", async (importOriginal) => {
17
+ const original = await importOriginal();
18
+ return {
19
+ ...original,
20
+ Actions: {
21
+ ...original.Actions,
22
+ applyWithOverrides: ontologyMocks.applyWithOverrides,
23
+ },
24
+ MediaReferenceProperties: {
25
+ ...original.MediaReferenceProperties,
26
+ getMediaContent: ontologyMocks.getMediaContent,
27
+ getMediaMetadata: ontologyMocks.getMediaMetadata,
28
+ },
29
+ };
30
+ });
31
+ beforeEach(() => {
32
+ vi.clearAllMocks();
33
+ });
34
+ describe("isFoundryNotFoundError", () => {
35
+ it("recognizes Foundry HTTP and API not-found errors", () => {
36
+ expect(isFoundryNotFoundError({
37
+ statusCode: 404,
38
+ })).toBe(true);
39
+ expect(isFoundryNotFoundError({
40
+ errorCode: "NOT_FOUND",
41
+ })).toBe(true);
42
+ expect(isFoundryNotFoundError({
43
+ statusCode: 500,
44
+ })).toBe(false);
45
+ });
46
+ });
47
+ describe("Foundry media attachments", () => {
48
+ const mediaId = {
49
+ mediaSetRid: "ri.mio.main.media-set.1",
50
+ mediaSetViewRid: "ri.mio.main.view.2",
51
+ mediaItemRid: "ri.mio.main.media-item.3",
52
+ };
53
+ const mediaReference = {
54
+ mimeType: "image/png",
55
+ reference: {
56
+ type: "mediaSetViewItem",
57
+ mediaSetViewItem: mediaId,
58
+ },
59
+ };
60
+ const mediaType = o.attachment({
61
+ meta: { type: "media" },
62
+ });
63
+ const adapter = createFoundryOntologyBackendAdapter({
64
+ client: {
65
+ ontologyRid: "ri.ontology.main.1",
66
+ },
67
+ ir: {
68
+ types: [],
69
+ objectTypes: [],
70
+ linkTypes: [],
71
+ actionTypes: [
72
+ {
73
+ name: "createMedia",
74
+ displayName: "Create Media",
75
+ parameters: [
76
+ {
77
+ name: "media",
78
+ displayName: "Media",
79
+ type: mediaType,
80
+ },
81
+ ],
82
+ logic: [],
83
+ },
84
+ ],
85
+ queryFunctionTypes: [],
86
+ },
87
+ });
88
+ const attachments = adapter.attachments;
89
+ const target = mediaType.value;
90
+ it("routes media through action attachment uploads", () => {
91
+ expect(attachments.canMaterializeAttachment?.({
92
+ id: "local-id",
93
+ type: "image/png",
94
+ }, { target })).toBe(false);
95
+ });
96
+ it("uploads media during action execution and returns a tokenless mapping", async () => {
97
+ const temporaryReference = {
98
+ ...mediaReference,
99
+ reference: {
100
+ ...mediaReference.reference,
101
+ mediaSetViewItem: {
102
+ ...mediaId,
103
+ token: "temporary-token",
104
+ },
105
+ },
106
+ };
107
+ mediaMocks.uploadMedia.mockResolvedValue(temporaryReference);
108
+ ontologyMocks.applyWithOverrides.mockResolvedValue({
109
+ operationId: "operation-1",
110
+ validation: { result: "VALID" },
111
+ edits: {
112
+ type: "edits",
113
+ edits: [],
114
+ },
115
+ });
116
+ const blob = new Blob(["image"], {
117
+ type: "image/png",
118
+ });
119
+ const attachment = {
120
+ id: "local-id",
121
+ name: "image.png",
122
+ type: "image/png",
123
+ };
124
+ await expect(adapter.applyAction("createMedia", { media: attachment }, {
125
+ objects: {},
126
+ attachmentUploads: [
127
+ {
128
+ attachment,
129
+ target,
130
+ blob,
131
+ },
132
+ ],
133
+ })).resolves.toEqual({
134
+ attachmentIdMappings: [
135
+ {
136
+ localId: "local-id",
137
+ remoteId: encodeFoundryMediaId(mediaId),
138
+ },
139
+ ],
140
+ });
141
+ expect(ontologyMocks.applyWithOverrides.mock.calls[0]?.[3]).toMatchObject({
142
+ request: {
143
+ parameters: {
144
+ media: temporaryReference,
145
+ },
146
+ },
147
+ });
148
+ });
149
+ it("reads confirmed media through its object property source", async () => {
150
+ const id = encodeFoundryMediaId(mediaId);
151
+ const attachment = {
152
+ id,
153
+ type: "image/png",
154
+ source: {
155
+ objectType: "Task",
156
+ primaryKey: "task-1",
157
+ property: "media",
158
+ },
159
+ };
160
+ ontologyMocks.getMediaContent.mockResolvedValue(new Response(new Blob(["image"])));
161
+ ontologyMocks.getMediaMetadata.mockResolvedValue({
162
+ sizeBytes: 5,
163
+ mediaType: "image/png",
164
+ path: undefined,
165
+ });
166
+ await expect(attachments.getAttachmentContent(attachment).then((blob) => blob.text())).resolves.toBe("image");
167
+ await expect(attachments.getAttachmentMetadata(attachment)).resolves.toEqual({
168
+ ...attachment,
169
+ size: 5,
170
+ name: undefined,
171
+ });
172
+ expect(ontologyMocks.getMediaContent).toHaveBeenCalledWith(expect.anything(), "ri.ontology.main.1", "Task", "task-1", "media", { preview: true });
173
+ });
174
+ });
175
+ //# sourceMappingURL=createFoundryOntologyBackendAdapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFoundryOntologyBackendAdapter.test.js","sourceRoot":"","sources":["../../src/adapter/createFoundryOntologyBackendAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EACH,mCAAmC,EACnC,sBAAsB,GACzB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;CACvB,CAAC,CAAC,CAAC;AACJ,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;IACxB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC5B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,SAAS,EAAE,UAAU;CACxB,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IACzD,MAAM,QAAQ,GAAG,MAAM,cAAc,EAA6C,CAAC;IACnF,OAAO;QACH,GAAG,QAAQ;QACX,OAAO,EAAE;YACL,GAAG,QAAQ,CAAC,OAAO;YACnB,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;SACvD;QACD,wBAAwB,EAAE;YACtB,GAAG,QAAQ,CAAC,wBAAwB;YACpC,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;SACnD;KACJ,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,GAAG,EAAE;IACZ,EAAE,CAAC,aAAa,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,CACF,sBAAsB,CAAC;YACnB,UAAU,EAAE,GAAG;SAClB,CAAC,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACF,sBAAsB,CAAC;YACnB,SAAS,EAAE,WAAW;SACzB,CAAC,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACF,sBAAsB,CAAC;YACnB,UAAU,EAAE,GAAG;SAClB,CAAC,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACvC,MAAM,OAAO,GAAG;QACZ,WAAW,EAAE,yBAAyB;QACtC,eAAe,EAAE,oBAAoB;QACrC,YAAY,EAAE,0BAA0B;KAC3C,CAAC;IACF,MAAM,cAAc,GAAG;QACnB,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE;YACP,IAAI,EAAE,kBAA2B;YACjC,gBAAgB,EAAE,OAAO;SAC5B;KACJ,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC;QAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;KAC1B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,mCAAmC,CAAC;QAChD,MAAM,EAAE;YACJ,WAAW,EAAE,oBAAoB;SAClB;QACnB,EAAE,EAAE;YACA,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,EAAE;YACb,WAAW,EAAE;gBACT;oBACI,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,cAAc;oBAC3B,UAAU,EAAE;wBACR;4BACI,IAAI,EAAE,OAAO;4BACb,WAAW,EAAE,OAAO;4BACpB,IAAI,EAAE,SAAS;yBAClB;qBACJ;oBACD,KAAK,EAAE,EAAE;iBACZ;aACJ;YACD,kBAAkB,EAAE,EAAE;SACzB;KACJ,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,OAAO,CAAC,WAAY,CAAC;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;IAE/B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,CACF,WAAW,CAAC,wBAAwB,EAAE,CAClC;YACI,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,WAAW;SACpB,EACD,EAAE,MAAM,EAAE,CACb,CACJ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,kBAAkB,GAAG;YACvB,GAAG,cAAc;YACjB,SAAS,EAAE;gBACP,GAAG,cAAc,CAAC,SAAS;gBAC3B,gBAAgB,EAAE;oBACd,GAAG,OAAO;oBACV,KAAK,EAAE,iBAAiB;iBAC3B;aACJ;SACJ,CAAC;QACF,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QAC7D,aAAa,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;YAC/C,WAAW,EAAE,aAAa;YAC1B,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;YAC/B,KAAK,EAAE;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE;aACZ;SACJ,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;YAC7B,IAAI,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,MAAM,UAAU,GAAG;YACf,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW;SACpB,CAAC;QAEF,MAAM,MAAM,CACR,OAAO,CAAC,WAAW,CACf,aAAa,EACb,EAAE,KAAK,EAAE,UAAU,EAAE,EACrB;YACI,OAAO,EAAE,EAAE;YACX,iBAAiB,EAAE;gBACf;oBACI,UAAU;oBACV,MAAM;oBACN,IAAI;iBACP;aACJ;SACJ,CACJ,CACJ,CAAC,QAAQ,CAAC,OAAO,CAAC;YACf,oBAAoB,EAAE;gBAClB;oBACI,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC;iBAC1C;aACJ;SACJ,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACtE,OAAO,EAAE;gBACL,UAAU,EAAE;oBACR,KAAK,EAAE,kBAAkB;iBAC5B;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG;YACf,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE;gBACJ,UAAU,EAAE,MAAM;gBAClB,UAAU,EAAE,QAAQ;gBACpB,QAAQ,EAAE,OAAO;aACpB;SACJ,CAAC;QACF,aAAa,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;YAC7C,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,WAAW;YACtB,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAChG,OAAO,CACV,CAAC;QACF,MAAM,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YACzE,GAAG,UAAU;YACb,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,oBAAoB,CACtD,MAAM,CAAC,QAAQ,EAAE,EACjB,oBAAoB,EACpB,MAAM,EACN,QAAQ,EACR,OAAO,EACP,EAAE,OAAO,EAAE,IAAI,EAAE,CACpB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { OntologyIR, TypeDef } from "@party-stack/ontology";
2
+ import type { MediaReference } from "@osdk/foundry.core";
2
3
  import type { OntologyObjectV2 } from "@osdk/foundry.ontologies";
3
4
  type FoundryObjectRecord = Record<string, unknown>;
4
5
  /** @deprecated Use {@link FoundryCodec} instead. */
@@ -7,8 +8,11 @@ export type FoundryObjectDecoder = FoundryCodec;
7
8
  export declare const createFoundryObjectDecoder: typeof createFoundryCodec;
8
9
  export interface FoundryCodec {
9
10
  decodeObject: (objectType: string, object: OntologyObjectV2 | FoundryObjectRecord) => FoundryObjectRecord;
11
+ decodeValue: (type: TypeDef, value: unknown) => unknown;
10
12
  encodeValue: (type: TypeDef, value: unknown) => unknown;
11
13
  }
12
- export declare function createFoundryCodec(ir: OntologyIR): FoundryCodec;
14
+ export declare function createFoundryCodec(ir: OntologyIR, options?: {
15
+ resolveMediaReference?: (id: string) => MediaReference | undefined;
16
+ }): FoundryCodec;
13
17
  export {};
14
18
  //# sourceMappingURL=foundryCodec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"foundryCodec.d.ts","sourceRoot":"","sources":["../../src/adapter/foundryCodec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAErF,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAWnD,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEhD,0DAA0D;AAC1D,eAAO,MAAM,0BAA0B,2BAAqB,CAAC;AAE7D,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,KAAK,mBAAmB,CAAC;IAC1G,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3D;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,UAAU,GAAG,YAAY,CAuK/D"}
1
+ {"version":3,"file":"foundryCodec.d.ts","sourceRoot":"","sources":["../../src/adapter/foundryCodec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAErF,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAEhD,0DAA0D;AAC1D,eAAO,MAAM,0BAA0B,2BAAqB,CAAC;AAE7D,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,KAAK,mBAAmB,CAAC;IAC1G,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACxD,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3D;AAED,wBAAgB,kBAAkB,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,CAAC,EAAE;IACN,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;CACtE,GACF,YAAY,CAwKd"}