@party-stack/foundry-ontology 0.18.1 → 0.20.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 (203) hide show
  1. package/README.md +56 -16
  2. package/lib/adapter/backend.d.ts +35 -0
  3. package/lib/adapter/backend.d.ts.map +1 -0
  4. package/lib/adapter/backend.js +210 -0
  5. package/lib/adapter/backend.js.map +1 -0
  6. package/lib/adapter/encrypted.d.ts +12 -0
  7. package/lib/adapter/encrypted.d.ts.map +1 -0
  8. package/lib/adapter/encrypted.js +79 -0
  9. package/lib/adapter/encrypted.js.map +1 -0
  10. package/lib/adapter/foundryActionError.d.ts +7 -0
  11. package/lib/adapter/foundryActionError.d.ts.map +1 -0
  12. package/lib/adapter/foundryActionError.js +61 -0
  13. package/lib/adapter/foundryActionError.js.map +1 -0
  14. package/lib/adapter/foundryActionValidation.d.ts +4 -3
  15. package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
  16. package/lib/adapter/foundryActionValidation.js +71 -25
  17. package/lib/adapter/foundryActionValidation.js.map +1 -1
  18. package/lib/adapter/foundryCodec.d.ts +3 -5
  19. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  20. package/lib/adapter/foundryCodec.js +19 -7
  21. package/lib/adapter/foundryCodec.js.map +1 -1
  22. package/lib/adapter/foundryObjectSearch.d.ts +13 -0
  23. package/lib/adapter/foundryObjectSearch.d.ts.map +1 -0
  24. package/lib/adapter/foundryObjectSearch.js +57 -0
  25. package/lib/adapter/foundryObjectSearch.js.map +1 -0
  26. package/lib/adapter/index.d.ts +3 -4
  27. package/lib/adapter/index.js +3 -4
  28. package/lib/adapter/likeFilter.d.ts +10 -0
  29. package/lib/adapter/likeFilter.d.ts.map +1 -0
  30. package/lib/adapter/likeFilter.js +87 -0
  31. package/lib/adapter/likeFilter.js.map +1 -0
  32. package/lib/adapter/makeFoundryOntologyBackend.d.ts +76 -0
  33. package/lib/adapter/makeFoundryOntologyBackend.d.ts.map +1 -0
  34. package/lib/adapter/makeFoundryOntologyBackend.js +505 -0
  35. package/lib/adapter/makeFoundryOntologyBackend.js.map +1 -0
  36. package/lib/adapter/subsetFilter.d.ts +14 -0
  37. package/lib/adapter/subsetFilter.d.ts.map +1 -0
  38. package/lib/adapter/subsetFilter.js +105 -0
  39. package/lib/adapter/subsetFilter.js.map +1 -0
  40. package/lib/adapter/uploads.d.ts +25 -0
  41. package/lib/adapter/uploads.d.ts.map +1 -0
  42. package/lib/adapter/uploads.js +78 -0
  43. package/lib/adapter/uploads.js.map +1 -0
  44. package/lib/backend.d.ts +80 -0
  45. package/lib/backend.d.ts.map +1 -0
  46. package/lib/backend.js +34 -0
  47. package/lib/backend.js.map +1 -0
  48. package/lib/config/index.d.ts +8 -12
  49. package/lib/config/index.d.ts.map +1 -1
  50. package/lib/config/index.js +49 -52
  51. package/lib/config/index.js.map +1 -1
  52. package/lib/connectionOptions.d.ts +9 -0
  53. package/lib/connectionOptions.d.ts.map +1 -0
  54. package/lib/connectionOptions.js +1 -0
  55. package/lib/context.d.ts +21 -0
  56. package/lib/context.d.ts.map +1 -0
  57. package/lib/context.js +16 -0
  58. package/lib/context.js.map +1 -0
  59. package/lib/index.d.ts +7 -7
  60. package/lib/index.js +6 -7
  61. package/lib/meta/backend.d.ts +10 -0
  62. package/lib/meta/backend.d.ts.map +1 -0
  63. package/lib/meta/backend.js +161 -0
  64. package/lib/meta/backend.js.map +1 -0
  65. package/lib/meta/convertMetaActionType.d.ts +3 -2
  66. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  67. package/lib/meta/convertMetaActionType.js +3 -3
  68. package/lib/meta/convertMetaActionType.js.map +1 -1
  69. package/lib/meta/convertMetaLinkType.d.ts +2 -2
  70. package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
  71. package/lib/meta/convertMetaLinkType.js +13 -13
  72. package/lib/meta/convertMetaLinkType.js.map +1 -1
  73. package/lib/meta/convertMetaObjectType.d.ts +2 -2
  74. package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
  75. package/lib/meta/convertMetaObjectType.js +5 -1
  76. package/lib/meta/convertMetaObjectType.js.map +1 -1
  77. package/lib/meta/convertMetaQueryFunctionType.d.ts +1 -1
  78. package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
  79. package/lib/meta/convertMetaTypeDef.d.ts +1 -1
  80. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
  81. package/lib/meta/convertMetaTypeDef.js +7 -1
  82. package/lib/meta/convertMetaTypeDef.js.map +1 -1
  83. package/lib/meta/convertMetaValueType.d.ts +2 -2
  84. package/lib/meta/convertMetaValueType.d.ts.map +1 -1
  85. package/lib/meta/convertMetaValueType.js.map +1 -1
  86. package/lib/meta/convertOmsActionParameterMetadata.d.ts +1 -1
  87. package/lib/meta/convertOmsActionParameterMetadata.js +1 -1
  88. package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
  89. package/lib/meta/index.d.ts +2 -4
  90. package/lib/meta/index.js +2 -4
  91. package/lib/meta/listObjectTypes.d.ts +6 -0
  92. package/lib/meta/listObjectTypes.d.ts.map +1 -0
  93. package/lib/meta/listObjectTypes.js +13 -0
  94. package/lib/meta/listObjectTypes.js.map +1 -0
  95. package/lib/meta/loadActionTypeOmsMetadata.d.ts +1 -0
  96. package/lib/meta/loadActions.d.ts +7 -0
  97. package/lib/meta/loadActions.d.ts.map +1 -0
  98. package/lib/meta/loadActions.js +20 -0
  99. package/lib/meta/loadActions.js.map +1 -0
  100. package/lib/meta/loadEntities.d.ts +9 -0
  101. package/lib/meta/loadEntities.d.ts.map +1 -0
  102. package/lib/meta/loadEntities.js +73 -0
  103. package/lib/meta/loadEntities.js.map +1 -0
  104. package/lib/meta/loadQueryFunctions.d.ts +11 -0
  105. package/lib/meta/loadQueryFunctions.d.ts.map +1 -0
  106. package/lib/meta/loadQueryFunctions.js +18 -0
  107. package/lib/meta/loadQueryFunctions.js.map +1 -0
  108. package/lib/meta/planMetaLookup.d.ts +12 -0
  109. package/lib/meta/planMetaLookup.d.ts.map +1 -0
  110. package/lib/meta/planMetaLookup.js +44 -0
  111. package/lib/meta/planMetaLookup.js.map +1 -0
  112. package/lib/platform.d.ts +78 -0
  113. package/lib/platform.d.ts.map +1 -0
  114. package/lib/platform.js +116 -0
  115. package/lib/platform.js.map +1 -0
  116. package/lib/platformCollections.d.ts +68 -0
  117. package/lib/platformCollections.d.ts.map +1 -0
  118. package/lib/platformCollections.js +7 -0
  119. package/lib/platformCollections.js.map +1 -0
  120. package/lib/serviceConnector.d.ts +8 -0
  121. package/lib/serviceConnector.d.ts.map +1 -0
  122. package/lib/serviceConnector.js +105 -0
  123. package/lib/serviceConnector.js.map +1 -0
  124. package/lib/stagedWrites.d.ts +3 -2
  125. package/lib/stagedWrites.d.ts.map +1 -1
  126. package/lib/stagedWrites.js +30 -3
  127. package/lib/stagedWrites.js.map +1 -1
  128. package/lib/users/admin.d.ts +105 -0
  129. package/lib/users/admin.d.ts.map +1 -0
  130. package/lib/users/admin.js +35 -0
  131. package/lib/users/admin.js.map +1 -0
  132. package/lib/users/createFoundryUsersIntegration.d.ts +2 -2
  133. package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
  134. package/lib/users/createFoundryUsersIntegration.js +4 -6
  135. package/lib/users/createFoundryUsersIntegration.js.map +1 -1
  136. package/lib/users/foundryUser.d.ts +2 -2
  137. package/lib/users/foundryUser.js +1 -1
  138. package/lib/users/foundryUser.js.map +1 -1
  139. package/lib/users/index.d.ts +2 -3
  140. package/lib/users/index.js +2 -3
  141. package/lib/users/loadUserSubset.d.ts +8 -0
  142. package/lib/users/loadUserSubset.d.ts.map +1 -0
  143. package/lib/users/loadUserSubset.js +166 -0
  144. package/lib/users/loadUserSubset.js.map +1 -0
  145. package/lib/utils/AsyncIterable.d.ts +1 -1
  146. package/lib/utils/AsyncIterable.d.ts.map +1 -1
  147. package/lib/utils/AsyncIterable.js +11 -0
  148. package/lib/utils/AsyncIterable.js.map +1 -1
  149. package/package.json +17 -16
  150. package/lib/adapter/convertLoadSubsetOptions.d.ts +0 -8
  151. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +0 -1
  152. package/lib/adapter/convertLoadSubsetOptions.js +0 -178
  153. package/lib/adapter/convertLoadSubsetOptions.js.map +0 -1
  154. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +0 -29
  155. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +0 -1
  156. package/lib/adapter/createFoundryOntologyBackendAdapter.js +0 -311
  157. package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +0 -1
  158. package/lib/adapter/objectCollectionOptions.d.ts +0 -31
  159. package/lib/adapter/objectCollectionOptions.d.ts.map +0 -1
  160. package/lib/adapter/objectCollectionOptions.js +0 -448
  161. package/lib/adapter/objectCollectionOptions.js.map +0 -1
  162. package/lib/config/applyAttachmentConstraintOverrides.d.ts +0 -10
  163. package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +0 -1
  164. package/lib/config/applyAttachmentConstraintOverrides.js +0 -50
  165. package/lib/config/applyAttachmentConstraintOverrides.js.map +0 -1
  166. package/lib/connection.d.ts +0 -38
  167. package/lib/connection.d.ts.map +0 -1
  168. package/lib/connection.js +0 -195
  169. package/lib/connection.js.map +0 -1
  170. package/lib/installation/createFoundryBackendInstallation.d.ts +0 -29
  171. package/lib/installation/createFoundryBackendInstallation.d.ts.map +0 -1
  172. package/lib/installation/createFoundryBackendInstallation.js +0 -60
  173. package/lib/installation/createFoundryBackendInstallation.js.map +0 -1
  174. package/lib/installation/index.d.ts +0 -2
  175. package/lib/installation/index.js +0 -2
  176. package/lib/meta/actionTypeCollectionOptions.d.ts +0 -14
  177. package/lib/meta/actionTypeCollectionOptions.d.ts.map +0 -1
  178. package/lib/meta/actionTypeCollectionOptions.js +0 -58
  179. package/lib/meta/actionTypeCollectionOptions.js.map +0 -1
  180. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +0 -7
  181. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +0 -1
  182. package/lib/meta/convertActionTypeLoadSubsetOptions.js +0 -84
  183. package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +0 -1
  184. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +0 -11
  185. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +0 -1
  186. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +0 -43
  187. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +0 -1
  188. package/lib/meta/entityCollectionOptions.d.ts +0 -24
  189. package/lib/meta/entityCollectionOptions.d.ts.map +0 -1
  190. package/lib/meta/entityCollectionOptions.js +0 -69
  191. package/lib/meta/entityCollectionOptions.js.map +0 -1
  192. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +0 -12
  193. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +0 -1
  194. package/lib/meta/queryFunctionTypeCollectionOptions.js +0 -59
  195. package/lib/meta/queryFunctionTypeCollectionOptions.js.map +0 -1
  196. package/lib/users/createFoundryAdminOntologyRoute.d.ts +0 -55
  197. package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +0 -1
  198. package/lib/users/createFoundryAdminOntologyRoute.js +0 -33
  199. package/lib/users/createFoundryAdminOntologyRoute.js.map +0 -1
  200. package/lib/users/userCollectionOptions.d.ts +0 -24
  201. package/lib/users/userCollectionOptions.d.ts.map +0 -1
  202. package/lib/users/userCollectionOptions.js +0 -94
  203. package/lib/users/userCollectionOptions.js.map +0 -1
package/lib/context.js ADDED
@@ -0,0 +1,16 @@
1
+ import { o } from "@party-stack/ontology-spec";
2
+ //#region src/context.ts
3
+ const FOUNDRY_CURRENT_USER_CONTEXT_FIELD = "userId";
4
+ /** Foundry's currentUser action argument is the authenticated provider subject ID. */
5
+ const foundryContext = {
6
+ type: o.struct({ fields: [{
7
+ name: FOUNDRY_CURRENT_USER_CONTEXT_FIELD,
8
+ displayName: "User ID",
9
+ type: o.string({})
10
+ }] }),
11
+ partition: [[FOUNDRY_CURRENT_USER_CONTEXT_FIELD]]
12
+ };
13
+ //#endregion
14
+ export { FOUNDRY_CURRENT_USER_CONTEXT_FIELD, foundryContext };
15
+
16
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../src/context.ts"],"sourcesContent":["import { o, type OntologyIR } from \"@party-stack/ontology-spec\";\n\nexport const FOUNDRY_CURRENT_USER_CONTEXT_FIELD = \"userId\";\n\n/** Foundry's currentUser action argument is the authenticated provider subject ID. */\nexport const foundryContext = {\n type: o.struct({\n fields: [{ name: FOUNDRY_CURRENT_USER_CONTEXT_FIELD, displayName: \"User ID\", type: o.string({}) }],\n }),\n partition: [[FOUNDRY_CURRENT_USER_CONTEXT_FIELD]],\n} satisfies NonNullable<OntologyIR[\"context\"]>;\n"],"mappings":";;AAEA,MAAa,qCAAqC;;AAGlD,MAAa,iBAAiB;CAC1B,MAAM,EAAE,OAAO,EACX,QAAQ,CAAC;EAAE,MAAM;EAAoC,aAAa;EAAW,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE,CAAC,EACrG,CAAC;CACD,WAAW,CAAC,CAAC,kCAAkC,CAAC;AACpD"}
package/lib/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { CreateFoundryOntologyBackendAdapterOptions, CreateFoundryOntologyBackendOptions, FoundryUsersIntegration, createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, isFoundryNotFoundError } from "./adapter/createFoundryOntologyBackendAdapter.js";
2
- import { FoundryCodec, FoundryObjectDecoder, createFoundryCodec, createFoundryObjectDecoder } from "./adapter/foundryCodec.js";
3
- import { ObjectCollectionConfig, ObjectCollectionOpts, ObjectCollectionUtils, objectCollectionOptions } from "./adapter/objectCollectionOptions.js";
1
+ import { FoundryCodec, createFoundryCodec } from "./adapter/foundryCodec.js";
2
+ import { FoundryOntologyBackendOptions, FoundryUsersIntegration, isFoundryNotFoundError, makeFoundryOntologyBackend } from "./adapter/makeFoundryOntologyBackend.js";
4
3
  import "./adapter/index.js";
5
- import { CreateFoundryConnectionAdapterOptions, FoundryAuthenticationClient, FoundryClientCredentialsConnectionOptions, FoundryOAuthConnectionOptions, createFoundryConnectionAdapter } from "./connection.js";
6
- import { CreateFoundryBackendInstallationOptions, FoundryConnectionOptions, FoundryOntologyRoute, createFoundryBackendInstallation, createFoundryOntologyRoute } from "./installation/createFoundryBackendInstallation.js";
7
- import "./installation/index.js";
4
+ import { FoundryOAuthConnectionOptions } from "./connectionOptions.js";
5
+ import { makeFoundryServiceConnector } from "./serviceConnector.js";
6
+ import { makeFoundryBackend, makeFoundryConnectionClient, makeFoundryMetadataBackend } from "./backend.js";
8
7
  import { CreateFoundryStagedWriteMutatorTxOptions, FoundryStagedWriteClient, createFoundryStagedWriteMutatorTx, runFoundryOntologyMutator } from "./stagedWrites.js";
8
+ import { FoundryPlatformOntology, foundryPlatformOntology, makeFoundryPlatformBackend } from "./platform.js";
9
9
  export * from "@party-stack/foundry-client";
10
- export { type CreateFoundryBackendInstallationOptions, CreateFoundryConnectionAdapterOptions, CreateFoundryOntologyBackendAdapterOptions, CreateFoundryOntologyBackendOptions, CreateFoundryStagedWriteMutatorTxOptions, FoundryAuthenticationClient, FoundryClientCredentialsConnectionOptions, FoundryCodec, type FoundryConnectionOptions, FoundryOAuthConnectionOptions, FoundryObjectDecoder, type FoundryOntologyRoute, FoundryStagedWriteClient, FoundryUsersIntegration, ObjectCollectionConfig, ObjectCollectionOpts, ObjectCollectionUtils, createFoundryBackendInstallation, createFoundryCodec, createFoundryConnectionAdapter, createFoundryObjectDecoder, createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, createFoundryOntologyRoute, createFoundryStagedWriteMutatorTx, isFoundryNotFoundError, objectCollectionOptions, runFoundryOntologyMutator };
10
+ export { CreateFoundryStagedWriteMutatorTxOptions, FoundryCodec, type FoundryOAuthConnectionOptions, FoundryOntologyBackendOptions, type FoundryPlatformOntology, FoundryStagedWriteClient, FoundryUsersIntegration, createFoundryCodec, createFoundryStagedWriteMutatorTx, foundryPlatformOntology, isFoundryNotFoundError, makeFoundryBackend, makeFoundryConnectionClient, makeFoundryMetadataBackend, makeFoundryOntologyBackend, makeFoundryPlatformBackend, makeFoundryServiceConnector, runFoundryOntologyMutator };
package/lib/index.js CHANGED
@@ -1,10 +1,9 @@
1
- import { createFoundryConnectionAdapter } from "./connection.js";
2
- import { objectCollectionOptions } from "./adapter/objectCollectionOptions.js";
3
- import { createFoundryCodec, createFoundryObjectDecoder } from "./adapter/foundryCodec.js";
4
- import { createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, isFoundryNotFoundError } from "./adapter/createFoundryOntologyBackendAdapter.js";
1
+ import { createFoundryCodec } from "./adapter/foundryCodec.js";
2
+ import { isFoundryNotFoundError, makeFoundryOntologyBackend } from "./adapter/makeFoundryOntologyBackend.js";
3
+ import { makeFoundryServiceConnector } from "./serviceConnector.js";
4
+ import { makeFoundryBackend, makeFoundryConnectionClient, makeFoundryMetadataBackend } from "./backend.js";
5
5
  import "./adapter/index.js";
6
- import { createFoundryBackendInstallation, createFoundryOntologyRoute } from "./installation/createFoundryBackendInstallation.js";
7
- import "./installation/index.js";
8
6
  import { createFoundryStagedWriteMutatorTx, runFoundryOntologyMutator } from "./stagedWrites.js";
7
+ import { foundryPlatformOntology, makeFoundryPlatformBackend } from "./platform.js";
9
8
  export * from "@party-stack/foundry-client";
10
- export { createFoundryBackendInstallation, createFoundryCodec, createFoundryConnectionAdapter, createFoundryObjectDecoder, createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, createFoundryOntologyRoute, createFoundryStagedWriteMutatorTx, isFoundryNotFoundError, objectCollectionOptions, runFoundryOntologyMutator };
9
+ export { createFoundryCodec, createFoundryStagedWriteMutatorTx, foundryPlatformOntology, isFoundryNotFoundError, makeFoundryBackend, makeFoundryConnectionClient, makeFoundryMetadataBackend, makeFoundryOntologyBackend, makeFoundryPlatformBackend, makeFoundryServiceConnector, runFoundryOntologyMutator };
@@ -0,0 +1,10 @@
1
+ import { OntologyClient } from "@party-stack/foundry-client";
2
+ import { OntologyBackendService } from "@party-stack/ontology-backend";
3
+ //#region src/meta/backend.d.ts
4
+ export declare function makeFoundryMetadataBackend(options: {
5
+ client: OntologyClient;
6
+ refetchInterval?: number | false;
7
+ }): OntologyBackendService;
8
+ export type FoundryMetadataBackendOptions = Parameters<typeof makeFoundryMetadataBackend>[0];
9
+ //#endregion
10
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","names":[],"sources":["../../src/meta/backend.ts"],"mappings":";;;wBAmEgB,2BAA2B;EACvC,QAAQ;EACR;IACA;YAiHQ,gCAAgC,kBAAkB"}
@@ -0,0 +1,161 @@
1
+ import { foundryContext } from "../context.js";
2
+ import { toFoundryActionTypeName } from "../utils/actionTypeName.js";
3
+ import { convertFoundryMetaActionType } from "./convertMetaActionType.js";
4
+ import { fromPagination, toArray } from "../utils/AsyncIterable.js";
5
+ import { convertFoundryMetaQueryFunctionType } from "./convertMetaQueryFunctionType.js";
6
+ import { loadActionTypesFullMetadata } from "./loadActions.js";
7
+ import { loadActionTypeOmsMetadata } from "./loadActionTypeOmsMetadata.js";
8
+ import { planMetaLookup } from "./planMetaLookup.js";
9
+ import { loadFoundryMetaLinkTypes, loadFoundryMetaObjectTypes, loadFoundryMetaValueTypes } from "./loadEntities.js";
10
+ import { getQueryFunctionTypes, listQueryFunctionTypes } from "./loadQueryFunctions.js";
11
+ import { Effect, Redacted, Schema } from "effect";
12
+ import { ActionTypesV2 } from "@osdk/foundry.ontologies";
13
+ import { BackendError, classifyBackendFailure, makeOntologyBackend } from "@party-stack/ontology-backend";
14
+ import { compileObjectSubset, objectSubset } from "@party-stack/ontology-backend/subset";
15
+ import { isField } from "@party-stack/ontology-storage/tables";
16
+ import metaOntology from "@party-stack/ontology-spec/meta";
17
+ //#region src/meta/backend.ts
18
+ const failure = (operation, cause) => classifyBackendFailure(operation, cause);
19
+ function actionCandidates(predicate) {
20
+ if (!predicate) return;
21
+ if (predicate.op === "and" || predicate.op === "or") {
22
+ const children = predicate.predicates.map(actionCandidates);
23
+ if (predicate.op === "or" && children.some((child) => child === void 0)) return;
24
+ const supported = children.filter((child) => child !== void 0);
25
+ return supported.length === 1 ? supported[0] : supported.length ? {
26
+ type: predicate.op,
27
+ value: supported
28
+ } : void 0;
29
+ }
30
+ if (predicate.op === "in") {
31
+ const children = predicate.values.map((value) => actionCandidates({
32
+ op: "eq",
33
+ left: predicate.left,
34
+ right: value
35
+ }));
36
+ if (children.every((child) => child !== void 0)) return {
37
+ type: "or",
38
+ value: children
39
+ };
40
+ return;
41
+ }
42
+ if (predicate.op !== "eq" && predicate.op !== "like" && predicate.op !== "ilike") return;
43
+ const ref = isField(predicate.left) ? predicate.left : predicate.right;
44
+ const value = ref === predicate.left ? predicate.right : predicate.left;
45
+ if (!isField(ref) || typeof value !== "string") return;
46
+ const field = ref.path.join(".");
47
+ if (predicate.op === "eq" && field === "id") return {
48
+ type: "actionTypeRid",
49
+ value
50
+ };
51
+ if (field !== "name" && field !== "displayName") return;
52
+ const type = field === "name" ? "actionTypeApiName" : "actionTypeDisplayName";
53
+ const convert = (value) => field === "name" ? toFoundryActionTypeName(value) : value;
54
+ if (predicate.op === "eq") return {
55
+ type,
56
+ value: {
57
+ type: "exact",
58
+ value: convert(value)
59
+ }
60
+ };
61
+ if (value.includes("_") || value.includes("\\")) return;
62
+ const children = value.split("%").filter(Boolean).map((term) => ({
63
+ type,
64
+ value: {
65
+ type: "contains",
66
+ value: convert(term)
67
+ }
68
+ }));
69
+ return children.length === 1 ? children[0] : {
70
+ type: "and",
71
+ value: children
72
+ };
73
+ }
74
+ function makeFoundryMetadataBackend(options) {
75
+ const unsupported = (operation) => Effect.fail(new BackendError({
76
+ operation,
77
+ kind: "NotImplemented",
78
+ message: "Metadata is read-only.",
79
+ retryable: false
80
+ }));
81
+ return makeOntologyBackend({
82
+ ir: metaOntology,
83
+ name: "foundry-metadata",
84
+ sourceId: `foundry-metadata:${options.client.baseUrl}:${options.client.ontologyRid}`,
85
+ supportsIdempotency: false,
86
+ applyAction: () => unsupported("applyAction"),
87
+ queryFunction: () => unsupported("queryFunction"),
88
+ refresh: () => ({ pollIntervalMs: options.refetchInterval ?? false }),
89
+ loadSubset: Effect.fn("FoundryMetadata.loadSubset")(function* (request) {
90
+ const subset = yield* compileObjectSubset(metaOntology, request, void 0);
91
+ const type = metaOntology.objectTypes.find((type) => type.name === subset.objectType);
92
+ if (!type) return yield* new BackendError({
93
+ operation: "loadSubset",
94
+ kind: "InvalidRequest",
95
+ message: "Unknown metadata object type.",
96
+ retryable: false
97
+ });
98
+ if (subset.objectType === "Ontology") return {
99
+ complete: true,
100
+ rows: [{
101
+ key: "ontology",
102
+ value: {
103
+ id: "ontology",
104
+ context: foundryContext
105
+ }
106
+ }],
107
+ fulfilledSubset: objectSubset("Ontology")
108
+ };
109
+ const candidates = planMetaLookup(subset.query?.where, { name: "name" })?.values;
110
+ const values = yield* Effect.tryPromise({
111
+ try: async (signal) => {
112
+ const client = {
113
+ ...options.client,
114
+ fetch: (input, init) => options.client.fetch(input, {
115
+ ...init,
116
+ signal: init?.signal ? AbortSignal.any([signal, init.signal]) : signal
117
+ })
118
+ };
119
+ if (candidates?.length === 0) return [];
120
+ if (subset.objectType === "ActionType") {
121
+ const where = actionCandidates(subset.query?.where);
122
+ const actions = await toArray(fromPagination((pageSize, pageToken) => ActionTypesV2.search(client, client.ontologyRid, {
123
+ where,
124
+ pageSize,
125
+ pageToken,
126
+ fuzziness: { type: "off" }
127
+ }, { preview: true }), (page) => page.nextPageToken, (page) => page.data, 100));
128
+ const metadata = await loadActionTypesFullMetadata(client, actions);
129
+ const oms = await loadActionTypeOmsMetadata(client, metadata.map((value) => value.actionType.rid));
130
+ return metadata.map((value) => convertFoundryMetaActionType(value, oms.get(value.actionType.rid)));
131
+ }
132
+ if (subset.objectType === "QueryFunctionType") return (candidates ? await getQueryFunctionTypes({ client }, candidates) : await listQueryFunctionTypes({ client })).map(convertFoundryMetaQueryFunctionType);
133
+ return subset.objectType === "ObjectType" ? loadFoundryMetaObjectTypes(client, subset.query?.where) : subset.objectType === "ValueType" ? loadFoundryMetaValueTypes(client, subset.query?.where) : loadFoundryMetaLinkTypes(client, subset.query?.where);
134
+ },
135
+ catch: (cause) => failure("metadata.load", cause)
136
+ });
137
+ return {
138
+ complete: true,
139
+ fulfilledSubset: objectSubset(subset.objectType, { where: subset.query?.where }),
140
+ fetchedRows: values.length,
141
+ rows: yield* Effect.try({
142
+ try: () => values.map((value) => ({
143
+ key: Schema.decodeUnknownSync(Schema.Union([Schema.String, Schema.Finite]))(value[type.primaryKey]),
144
+ value
145
+ })),
146
+ catch: (cause) => new BackendError({
147
+ operation: "metadata.decode",
148
+ kind: "InvalidResponse",
149
+ message: "Foundry returned invalid metadata.",
150
+ retryable: false,
151
+ cause: Redacted.make(cause)
152
+ })
153
+ })
154
+ };
155
+ })
156
+ });
157
+ }
158
+ //#endregion
159
+ export { makeFoundryMetadataBackend };
160
+
161
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","names":["AsyncIterable.toArray","AsyncIterable.fromPagination"],"sources":["../../src/meta/backend.ts"],"sourcesContent":["import { ActionTypesV2 } from \"@osdk/foundry.ontologies\";\nimport { makeOntologyBackend } from \"@party-stack/ontology-backend\";\nimport {\n BackendError,\n classifyBackendFailure,\n type OntologyBackendService,\n} from \"@party-stack/ontology-backend\";\nimport { compileObjectSubset, objectSubset } from \"@party-stack/ontology-backend/subset\";\nimport metaOntology from \"@party-stack/ontology-spec/meta\";\nimport { isField } from \"@party-stack/ontology-storage/tables\";\nimport { Effect, Redacted, Schema } from \"effect\";\nimport { foundryContext } from \"../context.js\";\nimport { toFoundryActionTypeName } from \"../utils/actionTypeName.js\";\nimport * as AsyncIterable from \"../utils/AsyncIterable.js\";\nimport { convertFoundryMetaActionType } from \"./convertMetaActionType.js\";\nimport { convertFoundryMetaQueryFunctionType } from \"./convertMetaQueryFunctionType.js\";\nimport { loadActionTypesFullMetadata } from \"./loadActions.js\";\nimport { loadActionTypeOmsMetadata } from \"./loadActionTypeOmsMetadata.js\";\nimport {\n loadFoundryMetaLinkTypes,\n loadFoundryMetaObjectTypes,\n loadFoundryMetaValueTypes,\n} from \"./loadEntities.js\";\nimport { getQueryFunctionTypes, listQueryFunctionTypes } from \"./loadQueryFunctions.js\";\nimport { planMetaLookup } from \"./planMetaLookup.js\";\nimport type { ActionTypeSearchJsonQueryV2 } from \"@osdk/foundry.ontologies\";\nimport type { OntologyClient } from \"@party-stack/foundry-client\";\nimport type { ObjectSubset } from \"@party-stack/ontology-spec/query\";\nimport type { Predicate } from \"@party-stack/ontology-storage\";\n\nconst failure = (operation: string, cause: unknown) => classifyBackendFailure(operation, cause);\nfunction actionCandidates(predicate?: Predicate): ActionTypeSearchJsonQueryV2 | undefined {\n if (!predicate) return;\n if (predicate.op === \"and\" || predicate.op === \"or\") {\n const children = predicate.predicates.map(actionCandidates);\n if (predicate.op === \"or\" && children.some((child) => child === undefined)) return;\n const supported = children.filter((child) => child !== undefined);\n return supported.length === 1\n ? supported[0]\n : supported.length\n ? { type: predicate.op, value: supported }\n : undefined;\n }\n if (predicate.op === \"in\") {\n const children = predicate.values.map((value) =>\n actionCandidates({ op: \"eq\", left: predicate.left, right: value })\n );\n if (children.every((child) => child !== undefined)) return { type: \"or\", value: children };\n return;\n }\n if (predicate.op !== \"eq\" && predicate.op !== \"like\" && predicate.op !== \"ilike\") return;\n const ref = isField(predicate.left) ? predicate.left : predicate.right;\n const value = ref === predicate.left ? predicate.right : predicate.left;\n if (!isField(ref) || typeof value !== \"string\") return;\n const field = ref.path.join(\".\");\n if (predicate.op === \"eq\" && field === \"id\") return { type: \"actionTypeRid\", value };\n if (field !== \"name\" && field !== \"displayName\") return;\n const type = field === \"name\" ? (\"actionTypeApiName\" as const) : (\"actionTypeDisplayName\" as const);\n const convert = (value: string) => (field === \"name\" ? toFoundryActionTypeName(value) : value);\n if (predicate.op === \"eq\") return { type, value: { type: \"exact\", value: convert(value) } };\n if (value.includes(\"_\") || value.includes(\"\\\\\")) return;\n const children: ActionTypeSearchJsonQueryV2[] = value\n .split(\"%\")\n .filter(Boolean)\n .map((term) => ({ type, value: { type: \"contains\", value: convert(term) } }));\n return children.length === 1 ? children[0] : { type: \"and\", value: children };\n}\nexport function makeFoundryMetadataBackend(options: {\n client: OntologyClient;\n refetchInterval?: number | false;\n}): OntologyBackendService {\n const unsupported = (operation: string) =>\n Effect.fail(\n new BackendError({\n operation,\n kind: \"NotImplemented\",\n message: \"Metadata is read-only.\",\n retryable: false,\n })\n );\n return makeOntologyBackend({\n ir: metaOntology,\n name: \"foundry-metadata\",\n sourceId: `foundry-metadata:${options.client.baseUrl}:${options.client.ontologyRid}`,\n supportsIdempotency: false,\n applyAction: () => unsupported(\"applyAction\"),\n queryFunction: () => unsupported(\"queryFunction\"),\n refresh: () => ({ pollIntervalMs: options.refetchInterval ?? false }),\n loadSubset: Effect.fn(\"FoundryMetadata.loadSubset\")(function* (request: ObjectSubset) {\n const subset = yield* compileObjectSubset(metaOntology, request, undefined);\n const type = metaOntology.objectTypes.find((type) => type.name === subset.objectType);\n if (!type)\n return yield* new BackendError({\n operation: \"loadSubset\",\n kind: \"InvalidRequest\",\n message: \"Unknown metadata object type.\",\n retryable: false,\n });\n if (subset.objectType === \"Ontology\")\n return {\n complete: true,\n rows: [{ key: \"ontology\", value: { id: \"ontology\", context: foundryContext } }],\n fulfilledSubset: objectSubset(\"Ontology\"),\n };\n const candidates = planMetaLookup(subset.query?.where, { name: \"name\" })?.values;\n const values = yield* Effect.tryPromise({\n try: async (signal) => {\n const client: OntologyClient = {\n ...options.client,\n fetch: (input, init) =>\n options.client.fetch(input, {\n ...init,\n signal: init?.signal ? AbortSignal.any([signal, init.signal]) : signal,\n }),\n };\n if (candidates?.length === 0) return [];\n if (subset.objectType === \"ActionType\") {\n const where = actionCandidates(subset.query?.where);\n const actions = await AsyncIterable.toArray(\n AsyncIterable.fromPagination(\n (pageSize, pageToken: string | undefined) =>\n ActionTypesV2.search(\n client,\n client.ontologyRid,\n { where, pageSize, pageToken, fuzziness: { type: \"off\" } },\n { preview: true }\n ),\n (page) => page.nextPageToken,\n (page) => page.data,\n 100\n )\n );\n const metadata = await loadActionTypesFullMetadata(client, actions);\n const oms = await loadActionTypeOmsMetadata(\n client,\n metadata.map((value) => value.actionType.rid)\n );\n return metadata.map((value) =>\n convertFoundryMetaActionType(value, oms.get(value.actionType.rid))\n );\n }\n if (subset.objectType === \"QueryFunctionType\") {\n const types = candidates\n ? await getQueryFunctionTypes({ client }, candidates)\n : await listQueryFunctionTypes({ client });\n return types.map(convertFoundryMetaQueryFunctionType);\n }\n return subset.objectType === \"ObjectType\"\n ? loadFoundryMetaObjectTypes(client, subset.query?.where)\n : subset.objectType === \"ValueType\"\n ? loadFoundryMetaValueTypes(client, subset.query?.where)\n : loadFoundryMetaLinkTypes(client, subset.query?.where);\n },\n catch: (cause) => failure(\"metadata.load\", cause),\n });\n return {\n complete: true,\n fulfilledSubset: objectSubset(subset.objectType, {\n where: subset.query?.where,\n }),\n fetchedRows: values.length,\n rows: yield* Effect.try({\n try: () =>\n values.map((value) => ({\n key: Schema.decodeUnknownSync(Schema.Union([Schema.String, Schema.Finite]))(\n (value as unknown as Record<string, unknown>)[type.primaryKey]\n ),\n value: value as unknown as Record<string, unknown>,\n })),\n catch: (cause) =>\n new BackendError({\n operation: \"metadata.decode\",\n kind: \"InvalidResponse\",\n message: \"Foundry returned invalid metadata.\",\n retryable: false,\n cause: Redacted.make(cause),\n }),\n }),\n };\n }),\n });\n}\n\nexport type FoundryMetadataBackendOptions = Parameters<typeof makeFoundryMetadataBackend>[0];\n"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { ActionTypeOmsMetadata } from "./loadActionTypeOmsMetadata.js";
2
2
  import { ActionTypeFullMetadata } from "@osdk/foundry.ontologies";
3
- import { ActionTypeDef, MetaActionType } from "@party-stack/ontology";
3
+ import { ActionTypeDef } from "@party-stack/ontology-spec";
4
+ import { ActionType } from "@party-stack/ontology-spec/meta";
4
5
  //#region src/meta/convertMetaActionType.d.ts
5
6
  export declare function getFoundryActionOverrideParameterMapping(actionType: ActionTypeDef): {
6
7
  uuidByParameterName: Map<string, string>;
7
8
  nowParameterName?: string;
8
9
  };
9
- export declare function convertFoundryMetaActionType(actionType: ActionTypeFullMetadata, omsMetadata?: ActionTypeOmsMetadata): MetaActionType;
10
+ export declare function convertFoundryMetaActionType(actionType: ActionTypeFullMetadata, omsMetadata?: ActionTypeOmsMetadata): ActionType;
10
11
  //#endregion
11
12
  //# sourceMappingURL=convertMetaActionType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertMetaActionType.d.ts","names":[],"sources":["../../src/meta/convertMetaActionType.ts"],"mappings":";;;;wBA8egB,yCAAyC,YAAY;EACjE,qBAAqB;EACrB;;wBA4RY,6BACZ,YAAY,wBACZ,cAAc,wBACf"}
1
+ {"version":3,"file":"convertMetaActionType.d.ts","names":["MetaActionType"],"sources":["../../src/meta/convertMetaActionType.ts"],"mappings":";;;;;wBA8egB,yCAAyC,YAAY;EACjE,qBAAqB;EACrB;;wBA4RY,6BACZ,YAAY,wBACZ,cAAc,wBACfA"}
@@ -1,10 +1,10 @@
1
+ import { FOUNDRY_CURRENT_USER_CONTEXT_FIELD } from "../context.js";
1
2
  import { toOntologyActionTypeName } from "../utils/actionTypeName.js";
2
3
  import { convertOmsActionParameterDefaults, convertOmsActionParameterStringConstraint, convertOmsActionParameterStringSuggestions } from "./convertOmsActionParameterMetadata.js";
3
4
  import { foundryAttachmentMeta } from "./foundryAttachmentMetadata.js";
4
5
  import { Temporal } from "temporal-polyfill";
5
6
  import { fromBlueprintIconName } from "@party-stack/icons-blueprint";
6
7
  //#region src/meta/convertMetaActionType.ts
7
- const FOUNDRY_CURRENT_USER_CONTEXT_PATH = ["user"];
8
8
  const FOUNDRY_UUID_PARAMETER_PREFIX = "__uuid_";
9
9
  const FOUNDRY_NOW_PARAMETER_NAME = "__now";
10
10
  const FOUNDRY_LIST_ITEM_BINDING = "item";
@@ -375,7 +375,7 @@ function getAtExpression(source, path) {
375
375
  }
376
376
  function objectField(parameterName, path) {
377
377
  return getAtExpression({
378
- kind: "objectLookup",
378
+ kind: "lookup",
379
379
  value: { reference: inputReference(parameterName) }
380
380
  }, path);
381
381
  }
@@ -424,7 +424,7 @@ function convertLogicRuleArgument(argument, syntheticParameters) {
424
424
  };
425
425
  case "currentUser": return {
426
426
  kind: "contextReference",
427
- value: { name: FOUNDRY_CURRENT_USER_CONTEXT_PATH[0] }
427
+ value: { name: FOUNDRY_CURRENT_USER_CONTEXT_FIELD }
428
428
  };
429
429
  default: throw new Error(`Unsupported Foundry action argument "${argument.type}".`);
430
430
  }
@@ -1 +1 @@
1
- {"version":3,"file":"convertMetaActionType.js","names":["unsupported"],"sources":["../../src/meta/convertMetaActionType.ts"],"sourcesContent":["import { fromBlueprintIconName } from \"@party-stack/icons-blueprint\";\nimport { Temporal } from \"temporal-polyfill\";\nimport { toOntologyActionTypeName } from \"../utils/actionTypeName.js\";\nimport {\n convertOmsActionParameterDefaults,\n convertOmsActionParameterStringConstraint,\n convertOmsActionParameterStringSuggestions,\n} from \"./convertOmsActionParameterMetadata.js\";\nimport { foundryAttachmentMeta } from \"./foundryAttachmentMetadata.js\";\nimport type { ActionTypeOmsMetadata } from \"./loadActionTypeOmsMetadata.js\";\nimport type {\n ActionLogicRule,\n ActionParameterValidation,\n ActionParameterType,\n ActionTypeFullMetadata,\n LogicRuleArgument,\n OntologyDataType,\n StructFieldArgument,\n} from \"@osdk/foundry.ontologies\";\nimport type {\n ActionParameterDef,\n ActionTypeDef,\n Expression,\n MetaActionType,\n PropertyAssignment,\n StringConstraint,\n StringSuggestion,\n TypeDef,\n} from \"@party-stack/ontology\";\n\nconst FOUNDRY_CURRENT_USER_CONTEXT_PATH = [\"user\"];\nconst FOUNDRY_UUID_PARAMETER_PREFIX = \"__uuid_\";\nconst FOUNDRY_NOW_PARAMETER_NAME = \"__now\";\nconst FOUNDRY_LIST_ITEM_BINDING = \"item\";\n\nfunction maybeOptional(type: TypeDef, required: boolean): TypeDef {\n return required ? type : { kind: \"optional\", value: { type } };\n}\n\nfunction stringType(constraint?: StringConstraint, suggestions?: StringSuggestion[]): TypeDef {\n return {\n kind: \"string\",\n value: {\n constraint,\n suggestions,\n },\n };\n}\n\nfunction applyStringConstraintFallback(type: TypeDef, constraint: StringConstraint | undefined): TypeDef {\n if (!constraint) return type;\n switch (type.kind) {\n case \"string\":\n return type.value.constraint\n ? type\n : {\n ...type,\n value: {\n ...type.value,\n constraint,\n },\n };\n case \"optional\":\n return {\n ...type,\n value: {\n ...type.value,\n type: applyStringConstraintFallback(type.value.type, constraint),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n ...type.value,\n elementType: applyStringConstraintFallback(type.value.elementType, constraint),\n },\n };\n default:\n return type;\n }\n}\n\nfunction applyStringSuggestionsFallback(type: TypeDef, suggestions: StringSuggestion[] | undefined): TypeDef {\n if (!suggestions) return type;\n switch (type.kind) {\n case \"string\":\n return type.value.suggestions\n ? type\n : {\n ...type,\n value: {\n ...type.value,\n suggestions,\n },\n };\n case \"optional\":\n return {\n ...type,\n value: {\n ...type.value,\n type: applyStringSuggestionsFallback(type.value.type, suggestions),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n ...type.value,\n elementType: applyStringSuggestionsFallback(type.value.elementType, suggestions),\n },\n };\n default:\n return type;\n }\n}\n\nfunction applyOmsStructFieldValidation(\n type: TypeDef,\n omsMetadata: ActionTypeOmsMetadata | undefined,\n parameterName: string\n): TypeDef {\n if (!omsMetadata) return type;\n switch (type.kind) {\n case \"optional\":\n return {\n ...type,\n value: {\n ...type.value,\n type: applyOmsStructFieldValidation(type.value.type, omsMetadata, parameterName),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n ...type.value,\n elementType: applyOmsStructFieldValidation(\n type.value.elementType,\n omsMetadata,\n parameterName\n ),\n },\n };\n case \"struct\":\n return {\n ...type,\n value: {\n ...type.value,\n fields: type.value.fields.map((field) => ({\n ...field,\n type: applyStringSuggestionsFallback(\n applyStringConstraintFallback(\n field.type,\n convertOmsActionParameterStringConstraint(\n omsMetadata,\n parameterName,\n field.name\n )\n ),\n convertOmsActionParameterStringSuggestions(omsMetadata, parameterName, field.name)\n ),\n })),\n },\n };\n default:\n return type;\n }\n}\n\nfunction booleanType(): TypeDef {\n return { kind: \"boolean\", value: {} };\n}\n\nfunction integerType(): TypeDef {\n return { kind: \"integer\", value: {} };\n}\n\nfunction floatType(): TypeDef {\n return { kind: \"float\", value: {} };\n}\n\nfunction doubleType(): TypeDef {\n return { kind: \"double\", value: {} };\n}\n\nfunction dateType(): TypeDef {\n return { kind: \"date\", value: {} };\n}\n\nfunction timestampType(): TypeDef {\n return { kind: \"timestamp\", value: {} };\n}\n\nfunction geopointType(): TypeDef {\n return { kind: \"geopoint\", value: {} };\n}\n\nfunction attachmentType(type: \"attachment\" | \"media\"): TypeDef {\n return {\n kind: \"attachment\",\n value: { meta: foundryAttachmentMeta(type) },\n };\n}\n\nfunction createUniqueIdentifierParameterName(linkId: string): string {\n return `${FOUNDRY_UUID_PARAMETER_PREFIX}${encodeURIComponent(linkId)}`;\n}\n\nfunction getUniqueIdentifierLinkIdFromParameterName(parameterName: string): string | undefined {\n if (!parameterName.startsWith(FOUNDRY_UUID_PARAMETER_PREFIX)) {\n return undefined;\n }\n return decodeURIComponent(parameterName.slice(FOUNDRY_UUID_PARAMETER_PREFIX.length));\n}\n\nfunction convertActionParameterType(\n type: ActionParameterType,\n required = true,\n validation?: ActionParameterValidation\n): TypeDef {\n const allowedValues = validation?.defaultValidation.allowedValues;\n if (allowedValues?.type === \"valueType\") {\n return maybeOptional(\n {\n kind: \"ref\",\n value: { name: allowedValues.apiName },\n },\n required\n );\n }\n\n const baseType: TypeDef = (() => {\n switch (type.type) {\n case \"string\":\n // TODO: Convert Foundry \"user input\" parameters to a principal\n // reference once Ontologies V2 exposes that setting in action\n // metadata. It currently returns an unconstrained string.\n // https://valinor-enterprises.slack.com/archives/C08549X3VDM/p1787718253341589\n return stringType(\n convertActionParameterStringConstraint(validation),\n convertActionParameterStringSuggestions(validation)\n );\n case \"boolean\":\n return booleanType();\n case \"integer\":\n case \"long\":\n return integerType();\n case \"double\":\n return doubleType();\n case \"decimal\":\n // Preserve the exact value until Party Stack has a decimal\n // type with explicit precision and scale.\n return stringType();\n case \"date\":\n return dateType();\n case \"timestamp\":\n return timestampType();\n case \"attachment\":\n return attachmentType(\"attachment\");\n case \"mediaReference\":\n return attachmentType(\"media\");\n case \"geohash\":\n return geopointType();\n case \"geoshape\":\n case \"marking\":\n return stringType();\n case \"vector\":\n return {\n kind: \"list\",\n value: { elementType: doubleType() },\n };\n case \"array\":\n return {\n kind: \"list\",\n value: { elementType: convertActionParameterType(type.subType) },\n };\n case \"struct\":\n return {\n kind: \"struct\",\n value: {\n fields: type.fields.map((field, index) => ({\n name: field.name ?? `field${index + 1}`,\n displayName: field.name ?? `Field ${index + 1}`,\n type: convertOntologyDataType(field.fieldType, field.required),\n })),\n },\n };\n case \"object\":\n return {\n kind: \"objectReference\",\n value: { objectType: type.objectTypeApiName },\n };\n case \"objectType\":\n case \"interfaceObject\":\n case \"objectSet\":\n case \"scenarioReference\":\n return stringType();\n default: {\n const unsupported: never = type;\n return unsupported;\n }\n }\n })();\n\n return maybeOptional(baseType, required);\n}\n\nfunction convertActionParameterStringConstraint(\n validation?: ActionParameterValidation\n): StringConstraint | undefined {\n const allowedValues = validation?.defaultValidation.allowedValues;\n if (allowedValues?.type === \"oneOf\" && !allowedValues.otherValuesAllowed) {\n const options = allowedValues.options.flatMap((option) => {\n const value: unknown = option.value;\n return typeof value === \"string\" ? [{ value, label: option.displayName }] : [];\n });\n return options.length > 0\n ? {\n kind: \"enum\",\n value: { options },\n }\n : undefined;\n }\n if (allowedValues?.type === \"text\" && allowedValues.regex) {\n return {\n kind: \"regex\",\n value: { regex: allowedValues.regex },\n };\n }\n return undefined;\n}\n\nfunction convertActionParameterStringSuggestions(\n validation?: ActionParameterValidation\n): StringSuggestion[] | undefined {\n const allowedValues = validation?.defaultValidation.allowedValues;\n if (allowedValues?.type !== \"oneOf\" || !allowedValues.otherValuesAllowed) {\n return undefined;\n }\n const suggestions = allowedValues.options.flatMap((option) => {\n const value: unknown = option.value;\n return typeof value === \"string\"\n ? [\n {\n value,\n label: option.displayName,\n },\n ]\n : [];\n });\n return suggestions.length > 0 ? suggestions : undefined;\n}\n\nfunction convertOntologyDataType(type: OntologyDataType, required = true): TypeDef {\n const baseType: TypeDef = (() => {\n switch (type.type) {\n case \"string\":\n return stringType();\n case \"boolean\":\n return booleanType();\n case \"byte\":\n case \"short\":\n case \"integer\":\n case \"long\":\n return integerType();\n case \"float\":\n return floatType();\n case \"double\":\n case \"decimal\":\n return doubleType();\n case \"date\":\n return dateType();\n case \"timestamp\":\n return timestampType();\n case \"binary\":\n return attachmentType(\"attachment\");\n case \"mediaReference\":\n return attachmentType(\"media\");\n case \"array\":\n case \"set\":\n return {\n kind: \"list\",\n value: { elementType: convertOntologyDataType(type.itemType) },\n };\n case \"struct\":\n return {\n kind: \"struct\",\n value: {\n fields: type.fields.map((field, index) => ({\n name: field.name ?? `field${index + 1}`,\n displayName: field.name ?? `Field ${index + 1}`,\n type: convertOntologyDataType(field.fieldType, field.required),\n })),\n },\n };\n case \"object\":\n return {\n kind: \"objectReference\",\n value: { objectType: type.objectTypeApiName },\n };\n default:\n return stringType();\n }\n })();\n\n return maybeOptional(baseType, required);\n}\n\nfunction collectRuleArguments(rule: ActionLogicRule): Array<LogicRuleArgument | StructFieldArgument> {\n switch (rule.type) {\n case \"createObject\":\n case \"modifyObject\":\n return [\n ...Object.values(rule.propertyArguments),\n ...Object.values(rule.structPropertyArguments).flatMap((fields) => Object.values(fields)),\n ];\n default:\n return [];\n }\n}\n\nfunction collectMutationTargetParameterNames(rules: ActionLogicRule[]): Set<string> {\n const parameterNames = new Set<string>();\n for (const rule of rules) {\n switch (rule.type) {\n case \"modifyObject\":\n parameterNames.add(rule.objectToModify);\n break;\n case \"deleteObject\":\n parameterNames.add(rule.objectToDelete);\n break;\n }\n }\n return parameterNames;\n}\n\nfunction requireObjectReferenceMutationTarget(type: TypeDef, isMutationTarget: boolean): TypeDef {\n return isMutationTarget && type.kind === \"optional\" && type.value.type.kind === \"objectReference\"\n ? type.value.type\n : type;\n}\n\nfunction createSyntheticParameters(actionType: ActionTypeFullMetadata): {\n parameters: ActionParameterDef[];\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n} {\n const uniqueIdentifierParametersByLinkId = new Map<string, string>();\n let nowParameterName: string | undefined;\n\n for (const rule of actionType.fullLogicRules) {\n for (const argument of collectRuleArguments(rule)) {\n if (argument.type === \"uniqueIdentifier\" && argument.linkId) {\n if (!uniqueIdentifierParametersByLinkId.has(argument.linkId)) {\n uniqueIdentifierParametersByLinkId.set(\n argument.linkId,\n createUniqueIdentifierParameterName(argument.linkId)\n );\n }\n }\n if (argument.type === \"currentTime\" && !nowParameterName) {\n nowParameterName = FOUNDRY_NOW_PARAMETER_NAME;\n }\n }\n }\n\n const parameters: ActionParameterDef[] = Array.from(uniqueIdentifierParametersByLinkId.values()).map(\n (name, index): ActionParameterDef => ({\n name,\n displayName: `Generated UUID ${index + 1}`,\n type: { kind: \"string\", value: {} },\n defaultValue: {\n kind: \"uuid\",\n value: {},\n },\n })\n );\n\n if (nowParameterName) {\n parameters.push({\n name: nowParameterName,\n displayName: \"Current time\",\n type: { kind: \"timestamp\", value: {} },\n defaultValue: {\n kind: \"now\",\n value: {},\n },\n });\n }\n\n return { parameters, uniqueIdentifierParametersByLinkId, nowParameterName };\n}\n\nexport function getFoundryActionOverrideParameterMapping(actionType: ActionTypeDef): {\n uuidByParameterName: Map<string, string>;\n nowParameterName?: string;\n} {\n const uuidByParameterName = new Map<string, string>();\n let nowParameterName: string | undefined;\n\n for (const parameter of actionType.parameters) {\n if (parameter.defaultValue?.kind !== \"uuid\" && parameter.defaultValue?.kind !== \"now\") {\n continue;\n }\n switch (parameter.defaultValue.kind) {\n case \"uuid\": {\n const linkId = getUniqueIdentifierLinkIdFromParameterName(parameter.name);\n if (linkId) {\n uuidByParameterName.set(parameter.name, linkId);\n }\n break;\n }\n case \"now\":\n nowParameterName ??= parameter.name;\n break;\n }\n }\n\n return { uuidByParameterName, nowParameterName };\n}\n\nfunction inputReference(name: string): Expression {\n return {\n kind: \"inputReference\",\n value: { name },\n };\n}\n\nfunction getAtExpression(source: Expression, path: string[]): Expression {\n return {\n kind: \"getAt\",\n value: { source, path },\n };\n}\n\nfunction objectField(parameterName: string, path: string[]): Expression {\n return getAtExpression(\n {\n kind: \"objectLookup\",\n value: {\n reference: inputReference(parameterName),\n },\n },\n path\n );\n}\n\n// TODO: This uses regex heuristics to infer the type of static literal values without\n// knowing the target property type. We should eventually resolve the target property's\n// TypeDef from the object type definition so we decode accurately instead of guessing\n// from the string format.\nconst ISO_TIMESTAMP_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/;\nconst ISO_DATE_RE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst GEO_POINT_RE = /^(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)$/;\n\nfunction decodeLiteralValue(value: unknown): unknown {\n if (typeof value !== \"string\") {\n return value;\n }\n\n if (ISO_TIMESTAMP_RE.test(value)) {\n try {\n return Temporal.Instant.from(value);\n } catch {\n return value;\n }\n }\n\n if (ISO_DATE_RE.test(value)) {\n try {\n return Temporal.PlainDate.from(value);\n } catch {\n return value;\n }\n }\n\n const geoMatch = GEO_POINT_RE.exec(value);\n if (geoMatch) {\n return { lat: Number(geoMatch[1]), lon: Number(geoMatch[2]) };\n }\n\n return value;\n}\n\nfunction convertLogicRuleArgument(\n argument: LogicRuleArgument | StructFieldArgument,\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): Expression {\n switch (argument.type) {\n case \"parameterId\":\n return inputReference(argument.parameterId);\n case \"objectParameterPropertyValue\":\n return objectField(argument.parameterId, [argument.propertyTypeApiName]);\n case \"structParameterFieldValue\":\n return getAtExpression(inputReference(argument.parameterId), [\n argument.structParameterFieldApiName,\n ]);\n case \"structListParameterFieldValue\":\n throw new Error(\"Foundry list-of-struct field arguments must be converted as a list mapping.\");\n case \"uniqueIdentifier\": {\n const parameterName = argument.linkId\n ? syntheticParameters.uniqueIdentifierParametersByLinkId.get(argument.linkId)\n : undefined;\n return parameterName\n ? inputReference(parameterName)\n : {\n kind: \"uuid\",\n value: {},\n };\n }\n case \"currentTime\":\n return syntheticParameters.nowParameterName\n ? inputReference(syntheticParameters.nowParameterName)\n : {\n kind: \"now\",\n value: {},\n };\n case \"staticValue\":\n return {\n kind: \"literal\",\n value: { value: decodeLiteralValue(argument.value) },\n };\n case \"currentUser\":\n return {\n kind: \"contextReference\",\n value: { name: FOUNDRY_CURRENT_USER_CONTEXT_PATH[0]! },\n };\n default:\n throw new Error(`Unsupported Foundry action argument \"${argument.type}\".`);\n }\n}\n\nfunction convertAssignments(\n rule: Extract<ActionLogicRule, { type: \"createObject\" | \"modifyObject\" }>,\n parameters: ActionTypeFullMetadata[\"actionType\"][\"parameters\"],\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): PropertyAssignment[] {\n return [\n ...Object.entries(rule.propertyArguments).map(([property, argument]) => ({\n property: [property],\n value: convertLogicRuleArgument(argument, syntheticParameters),\n })),\n ...Object.entries(rule.structPropertyArguments).flatMap(([property, fields]) =>\n convertStructPropertyAssignments(property, fields, parameters, syntheticParameters)\n ),\n ];\n}\n\nfunction unsupportedListStructAssignment(property: string, reason: string): never {\n throw new Error(\n `Unsupported Foundry list-of-struct assignment for property \"${property}\": ${reason}. ` +\n \"Party Stack only supports mappings driven by one list-of-struct parameter.\"\n );\n}\n\nfunction convertStructPropertyAssignments(\n property: string,\n fields: Record<string, StructFieldArgument>,\n parameters: ActionTypeFullMetadata[\"actionType\"][\"parameters\"],\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): PropertyAssignment[] {\n const entries = Object.entries(fields);\n const listEntries = entries.filter(\n (entry): entry is [string, Extract<StructFieldArgument, { type: \"structListParameterFieldValue\" }>] =>\n entry[1].type === \"structListParameterFieldValue\"\n );\n\n if (listEntries.length === 0) {\n return entries.map(([field, argument]) => ({\n property: [property, field],\n value: convertLogicRuleArgument(argument, syntheticParameters),\n }));\n }\n\n if (listEntries.length !== entries.length) {\n return unsupportedListStructAssignment(\n property,\n \"list fields are mixed with non-list struct field arguments\"\n );\n }\n\n const parameterIds = new Set(listEntries.map(([, argument]) => argument.parameterId));\n if (parameterIds.size !== 1) {\n return unsupportedListStructAssignment(property, \"fields are mapped from multiple list parameters\");\n }\n\n const parameterId = listEntries[0]![1].parameterId;\n const parameter = parameters[parameterId];\n if (parameter?.dataType.type !== \"array\" || parameter.dataType.subType.type !== \"struct\") {\n return unsupportedListStructAssignment(\n property,\n `source parameter \"${parameterId}\" is not a list of structs`\n );\n }\n\n return [\n {\n property: [property],\n value: {\n kind: \"map\",\n value: {\n source: inputReference(parameterId),\n binding: FOUNDRY_LIST_ITEM_BINDING,\n body: {\n kind: \"struct\",\n value: {\n fields: entries.map(([field, argument]) => ({\n name: field,\n value:\n argument.type === \"structListParameterFieldValue\"\n ? getAtExpression(\n {\n kind: \"localReference\",\n value: {\n name: FOUNDRY_LIST_ITEM_BINDING,\n },\n },\n [argument.structParameterFieldApiName]\n )\n : convertLogicRuleArgument(argument, syntheticParameters),\n })),\n },\n },\n },\n },\n },\n ];\n}\n\nfunction convertLogicStep(\n rule: ActionLogicRule,\n parameters: ActionTypeFullMetadata[\"actionType\"][\"parameters\"],\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): ActionTypeDef[\"logic\"][number] | null {\n switch (rule.type) {\n case \"createObject\":\n return {\n kind: \"createObject\",\n value: {\n objectType: rule.objectTypeApiName,\n values: convertAssignments(rule, parameters, syntheticParameters),\n },\n };\n case \"modifyObject\":\n return {\n kind: \"updateObject\",\n value: {\n object: {\n name: rule.objectToModify,\n },\n values: convertAssignments(rule, parameters, syntheticParameters),\n },\n };\n case \"deleteObject\":\n return {\n kind: \"deleteObject\",\n value: {\n object: {\n name: rule.objectToDelete,\n },\n },\n };\n default:\n return null;\n }\n}\n\nexport function convertFoundryMetaActionType(\n actionType: ActionTypeFullMetadata,\n omsMetadata?: ActionTypeOmsMetadata\n): MetaActionType {\n const syntheticParameters = createSyntheticParameters(actionType);\n const mutationTargetParameterNames = collectMutationTargetParameterNames(actionType.fullLogicRules);\n const fullLogicRules = actionType.fullLogicRules\n .map((rule) => convertLogicStep(rule, actionType.actionType.parameters, syntheticParameters))\n .filter((rule): rule is NonNullable<typeof rule> => rule !== null);\n const parameters = Object.entries(actionType.actionType.parameters).map(\n ([name, parameter]): ActionParameterDef => {\n const type = requireObjectReferenceMutationTarget(\n convertActionParameterType(parameter.dataType, parameter.required, parameter.validation),\n mutationTargetParameterNames.has(name)\n );\n return {\n name,\n displayName: parameter.displayName ?? name,\n type: applyStringSuggestionsFallback(\n applyStringConstraintFallback(\n applyOmsStructFieldValidation(type, omsMetadata, name),\n convertOmsActionParameterStringConstraint(omsMetadata, name)\n ),\n convertOmsActionParameterStringSuggestions(omsMetadata, name)\n ),\n description: parameter.description,\n };\n }\n );\n const defaultsByParameter = convertOmsActionParameterDefaults(omsMetadata, parameters);\n const foundryIcon = omsMetadata?.actionType.metadata?.displayMetadata?.icon;\n\n return {\n id: actionType.actionType.rid,\n name: toOntologyActionTypeName(actionType.actionType.apiName),\n displayName: actionType.actionType.displayName ?? actionType.actionType.apiName,\n description: actionType.actionType.description,\n icon:\n foundryIcon?.type === \"blueprint\"\n ? fromBlueprintIconName(foundryIcon.blueprint.locator)\n : undefined,\n color: foundryIcon?.type === \"blueprint\" ? foundryIcon.blueprint.color : undefined,\n deprecated:\n actionType.actionType.status === \"DEPRECATED\" ? { message: \"Deprecated in Foundry.\" } : undefined,\n parameters: [\n ...parameters.map((parameter) => ({\n ...parameter,\n defaultValue: defaultsByParameter.get(parameter.name),\n })),\n ...syntheticParameters.parameters,\n ],\n logic: fullLogicRules,\n };\n}\n"],"mappings":";;;;;;AA8BA,MAAM,oCAAoC,CAAC,MAAM;AACjD,MAAM,gCAAgC;AACtC,MAAM,6BAA6B;AACnC,MAAM,4BAA4B;AAElC,SAAS,cAAc,MAAe,UAA4B;CAC9D,OAAO,WAAW,OAAO;EAAE,MAAM;EAAY,OAAO,EAAE,KAAK;CAAE;AACjE;AAEA,SAAS,WAAW,YAA+B,aAA2C;CAC1F,OAAO;EACH,MAAM;EACN,OAAO;GACH;GACA;EACJ;CACJ;AACJ;AAEA,SAAS,8BAA8B,MAAe,YAAmD;CACrG,IAAI,CAAC,YAAY,OAAO;CACxB,QAAQ,KAAK,MAAb;EACI,KAAK,UACD,OAAO,KAAK,MAAM,aACZ,OACA;GACI,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR;GACJ;EACJ;EACV,KAAK,YACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR,MAAM,8BAA8B,KAAK,MAAM,MAAM,UAAU;GACnE;EACJ;EACJ,KAAK,QACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR,aAAa,8BAA8B,KAAK,MAAM,aAAa,UAAU;GACjF;EACJ;EACJ,SACI,OAAO;CACf;AACJ;AAEA,SAAS,+BAA+B,MAAe,aAAsD;CACzG,IAAI,CAAC,aAAa,OAAO;CACzB,QAAQ,KAAK,MAAb;EACI,KAAK,UACD,OAAO,KAAK,MAAM,cACZ,OACA;GACI,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR;GACJ;EACJ;EACV,KAAK,YACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR,MAAM,+BAA+B,KAAK,MAAM,MAAM,WAAW;GACrE;EACJ;EACJ,KAAK,QACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR,aAAa,+BAA+B,KAAK,MAAM,aAAa,WAAW;GACnF;EACJ;EACJ,SACI,OAAO;CACf;AACJ;AAEA,SAAS,8BACL,MACA,aACA,eACO;CACP,IAAI,CAAC,aAAa,OAAO;CACzB,QAAQ,KAAK,MAAb;EACI,KAAK,YACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR,MAAM,8BAA8B,KAAK,MAAM,MAAM,aAAa,aAAa;GACnF;EACJ;EACJ,KAAK,QACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR,aAAa,8BACT,KAAK,MAAM,aACX,aACA,aACJ;GACJ;EACJ;EACJ,KAAK,UACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR,QAAQ,KAAK,MAAM,OAAO,KAAK,WAAW;KACtC,GAAG;KACH,MAAM,+BACF,8BACI,MAAM,MACN,0CACI,aACA,eACA,MAAM,IACV,CACJ,GACA,2CAA2C,aAAa,eAAe,MAAM,IAAI,CACrF;IACJ,EAAE;GACN;EACJ;EACJ,SACI,OAAO;CACf;AACJ;AAEA,SAAS,cAAuB;CAC5B,OAAO;EAAE,MAAM;EAAW,OAAO,CAAC;CAAE;AACxC;AAEA,SAAS,cAAuB;CAC5B,OAAO;EAAE,MAAM;EAAW,OAAO,CAAC;CAAE;AACxC;AAEA,SAAS,YAAqB;CAC1B,OAAO;EAAE,MAAM;EAAS,OAAO,CAAC;CAAE;AACtC;AAEA,SAAS,aAAsB;CAC3B,OAAO;EAAE,MAAM;EAAU,OAAO,CAAC;CAAE;AACvC;AAEA,SAAS,WAAoB;CACzB,OAAO;EAAE,MAAM;EAAQ,OAAO,CAAC;CAAE;AACrC;AAEA,SAAS,gBAAyB;CAC9B,OAAO;EAAE,MAAM;EAAa,OAAO,CAAC;CAAE;AAC1C;AAEA,SAAS,eAAwB;CAC7B,OAAO;EAAE,MAAM;EAAY,OAAO,CAAC;CAAE;AACzC;AAEA,SAAS,eAAe,MAAuC;CAC3D,OAAO;EACH,MAAM;EACN,OAAO,EAAE,MAAM,sBAAsB,IAAI,EAAE;CAC/C;AACJ;AAEA,SAAS,oCAAoC,QAAwB;CACjE,OAAO,GAAG,gCAAgC,mBAAmB,MAAM;AACvE;AAEA,SAAS,2CAA2C,eAA2C;CAC3F,IAAI,CAAC,cAAc,WAAW,6BAA6B,GACvD;CAEJ,OAAO,mBAAmB,cAAc,MAAM,CAAoC,CAAC;AACvF;AAEA,SAAS,2BACL,MACA,WAAW,MACX,YACO;CACP,MAAM,gBAAgB,YAAY,kBAAkB;CACpD,IAAI,eAAe,SAAS,aACxB,OAAO,cACH;EACI,MAAM;EACN,OAAO,EAAE,MAAM,cAAc,QAAQ;CACzC,GACA,QACJ;CA4EJ,OAAO,qBAzE0B;EAC7B,QAAQ,KAAK,MAAb;GACI,KAAK,UAKD,OAAO,WACH,uCAAuC,UAAU,GACjD,wCAAwC,UAAU,CACtD;GACJ,KAAK,WACD,OAAO,YAAY;GACvB,KAAK;GACL,KAAK,QACD,OAAO,YAAY;GACvB,KAAK,UACD,OAAO,WAAW;GACtB,KAAK,WAGD,OAAO,WAAW;GACtB,KAAK,QACD,OAAO,SAAS;GACpB,KAAK,aACD,OAAO,cAAc;GACzB,KAAK,cACD,OAAO,eAAe,YAAY;GACtC,KAAK,kBACD,OAAO,eAAe,OAAO;GACjC,KAAK,WACD,OAAO,aAAa;GACxB,KAAK;GACL,KAAK,WACD,OAAO,WAAW;GACtB,KAAK,UACD,OAAO;IACH,MAAM;IACN,OAAO,EAAE,aAAa,WAAW,EAAE;GACvC;GACJ,KAAK,SACD,OAAO;IACH,MAAM;IACN,OAAO,EAAE,aAAa,2BAA2B,KAAK,OAAO,EAAE;GACnE;GACJ,KAAK,UACD,OAAO;IACH,MAAM;IACN,OAAO,EACH,QAAQ,KAAK,OAAO,KAAK,OAAO,WAAW;KACvC,MAAM,MAAM,QAAQ,QAAQ,QAAQ;KACpC,aAAa,MAAM,QAAQ,SAAS,QAAQ;KAC5C,MAAM,wBAAwB,MAAM,WAAW,MAAM,QAAQ;IACjE,EAAE,EACN;GACJ;GACJ,KAAK,UACD,OAAO;IACH,MAAM;IACN,OAAO,EAAE,YAAY,KAAK,kBAAkB;GAChD;GACJ,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,qBACD,OAAO,WAAW;GACtB,SAEI,OAAOA;EAEf;CACJ,EAAA,CAE4B,GAAG,QAAQ;AAC3C;AAEA,SAAS,uCACL,YAC4B;CAC5B,MAAM,gBAAgB,YAAY,kBAAkB;CACpD,IAAI,eAAe,SAAS,WAAW,CAAC,cAAc,oBAAoB;EACtE,MAAM,UAAU,cAAc,QAAQ,SAAS,WAAW;GACtD,MAAM,QAAiB,OAAO;GAC9B,OAAO,OAAO,UAAU,WAAW,CAAC;IAAE;IAAO,OAAO,OAAO;GAAY,CAAC,IAAI,CAAC;EACjF,CAAC;EACD,OAAO,QAAQ,SAAS,IAClB;GACI,MAAM;GACN,OAAO,EAAE,QAAQ;EACrB,IACA,KAAA;CACV;CACA,IAAI,eAAe,SAAS,UAAU,cAAc,OAChD,OAAO;EACH,MAAM;EACN,OAAO,EAAE,OAAO,cAAc,MAAM;CACxC;AAGR;AAEA,SAAS,wCACL,YAC8B;CAC9B,MAAM,gBAAgB,YAAY,kBAAkB;CACpD,IAAI,eAAe,SAAS,WAAW,CAAC,cAAc,oBAClD;CAEJ,MAAM,cAAc,cAAc,QAAQ,SAAS,WAAW;EAC1D,MAAM,QAAiB,OAAO;EAC9B,OAAO,OAAO,UAAU,WAClB,CACI;GACI;GACA,OAAO,OAAO;EAClB,CACJ,IACA,CAAC;CACX,CAAC;CACD,OAAO,YAAY,SAAS,IAAI,cAAc,KAAA;AAClD;AAEA,SAAS,wBAAwB,MAAwB,WAAW,MAAe;CAoD/E,OAAO,qBAnD0B;EAC7B,QAAQ,KAAK,MAAb;GACI,KAAK,UACD,OAAO,WAAW;GACtB,KAAK,WACD,OAAO,YAAY;GACvB,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,QACD,OAAO,YAAY;GACvB,KAAK,SACD,OAAO,UAAU;GACrB,KAAK;GACL,KAAK,WACD,OAAO,WAAW;GACtB,KAAK,QACD,OAAO,SAAS;GACpB,KAAK,aACD,OAAO,cAAc;GACzB,KAAK,UACD,OAAO,eAAe,YAAY;GACtC,KAAK,kBACD,OAAO,eAAe,OAAO;GACjC,KAAK;GACL,KAAK,OACD,OAAO;IACH,MAAM;IACN,OAAO,EAAE,aAAa,wBAAwB,KAAK,QAAQ,EAAE;GACjE;GACJ,KAAK,UACD,OAAO;IACH,MAAM;IACN,OAAO,EACH,QAAQ,KAAK,OAAO,KAAK,OAAO,WAAW;KACvC,MAAM,MAAM,QAAQ,QAAQ,QAAQ;KACpC,aAAa,MAAM,QAAQ,SAAS,QAAQ;KAC5C,MAAM,wBAAwB,MAAM,WAAW,MAAM,QAAQ;IACjE,EAAE,EACN;GACJ;GACJ,KAAK,UACD,OAAO;IACH,MAAM;IACN,OAAO,EAAE,YAAY,KAAK,kBAAkB;GAChD;GACJ,SACI,OAAO,WAAW;EAC1B;CACJ,EAAA,CAE4B,GAAG,QAAQ;AAC3C;AAEA,SAAS,qBAAqB,MAAuE;CACjG,QAAQ,KAAK,MAAb;EACI,KAAK;EACL,KAAK,gBACD,OAAO,CACH,GAAG,OAAO,OAAO,KAAK,iBAAiB,GACvC,GAAG,OAAO,OAAO,KAAK,uBAAuB,CAAC,CAAC,SAAS,WAAW,OAAO,OAAO,MAAM,CAAC,CAC5F;EACJ,SACI,OAAO,CAAC;CAChB;AACJ;AAEA,SAAS,oCAAoC,OAAuC;CAChF,MAAM,iCAAiB,IAAI,IAAY;CACvC,KAAK,MAAM,QAAQ,OACf,QAAQ,KAAK,MAAb;EACI,KAAK;GACD,eAAe,IAAI,KAAK,cAAc;GACtC;EACJ,KAAK,gBACD,eAAe,IAAI,KAAK,cAAc;CAE9C;CAEJ,OAAO;AACX;AAEA,SAAS,qCAAqC,MAAe,kBAAoC;CAC7F,OAAO,oBAAoB,KAAK,SAAS,cAAc,KAAK,MAAM,KAAK,SAAS,oBAC1E,KAAK,MAAM,OACX;AACV;AAEA,SAAS,0BAA0B,YAIjC;CACE,MAAM,qDAAqC,IAAI,IAAoB;CACnE,IAAI;CAEJ,KAAK,MAAM,QAAQ,WAAW,gBAC1B,KAAK,MAAM,YAAY,qBAAqB,IAAI,GAAG;EAC/C,IAAI,SAAS,SAAS,sBAAsB,SAAS,QAC7C;OAAA,CAAC,mCAAmC,IAAI,SAAS,MAAM,GACvD,mCAAmC,IAC/B,SAAS,QACT,oCAAoC,SAAS,MAAM,CACvD;EAAA;EAGR,IAAI,SAAS,SAAS,iBAAiB,CAAC,kBACpC,mBAAmB;CAE3B;CAGJ,MAAM,aAAmC,MAAM,KAAK,mCAAmC,OAAO,CAAC,CAAC,CAAC,KAC5F,MAAM,WAA+B;EAClC;EACA,aAAa,kBAAkB,QAAQ;EACvC,MAAM;GAAE,MAAM;GAAU,OAAO,CAAC;EAAE;EAClC,cAAc;GACV,MAAM;GACN,OAAO,CAAC;EACZ;CACJ,EACJ;CAEA,IAAI,kBACA,WAAW,KAAK;EACZ,MAAM;EACN,aAAa;EACb,MAAM;GAAE,MAAM;GAAa,OAAO,CAAC;EAAE;EACrC,cAAc;GACV,MAAM;GACN,OAAO,CAAC;EACZ;CACJ,CAAC;CAGL,OAAO;EAAE;EAAY;EAAoC;CAAiB;AAC9E;AAEA,SAAgB,yCAAyC,YAGvD;CACE,MAAM,sCAAsB,IAAI,IAAoB;CACpD,IAAI;CAEJ,KAAK,MAAM,aAAa,WAAW,YAAY;EAC3C,IAAI,UAAU,cAAc,SAAS,UAAU,UAAU,cAAc,SAAS,OAC5E;EAEJ,QAAQ,UAAU,aAAa,MAA/B;GACI,KAAK,QAAQ;IACT,MAAM,SAAS,2CAA2C,UAAU,IAAI;IACxE,IAAI,QACA,oBAAoB,IAAI,UAAU,MAAM,MAAM;IAElD;GACJ;GACA,KAAK,OACD,qBAAqB,UAAU;EAEvC;CACJ;CAEA,OAAO;EAAE;EAAqB;CAAiB;AACnD;AAEA,SAAS,eAAe,MAA0B;CAC9C,OAAO;EACH,MAAM;EACN,OAAO,EAAE,KAAK;CAClB;AACJ;AAEA,SAAS,gBAAgB,QAAoB,MAA4B;CACrE,OAAO;EACH,MAAM;EACN,OAAO;GAAE;GAAQ;EAAK;CAC1B;AACJ;AAEA,SAAS,YAAY,eAAuB,MAA4B;CACpE,OAAO,gBACH;EACI,MAAM;EACN,OAAO,EACH,WAAW,eAAe,aAAa,EAC3C;CACJ,GACA,IACJ;AACJ;AAMA,MAAM,mBAAmB;AACzB,MAAM,cAAc;AACpB,MAAM,eAAe;AAErB,SAAS,mBAAmB,OAAyB;CACjD,IAAI,OAAO,UAAU,UACjB,OAAO;CAGX,IAAI,iBAAiB,KAAK,KAAK,GAC3B,IAAI;EACA,OAAO,SAAS,QAAQ,KAAK,KAAK;CACtC,QAAQ;EACJ,OAAO;CACX;CAGJ,IAAI,YAAY,KAAK,KAAK,GACtB,IAAI;EACA,OAAO,SAAS,UAAU,KAAK,KAAK;CACxC,QAAQ;EACJ,OAAO;CACX;CAGJ,MAAM,WAAW,aAAa,KAAK,KAAK;CACxC,IAAI,UACA,OAAO;EAAE,KAAK,OAAO,SAAS,EAAE;EAAG,KAAK,OAAO,SAAS,EAAE;CAAE;CAGhE,OAAO;AACX;AAEA,SAAS,yBACL,UACA,qBAIU;CACV,QAAQ,SAAS,MAAjB;EACI,KAAK,eACD,OAAO,eAAe,SAAS,WAAW;EAC9C,KAAK,gCACD,OAAO,YAAY,SAAS,aAAa,CAAC,SAAS,mBAAmB,CAAC;EAC3E,KAAK,6BACD,OAAO,gBAAgB,eAAe,SAAS,WAAW,GAAG,CACzD,SAAS,2BACb,CAAC;EACL,KAAK,iCACD,MAAM,IAAI,MAAM,6EAA6E;EACjG,KAAK,oBAAoB;GACrB,MAAM,gBAAgB,SAAS,SACzB,oBAAoB,mCAAmC,IAAI,SAAS,MAAM,IAC1E,KAAA;GACN,OAAO,gBACD,eAAe,aAAa,IAC5B;IACI,MAAM;IACN,OAAO,CAAC;GACZ;EACV;EACA,KAAK,eACD,OAAO,oBAAoB,mBACrB,eAAe,oBAAoB,gBAAgB,IACnD;GACI,MAAM;GACN,OAAO,CAAC;EACZ;EACV,KAAK,eACD,OAAO;GACH,MAAM;GACN,OAAO,EAAE,OAAO,mBAAmB,SAAS,KAAK,EAAE;EACvD;EACJ,KAAK,eACD,OAAO;GACH,MAAM;GACN,OAAO,EAAE,MAAM,kCAAkC,GAAI;EACzD;EACJ,SACI,MAAM,IAAI,MAAM,wCAAwC,SAAS,KAAK,GAAG;CACjF;AACJ;AAEA,SAAS,mBACL,MACA,YACA,qBAIoB;CACpB,OAAO,CACH,GAAG,OAAO,QAAQ,KAAK,iBAAiB,CAAC,CAAC,KAAK,CAAC,UAAU,eAAe;EACrE,UAAU,CAAC,QAAQ;EACnB,OAAO,yBAAyB,UAAU,mBAAmB;CACjE,EAAE,GACF,GAAG,OAAO,QAAQ,KAAK,uBAAuB,CAAC,CAAC,SAAS,CAAC,UAAU,YAChE,iCAAiC,UAAU,QAAQ,YAAY,mBAAmB,CACtF,CACJ;AACJ;AAEA,SAAS,gCAAgC,UAAkB,QAAuB;CAC9E,MAAM,IAAI,MACN,+DAA+D,SAAS,KAAK,OAAO,6EAExF;AACJ;AAEA,SAAS,iCACL,UACA,QACA,YACA,qBAIoB;CACpB,MAAM,UAAU,OAAO,QAAQ,MAAM;CACrC,MAAM,cAAc,QAAQ,QACvB,UACG,MAAM,EAAE,CAAC,SAAS,+BAC1B;CAEA,IAAI,YAAY,WAAW,GACvB,OAAO,QAAQ,KAAK,CAAC,OAAO,eAAe;EACvC,UAAU,CAAC,UAAU,KAAK;EAC1B,OAAO,yBAAyB,UAAU,mBAAmB;CACjE,EAAE;CAGN,IAAI,YAAY,WAAW,QAAQ,QAC/B,OAAO,gCACH,UACA,4DACJ;CAIJ,IAAI,IADqB,IAAI,YAAY,KAAK,GAAG,cAAc,SAAS,WAAW,CACpE,CAAC,CAAC,SAAS,GACtB,OAAO,gCAAgC,UAAU,iDAAiD;CAGtG,MAAM,cAAc,YAAY,EAAE,CAAE,EAAE,CAAC;CACvC,MAAM,YAAY,WAAW;CAC7B,IAAI,WAAW,SAAS,SAAS,WAAW,UAAU,SAAS,QAAQ,SAAS,UAC5E,OAAO,gCACH,UACA,qBAAqB,YAAY,2BACrC;CAGJ,OAAO,CACH;EACI,UAAU,CAAC,QAAQ;EACnB,OAAO;GACH,MAAM;GACN,OAAO;IACH,QAAQ,eAAe,WAAW;IAClC,SAAS;IACT,MAAM;KACF,MAAM;KACN,OAAO,EACH,QAAQ,QAAQ,KAAK,CAAC,OAAO,eAAe;MACxC,MAAM;MACN,OACI,SAAS,SAAS,kCACZ,gBACI;OACI,MAAM;OACN,OAAO,EACH,MAAM,0BACV;MACJ,GACA,CAAC,SAAS,2BAA2B,CACzC,IACA,yBAAyB,UAAU,mBAAmB;KACpE,EAAE,EACN;IACJ;GACJ;EACJ;CACJ,CACJ;AACJ;AAEA,SAAS,iBACL,MACA,YACA,qBAIqC;CACrC,QAAQ,KAAK,MAAb;EACI,KAAK,gBACD,OAAO;GACH,MAAM;GACN,OAAO;IACH,YAAY,KAAK;IACjB,QAAQ,mBAAmB,MAAM,YAAY,mBAAmB;GACpE;EACJ;EACJ,KAAK,gBACD,OAAO;GACH,MAAM;GACN,OAAO;IACH,QAAQ,EACJ,MAAM,KAAK,eACf;IACA,QAAQ,mBAAmB,MAAM,YAAY,mBAAmB;GACpE;EACJ;EACJ,KAAK,gBACD,OAAO;GACH,MAAM;GACN,OAAO,EACH,QAAQ,EACJ,MAAM,KAAK,eACf,EACJ;EACJ;EACJ,SACI,OAAO;CACf;AACJ;AAEA,SAAgB,6BACZ,YACA,aACc;CACd,MAAM,sBAAsB,0BAA0B,UAAU;CAChE,MAAM,+BAA+B,oCAAoC,WAAW,cAAc;CAClG,MAAM,iBAAiB,WAAW,eAC7B,KAAK,SAAS,iBAAiB,MAAM,WAAW,WAAW,YAAY,mBAAmB,CAAC,CAAC,CAC5F,QAAQ,SAA2C,SAAS,IAAI;CACrE,MAAM,aAAa,OAAO,QAAQ,WAAW,WAAW,UAAU,CAAC,CAAC,KAC/D,CAAC,MAAM,eAAmC;EACvC,MAAM,OAAO,qCACT,2BAA2B,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,GACvF,6BAA6B,IAAI,IAAI,CACzC;EACA,OAAO;GACH;GACA,aAAa,UAAU,eAAe;GACtC,MAAM,+BACF,8BACI,8BAA8B,MAAM,aAAa,IAAI,GACrD,0CAA0C,aAAa,IAAI,CAC/D,GACA,2CAA2C,aAAa,IAAI,CAChE;GACA,aAAa,UAAU;EAC3B;CACJ,CACJ;CACA,MAAM,sBAAsB,kCAAkC,aAAa,UAAU;CACrF,MAAM,cAAc,aAAa,WAAW,UAAU,iBAAiB;CAEvE,OAAO;EACH,IAAI,WAAW,WAAW;EAC1B,MAAM,yBAAyB,WAAW,WAAW,OAAO;EAC5D,aAAa,WAAW,WAAW,eAAe,WAAW,WAAW;EACxE,aAAa,WAAW,WAAW;EACnC,MACI,aAAa,SAAS,cAChB,sBAAsB,YAAY,UAAU,OAAO,IACnD,KAAA;EACV,OAAO,aAAa,SAAS,cAAc,YAAY,UAAU,QAAQ,KAAA;EACzE,YACI,WAAW,WAAW,WAAW,eAAe,EAAE,SAAS,yBAAyB,IAAI,KAAA;EAC5F,YAAY,CACR,GAAG,WAAW,KAAK,eAAe;GAC9B,GAAG;GACH,cAAc,oBAAoB,IAAI,UAAU,IAAI;EACxD,EAAE,GACF,GAAG,oBAAoB,UAC3B;EACA,OAAO;CACX;AACJ"}
1
+ {"version":3,"file":"convertMetaActionType.js","names":["unsupported"],"sources":["../../src/meta/convertMetaActionType.ts"],"sourcesContent":["import { fromBlueprintIconName } from \"@party-stack/icons-blueprint\";\nimport { Temporal } from \"temporal-polyfill\";\nimport { FOUNDRY_CURRENT_USER_CONTEXT_FIELD } from \"../context.js\";\nimport { toOntologyActionTypeName } from \"../utils/actionTypeName.js\";\nimport {\n convertOmsActionParameterDefaults,\n convertOmsActionParameterStringConstraint,\n convertOmsActionParameterStringSuggestions,\n} from \"./convertOmsActionParameterMetadata.js\";\nimport { foundryAttachmentMeta } from \"./foundryAttachmentMetadata.js\";\nimport type { ActionTypeOmsMetadata } from \"./loadActionTypeOmsMetadata.js\";\nimport type {\n ActionLogicRule,\n ActionParameterValidation,\n ActionParameterType,\n ActionTypeFullMetadata,\n LogicRuleArgument,\n OntologyDataType,\n StructFieldArgument,\n} from \"@osdk/foundry.ontologies\";\nimport type {\n ActionParameterDef,\n ActionTypeDef,\n Expression,\n PropertyAssignment,\n StringConstraint,\n StringSuggestion,\n TypeDef,\n} from \"@party-stack/ontology-spec\";\nimport type { ActionType as MetaActionType } from \"@party-stack/ontology-spec/meta\";\n\nconst FOUNDRY_UUID_PARAMETER_PREFIX = \"__uuid_\";\nconst FOUNDRY_NOW_PARAMETER_NAME = \"__now\";\nconst FOUNDRY_LIST_ITEM_BINDING = \"item\";\n\nfunction maybeOptional(type: TypeDef, required: boolean): TypeDef {\n return required ? type : { kind: \"optional\", value: { type } };\n}\n\nfunction stringType(constraint?: StringConstraint, suggestions?: StringSuggestion[]): TypeDef {\n return {\n kind: \"string\",\n value: {\n constraint,\n suggestions,\n },\n };\n}\n\nfunction applyStringConstraintFallback(type: TypeDef, constraint: StringConstraint | undefined): TypeDef {\n if (!constraint) return type;\n switch (type.kind) {\n case \"string\":\n return type.value.constraint\n ? type\n : {\n ...type,\n value: {\n ...type.value,\n constraint,\n },\n };\n case \"optional\":\n return {\n ...type,\n value: {\n ...type.value,\n type: applyStringConstraintFallback(type.value.type, constraint),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n ...type.value,\n elementType: applyStringConstraintFallback(type.value.elementType, constraint),\n },\n };\n default:\n return type;\n }\n}\n\nfunction applyStringSuggestionsFallback(type: TypeDef, suggestions: StringSuggestion[] | undefined): TypeDef {\n if (!suggestions) return type;\n switch (type.kind) {\n case \"string\":\n return type.value.suggestions\n ? type\n : {\n ...type,\n value: {\n ...type.value,\n suggestions,\n },\n };\n case \"optional\":\n return {\n ...type,\n value: {\n ...type.value,\n type: applyStringSuggestionsFallback(type.value.type, suggestions),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n ...type.value,\n elementType: applyStringSuggestionsFallback(type.value.elementType, suggestions),\n },\n };\n default:\n return type;\n }\n}\n\nfunction applyOmsStructFieldValidation(\n type: TypeDef,\n omsMetadata: ActionTypeOmsMetadata | undefined,\n parameterName: string\n): TypeDef {\n if (!omsMetadata) return type;\n switch (type.kind) {\n case \"optional\":\n return {\n ...type,\n value: {\n ...type.value,\n type: applyOmsStructFieldValidation(type.value.type, omsMetadata, parameterName),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n ...type.value,\n elementType: applyOmsStructFieldValidation(\n type.value.elementType,\n omsMetadata,\n parameterName\n ),\n },\n };\n case \"struct\":\n return {\n ...type,\n value: {\n ...type.value,\n fields: type.value.fields.map((field) => ({\n ...field,\n type: applyStringSuggestionsFallback(\n applyStringConstraintFallback(\n field.type,\n convertOmsActionParameterStringConstraint(\n omsMetadata,\n parameterName,\n field.name\n )\n ),\n convertOmsActionParameterStringSuggestions(omsMetadata, parameterName, field.name)\n ),\n })),\n },\n };\n default:\n return type;\n }\n}\n\nfunction booleanType(): TypeDef {\n return { kind: \"boolean\", value: {} };\n}\n\nfunction integerType(): TypeDef {\n return { kind: \"integer\", value: {} };\n}\n\nfunction floatType(): TypeDef {\n return { kind: \"float\", value: {} };\n}\n\nfunction doubleType(): TypeDef {\n return { kind: \"double\", value: {} };\n}\n\nfunction dateType(): TypeDef {\n return { kind: \"date\", value: {} };\n}\n\nfunction timestampType(): TypeDef {\n return { kind: \"timestamp\", value: {} };\n}\n\nfunction geopointType(): TypeDef {\n return { kind: \"geopoint\", value: {} };\n}\n\nfunction attachmentType(type: \"attachment\" | \"media\"): TypeDef {\n return {\n kind: \"attachment\",\n value: { meta: foundryAttachmentMeta(type) },\n };\n}\n\nfunction createUniqueIdentifierParameterName(linkId: string): string {\n return `${FOUNDRY_UUID_PARAMETER_PREFIX}${encodeURIComponent(linkId)}`;\n}\n\nfunction getUniqueIdentifierLinkIdFromParameterName(parameterName: string): string | undefined {\n if (!parameterName.startsWith(FOUNDRY_UUID_PARAMETER_PREFIX)) {\n return undefined;\n }\n return decodeURIComponent(parameterName.slice(FOUNDRY_UUID_PARAMETER_PREFIX.length));\n}\n\nfunction convertActionParameterType(\n type: ActionParameterType,\n required = true,\n validation?: ActionParameterValidation\n): TypeDef {\n const allowedValues = validation?.defaultValidation.allowedValues;\n if (allowedValues?.type === \"valueType\") {\n return maybeOptional(\n {\n kind: \"ref\",\n value: { name: allowedValues.apiName },\n },\n required\n );\n }\n\n const baseType: TypeDef = (() => {\n switch (type.type) {\n case \"string\":\n // TODO: Convert Foundry \"user input\" parameters to a principal\n // reference once Ontologies V2 exposes that setting in action\n // metadata. It currently returns an unconstrained string.\n // https://valinor-enterprises.slack.com/archives/C08549X3VDM/p1787718253341589\n return stringType(\n convertActionParameterStringConstraint(validation),\n convertActionParameterStringSuggestions(validation)\n );\n case \"boolean\":\n return booleanType();\n case \"integer\":\n case \"long\":\n return integerType();\n case \"double\":\n return doubleType();\n case \"decimal\":\n // Preserve the exact value until Party Stack has a decimal\n // type with explicit precision and scale.\n return stringType();\n case \"date\":\n return dateType();\n case \"timestamp\":\n return timestampType();\n case \"attachment\":\n return attachmentType(\"attachment\");\n case \"mediaReference\":\n return attachmentType(\"media\");\n case \"geohash\":\n return geopointType();\n case \"geoshape\":\n case \"marking\":\n return stringType();\n case \"vector\":\n return {\n kind: \"list\",\n value: { elementType: doubleType() },\n };\n case \"array\":\n return {\n kind: \"list\",\n value: { elementType: convertActionParameterType(type.subType) },\n };\n case \"struct\":\n return {\n kind: \"struct\",\n value: {\n fields: type.fields.map((field, index) => ({\n name: field.name ?? `field${index + 1}`,\n displayName: field.name ?? `Field ${index + 1}`,\n type: convertOntologyDataType(field.fieldType, field.required),\n })),\n },\n };\n case \"object\":\n return {\n kind: \"objectReference\",\n value: { objectType: type.objectTypeApiName },\n };\n case \"objectType\":\n case \"interfaceObject\":\n case \"objectSet\":\n case \"scenarioReference\":\n return stringType();\n default: {\n const unsupported: never = type;\n return unsupported;\n }\n }\n })();\n\n return maybeOptional(baseType, required);\n}\n\nfunction convertActionParameterStringConstraint(\n validation?: ActionParameterValidation\n): StringConstraint | undefined {\n const allowedValues = validation?.defaultValidation.allowedValues;\n if (allowedValues?.type === \"oneOf\" && !allowedValues.otherValuesAllowed) {\n const options = allowedValues.options.flatMap((option) => {\n const value: unknown = option.value;\n return typeof value === \"string\" ? [{ value, label: option.displayName }] : [];\n });\n return options.length > 0\n ? {\n kind: \"enum\",\n value: { options },\n }\n : undefined;\n }\n if (allowedValues?.type === \"text\" && allowedValues.regex) {\n return {\n kind: \"regex\",\n value: { regex: allowedValues.regex },\n };\n }\n return undefined;\n}\n\nfunction convertActionParameterStringSuggestions(\n validation?: ActionParameterValidation\n): StringSuggestion[] | undefined {\n const allowedValues = validation?.defaultValidation.allowedValues;\n if (allowedValues?.type !== \"oneOf\" || !allowedValues.otherValuesAllowed) {\n return undefined;\n }\n const suggestions = allowedValues.options.flatMap((option) => {\n const value: unknown = option.value;\n return typeof value === \"string\"\n ? [\n {\n value,\n label: option.displayName,\n },\n ]\n : [];\n });\n return suggestions.length > 0 ? suggestions : undefined;\n}\n\nfunction convertOntologyDataType(type: OntologyDataType, required = true): TypeDef {\n const baseType: TypeDef = (() => {\n switch (type.type) {\n case \"string\":\n return stringType();\n case \"boolean\":\n return booleanType();\n case \"byte\":\n case \"short\":\n case \"integer\":\n case \"long\":\n return integerType();\n case \"float\":\n return floatType();\n case \"double\":\n case \"decimal\":\n return doubleType();\n case \"date\":\n return dateType();\n case \"timestamp\":\n return timestampType();\n case \"binary\":\n return attachmentType(\"attachment\");\n case \"mediaReference\":\n return attachmentType(\"media\");\n case \"array\":\n case \"set\":\n return {\n kind: \"list\",\n value: { elementType: convertOntologyDataType(type.itemType) },\n };\n case \"struct\":\n return {\n kind: \"struct\",\n value: {\n fields: type.fields.map((field, index) => ({\n name: field.name ?? `field${index + 1}`,\n displayName: field.name ?? `Field ${index + 1}`,\n type: convertOntologyDataType(field.fieldType, field.required),\n })),\n },\n };\n case \"object\":\n return {\n kind: \"objectReference\",\n value: { objectType: type.objectTypeApiName },\n };\n default:\n return stringType();\n }\n })();\n\n return maybeOptional(baseType, required);\n}\n\nfunction collectRuleArguments(rule: ActionLogicRule): Array<LogicRuleArgument | StructFieldArgument> {\n switch (rule.type) {\n case \"createObject\":\n case \"modifyObject\":\n return [\n ...Object.values(rule.propertyArguments),\n ...Object.values(rule.structPropertyArguments).flatMap((fields) => Object.values(fields)),\n ];\n default:\n return [];\n }\n}\n\nfunction collectMutationTargetParameterNames(rules: ActionLogicRule[]): Set<string> {\n const parameterNames = new Set<string>();\n for (const rule of rules) {\n switch (rule.type) {\n case \"modifyObject\":\n parameterNames.add(rule.objectToModify);\n break;\n case \"deleteObject\":\n parameterNames.add(rule.objectToDelete);\n break;\n }\n }\n return parameterNames;\n}\n\nfunction requireObjectReferenceMutationTarget(type: TypeDef, isMutationTarget: boolean): TypeDef {\n return isMutationTarget && type.kind === \"optional\" && type.value.type.kind === \"objectReference\"\n ? type.value.type\n : type;\n}\n\nfunction createSyntheticParameters(actionType: ActionTypeFullMetadata): {\n parameters: ActionParameterDef[];\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n} {\n const uniqueIdentifierParametersByLinkId = new Map<string, string>();\n let nowParameterName: string | undefined;\n\n for (const rule of actionType.fullLogicRules) {\n for (const argument of collectRuleArguments(rule)) {\n if (argument.type === \"uniqueIdentifier\" && argument.linkId) {\n if (!uniqueIdentifierParametersByLinkId.has(argument.linkId)) {\n uniqueIdentifierParametersByLinkId.set(\n argument.linkId,\n createUniqueIdentifierParameterName(argument.linkId)\n );\n }\n }\n if (argument.type === \"currentTime\" && !nowParameterName) {\n nowParameterName = FOUNDRY_NOW_PARAMETER_NAME;\n }\n }\n }\n\n const parameters: ActionParameterDef[] = Array.from(uniqueIdentifierParametersByLinkId.values()).map(\n (name, index): ActionParameterDef => ({\n name,\n displayName: `Generated UUID ${index + 1}`,\n type: { kind: \"string\", value: {} },\n defaultValue: {\n kind: \"uuid\",\n value: {},\n },\n })\n );\n\n if (nowParameterName) {\n parameters.push({\n name: nowParameterName,\n displayName: \"Current time\",\n type: { kind: \"timestamp\", value: {} },\n defaultValue: {\n kind: \"now\",\n value: {},\n },\n });\n }\n\n return { parameters, uniqueIdentifierParametersByLinkId, nowParameterName };\n}\n\nexport function getFoundryActionOverrideParameterMapping(actionType: ActionTypeDef): {\n uuidByParameterName: Map<string, string>;\n nowParameterName?: string;\n} {\n const uuidByParameterName = new Map<string, string>();\n let nowParameterName: string | undefined;\n\n for (const parameter of actionType.parameters) {\n if (parameter.defaultValue?.kind !== \"uuid\" && parameter.defaultValue?.kind !== \"now\") {\n continue;\n }\n switch (parameter.defaultValue.kind) {\n case \"uuid\": {\n const linkId = getUniqueIdentifierLinkIdFromParameterName(parameter.name);\n if (linkId) {\n uuidByParameterName.set(parameter.name, linkId);\n }\n break;\n }\n case \"now\":\n nowParameterName ??= parameter.name;\n break;\n }\n }\n\n return { uuidByParameterName, nowParameterName };\n}\n\nfunction inputReference(name: string): Expression {\n return {\n kind: \"inputReference\",\n value: { name },\n };\n}\n\nfunction getAtExpression(source: Expression, path: string[]): Expression {\n return {\n kind: \"getAt\",\n value: { source, path },\n };\n}\n\nfunction objectField(parameterName: string, path: string[]): Expression {\n return getAtExpression(\n {\n kind: \"lookup\",\n value: {\n reference: inputReference(parameterName),\n },\n },\n path\n );\n}\n\n// TODO: This uses regex heuristics to infer the type of static literal values without\n// knowing the target property type. We should eventually resolve the target property's\n// TypeDef from the object type definition so we decode accurately instead of guessing\n// from the string format.\nconst ISO_TIMESTAMP_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/;\nconst ISO_DATE_RE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst GEO_POINT_RE = /^(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)$/;\n\nfunction decodeLiteralValue(value: unknown): unknown {\n if (typeof value !== \"string\") {\n return value;\n }\n\n if (ISO_TIMESTAMP_RE.test(value)) {\n try {\n return Temporal.Instant.from(value);\n } catch {\n return value;\n }\n }\n\n if (ISO_DATE_RE.test(value)) {\n try {\n return Temporal.PlainDate.from(value);\n } catch {\n return value;\n }\n }\n\n const geoMatch = GEO_POINT_RE.exec(value);\n if (geoMatch) {\n return { lat: Number(geoMatch[1]), lon: Number(geoMatch[2]) };\n }\n\n return value;\n}\n\nfunction convertLogicRuleArgument(\n argument: LogicRuleArgument | StructFieldArgument,\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): Expression {\n switch (argument.type) {\n case \"parameterId\":\n return inputReference(argument.parameterId);\n case \"objectParameterPropertyValue\":\n return objectField(argument.parameterId, [argument.propertyTypeApiName]);\n case \"structParameterFieldValue\":\n return getAtExpression(inputReference(argument.parameterId), [\n argument.structParameterFieldApiName,\n ]);\n case \"structListParameterFieldValue\":\n throw new Error(\"Foundry list-of-struct field arguments must be converted as a list mapping.\");\n case \"uniqueIdentifier\": {\n const parameterName = argument.linkId\n ? syntheticParameters.uniqueIdentifierParametersByLinkId.get(argument.linkId)\n : undefined;\n return parameterName\n ? inputReference(parameterName)\n : {\n kind: \"uuid\",\n value: {},\n };\n }\n case \"currentTime\":\n return syntheticParameters.nowParameterName\n ? inputReference(syntheticParameters.nowParameterName)\n : {\n kind: \"now\",\n value: {},\n };\n case \"staticValue\":\n return {\n kind: \"literal\",\n value: { value: decodeLiteralValue(argument.value) },\n };\n case \"currentUser\":\n return {\n kind: \"contextReference\",\n value: { name: FOUNDRY_CURRENT_USER_CONTEXT_FIELD },\n };\n default:\n throw new Error(`Unsupported Foundry action argument \"${argument.type}\".`);\n }\n}\n\nfunction convertAssignments(\n rule: Extract<ActionLogicRule, { type: \"createObject\" | \"modifyObject\" }>,\n parameters: ActionTypeFullMetadata[\"actionType\"][\"parameters\"],\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): PropertyAssignment[] {\n return [\n ...Object.entries(rule.propertyArguments).map(([property, argument]) => ({\n property: [property],\n value: convertLogicRuleArgument(argument, syntheticParameters),\n })),\n ...Object.entries(rule.structPropertyArguments).flatMap(([property, fields]) =>\n convertStructPropertyAssignments(property, fields, parameters, syntheticParameters)\n ),\n ];\n}\n\nfunction unsupportedListStructAssignment(property: string, reason: string): never {\n throw new Error(\n `Unsupported Foundry list-of-struct assignment for property \"${property}\": ${reason}. ` +\n \"Party Stack only supports mappings driven by one list-of-struct parameter.\"\n );\n}\n\nfunction convertStructPropertyAssignments(\n property: string,\n fields: Record<string, StructFieldArgument>,\n parameters: ActionTypeFullMetadata[\"actionType\"][\"parameters\"],\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): PropertyAssignment[] {\n const entries = Object.entries(fields);\n const listEntries = entries.filter(\n (entry): entry is [string, Extract<StructFieldArgument, { type: \"structListParameterFieldValue\" }>] =>\n entry[1].type === \"structListParameterFieldValue\"\n );\n\n if (listEntries.length === 0) {\n return entries.map(([field, argument]) => ({\n property: [property, field],\n value: convertLogicRuleArgument(argument, syntheticParameters),\n }));\n }\n\n if (listEntries.length !== entries.length) {\n return unsupportedListStructAssignment(\n property,\n \"list fields are mixed with non-list struct field arguments\"\n );\n }\n\n const parameterIds = new Set(listEntries.map(([, argument]) => argument.parameterId));\n if (parameterIds.size !== 1) {\n return unsupportedListStructAssignment(property, \"fields are mapped from multiple list parameters\");\n }\n\n const parameterId = listEntries[0]![1].parameterId;\n const parameter = parameters[parameterId];\n if (parameter?.dataType.type !== \"array\" || parameter.dataType.subType.type !== \"struct\") {\n return unsupportedListStructAssignment(\n property,\n `source parameter \"${parameterId}\" is not a list of structs`\n );\n }\n\n return [\n {\n property: [property],\n value: {\n kind: \"map\",\n value: {\n source: inputReference(parameterId),\n binding: FOUNDRY_LIST_ITEM_BINDING,\n body: {\n kind: \"struct\",\n value: {\n fields: entries.map(([field, argument]) => ({\n name: field,\n value:\n argument.type === \"structListParameterFieldValue\"\n ? getAtExpression(\n {\n kind: \"localReference\",\n value: {\n name: FOUNDRY_LIST_ITEM_BINDING,\n },\n },\n [argument.structParameterFieldApiName]\n )\n : convertLogicRuleArgument(argument, syntheticParameters),\n })),\n },\n },\n },\n },\n },\n ];\n}\n\nfunction convertLogicStep(\n rule: ActionLogicRule,\n parameters: ActionTypeFullMetadata[\"actionType\"][\"parameters\"],\n syntheticParameters: {\n uniqueIdentifierParametersByLinkId: Map<string, string>;\n nowParameterName?: string;\n }\n): ActionTypeDef[\"logic\"][number] | null {\n switch (rule.type) {\n case \"createObject\":\n return {\n kind: \"createObject\",\n value: {\n objectType: rule.objectTypeApiName,\n values: convertAssignments(rule, parameters, syntheticParameters),\n },\n };\n case \"modifyObject\":\n return {\n kind: \"updateObject\",\n value: {\n object: {\n name: rule.objectToModify,\n },\n values: convertAssignments(rule, parameters, syntheticParameters),\n },\n };\n case \"deleteObject\":\n return {\n kind: \"deleteObject\",\n value: {\n object: {\n name: rule.objectToDelete,\n },\n },\n };\n default:\n return null;\n }\n}\n\nexport function convertFoundryMetaActionType(\n actionType: ActionTypeFullMetadata,\n omsMetadata?: ActionTypeOmsMetadata\n): MetaActionType {\n const syntheticParameters = createSyntheticParameters(actionType);\n const mutationTargetParameterNames = collectMutationTargetParameterNames(actionType.fullLogicRules);\n const fullLogicRules = actionType.fullLogicRules\n .map((rule) => convertLogicStep(rule, actionType.actionType.parameters, syntheticParameters))\n .filter((rule): rule is NonNullable<typeof rule> => rule !== null);\n const parameters = Object.entries(actionType.actionType.parameters).map(\n ([name, parameter]): ActionParameterDef => {\n const type = requireObjectReferenceMutationTarget(\n convertActionParameterType(parameter.dataType, parameter.required, parameter.validation),\n mutationTargetParameterNames.has(name)\n );\n return {\n name,\n displayName: parameter.displayName ?? name,\n type: applyStringSuggestionsFallback(\n applyStringConstraintFallback(\n applyOmsStructFieldValidation(type, omsMetadata, name),\n convertOmsActionParameterStringConstraint(omsMetadata, name)\n ),\n convertOmsActionParameterStringSuggestions(omsMetadata, name)\n ),\n description: parameter.description,\n };\n }\n );\n const defaultsByParameter = convertOmsActionParameterDefaults(omsMetadata, parameters);\n const foundryIcon = omsMetadata?.actionType.metadata?.displayMetadata?.icon;\n\n return {\n id: actionType.actionType.rid,\n name: toOntologyActionTypeName(actionType.actionType.apiName),\n displayName: actionType.actionType.displayName ?? actionType.actionType.apiName,\n description: actionType.actionType.description,\n icon:\n foundryIcon?.type === \"blueprint\"\n ? fromBlueprintIconName(foundryIcon.blueprint.locator)\n : undefined,\n color: foundryIcon?.type === \"blueprint\" ? foundryIcon.blueprint.color : undefined,\n deprecated:\n actionType.actionType.status === \"DEPRECATED\" ? { message: \"Deprecated in Foundry.\" } : undefined,\n parameters: [\n ...parameters.map((parameter) => ({\n ...parameter,\n defaultValue: defaultsByParameter.get(parameter.name),\n })),\n ...syntheticParameters.parameters,\n ],\n logic: fullLogicRules,\n };\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ObjectTypeFullMetadata } from "@osdk/foundry.ontologies";
2
- import { MetaLinkType } from "@party-stack/ontology";
2
+ import { LinkType } from "@party-stack/ontology-spec/meta";
3
3
  //#region src/meta/convertMetaLinkType.d.ts
4
- export declare function convertFoundryMetaLinkTypes(objectTypes: ObjectTypeFullMetadata[]): MetaLinkType[];
4
+ export declare function convertFoundryMetaLinkTypes(objectTypes: Pick<ObjectTypeFullMetadata, "linkTypes">[]): LinkType[];
5
5
  //#endregion
6
6
  //# sourceMappingURL=convertMetaLinkType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convertMetaLinkType.d.ts","names":[],"sources":["../../src/meta/convertMetaLinkType.ts"],"mappings":";;;wBAQgB,4BAA4B,aAAa,2BAA2B"}
1
+ {"version":3,"file":"convertMetaLinkType.d.ts","names":["MetaLinkType"],"sources":["../../src/meta/convertMetaLinkType.ts"],"mappings":";;;wBAQgB,4BACZ,aAAa,KAAK,yCACnBA"}
@@ -12,27 +12,27 @@ function convertFoundryMetaLinkTypes(objectTypes) {
12
12
  }
13
13
  function convertFoundryMetaLinkType(id, sides) {
14
14
  if (sides.length !== 2) return null;
15
- const source = sides.find((side) => side.foreignKeyPropertyApiName);
16
- if (!source) return null;
17
- const target = sides.find((side) => side !== source);
18
- if (!target) return null;
15
+ const forward = sides.find((side) => side.foreignKeyPropertyApiName);
16
+ if (!forward) return null;
17
+ const reverse = sides.find((side) => side !== forward);
18
+ if (!reverse) return null;
19
19
  return {
20
20
  id,
21
21
  source: {
22
- objectType: source.objectTypeApiName,
23
- name: source.apiName,
24
- displayName: source.displayName
22
+ objectType: reverse.objectTypeApiName,
23
+ name: reverse.apiName,
24
+ displayName: reverse.displayName
25
25
  },
26
26
  target: {
27
- objectType: target.objectTypeApiName,
28
- name: target.apiName,
29
- displayName: target.displayName
27
+ objectType: forward.objectTypeApiName,
28
+ name: forward.apiName,
29
+ displayName: forward.displayName
30
30
  },
31
31
  foreignKey: (() => {
32
- invariant(source.foreignKeyPropertyApiName, "Expected Foundry link foreign key.");
33
- return source.foreignKeyPropertyApiName;
32
+ invariant(forward.foreignKeyPropertyApiName, "Expected Foundry link foreign key.");
33
+ return forward.foreignKeyPropertyApiName;
34
34
  })(),
35
- cardinality: convertFoundryLinkCardinality(source.cardinality)
35
+ cardinality: convertFoundryLinkCardinality(reverse.cardinality)
36
36
  };
37
37
  }
38
38
  function convertFoundryLinkCardinality(cardinality) {
@@ -1 +1 @@
1
- {"version":3,"file":"convertMetaLinkType.js","names":[],"sources":["../../src/meta/convertMetaLinkType.ts"],"sourcesContent":["import { invariant } from \"@bobbyfidz/panic\";\nimport type {\n LinkTypeSideCardinality,\n LinkTypeSideV2,\n ObjectTypeFullMetadata,\n} from \"@osdk/foundry.ontologies\";\nimport type { MetaLinkType } from \"@party-stack/ontology\";\n\nexport function convertFoundryMetaLinkTypes(objectTypes: ObjectTypeFullMetadata[]): MetaLinkType[] {\n const sidesByRid = new Map<string, LinkTypeSideV2[]>();\n\n for (const objectType of objectTypes) {\n for (const linkType of objectType.linkTypes) {\n const key = linkType.linkTypeRid;\n const sides = sidesByRid.get(key) ?? [];\n sides.push(linkType);\n sidesByRid.set(key, sides);\n }\n }\n\n return Array.from(sidesByRid.entries())\n .map(([id, sides]) => convertFoundryMetaLinkType(id, sides))\n .filter((linkType): linkType is MetaLinkType => linkType !== null);\n}\n\nfunction convertFoundryMetaLinkType(id: string, sides: LinkTypeSideV2[]): MetaLinkType | null {\n if (sides.length !== 2) {\n return null;\n }\n\n const source = sides.find((side) => side.foreignKeyPropertyApiName);\n if (!source) {\n return null;\n }\n\n const target = sides.find((side) => side !== source);\n if (!target) {\n return null;\n }\n\n return {\n id,\n source: {\n objectType: source.objectTypeApiName,\n name: source.apiName,\n displayName: source.displayName,\n },\n target: {\n objectType: target.objectTypeApiName,\n name: target.apiName,\n displayName: target.displayName,\n },\n foreignKey: (() => {\n invariant(source.foreignKeyPropertyApiName, \"Expected Foundry link foreign key.\");\n return source.foreignKeyPropertyApiName;\n })(),\n cardinality: convertFoundryLinkCardinality(source.cardinality),\n };\n}\n\nfunction convertFoundryLinkCardinality(cardinality: LinkTypeSideCardinality): MetaLinkType[\"cardinality\"] {\n return cardinality === \"ONE\" ? \"one\" : \"many\";\n}\n"],"mappings":";;AAQA,SAAgB,4BAA4B,aAAuD;CAC/F,MAAM,6BAAa,IAAI,IAA8B;CAErD,KAAK,MAAM,cAAc,aACrB,KAAK,MAAM,YAAY,WAAW,WAAW;EACzC,MAAM,MAAM,SAAS;EACrB,MAAM,QAAQ,WAAW,IAAI,GAAG,KAAK,CAAC;EACtC,MAAM,KAAK,QAAQ;EACnB,WAAW,IAAI,KAAK,KAAK;CAC7B;CAGJ,OAAO,MAAM,KAAK,WAAW,QAAQ,CAAC,CAAC,CAClC,KAAK,CAAC,IAAI,WAAW,2BAA2B,IAAI,KAAK,CAAC,CAAC,CAC3D,QAAQ,aAAuC,aAAa,IAAI;AACzE;AAEA,SAAS,2BAA2B,IAAY,OAA8C;CAC1F,IAAI,MAAM,WAAW,GACjB,OAAO;CAGX,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,yBAAyB;CAClE,IAAI,CAAC,QACD,OAAO;CAGX,MAAM,SAAS,MAAM,MAAM,SAAS,SAAS,MAAM;CACnD,IAAI,CAAC,QACD,OAAO;CAGX,OAAO;EACH;EACA,QAAQ;GACJ,YAAY,OAAO;GACnB,MAAM,OAAO;GACb,aAAa,OAAO;EACxB;EACA,QAAQ;GACJ,YAAY,OAAO;GACnB,MAAM,OAAO;GACb,aAAa,OAAO;EACxB;EACA,mBAAmB;GACf,UAAU,OAAO,2BAA2B,oCAAoC;GAChF,OAAO,OAAO;EAClB,EAAA,CAAG;EACH,aAAa,8BAA8B,OAAO,WAAW;CACjE;AACJ;AAEA,SAAS,8BAA8B,aAAmE;CACtG,OAAO,gBAAgB,QAAQ,QAAQ;AAC3C"}
1
+ {"version":3,"file":"convertMetaLinkType.js","names":[],"sources":["../../src/meta/convertMetaLinkType.ts"],"sourcesContent":["import { invariant } from \"@bobbyfidz/panic\";\nimport type {\n LinkTypeSideCardinality,\n LinkTypeSideV2,\n ObjectTypeFullMetadata,\n} from \"@osdk/foundry.ontologies\";\nimport type { LinkType as MetaLinkType } from \"@party-stack/ontology-spec/meta\";\n\nexport function convertFoundryMetaLinkTypes(\n objectTypes: Pick<ObjectTypeFullMetadata, \"linkTypes\">[]\n): MetaLinkType[] {\n const sidesByRid = new Map<string, LinkTypeSideV2[]>();\n\n for (const objectType of objectTypes) {\n for (const linkType of objectType.linkTypes) {\n const key = linkType.linkTypeRid;\n const sides = sidesByRid.get(key) ?? [];\n sides.push(linkType);\n sidesByRid.set(key, sides);\n }\n }\n\n return Array.from(sidesByRid.entries())\n .map(([id, sides]) => convertFoundryMetaLinkType(id, sides))\n .filter((linkType): linkType is MetaLinkType => linkType !== null);\n}\n\nfunction convertFoundryMetaLinkType(id: string, sides: LinkTypeSideV2[]): MetaLinkType | null {\n if (sides.length !== 2) {\n return null;\n }\n\n // Foundry sides describe outgoing traversal: objectTypeApiName and cardinality\n // describe the destination, while the FK lives on the enclosing object type.\n const forward = sides.find((side) => side.foreignKeyPropertyApiName);\n if (!forward) {\n return null;\n }\n\n const reverse = sides.find((side) => side !== forward);\n if (!reverse) {\n return null;\n }\n\n return {\n id,\n source: {\n objectType: reverse.objectTypeApiName,\n name: reverse.apiName,\n displayName: reverse.displayName,\n },\n target: {\n objectType: forward.objectTypeApiName,\n name: forward.apiName,\n displayName: forward.displayName,\n },\n foreignKey: (() => {\n invariant(forward.foreignKeyPropertyApiName, \"Expected Foundry link foreign key.\");\n return forward.foreignKeyPropertyApiName;\n })(),\n cardinality: convertFoundryLinkCardinality(reverse.cardinality),\n };\n}\n\nfunction convertFoundryLinkCardinality(cardinality: LinkTypeSideCardinality): MetaLinkType[\"cardinality\"] {\n return cardinality === \"ONE\" ? \"one\" : \"many\";\n}\n"],"mappings":";;AAQA,SAAgB,4BACZ,aACc;CACd,MAAM,6BAAa,IAAI,IAA8B;CAErD,KAAK,MAAM,cAAc,aACrB,KAAK,MAAM,YAAY,WAAW,WAAW;EACzC,MAAM,MAAM,SAAS;EACrB,MAAM,QAAQ,WAAW,IAAI,GAAG,KAAK,CAAC;EACtC,MAAM,KAAK,QAAQ;EACnB,WAAW,IAAI,KAAK,KAAK;CAC7B;CAGJ,OAAO,MAAM,KAAK,WAAW,QAAQ,CAAC,CAAC,CAClC,KAAK,CAAC,IAAI,WAAW,2BAA2B,IAAI,KAAK,CAAC,CAAC,CAC3D,QAAQ,aAAuC,aAAa,IAAI;AACzE;AAEA,SAAS,2BAA2B,IAAY,OAA8C;CAC1F,IAAI,MAAM,WAAW,GACjB,OAAO;CAKX,MAAM,UAAU,MAAM,MAAM,SAAS,KAAK,yBAAyB;CACnE,IAAI,CAAC,SACD,OAAO;CAGX,MAAM,UAAU,MAAM,MAAM,SAAS,SAAS,OAAO;CACrD,IAAI,CAAC,SACD,OAAO;CAGX,OAAO;EACH;EACA,QAAQ;GACJ,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACd,aAAa,QAAQ;EACzB;EACA,QAAQ;GACJ,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACd,aAAa,QAAQ;EACzB;EACA,mBAAmB;GACf,UAAU,QAAQ,2BAA2B,oCAAoC;GACjF,OAAO,QAAQ;EACnB,EAAA,CAAG;EACH,aAAa,8BAA8B,QAAQ,WAAW;CAClE;AACJ;AAEA,SAAS,8BAA8B,aAAmE;CACtG,OAAO,gBAAgB,QAAQ,QAAQ;AAC3C"}
@@ -1,6 +1,6 @@
1
1
  import { ObjectTypeFullMetadata } from "@osdk/foundry.ontologies";
2
- import { MetaObjectType } from "@party-stack/ontology";
2
+ import { ObjectType } from "@party-stack/ontology-spec/meta";
3
3
  //#region src/meta/convertMetaObjectType.d.ts
4
- export declare function convertFoundryMetaObjectType(metadata: ObjectTypeFullMetadata): MetaObjectType;
4
+ export declare function convertFoundryMetaObjectType(metadata: Pick<ObjectTypeFullMetadata, "objectType">): ObjectType;
5
5
  //#endregion
6
6
  //# sourceMappingURL=convertMetaObjectType.d.ts.map