@party-stack/foundry-ontology 0.17.0 → 0.18.1

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 (253) hide show
  1. package/lib/adapter/convertLoadSubsetOptions.d.ts +2 -0
  2. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
  3. package/lib/adapter/convertLoadSubsetOptions.js +158 -191
  4. package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
  5. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +17 -15
  6. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +1 -1
  7. package/lib/adapter/createFoundryOntologyBackendAdapter.js +288 -400
  8. package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +1 -1
  9. package/lib/adapter/foundryActionValidation.d.ts +17 -15
  10. package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
  11. package/lib/adapter/foundryActionValidation.js +206 -305
  12. package/lib/adapter/foundryActionValidation.js.map +1 -1
  13. package/lib/adapter/foundryCodec.d.ts +10 -9
  14. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  15. package/lib/adapter/foundryCodec.js +180 -287
  16. package/lib/adapter/foundryCodec.js.map +1 -1
  17. package/lib/adapter/foundryMediaId.d.ts +6 -4
  18. package/lib/adapter/foundryMediaId.d.ts.map +1 -1
  19. package/lib/adapter/foundryMediaId.js +31 -32
  20. package/lib/adapter/foundryMediaId.js.map +1 -1
  21. package/lib/adapter/index.d.ts +4 -4
  22. package/lib/adapter/index.js +4 -4
  23. package/lib/adapter/objectCollectionOptions.d.ts +17 -18
  24. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
  25. package/lib/adapter/objectCollectionOptions.js +417 -538
  26. package/lib/adapter/objectCollectionOptions.js.map +1 -1
  27. package/lib/config/applyAttachmentConstraintOverrides.d.ts +6 -4
  28. package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +1 -1
  29. package/lib/config/applyAttachmentConstraintOverrides.js +45 -49
  30. package/lib/config/applyAttachmentConstraintOverrides.js.map +1 -1
  31. package/lib/config/index.d.ts +17 -15
  32. package/lib/config/index.d.ts.map +1 -1
  33. package/lib/config/index.js +56 -81
  34. package/lib/config/index.js.map +1 -1
  35. package/lib/connection.d.ts +28 -26
  36. package/lib/connection.d.ts.map +1 -1
  37. package/lib/connection.js +183 -215
  38. package/lib/connection.js.map +1 -1
  39. package/lib/index.d.ts +9 -5
  40. package/lib/index.js +9 -5
  41. package/lib/installation/createFoundryBackendInstallation.d.ts +21 -20
  42. package/lib/installation/createFoundryBackendInstallation.d.ts.map +1 -1
  43. package/lib/installation/createFoundryBackendInstallation.js +52 -62
  44. package/lib/installation/createFoundryBackendInstallation.js.map +1 -1
  45. package/lib/installation/index.d.ts +2 -2
  46. package/lib/installation/index.js +2 -2
  47. package/lib/meta/actionTypeCollectionOptions.d.ts +8 -6
  48. package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
  49. package/lib/meta/actionTypeCollectionOptions.js +49 -49
  50. package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
  51. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +3 -1
  52. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +1 -1
  53. package/lib/meta/convertActionTypeLoadSubsetOptions.js +69 -75
  54. package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +1 -1
  55. package/lib/meta/convertMetaActionType.d.ts +7 -5
  56. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  57. package/lib/meta/convertMetaActionType.js +458 -581
  58. package/lib/meta/convertMetaActionType.js.map +1 -1
  59. package/lib/meta/convertMetaLinkType.d.ts +4 -2
  60. package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
  61. package/lib/meta/convertMetaLinkType.js +37 -43
  62. package/lib/meta/convertMetaLinkType.js.map +1 -1
  63. package/lib/meta/convertMetaObjectType.d.ts +4 -2
  64. package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
  65. package/lib/meta/convertMetaObjectType.js +34 -35
  66. package/lib/meta/convertMetaObjectType.js.map +1 -1
  67. package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -2
  68. package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -1
  69. package/lib/meta/convertMetaQueryFunctionType.js +113 -94
  70. package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
  71. package/lib/meta/convertMetaTypeDef.d.ts +4 -2
  72. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
  73. package/lib/meta/convertMetaTypeDef.js +178 -176
  74. package/lib/meta/convertMetaTypeDef.js.map +1 -1
  75. package/lib/meta/convertMetaValueType.d.ts +4 -2
  76. package/lib/meta/convertMetaValueType.d.ts.map +1 -1
  77. package/lib/meta/convertMetaValueType.js +11 -7
  78. package/lib/meta/convertMetaValueType.js.map +1 -1
  79. package/lib/meta/convertOmsActionParameterMetadata.d.ts +4 -2
  80. package/lib/meta/convertOmsActionParameterMetadata.d.ts.map +1 -1
  81. package/lib/meta/convertOmsActionParameterMetadata.js +107 -163
  82. package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
  83. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +7 -5
  84. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +1 -1
  85. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +39 -41
  86. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +1 -1
  87. package/lib/meta/entityCollectionOptions.d.ts +12 -11
  88. package/lib/meta/entityCollectionOptions.d.ts.map +1 -1
  89. package/lib/meta/entityCollectionOptions.js +59 -62
  90. package/lib/meta/entityCollectionOptions.js.map +1 -1
  91. package/lib/meta/foundryAttachmentMetadata.d.ts +2 -0
  92. package/lib/meta/foundryAttachmentMetadata.d.ts.map +1 -1
  93. package/lib/meta/foundryAttachmentMetadata.js +13 -14
  94. package/lib/meta/foundryAttachmentMetadata.js.map +1 -1
  95. package/lib/meta/index.d.ts +5 -5
  96. package/lib/meta/index.js +5 -5
  97. package/lib/meta/loadActionTypeOmsMetadata.d.ts +5 -4
  98. package/lib/meta/loadActionTypeOmsMetadata.d.ts.map +1 -1
  99. package/lib/meta/loadActionTypeOmsMetadata.js +102 -139
  100. package/lib/meta/loadActionTypeOmsMetadata.js.map +1 -1
  101. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +7 -5
  102. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -1
  103. package/lib/meta/queryFunctionTypeCollectionOptions.js +47 -49
  104. package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -1
  105. package/lib/stagedWrites.d.ts +26 -24
  106. package/lib/stagedWrites.d.ts.map +1 -1
  107. package/lib/stagedWrites.js +55 -66
  108. package/lib/stagedWrites.js.map +1 -1
  109. package/lib/users/createFoundryAdminOntologyRoute.d.ts +47 -17366
  110. package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +1 -1
  111. package/lib/users/createFoundryAdminOntologyRoute.js +29 -37
  112. package/lib/users/createFoundryAdminOntologyRoute.js.map +1 -1
  113. package/lib/users/createFoundryUsersIntegration.d.ts +6 -4
  114. package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
  115. package/lib/users/createFoundryUsersIntegration.js +28 -30
  116. package/lib/users/createFoundryUsersIntegration.js.map +1 -1
  117. package/lib/users/foundryUser.d.ts +4 -2
  118. package/lib/users/foundryUser.d.ts.map +1 -1
  119. package/lib/users/foundryUser.js +69 -74
  120. package/lib/users/foundryUser.js.map +1 -1
  121. package/lib/users/index.d.ts +5 -5
  122. package/lib/users/index.js +5 -5
  123. package/lib/users/userCollectionOptions.d.ts +13 -12
  124. package/lib/users/userCollectionOptions.d.ts.map +1 -1
  125. package/lib/users/userCollectionOptions.js +82 -100
  126. package/lib/users/userCollectionOptions.js.map +1 -1
  127. package/lib/utils/AsyncIterable.d.ts +2 -0
  128. package/lib/utils/AsyncIterable.d.ts.map +1 -1
  129. package/lib/utils/AsyncIterable.js +26 -34
  130. package/lib/utils/AsyncIterable.js.map +1 -1
  131. package/lib/utils/actionTypeName.d.ts +2 -0
  132. package/lib/utils/actionTypeName.d.ts.map +1 -1
  133. package/lib/utils/actionTypeName.js +9 -7
  134. package/lib/utils/actionTypeName.js.map +1 -1
  135. package/lib/utils/chunk.d.ts +2 -0
  136. package/lib/utils/chunk.d.ts.map +1 -1
  137. package/lib/utils/chunk.js +8 -6
  138. package/lib/utils/chunk.js.map +1 -1
  139. package/package.json +21 -27
  140. package/lib/adapter/convertLoadSubsetOptions.test.d.ts +0 -2
  141. package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +0 -1
  142. package/lib/adapter/convertLoadSubsetOptions.test.js +0 -213
  143. package/lib/adapter/convertLoadSubsetOptions.test.js.map +0 -1
  144. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts +0 -2
  145. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts.map +0 -1
  146. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js +0 -628
  147. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js.map +0 -1
  148. package/lib/adapter/foundryActionValidation.test.d.ts +0 -2
  149. package/lib/adapter/foundryActionValidation.test.d.ts.map +0 -1
  150. package/lib/adapter/foundryActionValidation.test.js +0 -243
  151. package/lib/adapter/foundryActionValidation.test.js.map +0 -1
  152. package/lib/adapter/foundryCodec.test.d.ts +0 -2
  153. package/lib/adapter/foundryCodec.test.d.ts.map +0 -1
  154. package/lib/adapter/foundryCodec.test.js +0 -137
  155. package/lib/adapter/foundryCodec.test.js.map +0 -1
  156. package/lib/adapter/foundryMediaId.test.d.ts +0 -2
  157. package/lib/adapter/foundryMediaId.test.d.ts.map +0 -1
  158. package/lib/adapter/foundryMediaId.test.js +0 -23
  159. package/lib/adapter/foundryMediaId.test.js.map +0 -1
  160. package/lib/adapter/index.d.ts.map +0 -1
  161. package/lib/adapter/index.js.map +0 -1
  162. package/lib/adapter/objectCollectionOptions.test.d.ts +0 -2
  163. package/lib/adapter/objectCollectionOptions.test.d.ts.map +0 -1
  164. package/lib/adapter/objectCollectionOptions.test.js +0 -1289
  165. package/lib/adapter/objectCollectionOptions.test.js.map +0 -1
  166. package/lib/config/connectionPull.test.d.ts +0 -2
  167. package/lib/config/connectionPull.test.d.ts.map +0 -1
  168. package/lib/config/connectionPull.test.js +0 -151
  169. package/lib/config/connectionPull.test.js.map +0 -1
  170. package/lib/config/index.test.d.ts +0 -2
  171. package/lib/config/index.test.d.ts.map +0 -1
  172. package/lib/config/index.test.js +0 -182
  173. package/lib/config/index.test.js.map +0 -1
  174. package/lib/connection.test.d.ts +0 -2
  175. package/lib/connection.test.d.ts.map +0 -1
  176. package/lib/connection.test.js +0 -162
  177. package/lib/connection.test.js.map +0 -1
  178. package/lib/index.d.ts.map +0 -1
  179. package/lib/index.js.map +0 -1
  180. package/lib/installation/createFoundryBackendInstallation.test.d.ts +0 -2
  181. package/lib/installation/createFoundryBackendInstallation.test.d.ts.map +0 -1
  182. package/lib/installation/createFoundryBackendInstallation.test.js +0 -83
  183. package/lib/installation/createFoundryBackendInstallation.test.js.map +0 -1
  184. package/lib/installation/index.d.ts.map +0 -1
  185. package/lib/installation/index.js.map +0 -1
  186. package/lib/meta/actionTypeCollectionOptions.test.d.ts +0 -2
  187. package/lib/meta/actionTypeCollectionOptions.test.d.ts.map +0 -1
  188. package/lib/meta/actionTypeCollectionOptions.test.js +0 -24
  189. package/lib/meta/actionTypeCollectionOptions.test.js.map +0 -1
  190. package/lib/meta/actionTypeIdQuery.test.d.ts +0 -2
  191. package/lib/meta/actionTypeIdQuery.test.d.ts.map +0 -1
  192. package/lib/meta/actionTypeIdQuery.test.js +0 -131
  193. package/lib/meta/actionTypeIdQuery.test.js.map +0 -1
  194. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts +0 -2
  195. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts.map +0 -1
  196. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js +0 -138
  197. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js.map +0 -1
  198. package/lib/meta/convertMetaActionType.test.d.ts +0 -2
  199. package/lib/meta/convertMetaActionType.test.d.ts.map +0 -1
  200. package/lib/meta/convertMetaActionType.test.js +0 -1565
  201. package/lib/meta/convertMetaActionType.test.js.map +0 -1
  202. package/lib/meta/convertMetaLinkType.test.d.ts +0 -2
  203. package/lib/meta/convertMetaLinkType.test.d.ts.map +0 -1
  204. package/lib/meta/convertMetaLinkType.test.js +0 -110
  205. package/lib/meta/convertMetaLinkType.test.js.map +0 -1
  206. package/lib/meta/convertMetaObjectType.test.d.ts +0 -2
  207. package/lib/meta/convertMetaObjectType.test.d.ts.map +0 -1
  208. package/lib/meta/convertMetaObjectType.test.js +0 -250
  209. package/lib/meta/convertMetaObjectType.test.js.map +0 -1
  210. package/lib/meta/convertMetaQueryFunctionType.test.d.ts +0 -2
  211. package/lib/meta/convertMetaQueryFunctionType.test.d.ts.map +0 -1
  212. package/lib/meta/convertMetaQueryFunctionType.test.js +0 -134
  213. package/lib/meta/convertMetaQueryFunctionType.test.js.map +0 -1
  214. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts +0 -2
  215. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts.map +0 -1
  216. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js +0 -49
  217. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js.map +0 -1
  218. package/lib/meta/entityCollectionOptions.test.d.ts +0 -2
  219. package/lib/meta/entityCollectionOptions.test.d.ts.map +0 -1
  220. package/lib/meta/entityCollectionOptions.test.js +0 -98
  221. package/lib/meta/entityCollectionOptions.test.js.map +0 -1
  222. package/lib/meta/index.d.ts.map +0 -1
  223. package/lib/meta/index.js.map +0 -1
  224. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts +0 -2
  225. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts.map +0 -1
  226. package/lib/meta/loadActionTypeOmsMetadata.test.js +0 -218
  227. package/lib/meta/loadActionTypeOmsMetadata.test.js.map +0 -1
  228. package/lib/stagedWrites.test.d.ts +0 -2
  229. package/lib/stagedWrites.test.d.ts.map +0 -1
  230. package/lib/stagedWrites.test.js +0 -71
  231. package/lib/stagedWrites.test.js.map +0 -1
  232. package/lib/users/createFoundryUsersIntegration.test.d.ts +0 -2
  233. package/lib/users/createFoundryUsersIntegration.test.d.ts.map +0 -1
  234. package/lib/users/createFoundryUsersIntegration.test.js +0 -32
  235. package/lib/users/createFoundryUsersIntegration.test.js.map +0 -1
  236. package/lib/users/foundryUser.test.d.ts +0 -2
  237. package/lib/users/foundryUser.test.d.ts.map +0 -1
  238. package/lib/users/foundryUser.test.js +0 -45
  239. package/lib/users/foundryUser.test.js.map +0 -1
  240. package/lib/users/index.d.ts.map +0 -1
  241. package/lib/users/index.js.map +0 -1
  242. package/lib/users/userCollectionOptions.test.d.ts +0 -2
  243. package/lib/users/userCollectionOptions.test.d.ts.map +0 -1
  244. package/lib/users/userCollectionOptions.test.js +0 -18
  245. package/lib/users/userCollectionOptions.test.js.map +0 -1
  246. package/lib/utils/AsyncIterable.test.d.ts +0 -2
  247. package/lib/utils/AsyncIterable.test.d.ts.map +0 -1
  248. package/lib/utils/AsyncIterable.test.js +0 -17
  249. package/lib/utils/AsyncIterable.test.js.map +0 -1
  250. package/lib/utils/actionTypeName.test.d.ts +0 -2
  251. package/lib/utils/actionTypeName.test.d.ts.map +0 -1
  252. package/lib/utils/actionTypeName.test.js +0 -30
  253. 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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"}