@party-stack/foundry-ontology 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +56 -16
  2. package/lib/adapter/backend.d.ts +35 -0
  3. package/lib/adapter/backend.d.ts.map +1 -0
  4. package/lib/adapter/backend.js +210 -0
  5. package/lib/adapter/backend.js.map +1 -0
  6. package/lib/adapter/encrypted.d.ts +12 -0
  7. package/lib/adapter/encrypted.d.ts.map +1 -0
  8. package/lib/adapter/encrypted.js +79 -0
  9. package/lib/adapter/encrypted.js.map +1 -0
  10. package/lib/adapter/foundryActionError.d.ts +7 -0
  11. package/lib/adapter/foundryActionError.d.ts.map +1 -0
  12. package/lib/adapter/foundryActionError.js +61 -0
  13. package/lib/adapter/foundryActionError.js.map +1 -0
  14. package/lib/adapter/foundryActionValidation.d.ts +4 -3
  15. package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
  16. package/lib/adapter/foundryActionValidation.js +71 -25
  17. package/lib/adapter/foundryActionValidation.js.map +1 -1
  18. package/lib/adapter/foundryCodec.d.ts +3 -5
  19. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  20. package/lib/adapter/foundryCodec.js +19 -7
  21. package/lib/adapter/foundryCodec.js.map +1 -1
  22. package/lib/adapter/foundryObjectSearch.d.ts +13 -0
  23. package/lib/adapter/foundryObjectSearch.d.ts.map +1 -0
  24. package/lib/adapter/foundryObjectSearch.js +57 -0
  25. package/lib/adapter/foundryObjectSearch.js.map +1 -0
  26. package/lib/adapter/index.d.ts +3 -4
  27. package/lib/adapter/index.js +3 -4
  28. package/lib/adapter/likeFilter.d.ts +10 -0
  29. package/lib/adapter/likeFilter.d.ts.map +1 -0
  30. package/lib/adapter/likeFilter.js +87 -0
  31. package/lib/adapter/likeFilter.js.map +1 -0
  32. package/lib/adapter/makeFoundryOntologyBackend.d.ts +76 -0
  33. package/lib/adapter/makeFoundryOntologyBackend.d.ts.map +1 -0
  34. package/lib/adapter/makeFoundryOntologyBackend.js +505 -0
  35. package/lib/adapter/makeFoundryOntologyBackend.js.map +1 -0
  36. package/lib/adapter/subsetFilter.d.ts +14 -0
  37. package/lib/adapter/subsetFilter.d.ts.map +1 -0
  38. package/lib/adapter/subsetFilter.js +105 -0
  39. package/lib/adapter/subsetFilter.js.map +1 -0
  40. package/lib/adapter/uploads.d.ts +25 -0
  41. package/lib/adapter/uploads.d.ts.map +1 -0
  42. package/lib/adapter/uploads.js +78 -0
  43. package/lib/adapter/uploads.js.map +1 -0
  44. package/lib/backend.d.ts +80 -0
  45. package/lib/backend.d.ts.map +1 -0
  46. package/lib/backend.js +34 -0
  47. package/lib/backend.js.map +1 -0
  48. package/lib/config/index.d.ts +8 -12
  49. package/lib/config/index.d.ts.map +1 -1
  50. package/lib/config/index.js +49 -52
  51. package/lib/config/index.js.map +1 -1
  52. package/lib/connectionOptions.d.ts +9 -0
  53. package/lib/connectionOptions.d.ts.map +1 -0
  54. package/lib/connectionOptions.js +1 -0
  55. package/lib/context.d.ts +21 -0
  56. package/lib/context.d.ts.map +1 -0
  57. package/lib/context.js +16 -0
  58. package/lib/context.js.map +1 -0
  59. package/lib/index.d.ts +7 -7
  60. package/lib/index.js +6 -7
  61. package/lib/meta/backend.d.ts +10 -0
  62. package/lib/meta/backend.d.ts.map +1 -0
  63. package/lib/meta/backend.js +161 -0
  64. package/lib/meta/backend.js.map +1 -0
  65. package/lib/meta/convertMetaActionType.d.ts +3 -2
  66. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  67. package/lib/meta/convertMetaActionType.js +3 -3
  68. package/lib/meta/convertMetaActionType.js.map +1 -1
  69. package/lib/meta/convertMetaLinkType.d.ts +2 -2
  70. package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
  71. package/lib/meta/convertMetaLinkType.js +13 -13
  72. package/lib/meta/convertMetaLinkType.js.map +1 -1
  73. package/lib/meta/convertMetaObjectType.d.ts +2 -2
  74. package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
  75. package/lib/meta/convertMetaObjectType.js +5 -1
  76. package/lib/meta/convertMetaObjectType.js.map +1 -1
  77. package/lib/meta/convertMetaQueryFunctionType.d.ts +1 -1
  78. package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
  79. package/lib/meta/convertMetaTypeDef.d.ts +1 -1
  80. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
  81. package/lib/meta/convertMetaTypeDef.js +7 -1
  82. package/lib/meta/convertMetaTypeDef.js.map +1 -1
  83. package/lib/meta/convertMetaValueType.d.ts +2 -2
  84. package/lib/meta/convertMetaValueType.d.ts.map +1 -1
  85. package/lib/meta/convertMetaValueType.js.map +1 -1
  86. package/lib/meta/convertOmsActionParameterMetadata.d.ts +1 -1
  87. package/lib/meta/convertOmsActionParameterMetadata.js +1 -1
  88. package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
  89. package/lib/meta/index.d.ts +2 -4
  90. package/lib/meta/index.js +2 -4
  91. package/lib/meta/listObjectTypes.d.ts +6 -0
  92. package/lib/meta/listObjectTypes.d.ts.map +1 -0
  93. package/lib/meta/listObjectTypes.js +13 -0
  94. package/lib/meta/listObjectTypes.js.map +1 -0
  95. package/lib/meta/loadActionTypeOmsMetadata.d.ts +1 -0
  96. package/lib/meta/loadActions.d.ts +7 -0
  97. package/lib/meta/loadActions.d.ts.map +1 -0
  98. package/lib/meta/loadActions.js +20 -0
  99. package/lib/meta/loadActions.js.map +1 -0
  100. package/lib/meta/loadEntities.d.ts +9 -0
  101. package/lib/meta/loadEntities.d.ts.map +1 -0
  102. package/lib/meta/loadEntities.js +73 -0
  103. package/lib/meta/loadEntities.js.map +1 -0
  104. package/lib/meta/loadQueryFunctions.d.ts +11 -0
  105. package/lib/meta/loadQueryFunctions.d.ts.map +1 -0
  106. package/lib/meta/loadQueryFunctions.js +18 -0
  107. package/lib/meta/loadQueryFunctions.js.map +1 -0
  108. package/lib/meta/planMetaLookup.d.ts +12 -0
  109. package/lib/meta/planMetaLookup.d.ts.map +1 -0
  110. package/lib/meta/planMetaLookup.js +44 -0
  111. package/lib/meta/planMetaLookup.js.map +1 -0
  112. package/lib/platform.d.ts +78 -0
  113. package/lib/platform.d.ts.map +1 -0
  114. package/lib/platform.js +116 -0
  115. package/lib/platform.js.map +1 -0
  116. package/lib/platformCollections.d.ts +68 -0
  117. package/lib/platformCollections.d.ts.map +1 -0
  118. package/lib/platformCollections.js +7 -0
  119. package/lib/platformCollections.js.map +1 -0
  120. package/lib/serviceConnector.d.ts +8 -0
  121. package/lib/serviceConnector.d.ts.map +1 -0
  122. package/lib/serviceConnector.js +105 -0
  123. package/lib/serviceConnector.js.map +1 -0
  124. package/lib/stagedWrites.d.ts +3 -2
  125. package/lib/stagedWrites.d.ts.map +1 -1
  126. package/lib/stagedWrites.js +30 -3
  127. package/lib/stagedWrites.js.map +1 -1
  128. package/lib/users/admin.d.ts +105 -0
  129. package/lib/users/admin.d.ts.map +1 -0
  130. package/lib/users/admin.js +35 -0
  131. package/lib/users/admin.js.map +1 -0
  132. package/lib/users/createFoundryUsersIntegration.d.ts +2 -2
  133. package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
  134. package/lib/users/createFoundryUsersIntegration.js +4 -6
  135. package/lib/users/createFoundryUsersIntegration.js.map +1 -1
  136. package/lib/users/foundryUser.d.ts +2 -2
  137. package/lib/users/foundryUser.js +1 -1
  138. package/lib/users/foundryUser.js.map +1 -1
  139. package/lib/users/index.d.ts +2 -3
  140. package/lib/users/index.js +2 -3
  141. package/lib/users/loadUserSubset.d.ts +8 -0
  142. package/lib/users/loadUserSubset.d.ts.map +1 -0
  143. package/lib/users/loadUserSubset.js +166 -0
  144. package/lib/users/loadUserSubset.js.map +1 -0
  145. package/lib/utils/AsyncIterable.d.ts +1 -1
  146. package/lib/utils/AsyncIterable.d.ts.map +1 -1
  147. package/lib/utils/AsyncIterable.js +11 -0
  148. package/lib/utils/AsyncIterable.js.map +1 -1
  149. package/package.json +17 -16
  150. package/lib/adapter/convertLoadSubsetOptions.d.ts +0 -8
  151. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +0 -1
  152. package/lib/adapter/convertLoadSubsetOptions.js +0 -178
  153. package/lib/adapter/convertLoadSubsetOptions.js.map +0 -1
  154. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +0 -29
  155. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +0 -1
  156. package/lib/adapter/createFoundryOntologyBackendAdapter.js +0 -311
  157. package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +0 -1
  158. package/lib/adapter/objectCollectionOptions.d.ts +0 -31
  159. package/lib/adapter/objectCollectionOptions.d.ts.map +0 -1
  160. package/lib/adapter/objectCollectionOptions.js +0 -448
  161. package/lib/adapter/objectCollectionOptions.js.map +0 -1
  162. package/lib/config/applyAttachmentConstraintOverrides.d.ts +0 -10
  163. package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +0 -1
  164. package/lib/config/applyAttachmentConstraintOverrides.js +0 -50
  165. package/lib/config/applyAttachmentConstraintOverrides.js.map +0 -1
  166. package/lib/connection.d.ts +0 -38
  167. package/lib/connection.d.ts.map +0 -1
  168. package/lib/connection.js +0 -195
  169. package/lib/connection.js.map +0 -1
  170. package/lib/installation/createFoundryBackendInstallation.d.ts +0 -29
  171. package/lib/installation/createFoundryBackendInstallation.d.ts.map +0 -1
  172. package/lib/installation/createFoundryBackendInstallation.js +0 -60
  173. package/lib/installation/createFoundryBackendInstallation.js.map +0 -1
  174. package/lib/installation/index.d.ts +0 -2
  175. package/lib/installation/index.js +0 -2
  176. package/lib/meta/actionTypeCollectionOptions.d.ts +0 -14
  177. package/lib/meta/actionTypeCollectionOptions.d.ts.map +0 -1
  178. package/lib/meta/actionTypeCollectionOptions.js +0 -58
  179. package/lib/meta/actionTypeCollectionOptions.js.map +0 -1
  180. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +0 -7
  181. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +0 -1
  182. package/lib/meta/convertActionTypeLoadSubsetOptions.js +0 -84
  183. package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +0 -1
  184. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +0 -11
  185. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +0 -1
  186. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +0 -43
  187. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +0 -1
  188. package/lib/meta/entityCollectionOptions.d.ts +0 -24
  189. package/lib/meta/entityCollectionOptions.d.ts.map +0 -1
  190. package/lib/meta/entityCollectionOptions.js +0 -69
  191. package/lib/meta/entityCollectionOptions.js.map +0 -1
  192. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +0 -12
  193. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +0 -1
  194. package/lib/meta/queryFunctionTypeCollectionOptions.js +0 -59
  195. package/lib/meta/queryFunctionTypeCollectionOptions.js.map +0 -1
  196. package/lib/users/createFoundryAdminOntologyRoute.d.ts +0 -55
  197. package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +0 -1
  198. package/lib/users/createFoundryAdminOntologyRoute.js +0 -33
  199. package/lib/users/createFoundryAdminOntologyRoute.js.map +0 -1
  200. package/lib/users/userCollectionOptions.d.ts +0 -24
  201. package/lib/users/userCollectionOptions.d.ts.map +0 -1
  202. package/lib/users/userCollectionOptions.js +0 -94
  203. package/lib/users/userCollectionOptions.js.map +0 -1
@@ -0,0 +1,87 @@
1
+ //#region src/adapter/likeFilter.ts
2
+ const ALWAYS_TRUE_FILTER = {
3
+ type: "and",
4
+ value: []
5
+ };
6
+ function pushdown(query, safeToNegate = true) {
7
+ return {
8
+ query,
9
+ safeToNegate
10
+ };
11
+ }
12
+ function parseLikePattern(pattern, literalBackslashes = false) {
13
+ const parts = [];
14
+ let literal = "";
15
+ const flushLiteral = () => {
16
+ if (literal) {
17
+ parts.push({
18
+ type: "literal",
19
+ value: literal
20
+ });
21
+ literal = "";
22
+ }
23
+ };
24
+ for (let index = 0; index < pattern.length; index++) {
25
+ const character = pattern[index];
26
+ if (character === "\\" && !literalBackslashes) {
27
+ const escaped = pattern[index + 1];
28
+ if (escaped === "%" || escaped === "_" || escaped === "\\") {
29
+ literal += escaped;
30
+ index++;
31
+ } else literal += character;
32
+ } else if (character === "%") {
33
+ flushLiteral();
34
+ parts.push({ type: "many" });
35
+ } else if (character === "_") {
36
+ flushLiteral();
37
+ parts.push({ type: "single" });
38
+ } else literal += character;
39
+ }
40
+ flushLiteral();
41
+ return parts;
42
+ }
43
+ function escapeFoundryWildcardLiteral(value) {
44
+ return value.replace(/[\\*?]/g, "\\$&");
45
+ }
46
+ function convertLikeFilter(field, value, literalBackslashes = false) {
47
+ const parts = parseLikePattern(value.toLowerCase(), literalBackslashes);
48
+ const hasLeadingWildcard = parts[0]?.type === "many";
49
+ const hasTrailingWildcard = parts.at(-1)?.type === "many";
50
+ const propertyIdentifier = fieldPathToPropertyIdentifier(field);
51
+ if (hasLeadingWildcard && hasTrailingWildcard) {
52
+ const queries = parts.flatMap((part) => part.type === "literal" && part.value ? [part.value] : []).map((term) => ({
53
+ type: "containsAllTermsInOrder",
54
+ propertyIdentifier,
55
+ value: term
56
+ }));
57
+ return pushdown(queries.length === 0 ? ALWAYS_TRUE_FILTER : queries.length === 1 ? queries[0] : {
58
+ type: "and",
59
+ value: queries
60
+ }, false);
61
+ }
62
+ return pushdown({
63
+ type: "wildcard",
64
+ propertyIdentifier,
65
+ value: parts.map((part) => {
66
+ if (part.type === "many") return "*";
67
+ if (part.type === "single") return "?";
68
+ return escapeFoundryWildcardLiteral(part.value);
69
+ }).join("")
70
+ });
71
+ }
72
+ function fieldPathToPropertyIdentifier(fieldPath) {
73
+ if (fieldPath.length === 1) return {
74
+ type: "property",
75
+ apiName: fieldPath[0]
76
+ };
77
+ else if (fieldPath.length === 2) return {
78
+ type: "structField",
79
+ propertyApiName: fieldPath[0],
80
+ structFieldApiName: fieldPath[1]
81
+ };
82
+ throw new Error(`Invalid field path: ${fieldPath.join(".")}`);
83
+ }
84
+ //#endregion
85
+ export { convertLikeFilter };
86
+
87
+ //# sourceMappingURL=likeFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"likeFilter.js","names":[],"sources":["../../src/adapter/likeFilter.ts"],"sourcesContent":["import type {\n PropertyApiName,\n PropertyIdentifier,\n SearchJsonQueryV2,\n StructFieldApiName,\n} from \"@osdk/foundry.ontologies\";\n\nconst ALWAYS_TRUE_FILTER: SearchJsonQueryV2 = { type: \"and\", value: [] };\n\ntype LikePatternPart = { type: \"literal\"; value: string } | { type: \"many\" } | { type: \"single\" };\n\ninterface PushdownFilter {\n query: SearchJsonQueryV2;\n safeToNegate: boolean;\n}\n\nfunction pushdown(query: SearchJsonQueryV2, safeToNegate = true): PushdownFilter {\n return { query, safeToNegate };\n}\n\nfunction parseLikePattern(pattern: string, literalBackslashes = false): LikePatternPart[] {\n const parts: LikePatternPart[] = [];\n let literal = \"\";\n\n const flushLiteral = () => {\n if (literal) {\n parts.push({ type: \"literal\", value: literal });\n literal = \"\";\n }\n };\n\n for (let index = 0; index < pattern.length; index++) {\n const character = pattern[index]!;\n if (character === \"\\\\\" && !literalBackslashes) {\n const escaped = pattern[index + 1];\n if (escaped === \"%\" || escaped === \"_\" || escaped === \"\\\\\") {\n literal += escaped;\n index++;\n } else {\n literal += character;\n }\n } else if (character === \"%\") {\n flushLiteral();\n parts.push({ type: \"many\" });\n } else if (character === \"_\") {\n flushLiteral();\n parts.push({ type: \"single\" });\n } else {\n literal += character;\n }\n }\n flushLiteral();\n\n return parts;\n}\n\nfunction escapeFoundryWildcardLiteral(value: string): string {\n return value.replace(/[\\\\*?]/g, \"\\\\$&\");\n}\n\nexport function convertLikeFilter(\n field: readonly (string | number)[],\n value: string,\n literalBackslashes = false\n): PushdownFilter {\n const parts = parseLikePattern(value.toLowerCase(), literalBackslashes);\n const hasLeadingWildcard = parts[0]?.type === \"many\";\n const hasTrailingWildcard = parts.at(-1)?.type === \"many\";\n const propertyIdentifier = fieldPathToPropertyIdentifier(field);\n\n if (hasLeadingWildcard && hasTrailingWildcard) {\n const terms = parts.flatMap((part) => (part.type === \"literal\" && part.value ? [part.value] : []));\n const queries = terms.map<SearchJsonQueryV2>((term) => ({\n // This is Foundry's substring/phrase query. It can over-fetch because\n // wildcard-delimited terms are not required to be adjacent or ordered.\n type: \"containsAllTermsInOrder\",\n propertyIdentifier,\n value: term,\n }));\n const query: SearchJsonQueryV2 =\n queries.length === 0\n ? ALWAYS_TRUE_FILTER\n : queries.length === 1\n ? queries[0]!\n : { type: \"and\", value: queries };\n\n // Contains is an approximation of SQL LIKE. Negating this superset\n // would produce a subset and could hide exact matches.\n return pushdown(query, false);\n }\n\n const wildcard = parts\n .map((part) => {\n if (part.type === \"many\") return \"*\";\n if (part.type === \"single\") return \"?\";\n return escapeFoundryWildcardLiteral(part.value);\n })\n .join(\"\");\n\n return pushdown({\n type: \"wildcard\",\n propertyIdentifier,\n value: wildcard,\n });\n}\n\nfunction fieldPathToPropertyIdentifier(fieldPath: readonly (string | number)[]): PropertyIdentifier {\n if (fieldPath.length === 1) {\n return {\n type: \"property\",\n apiName: fieldPath[0]! as PropertyApiName,\n };\n } else if (fieldPath.length === 2) {\n return {\n type: \"structField\",\n propertyApiName: fieldPath[0]! as PropertyApiName,\n structFieldApiName: fieldPath[1]! as StructFieldApiName,\n };\n }\n throw new Error(`Invalid field path: ${fieldPath.join(\".\")}`);\n}\n"],"mappings":";AAOA,MAAM,qBAAwC;CAAE,MAAM;CAAO,OAAO,CAAC;AAAE;AASvE,SAAS,SAAS,OAA0B,eAAe,MAAsB;CAC7E,OAAO;EAAE;EAAO;CAAa;AACjC;AAEA,SAAS,iBAAiB,SAAiB,qBAAqB,OAA0B;CACtF,MAAM,QAA2B,CAAC;CAClC,IAAI,UAAU;CAEd,MAAM,qBAAqB;EACvB,IAAI,SAAS;GACT,MAAM,KAAK;IAAE,MAAM;IAAW,OAAO;GAAQ,CAAC;GAC9C,UAAU;EACd;CACJ;CAEA,KAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS;EACjD,MAAM,YAAY,QAAQ;EAC1B,IAAI,cAAc,QAAQ,CAAC,oBAAoB;GAC3C,MAAM,UAAU,QAAQ,QAAQ;GAChC,IAAI,YAAY,OAAO,YAAY,OAAO,YAAY,MAAM;IACxD,WAAW;IACX;GACJ,OACI,WAAW;EAEnB,OAAO,IAAI,cAAc,KAAK;GAC1B,aAAa;GACb,MAAM,KAAK,EAAE,MAAM,OAAO,CAAC;EAC/B,OAAO,IAAI,cAAc,KAAK;GAC1B,aAAa;GACb,MAAM,KAAK,EAAE,MAAM,SAAS,CAAC;EACjC,OACI,WAAW;CAEnB;CACA,aAAa;CAEb,OAAO;AACX;AAEA,SAAS,6BAA6B,OAAuB;CACzD,OAAO,MAAM,QAAQ,WAAW,MAAM;AAC1C;AAEA,SAAgB,kBACZ,OACA,OACA,qBAAqB,OACP;CACd,MAAM,QAAQ,iBAAiB,MAAM,YAAY,GAAG,kBAAkB;CACtE,MAAM,qBAAqB,MAAM,EAAE,EAAE,SAAS;CAC9C,MAAM,sBAAsB,MAAM,GAAG,EAAE,CAAC,EAAE,SAAS;CACnD,MAAM,qBAAqB,8BAA8B,KAAK;CAE9D,IAAI,sBAAsB,qBAAqB;EAE3C,MAAM,UADQ,MAAM,SAAS,SAAU,KAAK,SAAS,aAAa,KAAK,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,CAC3E,CAAC,CAAC,KAAwB,UAAU;GAGpD,MAAM;GACN;GACA,OAAO;EACX,EAAE;EAUF,OAAO,SARH,QAAQ,WAAW,IACb,qBACA,QAAQ,WAAW,IACjB,QAAQ,KACR;GAAE,MAAM;GAAO,OAAO;EAAQ,GAInB,KAAK;CAChC;CAUA,OAAO,SAAS;EACZ,MAAM;EACN;EACA,OAXa,MACZ,KAAK,SAAS;GACX,IAAI,KAAK,SAAS,QAAQ,OAAO;GACjC,IAAI,KAAK,SAAS,UAAU,OAAO;GACnC,OAAO,6BAA6B,KAAK,KAAK;EAClD,CAAC,CAAC,CACD,KAAK,EAKQ;CAClB,CAAC;AACL;AAEA,SAAS,8BAA8B,WAA6D;CAChG,IAAI,UAAU,WAAW,GACrB,OAAO;EACH,MAAM;EACN,SAAS,UAAU;CACvB;MACG,IAAI,UAAU,WAAW,GAC5B,OAAO;EACH,MAAM;EACN,iBAAiB,UAAU;EAC3B,oBAAoB,UAAU;CAClC;CAEJ,MAAM,IAAI,MAAM,uBAAuB,UAAU,KAAK,GAAG,GAAG;AAChE"}
@@ -0,0 +1,76 @@
1
+ import { OntologyClient } from "@party-stack/foundry-client";
2
+ import { Effect, Stream, Types } from "effect";
3
+ import { ActionReceipt, BackendAttachments, BackendError, BackendSnapshot } from "@party-stack/ontology-backend";
4
+ import { OntologyIR } from "@party-stack/ontology-spec";
5
+ import { ByteInput } from "@party-stack/ontology-storage/blobs";
6
+ import { Query } from "@party-stack/ontology-storage";
7
+ import { attachment } from "@party-stack/ontology-spec/values";
8
+ //#region src/adapter/makeFoundryOntologyBackend.d.ts
9
+ type PartialAttachmentMetadata = Types.Mutable<Effect.Success<ReturnType<BackendAttachments["metadata"]>>>;
10
+ export declare function isFoundryNotFoundError(error: unknown): boolean;
11
+ export interface FoundryUsersIntegration {
12
+ objectType: string;
13
+ loadSubset(client: OntologyClient, query: Query, signal: AbortSignal): Promise<BackendSnapshot>;
14
+ getAttachmentContent?(client: OntologyClient, attachment: attachment): Promise<ByteInput | undefined>;
15
+ getAttachmentMetadata?(client: OntologyClient, attachment: attachment, selection: readonly (keyof PartialAttachmentMetadata)[]): Promise<PartialAttachmentMetadata | undefined>;
16
+ }
17
+ export interface FoundryOntologyBackendOptions {
18
+ client: OntologyClient;
19
+ ir: OntologyIR;
20
+ users?: FoundryUsersIntegration;
21
+ watch?: boolean;
22
+ context?: Record<string, unknown>;
23
+ }
24
+ export declare const makeFoundryOntologyBackend: (opts: FoundryOntologyBackendOptions) => Effect.Effect<{
25
+ name: string;
26
+ sourceId: string;
27
+ supportsIdempotency: boolean;
28
+ maintenance?: Effect.Effect<void, BackendError>;
29
+ loadSubset: (subset: import("@party-stack/ontology-spec/query").ObjectSubset) => Effect.Effect<BackendSnapshot, BackendError>;
30
+ query: (document: import("@party-stack/ontology-spec").QueryDocument, options?: {
31
+ readonly inputs?: Record<string, unknown>;
32
+ }) => Effect.Effect<Record<string, unknown>, BackendError>;
33
+ subscribeSelection?: (selection: import("@party-stack/ontology-backend").ObjectSelection, policy?: import("@party-stack/ontology-backend/delivery").DeliveryPolicy, resume?: import("@party-stack/ontology-backend/delivery").DeliveryPosition) => Effect.Effect<import("@party-stack/ontology-backend/delivery").DeliverySubscription, BackendError, import("effect/Scope").Scope>;
34
+ acknowledgeDelivery?: (position: import("@party-stack/ontology-backend/delivery").DeliveryPosition) => Effect.Effect<void, BackendError>;
35
+ resolveActionParameters?: (name: string, parameters: Record<string, unknown>) => Effect.Effect<Record<string, unknown>, BackendError>;
36
+ watchSubset?: (subset: import("@party-stack/ontology-spec/query").ObjectSubset) => Effect.Effect<Stream.Stream<import("@party-stack/ontology-backend").SubsetWatchEvent, BackendError>, BackendError, import("effect/Scope").Scope> | undefined;
37
+ refresh?: (subset: import("@party-stack/ontology-spec/query").ObjectSubset) => {
38
+ readonly pollIntervalMs?: number | false;
39
+ readonly maxCoverageAgeMs?: number;
40
+ } | undefined;
41
+ applyAction: (invocation: import("@party-stack/ontology-backend").ActionRequest) => Effect.Effect<ActionReceipt, BackendError>;
42
+ queryFunction: (name: string, parameters: Record<string, unknown>) => Effect.Effect<unknown, BackendError>;
43
+ changes?: {
44
+ readonly pull: (options: {
45
+ readonly cursor?: string;
46
+ readonly limit?: number;
47
+ }) => Effect.Effect<import("@party-stack/ontology-backend").BackendChangePage, BackendError>;
48
+ readonly watch?: Effect.Effect<Stream.Stream<void, BackendError>, BackendError, import("effect/Scope").Scope>;
49
+ };
50
+ attachments?: BackendAttachments;
51
+ encrypted?: import("@party-stack/ontology-backend").BackendEncryptedValues;
52
+ validateAction: (name: string, parameters: Record<string, unknown>, settings?: {
53
+ readonly knownParameters?: readonly string[];
54
+ }) => Effect.Effect<{
55
+ readonly certain: false;
56
+ } | {
57
+ readonly certain: true;
58
+ readonly value: {
59
+ readonly kind: "ok";
60
+ readonly value: void;
61
+ } | {
62
+ readonly kind: "err";
63
+ readonly value: readonly {
64
+ readonly message: string;
65
+ readonly path?: readonly (string | number)[] | undefined;
66
+ readonly code?: string | undefined;
67
+ readonly category?: "custom" | "input" | "reference" | undefined;
68
+ readonly source?: "parameter" | "submission" | "user-facing" | undefined;
69
+ readonly messageSource?: "configured" | "standard" | undefined;
70
+ }[];
71
+ };
72
+ }, BackendError<"Conflict" | "Forbidden" | "HistoryExpired" | "Internal" | "InvalidConfiguration" | "InvalidRequest" | "InvalidResponse" | "NotFound" | "NotImplemented" | "RateLimited" | "ResultExpired" | "SchemaMismatch" | "SessionExpired" | "SessionReplaced" | "SourceMismatch" | "Unauthenticated" | "Unavailable" | "ValidationFailed" | "ViewReplaced">, never>;
73
+ }, BackendError<"Conflict" | "Forbidden" | "HistoryExpired" | "Internal" | "InvalidConfiguration" | "InvalidRequest" | "InvalidResponse" | "NotFound" | "NotImplemented" | "RateLimited" | "ResultExpired" | "SchemaMismatch" | "SessionExpired" | "SessionReplaced" | "SourceMismatch" | "Unauthenticated" | "Unavailable" | "ValidationFailed" | "ViewReplaced">, import("effect/Scope").Scope>;
74
+ //#endregion
75
+ export {};
76
+ //# sourceMappingURL=makeFoundryOntologyBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeFoundryOntologyBackend.d.ts","names":[],"sources":["../../src/adapter/makeFoundryOntologyBackend.ts"],"mappings":";;;;;;;;KA4CK,4BAA4B,MAAM,QAAQ,OAAO,QAAQ,WAAW;wBAiBzD,uBAAuB;iBAWtB;EACb;EACA,WAAW,QAAQ,gBAAgB,OAAO,OAAO,QAAQ,cAAc,QAAQ;EAC/E,sBAAsB,QAAQ,gBAAgB,YAAY,aAAa,QAAQ;EAC/E,uBACI,QAAQ,gBACR,YAAY,YACZ,2BAA2B,+BAC5B,QAAQ;;iBA2HE;EACb,QAAQ;EACR,IAAI;EACJ,QAAQ;EACR;EACA,UAAU;;qBAgBD,6BAA0B,MAAA,kCAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6jBjB,iBAAA,cAAM,YACA,yBAAuB;aACb;QAAqC,OAAA;;;;;;;;;;;;;;;;;;;GAUzE,wXAAA"}