@party-stack/foundry-ontology 0.18.0 → 0.19.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 (254) hide show
  1. package/README.md +19 -0
  2. package/lib/adapter/convertLoadSubsetOptions.d.ts +2 -0
  3. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
  4. package/lib/adapter/convertLoadSubsetOptions.js +158 -191
  5. package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
  6. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +17 -15
  7. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +1 -1
  8. package/lib/adapter/createFoundryOntologyBackendAdapter.js +288 -400
  9. package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +1 -1
  10. package/lib/adapter/foundryActionValidation.d.ts +17 -15
  11. package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
  12. package/lib/adapter/foundryActionValidation.js +206 -305
  13. package/lib/adapter/foundryActionValidation.js.map +1 -1
  14. package/lib/adapter/foundryCodec.d.ts +10 -8
  15. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  16. package/lib/adapter/foundryCodec.js +180 -287
  17. package/lib/adapter/foundryCodec.js.map +1 -1
  18. package/lib/adapter/foundryMediaId.d.ts +6 -4
  19. package/lib/adapter/foundryMediaId.d.ts.map +1 -1
  20. package/lib/adapter/foundryMediaId.js +31 -32
  21. package/lib/adapter/foundryMediaId.js.map +1 -1
  22. package/lib/adapter/index.d.ts +4 -4
  23. package/lib/adapter/index.js +4 -4
  24. package/lib/adapter/objectCollectionOptions.d.ts +18 -17
  25. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
  26. package/lib/adapter/objectCollectionOptions.js +451 -538
  27. package/lib/adapter/objectCollectionOptions.js.map +1 -1
  28. package/lib/config/applyAttachmentConstraintOverrides.d.ts +6 -4
  29. package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +1 -1
  30. package/lib/config/applyAttachmentConstraintOverrides.js +45 -49
  31. package/lib/config/applyAttachmentConstraintOverrides.js.map +1 -1
  32. package/lib/config/index.d.ts +17 -15
  33. package/lib/config/index.d.ts.map +1 -1
  34. package/lib/config/index.js +56 -81
  35. package/lib/config/index.js.map +1 -1
  36. package/lib/connection.d.ts +28 -26
  37. package/lib/connection.d.ts.map +1 -1
  38. package/lib/connection.js +183 -215
  39. package/lib/connection.js.map +1 -1
  40. package/lib/index.d.ts +9 -5
  41. package/lib/index.js +9 -5
  42. package/lib/installation/createFoundryBackendInstallation.d.ts +21 -20
  43. package/lib/installation/createFoundryBackendInstallation.d.ts.map +1 -1
  44. package/lib/installation/createFoundryBackendInstallation.js +52 -62
  45. package/lib/installation/createFoundryBackendInstallation.js.map +1 -1
  46. package/lib/installation/index.d.ts +2 -2
  47. package/lib/installation/index.js +1 -2
  48. package/lib/meta/actionTypeCollectionOptions.d.ts +8 -6
  49. package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
  50. package/lib/meta/actionTypeCollectionOptions.js +49 -49
  51. package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
  52. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +3 -1
  53. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +1 -1
  54. package/lib/meta/convertActionTypeLoadSubsetOptions.js +69 -75
  55. package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +1 -1
  56. package/lib/meta/convertMetaActionType.d.ts +7 -5
  57. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  58. package/lib/meta/convertMetaActionType.js +458 -581
  59. package/lib/meta/convertMetaActionType.js.map +1 -1
  60. package/lib/meta/convertMetaLinkType.d.ts +4 -2
  61. package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
  62. package/lib/meta/convertMetaLinkType.js +37 -43
  63. package/lib/meta/convertMetaLinkType.js.map +1 -1
  64. package/lib/meta/convertMetaObjectType.d.ts +4 -2
  65. package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
  66. package/lib/meta/convertMetaObjectType.js +34 -35
  67. package/lib/meta/convertMetaObjectType.js.map +1 -1
  68. package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -2
  69. package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -1
  70. package/lib/meta/convertMetaQueryFunctionType.js +113 -94
  71. package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
  72. package/lib/meta/convertMetaTypeDef.d.ts +4 -2
  73. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
  74. package/lib/meta/convertMetaTypeDef.js +178 -176
  75. package/lib/meta/convertMetaTypeDef.js.map +1 -1
  76. package/lib/meta/convertMetaValueType.d.ts +4 -2
  77. package/lib/meta/convertMetaValueType.d.ts.map +1 -1
  78. package/lib/meta/convertMetaValueType.js +11 -7
  79. package/lib/meta/convertMetaValueType.js.map +1 -1
  80. package/lib/meta/convertOmsActionParameterMetadata.d.ts +4 -2
  81. package/lib/meta/convertOmsActionParameterMetadata.d.ts.map +1 -1
  82. package/lib/meta/convertOmsActionParameterMetadata.js +107 -163
  83. package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
  84. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +7 -5
  85. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +1 -1
  86. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +39 -41
  87. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +1 -1
  88. package/lib/meta/entityCollectionOptions.d.ts +12 -10
  89. package/lib/meta/entityCollectionOptions.d.ts.map +1 -1
  90. package/lib/meta/entityCollectionOptions.js +59 -62
  91. package/lib/meta/entityCollectionOptions.js.map +1 -1
  92. package/lib/meta/foundryAttachmentMetadata.d.ts +2 -0
  93. package/lib/meta/foundryAttachmentMetadata.d.ts.map +1 -1
  94. package/lib/meta/foundryAttachmentMetadata.js +13 -14
  95. package/lib/meta/foundryAttachmentMetadata.js.map +1 -1
  96. package/lib/meta/index.d.ts +5 -5
  97. package/lib/meta/index.js +5 -5
  98. package/lib/meta/loadActionTypeOmsMetadata.d.ts +5 -3
  99. package/lib/meta/loadActionTypeOmsMetadata.d.ts.map +1 -1
  100. package/lib/meta/loadActionTypeOmsMetadata.js +102 -139
  101. package/lib/meta/loadActionTypeOmsMetadata.js.map +1 -1
  102. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +7 -5
  103. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -1
  104. package/lib/meta/queryFunctionTypeCollectionOptions.js +47 -49
  105. package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -1
  106. package/lib/stagedWrites.d.ts +26 -24
  107. package/lib/stagedWrites.d.ts.map +1 -1
  108. package/lib/stagedWrites.js +55 -66
  109. package/lib/stagedWrites.js.map +1 -1
  110. package/lib/users/createFoundryAdminOntologyRoute.d.ts +47 -17366
  111. package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +1 -1
  112. package/lib/users/createFoundryAdminOntologyRoute.js +29 -37
  113. package/lib/users/createFoundryAdminOntologyRoute.js.map +1 -1
  114. package/lib/users/createFoundryUsersIntegration.d.ts +6 -4
  115. package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
  116. package/lib/users/createFoundryUsersIntegration.js +28 -30
  117. package/lib/users/createFoundryUsersIntegration.js.map +1 -1
  118. package/lib/users/foundryUser.d.ts +4 -2
  119. package/lib/users/foundryUser.d.ts.map +1 -1
  120. package/lib/users/foundryUser.js +69 -74
  121. package/lib/users/foundryUser.js.map +1 -1
  122. package/lib/users/index.d.ts +5 -5
  123. package/lib/users/index.js +5 -5
  124. package/lib/users/userCollectionOptions.d.ts +13 -11
  125. package/lib/users/userCollectionOptions.d.ts.map +1 -1
  126. package/lib/users/userCollectionOptions.js +82 -100
  127. package/lib/users/userCollectionOptions.js.map +1 -1
  128. package/lib/utils/AsyncIterable.d.ts +2 -0
  129. package/lib/utils/AsyncIterable.d.ts.map +1 -1
  130. package/lib/utils/AsyncIterable.js +26 -34
  131. package/lib/utils/AsyncIterable.js.map +1 -1
  132. package/lib/utils/actionTypeName.d.ts +2 -0
  133. package/lib/utils/actionTypeName.d.ts.map +1 -1
  134. package/lib/utils/actionTypeName.js +9 -7
  135. package/lib/utils/actionTypeName.js.map +1 -1
  136. package/lib/utils/chunk.d.ts +2 -0
  137. package/lib/utils/chunk.d.ts.map +1 -1
  138. package/lib/utils/chunk.js +8 -6
  139. package/lib/utils/chunk.js.map +1 -1
  140. package/package.json +21 -27
  141. package/lib/adapter/convertLoadSubsetOptions.test.d.ts +0 -2
  142. package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +0 -1
  143. package/lib/adapter/convertLoadSubsetOptions.test.js +0 -213
  144. package/lib/adapter/convertLoadSubsetOptions.test.js.map +0 -1
  145. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts +0 -2
  146. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts.map +0 -1
  147. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js +0 -628
  148. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js.map +0 -1
  149. package/lib/adapter/foundryActionValidation.test.d.ts +0 -2
  150. package/lib/adapter/foundryActionValidation.test.d.ts.map +0 -1
  151. package/lib/adapter/foundryActionValidation.test.js +0 -243
  152. package/lib/adapter/foundryActionValidation.test.js.map +0 -1
  153. package/lib/adapter/foundryCodec.test.d.ts +0 -2
  154. package/lib/adapter/foundryCodec.test.d.ts.map +0 -1
  155. package/lib/adapter/foundryCodec.test.js +0 -137
  156. package/lib/adapter/foundryCodec.test.js.map +0 -1
  157. package/lib/adapter/foundryMediaId.test.d.ts +0 -2
  158. package/lib/adapter/foundryMediaId.test.d.ts.map +0 -1
  159. package/lib/adapter/foundryMediaId.test.js +0 -23
  160. package/lib/adapter/foundryMediaId.test.js.map +0 -1
  161. package/lib/adapter/index.d.ts.map +0 -1
  162. package/lib/adapter/index.js.map +0 -1
  163. package/lib/adapter/objectCollectionOptions.test.d.ts +0 -2
  164. package/lib/adapter/objectCollectionOptions.test.d.ts.map +0 -1
  165. package/lib/adapter/objectCollectionOptions.test.js +0 -1290
  166. package/lib/adapter/objectCollectionOptions.test.js.map +0 -1
  167. package/lib/config/connectionPull.test.d.ts +0 -2
  168. package/lib/config/connectionPull.test.d.ts.map +0 -1
  169. package/lib/config/connectionPull.test.js +0 -151
  170. package/lib/config/connectionPull.test.js.map +0 -1
  171. package/lib/config/index.test.d.ts +0 -2
  172. package/lib/config/index.test.d.ts.map +0 -1
  173. package/lib/config/index.test.js +0 -182
  174. package/lib/config/index.test.js.map +0 -1
  175. package/lib/connection.test.d.ts +0 -2
  176. package/lib/connection.test.d.ts.map +0 -1
  177. package/lib/connection.test.js +0 -162
  178. package/lib/connection.test.js.map +0 -1
  179. package/lib/index.d.ts.map +0 -1
  180. package/lib/index.js.map +0 -1
  181. package/lib/installation/createFoundryBackendInstallation.test.d.ts +0 -2
  182. package/lib/installation/createFoundryBackendInstallation.test.d.ts.map +0 -1
  183. package/lib/installation/createFoundryBackendInstallation.test.js +0 -83
  184. package/lib/installation/createFoundryBackendInstallation.test.js.map +0 -1
  185. package/lib/installation/index.d.ts.map +0 -1
  186. package/lib/installation/index.js.map +0 -1
  187. package/lib/meta/actionTypeCollectionOptions.test.d.ts +0 -2
  188. package/lib/meta/actionTypeCollectionOptions.test.d.ts.map +0 -1
  189. package/lib/meta/actionTypeCollectionOptions.test.js +0 -24
  190. package/lib/meta/actionTypeCollectionOptions.test.js.map +0 -1
  191. package/lib/meta/actionTypeIdQuery.test.d.ts +0 -2
  192. package/lib/meta/actionTypeIdQuery.test.d.ts.map +0 -1
  193. package/lib/meta/actionTypeIdQuery.test.js +0 -131
  194. package/lib/meta/actionTypeIdQuery.test.js.map +0 -1
  195. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts +0 -2
  196. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts.map +0 -1
  197. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js +0 -138
  198. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js.map +0 -1
  199. package/lib/meta/convertMetaActionType.test.d.ts +0 -2
  200. package/lib/meta/convertMetaActionType.test.d.ts.map +0 -1
  201. package/lib/meta/convertMetaActionType.test.js +0 -1565
  202. package/lib/meta/convertMetaActionType.test.js.map +0 -1
  203. package/lib/meta/convertMetaLinkType.test.d.ts +0 -2
  204. package/lib/meta/convertMetaLinkType.test.d.ts.map +0 -1
  205. package/lib/meta/convertMetaLinkType.test.js +0 -110
  206. package/lib/meta/convertMetaLinkType.test.js.map +0 -1
  207. package/lib/meta/convertMetaObjectType.test.d.ts +0 -2
  208. package/lib/meta/convertMetaObjectType.test.d.ts.map +0 -1
  209. package/lib/meta/convertMetaObjectType.test.js +0 -250
  210. package/lib/meta/convertMetaObjectType.test.js.map +0 -1
  211. package/lib/meta/convertMetaQueryFunctionType.test.d.ts +0 -2
  212. package/lib/meta/convertMetaQueryFunctionType.test.d.ts.map +0 -1
  213. package/lib/meta/convertMetaQueryFunctionType.test.js +0 -134
  214. package/lib/meta/convertMetaQueryFunctionType.test.js.map +0 -1
  215. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts +0 -2
  216. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts.map +0 -1
  217. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js +0 -49
  218. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js.map +0 -1
  219. package/lib/meta/entityCollectionOptions.test.d.ts +0 -2
  220. package/lib/meta/entityCollectionOptions.test.d.ts.map +0 -1
  221. package/lib/meta/entityCollectionOptions.test.js +0 -98
  222. package/lib/meta/entityCollectionOptions.test.js.map +0 -1
  223. package/lib/meta/index.d.ts.map +0 -1
  224. package/lib/meta/index.js.map +0 -1
  225. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts +0 -2
  226. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts.map +0 -1
  227. package/lib/meta/loadActionTypeOmsMetadata.test.js +0 -218
  228. package/lib/meta/loadActionTypeOmsMetadata.test.js.map +0 -1
  229. package/lib/stagedWrites.test.d.ts +0 -2
  230. package/lib/stagedWrites.test.d.ts.map +0 -1
  231. package/lib/stagedWrites.test.js +0 -71
  232. package/lib/stagedWrites.test.js.map +0 -1
  233. package/lib/users/createFoundryUsersIntegration.test.d.ts +0 -2
  234. package/lib/users/createFoundryUsersIntegration.test.d.ts.map +0 -1
  235. package/lib/users/createFoundryUsersIntegration.test.js +0 -32
  236. package/lib/users/createFoundryUsersIntegration.test.js.map +0 -1
  237. package/lib/users/foundryUser.test.d.ts +0 -2
  238. package/lib/users/foundryUser.test.d.ts.map +0 -1
  239. package/lib/users/foundryUser.test.js +0 -45
  240. package/lib/users/foundryUser.test.js.map +0 -1
  241. package/lib/users/index.d.ts.map +0 -1
  242. package/lib/users/index.js.map +0 -1
  243. package/lib/users/userCollectionOptions.test.d.ts +0 -2
  244. package/lib/users/userCollectionOptions.test.d.ts.map +0 -1
  245. package/lib/users/userCollectionOptions.test.js +0 -18
  246. package/lib/users/userCollectionOptions.test.js.map +0 -1
  247. package/lib/utils/AsyncIterable.test.d.ts +0 -2
  248. package/lib/utils/AsyncIterable.test.d.ts.map +0 -1
  249. package/lib/utils/AsyncIterable.test.js +0 -17
  250. package/lib/utils/AsyncIterable.test.js.map +0 -1
  251. package/lib/utils/actionTypeName.test.d.ts +0 -2
  252. package/lib/utils/actionTypeName.test.d.ts.map +0 -1
  253. package/lib/utils/actionTypeName.test.js +0 -30
  254. package/lib/utils/actionTypeName.test.js.map +0 -1
@@ -1,333 +1,234 @@
1
+ import { fromPagination, toArray } from "../utils/AsyncIterable.js";
2
+ import { toFoundryActionTypeName } from "../utils/actionTypeName.js";
3
+ import { ActionTypesV2 } from "@osdk/foundry.ontologies";
1
4
  import { invariant } from "@bobbyfidz/panic";
2
- import { bulkLoadOntologyEntities, } from "@osdk/client.unstable";
5
+ import { certain, uncertain } from "@party-stack/ontology";
6
+ import { bulkLoadOntologyEntities } from "@osdk/client.unstable";
3
7
  import { GroupMemberships, Users } from "@osdk/foundry.admin";
4
- import { ActionTypesV2, } from "@osdk/foundry.ontologies";
5
- import { certain, uncertain, } from "@party-stack/ontology";
6
- import { toFoundryActionTypeName } from "../utils/actionTypeName.js";
7
- import * as AsyncIterable from "../utils/AsyncIterable.js";
8
+ //#region src/adapter/foundryActionValidation.ts
8
9
  function valuesEqual(left, right) {
9
- if (Object.is(left, right))
10
- return true;
11
- if (Array.isArray(left) && Array.isArray(right)) {
12
- return (left.length === right.length &&
13
- left.every((value, index) => valuesEqual(value, right[index])));
14
- }
15
- if (typeof left === "object" &&
16
- left !== null &&
17
- typeof right === "object" &&
18
- right !== null) {
19
- const leftEntries = Object.entries(left);
20
- const rightRecord = right;
21
- return (leftEntries.length === Object.keys(rightRecord).length &&
22
- leftEntries.every(([key, value]) => valuesEqual(value, rightRecord[key])));
23
- }
24
- return false;
10
+ if (Object.is(left, right)) return true;
11
+ if (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => valuesEqual(value, right[index]));
12
+ if (typeof left === "object" && left !== null && typeof right === "object" && right !== null) {
13
+ const leftEntries = Object.entries(left);
14
+ const rightRecord = right;
15
+ return leftEntries.length === Object.keys(rightRecord).length && leftEntries.every(([key, value]) => valuesEqual(value, rightRecord[key]));
16
+ }
17
+ return false;
25
18
  }
26
- export async function loadFoundrySubmissionCriteria(options) {
27
- const actionType = await ActionTypesV2.get(options.client, options.client.ontologyRid, toFoundryActionTypeName(options.actionTypeName));
28
- const response = await bulkLoadOntologyEntities({
29
- ...options.client,
30
- servicePath: "ontology-metadata/api",
31
- }, options.userId, {
32
- actionTypes: [{ rid: actionType.rid }],
33
- datasourceTypes: [],
34
- interfaceTypes: [],
35
- linkTypes: [],
36
- objectTypes: [],
37
- sharedPropertyTypes: [],
38
- typeGroups: [],
39
- });
40
- const loaded = response.actionTypes[0];
41
- invariant(loaded, `Foundry action type "${options.actionTypeName}" was not returned by metadata.`);
42
- return Object.values(loaded.actionType.actionTypeLogic.validation.actionTypeLevelValidation.rules).map((rule) => ({
43
- condition: rule.condition,
44
- failureMessage: rule.displayMetadata.failureMessage,
45
- }));
19
+ async function loadFoundrySubmissionCriteria(options) {
20
+ const actionType = await ActionTypesV2.get(options.client, options.client.ontologyRid, toFoundryActionTypeName(options.actionTypeName));
21
+ const loaded = (await bulkLoadOntologyEntities({
22
+ ...options.client,
23
+ servicePath: "ontology-metadata/api"
24
+ }, options.userId, {
25
+ actionTypes: [{ rid: actionType.rid }],
26
+ datasourceTypes: [],
27
+ interfaceTypes: [],
28
+ linkTypes: [],
29
+ objectTypes: [],
30
+ sharedPropertyTypes: [],
31
+ typeGroups: []
32
+ })).actionTypes[0];
33
+ invariant(loaded, `Foundry action type "${options.actionTypeName}" was not returned by metadata.`);
34
+ return Object.values(loaded.actionType.actionTypeLogic.validation.actionTypeLevelValidation.rules).map((rule) => ({
35
+ condition: rule.condition,
36
+ failureMessage: rule.displayMetadata.failureMessage
37
+ }));
46
38
  }
47
39
  function createEvaluationContext(options) {
48
- let groupIds;
49
- let markings;
50
- let user;
51
- return {
52
- ...options,
53
- knownParameters: options.knownParameters ?? new Set(Object.keys(options.parameters)),
54
- groupIds: () => {
55
- groupIds ??= loadGroupIds(options.client, options.userId);
56
- return groupIds;
57
- },
58
- markings: () => {
59
- markings ??= Users.getMarkings(options.client, options.userId).then((response) => response.view);
60
- return markings;
61
- },
62
- user: () => {
63
- user ??= Users.get(options.client, options.userId);
64
- return user;
65
- },
66
- };
40
+ let groupIds;
41
+ let markings;
42
+ let user;
43
+ return {
44
+ ...options,
45
+ knownParameters: options.knownParameters ?? new Set(Object.keys(options.parameters)),
46
+ groupIds: () => {
47
+ groupIds ??= loadGroupIds(options.client, options.userId);
48
+ return groupIds;
49
+ },
50
+ markings: () => {
51
+ markings ??= Users.getMarkings(options.client, options.userId).then((response) => response.view);
52
+ return markings;
53
+ },
54
+ user: () => {
55
+ user ??= Users.get(options.client, options.userId);
56
+ return user;
57
+ }
58
+ };
67
59
  }
68
60
  async function loadGroupIds(client, userId) {
69
- return AsyncIterable.toArray(AsyncIterable.fromPagination((pageSize, pageToken) => GroupMemberships.list(client, userId, {
70
- pageSize,
71
- pageToken,
72
- transitive: true,
73
- }), (page) => page.nextPageToken, (page) => page.data.map((membership) => membership.groupId), 1_000));
61
+ return toArray(fromPagination((pageSize, pageToken) => GroupMemberships.list(client, userId, {
62
+ pageSize,
63
+ pageToken,
64
+ transitive: true
65
+ }), (page) => page.nextPageToken, (page) => page.data.map((membership) => membership.groupId), 1e3));
74
66
  }
75
67
  function evaluateStaticValue(value) {
76
- const staticValue = value.staticValue;
77
- switch (staticValue.type) {
78
- case "boolean":
79
- return certain(staticValue.boolean);
80
- case "integer":
81
- return certain(staticValue.integer);
82
- case "long":
83
- return certain(staticValue.long);
84
- case "double":
85
- return certain(staticValue.double);
86
- case "string":
87
- return certain(staticValue.string);
88
- case "timestamp":
89
- return certain(staticValue.timestamp);
90
- case "booleanList":
91
- return certain(staticValue.booleanList.booleans);
92
- case "integerList":
93
- return certain(staticValue.integerList.integers);
94
- case "longList":
95
- return certain(staticValue.longList.longs);
96
- case "doubleList":
97
- return certain(staticValue.doubleList.doubles);
98
- case "stringList":
99
- return certain(staticValue.stringList.strings);
100
- case "timestampList":
101
- return certain(staticValue.timestampList.timestamps);
102
- case "decimal":
103
- return certain(staticValue.decimal.decimalValue);
104
- case "decimalList":
105
- return certain(staticValue.decimalList.decimals);
106
- case "date":
107
- return certain(staticValue.date.dateValue);
108
- case "dateList":
109
- return certain(staticValue.dateList.dates);
110
- case "marking":
111
- return certain(staticValue.marking.marking);
112
- case "markingList":
113
- return certain(staticValue.markingList.markings);
114
- case "attachment":
115
- return certain(staticValue.attachment.attachment);
116
- case "attachmentList":
117
- return certain(staticValue.attachmentList.attachments);
118
- case "objectType":
119
- return certain(staticValue.objectType.objectTypeId);
120
- case "null":
121
- return certain(null);
122
- default:
123
- return uncertain();
124
- }
68
+ const staticValue = value.staticValue;
69
+ switch (staticValue.type) {
70
+ case "boolean": return certain(staticValue.boolean);
71
+ case "integer": return certain(staticValue.integer);
72
+ case "long": return certain(staticValue.long);
73
+ case "double": return certain(staticValue.double);
74
+ case "string": return certain(staticValue.string);
75
+ case "timestamp": return certain(staticValue.timestamp);
76
+ case "booleanList": return certain(staticValue.booleanList.booleans);
77
+ case "integerList": return certain(staticValue.integerList.integers);
78
+ case "longList": return certain(staticValue.longList.longs);
79
+ case "doubleList": return certain(staticValue.doubleList.doubles);
80
+ case "stringList": return certain(staticValue.stringList.strings);
81
+ case "timestampList": return certain(staticValue.timestampList.timestamps);
82
+ case "decimal": return certain(staticValue.decimal.decimalValue);
83
+ case "decimalList": return certain(staticValue.decimalList.decimals);
84
+ case "date": return certain(staticValue.date.dateValue);
85
+ case "dateList": return certain(staticValue.dateList.dates);
86
+ case "marking": return certain(staticValue.marking.marking);
87
+ case "markingList": return certain(staticValue.markingList.markings);
88
+ case "attachment": return certain(staticValue.attachment.attachment);
89
+ case "attachmentList": return certain(staticValue.attachmentList.attachments);
90
+ case "objectType": return certain(staticValue.objectType.objectTypeId);
91
+ case "null": return certain(null);
92
+ default: return uncertain();
93
+ }
125
94
  }
126
95
  async function evaluateUserProperty(value, context) {
127
- switch (value.userProperty.propertyValue.type) {
128
- case "userId":
129
- return certain(context.userId);
130
- case "groupIds":
131
- return certain(await context.groupIds());
132
- case "organizationMarkingIds":
133
- return certain(await context.markings());
134
- case "userName":
135
- return certain((await context.user()).username);
136
- case "userAttributes": {
137
- const user = await context.user();
138
- return certain(user.attributes[value.userProperty.propertyValue.userAttributes.attributeKey]);
139
- }
140
- case "groupNames":
141
- return uncertain();
142
- }
96
+ switch (value.userProperty.propertyValue.type) {
97
+ case "userId": return certain(context.userId);
98
+ case "groupIds": return certain(await context.groupIds());
99
+ case "organizationMarkingIds": return certain(await context.markings());
100
+ case "userName": return certain((await context.user()).username);
101
+ case "userAttributes": {
102
+ const user = await context.user();
103
+ return certain(user.attributes[value.userProperty.propertyValue.userAttributes.attributeKey]);
104
+ }
105
+ case "groupNames": return uncertain();
106
+ }
143
107
  }
144
108
  async function evaluateConditionValue(value, context) {
145
- switch (value.type) {
146
- case "staticValue":
147
- return evaluateStaticValue(value);
148
- case "userProperty":
149
- return evaluateUserProperty(value, context);
150
- case "parameterId": {
151
- const parameterName = value.parameterId;
152
- const parameterValue = context.parameters[parameterName];
153
- return parameterValue !== undefined || context.knownParameters.has(parameterName)
154
- ? certain(parameterValue)
155
- : uncertain();
156
- }
157
- case "parameterLength": {
158
- const parameterName = value.parameterLength.parameterId;
159
- const parameterValue = context.parameters[parameterName];
160
- return typeof parameterValue === "string" || Array.isArray(parameterValue)
161
- ? certain(parameterValue.length)
162
- : uncertain();
163
- }
164
- case "objectParameterPropertyValue":
165
- case "interfaceParameterPropertyValue":
166
- case "interfaceParameterPropertyValueV2":
167
- return uncertain();
168
- }
109
+ switch (value.type) {
110
+ case "staticValue": return evaluateStaticValue(value);
111
+ case "userProperty": return evaluateUserProperty(value, context);
112
+ case "parameterId": {
113
+ const parameterName = value.parameterId;
114
+ const parameterValue = context.parameters[parameterName];
115
+ return parameterValue !== void 0 || context.knownParameters.has(parameterName) ? certain(parameterValue) : uncertain();
116
+ }
117
+ case "parameterLength": {
118
+ const parameterName = value.parameterLength.parameterId;
119
+ const parameterValue = context.parameters[parameterName];
120
+ return typeof parameterValue === "string" || Array.isArray(parameterValue) ? certain(parameterValue.length) : uncertain();
121
+ }
122
+ case "objectParameterPropertyValue":
123
+ case "interfaceParameterPropertyValue":
124
+ case "interfaceParameterPropertyValueV2": return uncertain();
125
+ }
169
126
  }
170
127
  function evaluateOrderedComparison(operator, left, right) {
171
- if (!((typeof left === "number" && typeof right === "number") ||
172
- (typeof left === "string" && typeof right === "string"))) {
173
- return uncertain();
174
- }
175
- switch (operator) {
176
- case "LESS_THAN":
177
- return certain(left < right);
178
- case "LESS_THAN_EQUALS":
179
- return certain(left <= right);
180
- case "GREATER_THAN":
181
- return certain(left > right);
182
- case "GREATER_THAN_EQUALS":
183
- return certain(left >= right);
184
- }
128
+ if (!(typeof left === "number" && typeof right === "number" || typeof left === "string" && typeof right === "string")) return uncertain();
129
+ switch (operator) {
130
+ case "LESS_THAN": return certain(left < right);
131
+ case "LESS_THAN_EQUALS": return certain(left <= right);
132
+ case "GREATER_THAN": return certain(left > right);
133
+ case "GREATER_THAN_EQUALS": return certain(left >= right);
134
+ }
185
135
  }
186
136
  async function evaluateCondition(condition, context) {
187
- switch (condition.type) {
188
- case "true":
189
- return certain(true);
190
- case "redacted":
191
- return uncertain();
192
- case "and": {
193
- const results = await Promise.all(condition.and.conditions.map((child) => evaluateCondition(child, context)));
194
- if (results.some((result) => result.certain && !result.value)) {
195
- return certain(false);
196
- }
197
- return results.some((result) => !result.certain)
198
- ? uncertain()
199
- : certain(true);
200
- }
201
- case "or": {
202
- const results = await Promise.all(condition.or.conditions.map((child) => evaluateCondition(child, context)));
203
- if (results.some((result) => result.certain && result.value)) {
204
- return certain(true);
205
- }
206
- return results.some((result) => !result.certain)
207
- ? uncertain()
208
- : certain(false);
209
- }
210
- case "not": {
211
- const result = await evaluateCondition(condition.not.condition, context);
212
- return result.certain ? certain(!result.value) : result;
213
- }
214
- case "comparison": {
215
- const [left, right] = await Promise.all([
216
- evaluateConditionValue(condition.comparison.left, context),
217
- evaluateConditionValue(condition.comparison.right, context),
218
- ]);
219
- if (!left.certain || !right.certain) {
220
- return uncertain();
221
- }
222
- switch (condition.comparison.operator) {
223
- case "EQUALS":
224
- return certain(valuesEqual(left.value, right.value));
225
- case "NOT_EQUALS":
226
- return certain(!valuesEqual(left.value, right.value));
227
- case "INTERSECTS": {
228
- const leftValues = Array.isArray(left.value) ? left.value : [left.value];
229
- const rightValues = new Set(Array.isArray(right.value) ? right.value : [right.value]);
230
- return certain(leftValues.some((entry) => rightValues.has(entry)));
231
- }
232
- case "LESS_THAN":
233
- case "LESS_THAN_EQUALS":
234
- case "GREATER_THAN":
235
- case "GREATER_THAN_EQUALS":
236
- return evaluateOrderedComparison(condition.comparison.operator, left.value, right.value);
237
- case "IS_OF_OBJECT_TYPE":
238
- return uncertain();
239
- default:
240
- return uncertain();
241
- }
242
- }
243
- case "regex": {
244
- const value = await evaluateConditionValue(condition.regex.value, context);
245
- if (!value.certain)
246
- return value;
247
- if (typeof value.value !== "string") {
248
- return uncertain();
249
- }
250
- try {
251
- return certain(new RegExp(condition.regex.regex).test(value.value));
252
- }
253
- catch {
254
- return uncertain();
255
- }
256
- }
257
- case "markings":
258
- return uncertain();
259
- case "executionContext":
260
- return uncertain();
261
- }
137
+ switch (condition.type) {
138
+ case "true": return certain(true);
139
+ case "redacted": return uncertain();
140
+ case "and": {
141
+ const results = await Promise.all(condition.and.conditions.map((child) => evaluateCondition(child, context)));
142
+ if (results.some((result) => result.certain && !result.value)) return certain(false);
143
+ return results.some((result) => !result.certain) ? uncertain() : certain(true);
144
+ }
145
+ case "or": {
146
+ const results = await Promise.all(condition.or.conditions.map((child) => evaluateCondition(child, context)));
147
+ if (results.some((result) => result.certain && result.value)) return certain(true);
148
+ return results.some((result) => !result.certain) ? uncertain() : certain(false);
149
+ }
150
+ case "not": {
151
+ const result = await evaluateCondition(condition.not.condition, context);
152
+ return result.certain ? certain(!result.value) : result;
153
+ }
154
+ case "comparison": {
155
+ const [left, right] = await Promise.all([evaluateConditionValue(condition.comparison.left, context), evaluateConditionValue(condition.comparison.right, context)]);
156
+ if (!left.certain || !right.certain) return uncertain();
157
+ switch (condition.comparison.operator) {
158
+ case "EQUALS": return certain(valuesEqual(left.value, right.value));
159
+ case "NOT_EQUALS": return certain(!valuesEqual(left.value, right.value));
160
+ case "INTERSECTS": {
161
+ const leftValues = Array.isArray(left.value) ? left.value : [left.value];
162
+ const rightValues = new Set(Array.isArray(right.value) ? right.value : [right.value]);
163
+ return certain(leftValues.some((entry) => rightValues.has(entry)));
164
+ }
165
+ case "LESS_THAN":
166
+ case "LESS_THAN_EQUALS":
167
+ case "GREATER_THAN":
168
+ case "GREATER_THAN_EQUALS": return evaluateOrderedComparison(condition.comparison.operator, left.value, right.value);
169
+ case "IS_OF_OBJECT_TYPE": return uncertain();
170
+ default: return uncertain();
171
+ }
172
+ }
173
+ case "regex": {
174
+ const value = await evaluateConditionValue(condition.regex.value, context);
175
+ if (!value.certain) return value;
176
+ if (typeof value.value !== "string") return uncertain();
177
+ try {
178
+ return certain(new RegExp(condition.regex.regex).test(value.value));
179
+ } catch {
180
+ return uncertain();
181
+ }
182
+ }
183
+ case "markings": return uncertain();
184
+ case "executionContext": return uncertain();
185
+ }
262
186
  }
263
- export async function validateFoundryActionDraftCriteria(options) {
264
- const context = createEvaluationContext(options);
265
- const evaluated = await Promise.all(options.criteria.map(async (criterion) => ({
266
- criterion,
267
- result: await evaluateCondition(criterion.condition, context),
268
- })));
269
- const errors = evaluated
270
- .filter(({ result }) => result.certain && !result.value)
271
- .map(({ criterion }) => ({
272
- message: `Impossible submission criterion: ${criterion.failureMessage}`,
273
- }));
274
- return errors.length > 0
275
- ? certain({
276
- kind: "err",
277
- value: errors,
278
- })
279
- : uncertain();
187
+ async function validateFoundryActionDraftCriteria(options) {
188
+ const context = createEvaluationContext(options);
189
+ const errors = (await Promise.all(options.criteria.map(async (criterion) => ({
190
+ criterion,
191
+ result: await evaluateCondition(criterion.condition, context)
192
+ })))).filter(({ result }) => result.certain && !result.value).map(({ criterion }) => ({ message: `Impossible submission criterion: ${criterion.failureMessage}` }));
193
+ return errors.length > 0 ? certain({
194
+ kind: "err",
195
+ value: errors
196
+ }) : uncertain();
280
197
  }
281
198
  function collectRegexIssue(constraint, issues, path) {
282
- if (constraint.configuredFailureMessage) {
283
- issues.push({
284
- message: constraint.configuredFailureMessage,
285
- path,
286
- });
287
- }
199
+ if (constraint.configuredFailureMessage) issues.push({
200
+ message: constraint.configuredFailureMessage,
201
+ path
202
+ });
288
203
  }
289
204
  function collectStructIssues(constraint, issues, path) {
290
- for (const [fieldName, field] of Object.entries(constraint.structFields)) {
291
- if (field.result !== "INVALID")
292
- continue;
293
- for (const fieldConstraint of field.evaluatedConstraints) {
294
- if (fieldConstraint.type === "stringRegexMatch") {
295
- collectRegexIssue(fieldConstraint, issues, [...path, fieldName]);
296
- }
297
- }
298
- }
205
+ for (const [fieldName, field] of Object.entries(constraint.structFields)) {
206
+ if (field.result !== "INVALID") continue;
207
+ for (const fieldConstraint of field.evaluatedConstraints) if (fieldConstraint.type === "stringRegexMatch") collectRegexIssue(fieldConstraint, issues, [...path, fieldName]);
208
+ }
299
209
  }
300
210
  function collectParameterConstraintIssues(constraint, issues, path) {
301
- switch (constraint.type) {
302
- case "stringRegexMatch":
303
- collectRegexIssue(constraint, issues, path);
304
- break;
305
- case "struct":
306
- collectStructIssues(constraint, issues, path);
307
- break;
308
- case "array":
309
- for (const [index, entry] of constraint.entries.entries()) {
310
- collectStructIssues(entry, issues, [...path, index]);
311
- }
312
- break;
313
- }
211
+ switch (constraint.type) {
212
+ case "stringRegexMatch":
213
+ collectRegexIssue(constraint, issues, path);
214
+ break;
215
+ case "struct":
216
+ collectStructIssues(constraint, issues, path);
217
+ break;
218
+ case "array": for (const [index, entry] of constraint.entries.entries()) collectStructIssues(entry, issues, [...path, index]);
219
+ }
314
220
  }
315
- export function getFoundryValidationIssues(result) {
316
- const validation = result.validation;
317
- if (!validation || validation.result !== "INVALID")
318
- return [];
319
- const issues = validation.submissionCriteria.flatMap((criterion) => criterion.result === "INVALID" && criterion.configuredFailureMessage
320
- ? [{ message: criterion.configuredFailureMessage }]
321
- : []);
322
- for (const [parameterName, parameter] of Object.entries(validation.parameters)) {
323
- if (parameter.result !== "INVALID")
324
- continue;
325
- for (const constraint of parameter.evaluatedConstraints) {
326
- collectParameterConstraintIssues(constraint, issues, [parameterName]);
327
- }
328
- }
329
- return issues.length > 0
330
- ? issues
331
- : [{ message: "Invalid Action arguments." }];
221
+ function getFoundryValidationIssues(result) {
222
+ const validation = result.validation;
223
+ if (!validation || validation.result !== "INVALID") return [];
224
+ const issues = validation.submissionCriteria.flatMap((criterion) => criterion.result === "INVALID" && criterion.configuredFailureMessage ? [{ message: criterion.configuredFailureMessage }] : []);
225
+ for (const [parameterName, parameter] of Object.entries(validation.parameters)) {
226
+ if (parameter.result !== "INVALID") continue;
227
+ for (const constraint of parameter.evaluatedConstraints) collectParameterConstraintIssues(constraint, issues, [parameterName]);
228
+ }
229
+ return issues.length > 0 ? issues : [{ message: "Invalid Action arguments." }];
332
230
  }
231
+ //#endregion
232
+ export { getFoundryValidationIssues, loadFoundrySubmissionCriteria, validateFoundryActionDraftCriteria };
233
+
333
234
  //# sourceMappingURL=foundryActionValidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"foundryActionValidation.js","sourceRoot":"","sources":["../../src/adapter/foundryActionValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foundryActionValidation.js","names":["AsyncIterable.toArray","AsyncIterable.fromPagination"],"sources":["../../src/adapter/foundryActionValidation.ts"],"sourcesContent":["import { invariant } from \"@bobbyfidz/panic\";\nimport { bulkLoadOntologyEntities, type Condition, type ConditionValue } from \"@osdk/client.unstable\";\nimport { GroupMemberships, Users } from \"@osdk/foundry.admin\";\nimport {\n ActionTypesV2,\n type ParameterEvaluatedConstraint,\n type StringRegexMatchConstraint,\n type StructEvaluatedConstraint,\n type SyncApplyActionResponseV2,\n} from \"@osdk/foundry.ontologies\";\nimport { certain, uncertain, type Uncertain, type ValidationIssue } from \"@party-stack/ontology\";\nimport { toFoundryActionTypeName } from \"../utils/actionTypeName.js\";\nimport * as AsyncIterable from \"../utils/AsyncIterable.js\";\nimport type { OntologyClient } from \"@party-stack/foundry-client\";\nimport type { Result } from \"@party-stack/ontology/values\";\n\nexport interface FoundrySubmissionCriterion {\n condition: Condition;\n failureMessage: string;\n}\n\nfunction valuesEqual(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true;\n if (Array.isArray(left) && Array.isArray(right)) {\n return left.length === right.length && left.every((value, index) => valuesEqual(value, right[index]));\n }\n if (typeof left === \"object\" && left !== null && typeof right === \"object\" && right !== null) {\n const leftEntries = Object.entries(left);\n const rightRecord = right as Record<string, unknown>;\n return (\n leftEntries.length === Object.keys(rightRecord).length &&\n leftEntries.every(([key, value]) => valuesEqual(value, rightRecord[key]))\n );\n }\n return false;\n}\n\nexport async function loadFoundrySubmissionCriteria(options: {\n client: OntologyClient;\n actionTypeName: string;\n userId: string;\n}): Promise<FoundrySubmissionCriterion[]> {\n const actionType = await ActionTypesV2.get(\n options.client,\n options.client.ontologyRid,\n toFoundryActionTypeName(options.actionTypeName)\n );\n const response = await bulkLoadOntologyEntities(\n {\n ...options.client,\n servicePath: \"ontology-metadata/api\",\n },\n options.userId,\n {\n actionTypes: [{ rid: actionType.rid }],\n datasourceTypes: [],\n interfaceTypes: [],\n linkTypes: [],\n objectTypes: [],\n sharedPropertyTypes: [],\n typeGroups: [],\n }\n );\n const loaded = response.actionTypes[0];\n invariant(loaded, `Foundry action type \"${options.actionTypeName}\" was not returned by metadata.`);\n return Object.values(loaded.actionType.actionTypeLogic.validation.actionTypeLevelValidation.rules).map(\n (rule) => ({\n condition: rule.condition,\n failureMessage: rule.displayMetadata.failureMessage,\n })\n );\n}\n\ninterface EvaluationContext {\n client: OntologyClient;\n userId: string;\n parameters: Record<string, unknown>;\n knownParameters: ReadonlySet<string>;\n groupIds: () => Promise<string[]>;\n markings: () => Promise<string[]>;\n user: () => ReturnType<typeof Users.get>;\n}\n\nfunction createEvaluationContext(options: {\n client: OntologyClient;\n userId: string;\n parameters: Record<string, unknown>;\n knownParameters?: ReadonlySet<string>;\n}): EvaluationContext {\n let groupIds: Promise<string[]> | undefined;\n let markings: Promise<string[]> | undefined;\n let user: ReturnType<typeof Users.get> | undefined;\n\n return {\n ...options,\n knownParameters: options.knownParameters ?? new Set(Object.keys(options.parameters)),\n groupIds: () => {\n groupIds ??= loadGroupIds(options.client, options.userId);\n return groupIds;\n },\n markings: () => {\n markings ??= Users.getMarkings(options.client, options.userId).then((response) => response.view);\n return markings;\n },\n user: () => {\n user ??= Users.get(options.client, options.userId);\n return user;\n },\n };\n}\n\nasync function loadGroupIds(client: OntologyClient, userId: string): Promise<string[]> {\n return AsyncIterable.toArray(\n AsyncIterable.fromPagination(\n (pageSize, pageToken: string | undefined) =>\n GroupMemberships.list(client, userId, {\n pageSize,\n pageToken,\n transitive: true,\n }),\n (page) => page.nextPageToken,\n (page) => page.data.map((membership) => membership.groupId),\n 1_000\n )\n );\n}\n\nfunction evaluateStaticValue(value: ConditionValue & { type: \"staticValue\" }): Uncertain<unknown> {\n const staticValue = value.staticValue;\n switch (staticValue.type) {\n case \"boolean\":\n return certain(staticValue.boolean);\n case \"integer\":\n return certain(staticValue.integer);\n case \"long\":\n return certain(staticValue.long);\n case \"double\":\n return certain(staticValue.double);\n case \"string\":\n return certain(staticValue.string);\n case \"timestamp\":\n return certain(staticValue.timestamp);\n case \"booleanList\":\n return certain(staticValue.booleanList.booleans);\n case \"integerList\":\n return certain(staticValue.integerList.integers);\n case \"longList\":\n return certain(staticValue.longList.longs);\n case \"doubleList\":\n return certain(staticValue.doubleList.doubles);\n case \"stringList\":\n return certain(staticValue.stringList.strings);\n case \"timestampList\":\n return certain(staticValue.timestampList.timestamps);\n case \"decimal\":\n return certain(staticValue.decimal.decimalValue);\n case \"decimalList\":\n return certain(staticValue.decimalList.decimals);\n case \"date\":\n return certain(staticValue.date.dateValue);\n case \"dateList\":\n return certain(staticValue.dateList.dates);\n case \"marking\":\n return certain(staticValue.marking.marking);\n case \"markingList\":\n return certain(staticValue.markingList.markings);\n case \"attachment\":\n return certain(staticValue.attachment.attachment);\n case \"attachmentList\":\n return certain(staticValue.attachmentList.attachments);\n case \"objectType\":\n return certain(staticValue.objectType.objectTypeId);\n case \"null\":\n return certain(null);\n default:\n return uncertain();\n }\n}\n\nasync function evaluateUserProperty(\n value: ConditionValue & { type: \"userProperty\" },\n context: EvaluationContext\n): Promise<Uncertain<unknown>> {\n switch (value.userProperty.propertyValue.type) {\n case \"userId\":\n return certain(context.userId);\n case \"groupIds\":\n return certain(await context.groupIds());\n case \"organizationMarkingIds\":\n return certain(await context.markings());\n case \"userName\":\n return certain((await context.user()).username);\n case \"userAttributes\": {\n const user = await context.user();\n return certain(user.attributes[value.userProperty.propertyValue.userAttributes.attributeKey]);\n }\n case \"groupNames\":\n return uncertain();\n }\n}\n\nasync function evaluateConditionValue(\n value: ConditionValue,\n context: EvaluationContext\n): Promise<Uncertain<unknown>> {\n switch (value.type) {\n case \"staticValue\":\n return evaluateStaticValue(value);\n case \"userProperty\":\n return evaluateUserProperty(value, context);\n case \"parameterId\": {\n const parameterName = value.parameterId;\n const parameterValue = context.parameters[parameterName];\n return parameterValue !== undefined || context.knownParameters.has(parameterName)\n ? certain(parameterValue)\n : uncertain();\n }\n case \"parameterLength\": {\n const parameterName = value.parameterLength.parameterId;\n const parameterValue = context.parameters[parameterName];\n return typeof parameterValue === \"string\" || Array.isArray(parameterValue)\n ? certain(parameterValue.length)\n : uncertain();\n }\n case \"objectParameterPropertyValue\":\n case \"interfaceParameterPropertyValue\":\n case \"interfaceParameterPropertyValueV2\":\n return uncertain();\n }\n}\n\nfunction evaluateOrderedComparison(\n operator: \"LESS_THAN\" | \"LESS_THAN_EQUALS\" | \"GREATER_THAN\" | \"GREATER_THAN_EQUALS\",\n left: unknown,\n right: unknown\n): Uncertain<boolean> {\n if (\n !(\n (typeof left === \"number\" && typeof right === \"number\") ||\n (typeof left === \"string\" && typeof right === \"string\")\n )\n ) {\n return uncertain();\n }\n switch (operator) {\n case \"LESS_THAN\":\n return certain(left < right);\n case \"LESS_THAN_EQUALS\":\n return certain(left <= right);\n case \"GREATER_THAN\":\n return certain(left > right);\n case \"GREATER_THAN_EQUALS\":\n return certain(left >= right);\n }\n}\n\nasync function evaluateCondition(\n condition: Condition,\n context: EvaluationContext\n): Promise<Uncertain<boolean>> {\n switch (condition.type) {\n case \"true\":\n return certain(true);\n case \"redacted\":\n return uncertain();\n case \"and\": {\n const results = await Promise.all(\n condition.and.conditions.map((child) => evaluateCondition(child, context))\n );\n if (results.some((result) => result.certain && !result.value)) {\n return certain(false);\n }\n return results.some((result) => !result.certain) ? uncertain() : certain(true);\n }\n case \"or\": {\n const results = await Promise.all(\n condition.or.conditions.map((child) => evaluateCondition(child, context))\n );\n if (results.some((result) => result.certain && result.value)) {\n return certain(true);\n }\n return results.some((result) => !result.certain) ? uncertain() : certain(false);\n }\n case \"not\": {\n const result = await evaluateCondition(condition.not.condition, context);\n return result.certain ? certain(!result.value) : result;\n }\n case \"comparison\": {\n const [left, right] = await Promise.all([\n evaluateConditionValue(condition.comparison.left, context),\n evaluateConditionValue(condition.comparison.right, context),\n ]);\n if (!left.certain || !right.certain) {\n return uncertain();\n }\n switch (condition.comparison.operator) {\n case \"EQUALS\":\n return certain(valuesEqual(left.value, right.value));\n case \"NOT_EQUALS\":\n return certain(!valuesEqual(left.value, right.value));\n case \"INTERSECTS\": {\n const leftValues = Array.isArray(left.value) ? left.value : [left.value];\n const rightValues = new Set(Array.isArray(right.value) ? right.value : [right.value]);\n return certain(leftValues.some((entry) => rightValues.has(entry)));\n }\n case \"LESS_THAN\":\n case \"LESS_THAN_EQUALS\":\n case \"GREATER_THAN\":\n case \"GREATER_THAN_EQUALS\":\n return evaluateOrderedComparison(condition.comparison.operator, left.value, right.value);\n case \"IS_OF_OBJECT_TYPE\":\n return uncertain();\n default:\n return uncertain();\n }\n }\n case \"regex\": {\n const value = await evaluateConditionValue(condition.regex.value, context);\n if (!value.certain) return value;\n if (typeof value.value !== \"string\") {\n return uncertain();\n }\n try {\n return certain(new RegExp(condition.regex.regex).test(value.value));\n } catch {\n return uncertain();\n }\n }\n case \"markings\":\n return uncertain();\n case \"executionContext\":\n return uncertain();\n }\n}\n\nexport async function validateFoundryActionDraftCriteria(options: {\n client: OntologyClient;\n criteria: FoundrySubmissionCriterion[];\n userId: string;\n parameters: Record<string, unknown>;\n knownParameters?: ReadonlySet<string>;\n}): Promise<Uncertain<Result<void, readonly ValidationIssue[]>>> {\n const context = createEvaluationContext(options);\n const evaluated = await Promise.all(\n options.criteria.map(async (criterion) => ({\n criterion,\n result: await evaluateCondition(criterion.condition, context),\n }))\n );\n const errors = evaluated\n .filter(({ result }) => result.certain && !result.value)\n .map(({ criterion }) => ({\n message: `Impossible submission criterion: ${criterion.failureMessage}`,\n }));\n return errors.length > 0\n ? certain({\n kind: \"err\",\n value: errors,\n })\n : uncertain();\n}\n\nfunction collectRegexIssue(\n constraint: StringRegexMatchConstraint,\n issues: ValidationIssue[],\n path: readonly (string | number)[]\n): void {\n if (constraint.configuredFailureMessage) {\n issues.push({\n message: constraint.configuredFailureMessage,\n path,\n });\n }\n}\n\nfunction collectStructIssues(\n constraint: StructEvaluatedConstraint,\n issues: ValidationIssue[],\n path: readonly (string | number)[]\n): void {\n for (const [fieldName, field] of Object.entries(constraint.structFields)) {\n if (field.result !== \"INVALID\") continue;\n for (const fieldConstraint of field.evaluatedConstraints) {\n if (fieldConstraint.type === \"stringRegexMatch\") {\n collectRegexIssue(fieldConstraint, issues, [...path, fieldName]);\n }\n }\n }\n}\n\nfunction collectParameterConstraintIssues(\n constraint: ParameterEvaluatedConstraint,\n issues: ValidationIssue[],\n path: readonly (string | number)[]\n): void {\n switch (constraint.type) {\n case \"stringRegexMatch\":\n collectRegexIssue(constraint, issues, path);\n break;\n case \"struct\":\n collectStructIssues(constraint, issues, path);\n break;\n case \"array\":\n for (const [index, entry] of constraint.entries.entries()) {\n collectStructIssues(entry, issues, [...path, index]);\n }\n break;\n }\n}\n\nexport function getFoundryValidationIssues(result: SyncApplyActionResponseV2): ValidationIssue[] {\n const validation = result.validation;\n if (!validation || validation.result !== \"INVALID\") return [];\n\n const issues = validation.submissionCriteria.flatMap((criterion) =>\n criterion.result === \"INVALID\" && criterion.configuredFailureMessage\n ? [{ message: criterion.configuredFailureMessage }]\n : []\n );\n for (const [parameterName, parameter] of Object.entries(validation.parameters)) {\n if (parameter.result !== \"INVALID\") continue;\n for (const constraint of parameter.evaluatedConstraints) {\n collectParameterConstraintIssues(constraint, issues, [parameterName]);\n }\n }\n return issues.length > 0 ? issues : [{ message: \"Invalid Action arguments.\" }];\n}\n"],"mappings":"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"}