@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 +1 @@
1
- {"version":3,"file":"objectCollectionOptions.js","sourceRoot":"","sources":["../../src/adapter/objectCollectionOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"objectCollectionOptions.js","names":["AsyncIterable.toArray","AsyncIterable.fromPagination"],"sources":["../../src/adapter/objectCollectionOptions.ts"],"sourcesContent":["import {\n OntologyObjectsV2,\n OntologyObjectV2,\n type ObjectEditHistoryEntry,\n type ObjectSetUpdate,\n ObjectTypesV2,\n type ObjectPrimaryKeyV2,\n} from \"@osdk/foundry.ontologies\";\nimport { getObjectSetWatcherManager } from \"@party-stack/foundry-object-set-watcher\";\nimport {\n BasicIndex,\n CollectionConfig,\n DeduplicatedLoadSubset,\n InferSchemaOutput,\n LoadSubsetOptions,\n StandardSchema,\n SyncConfig,\n UtilsRecord,\n} from \"@tanstack/db\";\nimport { Store } from \"@tanstack/store\";\nimport * as AsyncIterable from \"../utils/AsyncIterable.js\";\nimport {\n convertLoadSubsetFilter,\n convertLoadSubsetOrderBy,\n isAlwaysFalseFilter,\n} from \"./convertLoadSubsetOptions.js\";\nimport type { OntologyClient } from \"@party-stack/foundry-client\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };\n\ninterface OntologyObject extends OntologyObjectV2 {\n __primaryKey: string | number;\n}\n\ntype FoundryObject = Record<string, unknown>;\n\nconst COLLECTION_SYNC_TIMEOUT_MS = 5_000;\n\nclass TimeoutWaitingForOperationIdError extends Error {\n constructor(operationId: string, objectType: string) {\n super(`Timed out waiting for Foundry operation ${operationId} to sync for ${objectType}.`);\n this.name = \"TimeoutWaitingForOperationIdError\";\n }\n}\n\nclass ObjectCollectionSyncAbortedError extends Error {\n constructor(objectType: string) {\n super(`Foundry sync for ${objectType} stopped before the operation was observed.`);\n this.name = \"ObjectCollectionSyncAbortedError\";\n }\n}\n\nexport interface ObjectCollectionUtils extends UtilsRecord {\n refresh: () => Promise<void>;\n awaitOperationId: (operationId: string, timeout?: number) => Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Edit history helpers\n// ---------------------------------------------------------------------------\n\nconst EDIT_HISTORY_PAGE_SIZE = 1_000;\nconst EDIT_HISTORY_CURSOR_METADATA_KEY = \"foundry.editHistoryCursor\";\nconst EDIT_HISTORY_CURSOR_VERSION = 1;\n\ninterface EditHistoryCursor {\n timestamp: string;\n seenEntryKeysAtTimestamp: Set<string>;\n}\n\ninterface PersistedEditHistoryCursor {\n version: typeof EDIT_HISTORY_CURSOR_VERSION;\n timestamp: string;\n seenEntryKeysAtTimestamp: string[];\n}\n\nfunction createEditHistoryCursor(timestamp: string = new Date().toISOString()): EditHistoryCursor {\n return { timestamp, seenEntryKeysAtTimestamp: new Set() };\n}\n\nfunction cloneEditHistoryCursor(cursor: EditHistoryCursor): EditHistoryCursor {\n return {\n timestamp: cursor.timestamp,\n seenEntryKeysAtTimestamp: new Set(cursor.seenEntryKeysAtTimestamp),\n };\n}\n\nfunction serializeEditHistoryCursor(cursor: EditHistoryCursor): PersistedEditHistoryCursor {\n return {\n version: EDIT_HISTORY_CURSOR_VERSION,\n timestamp: cursor.timestamp,\n seenEntryKeysAtTimestamp: [...cursor.seenEntryKeysAtTimestamp].sort(),\n };\n}\n\nfunction deserializeEditHistoryCursor(value: unknown): EditHistoryCursor | undefined {\n if (\n !isPlainObject(value) ||\n value.version !== EDIT_HISTORY_CURSOR_VERSION ||\n typeof value.timestamp !== \"string\" ||\n !Array.isArray(value.seenEntryKeysAtTimestamp) ||\n !value.seenEntryKeysAtTimestamp.every((key) => typeof key === \"string\")\n ) {\n return undefined;\n }\n return {\n timestamp: value.timestamp,\n seenEntryKeysAtTimestamp: new Set(value.seenEntryKeysAtTimestamp),\n };\n}\n\nfunction editHistoryCursorsEqual(left: EditHistoryCursor, right: EditHistoryCursor): boolean {\n return (\n left.timestamp === right.timestamp &&\n left.seenEntryKeysAtTimestamp.size === right.seenEntryKeysAtTimestamp.size &&\n [...left.seenEntryKeysAtTimestamp].every((key) => right.seenEntryKeysAtTimestamp.has(key))\n );\n}\n\nfunction canonicalizeJsonValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(canonicalizeJsonValue);\n if (isPlainObject(value)) {\n return Object.fromEntries(\n Object.keys(value)\n .sort()\n .map((key) => [key, canonicalizeJsonValue(value[key])])\n );\n }\n return value;\n}\n\nfunction getEditHistoryEntryKey(entry: ObjectEditHistoryEntry): string {\n return JSON.stringify(\n canonicalizeJsonValue({\n objectPrimaryKey: entry.objectPrimaryKey,\n operationId: entry.operationId,\n timestamp: entry.timestamp,\n edit: entry.edit,\n })\n );\n}\n\nfunction shouldProcessEditHistoryEntry(cursor: EditHistoryCursor, entry: ObjectEditHistoryEntry): boolean {\n if (entry.timestamp < cursor.timestamp) return false;\n if (entry.timestamp === cursor.timestamp) {\n return !cursor.seenEntryKeysAtTimestamp.has(getEditHistoryEntryKey(entry));\n }\n return true;\n}\n\nfunction advanceEditHistoryCursor(cursor: EditHistoryCursor, entry: ObjectEditHistoryEntry): void {\n const entryKey = getEditHistoryEntryKey(entry);\n if (entry.timestamp > cursor.timestamp) {\n cursor.timestamp = entry.timestamp;\n cursor.seenEntryKeysAtTimestamp.clear();\n }\n cursor.seenEntryKeysAtTimestamp.add(entryKey);\n}\n\nfunction getPrimaryKeyValue(\n primaryKey: ObjectPrimaryKeyV2,\n primaryKeyProperty: string,\n decodeEditObject: (object: FoundryObject) => FoundryObject\n): string | number {\n const values = Object.values(primaryKey);\n if (values.length !== 1) {\n throw new Error(\"Foundry object collections currently only support single-field primary keys.\");\n }\n const value = decodeEditObject({\n [primaryKeyProperty]: values[0],\n })[primaryKeyProperty];\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n throw new Error(\"Foundry object collections currently only support string or number primary keys.\");\n }\n return value;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n// ---------------------------------------------------------------------------\n// Foundry object fetching\n// ---------------------------------------------------------------------------\n\nasync function fetchFoundryObjects(\n client: OntologyClient,\n objectType: string,\n selectedProperties: string[],\n opts: LoadSubsetOptions,\n decodeObject: (object: FoundryObject) => FoundryObject = (object) => object\n): Promise<FoundryObject[]> {\n opts.signal?.throwIfAborted();\n const offset = Math.max(0, Math.trunc(opts.offset ?? 0));\n const limit = opts.limit === undefined ? undefined : Math.max(0, Math.trunc(opts.limit));\n if (limit === 0) return [];\n\n let where = convertLoadSubsetFilter(opts.where);\n if (isAlwaysFalseFilter(where) || (where?.type === \"in\" && where.value.length === 0)) {\n return [];\n }\n\n if (opts.cursor?.whereFrom) {\n const cursorWhere = convertLoadSubsetFilter(opts.cursor.whereFrom);\n if (isAlwaysFalseFilter(cursorWhere)) {\n return [];\n }\n if (cursorWhere) {\n where = where ? { type: \"and\", value: [where, cursorWhere] } : cursorWhere;\n }\n }\n\n const requestClient = opts.signal\n ? {\n ...client,\n fetch: (input: RequestInfo | URL, init?: RequestInit) =>\n client.fetch(input, {\n ...init,\n signal: opts.signal,\n }),\n }\n : client;\n const results = await AsyncIterable.toArray(\n AsyncIterable.fromPagination(\n (pageSize, pageToken: string | undefined) =>\n OntologyObjectsV2.search(requestClient, client.ontologyRid, objectType, {\n snapshot: true,\n where,\n excludeRid: true,\n select: selectedProperties,\n selectV2: [],\n pageSize,\n pageToken,\n orderBy: convertLoadSubsetOrderBy(opts.orderBy),\n }),\n (page) => page.nextPageToken,\n (page) => page.data,\n 10_000,\n limit === undefined ? undefined : offset + limit\n )\n );\n opts.signal?.throwIfAborted();\n\n return (results as FoundryObject[])\n .slice(offset, limit === undefined ? undefined : offset + limit)\n .map(decodeObject);\n}\n\nfunction createSyncConfig(\n client: OntologyClient,\n objectType: string,\n primaryKeyProperty: string,\n selectedProperties: string[],\n decodeObject: (object: FoundryObject) => FoundryObject = (object) => object,\n decodeEditObject: (object: FoundryObject) => FoundryObject = decodeObject,\n live: boolean = true\n): { sync: SyncConfig<Record<string, unknown>, string | number>; utils: ObjectCollectionUtils } {\n const seenOperationIds = new Store<Set<string>>(new Set<string>());\n const syncDisposed = new Store(false);\n const fullSourceRefreshVersion = new Store(0);\n let editHistoryUnavailable = false;\n let requestFullRefresh: (() => Promise<void>) | undefined;\n const refresh = async (): Promise<void> => {\n if (!requestFullRefresh || syncDisposed.state) throw new ObjectCollectionSyncAbortedError(objectType);\n await requestFullRefresh();\n };\n const refreshInBackground = () => {\n void refresh().catch((error: unknown) => {\n console.warn(`Failed full Foundry refresh for ${objectType}.`, error);\n });\n };\n let requestEditHistoryCatchUp: (() => void) | undefined;\n\n const awaitOperationId = async (\n operationId: string,\n timeout: number = COLLECTION_SYNC_TIMEOUT_MS\n ): Promise<void> => {\n if (typeof operationId !== \"string\" || operationId.length === 0) {\n throw new Error(\"Foundry operationId must be a non-empty string.\");\n }\n\n if (seenOperationIds.state.has(operationId)) {\n return;\n }\n\n if (syncDisposed.state) {\n throw new ObjectCollectionSyncAbortedError(objectType);\n }\n\n if (!requestEditHistoryCatchUp) {\n // An on-demand collection has no local state to confirm until its sync starts.\n return;\n }\n\n const refreshVersionAtStart = fullSourceRefreshVersion.state;\n const historyUnavailableAtStart = editHistoryUnavailable;\n return new Promise<void>((resolve, reject) => {\n const cleanup = () => {\n clearTimeout(timeoutId);\n seenOperationIdsSubscription.unsubscribe();\n fullSourceRefreshVersionSubscription.unsubscribe();\n disposedSubscription.unsubscribe();\n };\n\n const timeoutId = setTimeout(() => {\n cleanup();\n reject(new TimeoutWaitingForOperationIdError(operationId, objectType));\n }, timeout);\n const seenOperationIdsSubscription = seenOperationIds.subscribe(() => {\n if (seenOperationIds.state.has(operationId)) {\n cleanup();\n resolve();\n }\n });\n const fullSourceRefreshVersionSubscription = fullSourceRefreshVersion.subscribe(() => {\n if (\n !historyUnavailableAtStart &&\n editHistoryUnavailable &&\n fullSourceRefreshVersion.state > refreshVersionAtStart\n ) {\n cleanup();\n resolve();\n }\n });\n const disposedSubscription = syncDisposed.subscribe(() => {\n if (syncDisposed.state) {\n cleanup();\n reject(new ObjectCollectionSyncAbortedError(objectType));\n }\n });\n if (editHistoryUnavailable) {\n void refresh().then(\n () => {\n cleanup();\n resolve();\n },\n (error: unknown) => {\n cleanup();\n reject(error);\n }\n );\n } else requestEditHistoryCatchUp?.();\n });\n };\n\n const utils: ObjectCollectionUtils = { awaitOperationId, refresh };\n\n const sync: SyncConfig<Record<string, unknown>, string | number> = {\n sync: (params) => {\n const { begin, write, commit, markError, markReady, truncate } = params;\n const collectionMetadata = params.metadata?.collection;\n\n syncDisposed.setState(() => false);\n\n let disposed = false;\n const restoredEditHistoryCursor = deserializeEditHistoryCursor(\n collectionMetadata?.get(EDIT_HISTORY_CURSOR_METADATA_KEY)\n );\n let editHistoryCursor = restoredEditHistoryCursor ?? createEditHistoryCursor();\n let initialCommit: ReturnType<typeof commit> = true;\n if (!restoredEditHistoryCursor) {\n if (collectionMetadata) {\n begin();\n collectionMetadata.set(\n EDIT_HISTORY_CURSOR_METADATA_KEY,\n serializeEditHistoryCursor(editHistoryCursor)\n );\n initialCommit = commit();\n }\n }\n let catchUpRequested = false;\n let catchUpTask: Promise<void> | undefined;\n let pendingDirectWatcherUpdates: ObjectSetUpdate[] = [];\n let fullRefreshRequested = false;\n let fullRefreshTask: Promise<void> | undefined;\n\n const getObjectKey = (object: FoundryObject): string | number =>\n object[primaryKeyProperty] as string | number;\n\n const getWatcherObjectKey = (object: FoundryObject): string | number => {\n const key = object[primaryKeyProperty] ?? object.__primaryKey;\n if (typeof key !== \"string\" && typeof key !== \"number\") {\n throw new Error(\n `Foundry websocket update for ${objectType} did not include a supported primary key.`\n );\n }\n return key;\n };\n\n const upsertObject = (object: FoundryObject) => {\n const key = getObjectKey(object);\n const exists = params.collection.has(key);\n const existing = exists ? params.collection.get(key) : undefined;\n write({\n type: exists ? \"update\" : \"insert\",\n value: existing\n ? {\n ...existing,\n ...object,\n }\n : object,\n });\n };\n\n const deleteObjectByKey = (key: string | number): boolean => {\n write({ type: \"delete\", key });\n return true;\n };\n\n const fetchEditHistoryPage = (body: Parameters<typeof ObjectTypesV2.getEditsHistory>[3]) =>\n ObjectTypesV2.getEditsHistory(\n client,\n client.ontologyRid,\n objectType,\n body,\n // oxlint-disable-next-line typescript/no-unsafe-argument\n {\n preview: true,\n // oxlint-disable-next-line typescript/no-explicit-any\n } as unknown as any\n );\n\n const decodeEditProperties = (\n properties: Record<string, unknown>,\n primaryKey: string | number\n ): FoundryObject =>\n decodeEditObject({\n ...properties,\n [primaryKeyProperty]: primaryKey,\n });\n\n const decodeWatcherObject = (object: FoundryObject, primaryKey: string | number): FoundryObject =>\n decodeObject({\n ...object,\n [primaryKeyProperty]: primaryKey,\n });\n\n const applyDirectWatcherUpdates = async (updates: ObjectSetUpdate[]): Promise<void> => {\n const pendingMutations = new Map<\n string | number,\n { type: \"upsert\"; object: FoundryObject } | { type: \"delete\" }\n >();\n\n for (const update of updates) {\n if (update.type !== \"object\") continue;\n\n const object = update.object;\n const primaryKey = getWatcherObjectKey(object);\n\n switch (update.state) {\n case \"ADDED_OR_UPDATED\":\n pendingMutations.set(primaryKey, {\n type: \"upsert\",\n object: decodeWatcherObject(object, primaryKey),\n });\n break;\n case \"REMOVED\":\n pendingMutations.set(primaryKey, { type: \"delete\" });\n break;\n }\n }\n\n let transactionStarted = false;\n for (const [primaryKey, mutation] of pendingMutations) {\n if (!transactionStarted) {\n begin();\n transactionStarted = true;\n }\n\n if (mutation.type === \"delete\") {\n deleteObjectByKey(primaryKey);\n } else {\n upsertObject(mutation.object);\n }\n }\n\n const receipt = transactionStarted ? commit() : true;\n\n if (receipt !== true) await receipt;\n };\n\n const switchToDirectWebsocketMode = (error: unknown): void => {\n if (!editHistoryUnavailable) {\n const errorMessage = error instanceof Error ? error.message : error;\n console.warn(\n `Edit history catch-up failed for ${objectType}; falling back to direct websocket updates.`,\n errorMessage\n );\n editHistoryUnavailable = true;\n }\n\n if (pendingDirectWatcherUpdates.length > 0) {\n const updates = pendingDirectWatcherUpdates;\n pendingDirectWatcherUpdates = [];\n void applyDirectWatcherUpdates(updates).catch((applyError: unknown) => {\n console.warn(`Failed to apply direct Foundry updates for ${objectType}.`, applyError);\n });\n }\n refreshInBackground();\n };\n\n const catchUpFromEditHistory = async (): Promise<void> => {\n const nextEditHistoryCursor = cloneEditHistoryCursor(editHistoryCursor);\n const pendingMutations = new Map<\n string | number,\n { type: \"upsert\"; object: FoundryObject } | { type: \"delete\" }\n >();\n const newOperationIds = new Set<string>();\n\n for await (const entry of AsyncIterable.fromPagination(\n (pageSize, pageToken: string | undefined) =>\n fetchEditHistoryPage({\n filters: {\n type: \"timestampFilter\",\n startTime: nextEditHistoryCursor.timestamp,\n },\n includeAllPreviousProperties: true,\n pageSize,\n pageToken,\n sortOrder: \"oldest_first\",\n }),\n (page) => page.nextPageToken,\n (page) => page.data,\n EDIT_HISTORY_PAGE_SIZE\n )) {\n if (disposed) break;\n if (!shouldProcessEditHistoryEntry(nextEditHistoryCursor, entry)) continue;\n advanceEditHistoryCursor(nextEditHistoryCursor, entry);\n newOperationIds.add(entry.operationId);\n\n const primaryKey = getPrimaryKeyValue(\n entry.objectPrimaryKey,\n primaryKeyProperty,\n decodeEditObject\n );\n\n switch (entry.edit.type) {\n case \"createEdit\":\n case \"modifyEdit\":\n pendingMutations.set(primaryKey, {\n type: \"upsert\",\n object: decodeEditProperties(entry.edit.properties, primaryKey),\n });\n break;\n case \"deleteEdit\":\n pendingMutations.set(primaryKey, { type: \"delete\" });\n break;\n }\n }\n\n if (disposed) return;\n\n const checkpointChanged = !editHistoryCursorsEqual(editHistoryCursor, nextEditHistoryCursor);\n let transactionStarted = false;\n const ensureTransaction = () => {\n if (transactionStarted) return;\n begin();\n transactionStarted = true;\n };\n for (const [primaryKey, mutation] of pendingMutations) {\n ensureTransaction();\n\n if (mutation.type === \"delete\") {\n deleteObjectByKey(primaryKey);\n } else {\n upsertObject(mutation.object);\n }\n }\n\n if (checkpointChanged && collectionMetadata) {\n ensureTransaction();\n collectionMetadata.set(\n EDIT_HISTORY_CURSOR_METADATA_KEY,\n serializeEditHistoryCursor(nextEditHistoryCursor)\n );\n }\n\n const receipt = transactionStarted ? commit() : true;\n\n if (checkpointChanged) {\n editHistoryCursor = nextEditHistoryCursor;\n }\n\n if (newOperationIds.size > 0) {\n seenOperationIds.setState((current) => new Set([...current, ...newOperationIds]));\n }\n\n pendingDirectWatcherUpdates = [];\n\n if (receipt !== true) await receipt;\n };\n\n const refreshAllFromSource = async (): Promise<void> => {\n const objects = await fetchFoundryObjects(\n client,\n objectType,\n selectedProperties,\n {},\n decodeObject\n );\n if (disposed) throw new ObjectCollectionSyncAbortedError(objectType);\n\n begin();\n truncate();\n for (const object of objects) {\n write({\n type: \"insert\",\n value: object,\n });\n }\n const receipt = commit();\n\n if (receipt !== true) await receipt;\n if (disposed) throw new ObjectCollectionSyncAbortedError(objectType);\n while (pendingDirectWatcherUpdates.length > 0 && !disposed) {\n const updates = pendingDirectWatcherUpdates;\n pendingDirectWatcherUpdates = [];\n await applyDirectWatcherUpdates(updates);\n }\n if (disposed) throw new ObjectCollectionSyncAbortedError(objectType);\n fullSourceRefreshVersion.setState((version) => version + 1);\n };\n\n requestFullRefresh = () => {\n fullRefreshRequested = true;\n if (fullRefreshTask) return fullRefreshTask;\n\n const priorCatchUp = catchUpTask;\n fullRefreshTask = (async () => {\n if (priorCatchUp) await priorCatchUp;\n if (disposed) throw new ObjectCollectionSyncAbortedError(objectType);\n while (fullRefreshRequested && !disposed) {\n fullRefreshRequested = false;\n await refreshAllFromSource();\n }\n })()\n .catch(async (error: unknown) => {\n // A failed snapshot must not strand updates queued by the live watcher.\n while (pendingDirectWatcherUpdates.length > 0 && !disposed) {\n const updates = pendingDirectWatcherUpdates;\n pendingDirectWatcherUpdates = [];\n try {\n await applyDirectWatcherUpdates(updates);\n } catch (applyError: unknown) {\n console.warn(\n `Failed to apply queued Foundry updates for ${objectType}.`,\n applyError\n );\n break;\n }\n }\n throw error;\n })\n .finally(() => {\n fullRefreshTask = undefined;\n if (fullRefreshRequested && !disposed) {\n refreshInBackground();\n }\n });\n return fullRefreshTask;\n };\n\n requestEditHistoryCatchUp = () => {\n if (editHistoryUnavailable) {\n return;\n }\n\n catchUpRequested = true;\n if (catchUpTask) return;\n\n const priorRefresh = fullRefreshTask;\n catchUpTask = (async () => {\n if (priorRefresh) await priorRefresh;\n while (catchUpRequested && !disposed) {\n catchUpRequested = false;\n await catchUpFromEditHistory();\n }\n })()\n .catch((error: unknown) => {\n switchToDirectWebsocketMode(error);\n })\n .finally(() => {\n catchUpTask = undefined;\n if (catchUpRequested && !disposed) {\n requestEditHistoryCatchUp?.();\n }\n });\n };\n\n const loadSubset = async (opts: LoadSubsetOptions): Promise<void> => {\n const objects = await fetchFoundryObjects(\n client,\n objectType,\n selectedProperties,\n opts,\n decodeObject\n );\n if (objects.length > 0) {\n begin();\n for (const object of objects) {\n upsertObject(object);\n }\n const receipt = commit(opts.signal);\n if (receipt !== true) await receipt;\n }\n };\n\n const loadSubsetDedupe = new DeduplicatedLoadSubset({ loadSubset });\n const unsubscribe = live\n ? getObjectSetWatcherManager(client).subscribe({ type: \"base\", objectType }, (message) => {\n switch (message.type) {\n case \"change\": {\n if (fullRefreshTask) {\n pendingDirectWatcherUpdates.push(...message.updates);\n } else if (editHistoryUnavailable) {\n void applyDirectWatcherUpdates(message.updates).catch((error: unknown) => {\n console.warn(\n `Failed to apply direct Foundry updates for ${objectType}.`,\n error\n );\n refreshInBackground();\n });\n } else {\n pendingDirectWatcherUpdates.push(...message.updates);\n requestEditHistoryCatchUp?.();\n }\n break;\n }\n case \"refresh\": {\n if (editHistoryUnavailable) {\n refreshInBackground();\n } else {\n requestEditHistoryCatchUp?.();\n }\n break;\n }\n case \"state\": {\n if (message.status !== \"open\") break;\n if (editHistoryUnavailable) {\n refreshInBackground();\n } else {\n requestEditHistoryCatchUp?.();\n }\n break;\n }\n }\n })\n : () => {};\n\n // start task here, cleanup can stop it\n // in that task:\n // - spawn object set subscription, which sends messages to catch up\n // - actions sends messages to catch up\n\n if (initialCommit === true) {\n markReady();\n } else {\n void initialCommit.then(markReady, markError);\n }\n\n return {\n loadSubset: loadSubsetDedupe.loadSubset,\n cleanup: () => {\n disposed = true;\n requestEditHistoryCatchUp = undefined;\n requestFullRefresh = undefined;\n syncDisposed.setState(() => true);\n unsubscribe();\n loadSubsetDedupe.reset();\n },\n };\n },\n };\n\n return { sync, utils };\n}\n\n// ---------------------------------------------------------------------------\n// Collection option types\n// ---------------------------------------------------------------------------\n\nexport interface ObjectCollectionOpts {\n client: OntologyClient;\n objectType: string;\n primaryKeyProperty: string;\n selectedProperties: string[];\n live?: boolean;\n decodeObject?: (object: Record<string, unknown>) => Record<string, unknown>;\n decodeEditObject?: (object: Record<string, unknown>) => Record<string, unknown>;\n}\n\nexport interface ObjectCollectionConfig<TSchema extends StandardSchema<OntologyObject>>\n extends\n ObjectCollectionOpts,\n Omit<\n CollectionConfig<InferSchemaOutput<TSchema>, string | number, TSchema>,\n \"sync\" | \"syncMode\" | \"getKey\" | \"onInsert\" | \"onUpdate\" | \"onDelete\"\n > {\n schema: TSchema;\n}\n\n// ---------------------------------------------------------------------------\n// Public collection options\n// ---------------------------------------------------------------------------\n\nexport function objectCollectionOptions<TSchema extends StandardSchema<OntologyObject>>(\n config: ObjectCollectionConfig<TSchema>\n): WithRequired<\n CollectionConfig<InferSchemaOutput<TSchema>, string | number, TSchema, ObjectCollectionUtils>,\n \"schema\"\n>;\nexport function objectCollectionOptions(config: ObjectCollectionOpts): {\n syncMode: \"on-demand\";\n sync: SyncConfig<Record<string, unknown>, string | number>;\n utils: ObjectCollectionUtils;\n};\n// oxlint-disable-next-line typescript/no-explicit-any\nexport function objectCollectionOptions(config: any): any {\n const {\n client,\n objectType,\n primaryKeyProperty,\n selectedProperties,\n live,\n decodeObject,\n decodeEditObject,\n schema,\n ...rest\n } = config as ObjectCollectionOpts & { schema?: StandardSchema<OntologyObject> } & Record<\n string,\n unknown\n >;\n const { sync, utils } = createSyncConfig(\n client,\n objectType,\n primaryKeyProperty,\n selectedProperties,\n decodeObject,\n decodeEditObject,\n live\n );\n\n if (schema === undefined) {\n return { syncMode: \"on-demand\" as const, sync, utils };\n }\n\n return {\n ...rest,\n schema,\n defaultIndexType: BasicIndex,\n autoIndex: \"eager\",\n syncMode: \"on-demand\" as const,\n getKey: (object: Record<string, unknown>) =>\n (object as Record<string, string | number>)[primaryKeyProperty] as string | number,\n sync,\n utils,\n };\n}\n"],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- import type { AttachmentConstraint, OntologyIR } from "@party-stack/ontology";
2
- import type { OntologyAttachmentBindingTarget } from "@party-stack/ontology/utils";
1
+ import { AttachmentConstraint, OntologyIR } from "@party-stack/ontology";
2
+ import { OntologyAttachmentBindingTarget } from "@party-stack/ontology/utils";
3
+ //#region src/config/applyAttachmentConstraintOverrides.d.ts
3
4
  export interface FoundryAttachmentConstraintOverride {
4
- target: OntologyAttachmentBindingTarget;
5
- constraint: AttachmentConstraint;
5
+ target: OntologyAttachmentBindingTarget;
6
+ constraint: AttachmentConstraint;
6
7
  }
7
8
  export declare function applyAttachmentConstraintOverrides(ontology: OntologyIR, overrides: FoundryAttachmentConstraintOverride[]): OntologyIR;
9
+ //#endregion
8
10
  //# sourceMappingURL=applyAttachmentConstraintOverrides.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyAttachmentConstraintOverrides.d.ts","sourceRoot":"","sources":["../../src/config/applyAttachmentConstraintOverrides.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,oBAAoB,EACpB,UAAU,EAEb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAMnF,MAAM,WAAW,mCAAmC;IAChD,MAAM,EAAE,+BAA+B,CAAC;IACxC,UAAU,EAAE,oBAAoB,CAAC;CACpC;AAuCD,wBAAgB,kCAAkC,CAC9C,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,mCAAmC,EAAE,GACjD,UAAU,CAiDZ"}
1
+ {"version":3,"file":"applyAttachmentConstraintOverrides.d.ts","names":[],"sources":["../../src/config/applyAttachmentConstraintOverrides.ts"],"mappings":";;;iBAQiB;EACb,QAAQ;EACR,YAAY;;wBAkCA,mCACZ,UAAU,YACV,WAAW,wCACZ"}
@@ -1,54 +1,50 @@
1
1
  import { invariant } from "@bobbyfidz/panic";
2
+ //#region src/config/applyAttachmentConstraintOverrides.ts
2
3
  function withAttachmentConstraint(type, constraint) {
3
- switch (type.kind) {
4
- case "attachment":
5
- return {
6
- ...type,
7
- value: {
8
- ...type.value,
9
- constraint,
10
- },
11
- };
12
- case "optional":
13
- return {
14
- ...type,
15
- value: {
16
- type: withAttachmentConstraint(type.value.type, constraint),
17
- },
18
- };
19
- case "list":
20
- return {
21
- ...type,
22
- value: {
23
- elementType: withAttachmentConstraint(type.value.elementType, constraint),
24
- },
25
- };
26
- default:
27
- throw new Error(`Foundry attachment constraint target resolved to "${type.kind}", not an attachment.`);
28
- }
4
+ switch (type.kind) {
5
+ case "attachment": return {
6
+ ...type,
7
+ value: {
8
+ ...type.value,
9
+ constraint
10
+ }
11
+ };
12
+ case "optional": return {
13
+ ...type,
14
+ value: { type: withAttachmentConstraint(type.value.type, constraint) }
15
+ };
16
+ case "list": return {
17
+ ...type,
18
+ value: { elementType: withAttachmentConstraint(type.value.elementType, constraint) }
19
+ };
20
+ default: throw new Error(`Foundry attachment constraint target resolved to "${type.kind}", not an attachment.`);
21
+ }
29
22
  }
30
- export function applyAttachmentConstraintOverrides(ontology, overrides) {
31
- for (const override of overrides) {
32
- const target = override.target;
33
- switch (target.kind) {
34
- case "objectProperty": {
35
- const objectType = ontology.objectTypes.find((candidate) => candidate.name === target.objectType);
36
- invariant(objectType, `Unknown object type "${target.objectType}" in attachment constraint override.`);
37
- const property = objectType.properties.find((candidate) => candidate.name === target.property);
38
- invariant(property, `Unknown property "${target.property}" on "${target.objectType}" in attachment constraint override.`);
39
- property.type = withAttachmentConstraint(property.type, override.constraint);
40
- break;
41
- }
42
- case "actionParameter": {
43
- const actionType = ontology.actionTypes.find((candidate) => candidate.name === target.actionType);
44
- invariant(actionType, `Unknown action type "${target.actionType}" in attachment constraint override.`);
45
- const parameter = actionType.parameters.find((candidate) => candidate.name === target.parameter);
46
- invariant(parameter, `Unknown parameter "${target.parameter}" on "${target.actionType}" in attachment constraint override.`);
47
- parameter.type = withAttachmentConstraint(parameter.type, override.constraint);
48
- break;
49
- }
50
- }
51
- }
52
- return ontology;
23
+ function applyAttachmentConstraintOverrides(ontology, overrides) {
24
+ for (const override of overrides) {
25
+ const target = override.target;
26
+ switch (target.kind) {
27
+ case "objectProperty": {
28
+ const objectType = ontology.objectTypes.find((candidate) => candidate.name === target.objectType);
29
+ invariant(objectType, `Unknown object type "${target.objectType}" in attachment constraint override.`);
30
+ const property = objectType.properties.find((candidate) => candidate.name === target.property);
31
+ invariant(property, `Unknown property "${target.property}" on "${target.objectType}" in attachment constraint override.`);
32
+ property.type = withAttachmentConstraint(property.type, override.constraint);
33
+ break;
34
+ }
35
+ case "actionParameter": {
36
+ const actionType = ontology.actionTypes.find((candidate) => candidate.name === target.actionType);
37
+ invariant(actionType, `Unknown action type "${target.actionType}" in attachment constraint override.`);
38
+ const parameter = actionType.parameters.find((candidate) => candidate.name === target.parameter);
39
+ invariant(parameter, `Unknown parameter "${target.parameter}" on "${target.actionType}" in attachment constraint override.`);
40
+ parameter.type = withAttachmentConstraint(parameter.type, override.constraint);
41
+ break;
42
+ }
43
+ }
44
+ }
45
+ return ontology;
53
46
  }
47
+ //#endregion
48
+ export { applyAttachmentConstraintOverrides };
49
+
54
50
  //# sourceMappingURL=applyAttachmentConstraintOverrides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyAttachmentConstraintOverrides.js","sourceRoot":"","sources":["../../src/config/applyAttachmentConstraintOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiB7C,SAAS,wBAAwB,CAC7B,IAAa,EACb,UAAgC;IAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,YAAY;YACb,OAAO;gBACH,GAAG,IAAI;gBACP,KAAK,EAAE;oBACH,GAAG,IAAI,CAAC,KAAK;oBACb,UAAU;iBACb;aACJ,CAAC;QACN,KAAK,UAAU;YACX,OAAO;gBACH,GAAG,IAAI;gBACP,KAAK,EAAE;oBACH,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;iBAC9D;aACJ,CAAC;QACN,KAAK,MAAM;YACP,OAAO;gBACH,GAAG,IAAI;gBACP,KAAK,EAAE;oBACH,WAAW,EAAE,wBAAwB,CACjC,IAAI,CAAC,KAAK,CAAC,WAAW,EACtB,UAAU,CACb;iBACJ;aACJ,CAAC;QACN;YACI,MAAM,IAAI,KAAK,CACX,qDAAqD,IAAI,CAAC,IAAI,uBAAuB,CACxF,CAAC;IACV,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kCAAkC,CAC9C,QAAoB,EACpB,SAAgD;IAEhD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CACtD,CAAC;gBACF,SAAS,CACL,UAAU,EACV,wBAAwB,MAAM,CAAC,UAAU,sCAAsC,CAClF,CAAC;gBACF,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CACvC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CACpD,CAAC;gBACF,SAAS,CACL,QAAQ,EACR,qBAAqB,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,UAAU,sCAAsC,CACvG,CAAC;gBACF,QAAQ,CAAC,IAAI,GAAG,wBAAwB,CACpC,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,UAAU,CACtB,CAAC;gBACF,MAAM;YACV,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACrB,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,UAAU,CACtD,CAAC;gBACF,SAAS,CACL,UAAU,EACV,wBAAwB,MAAM,CAAC,UAAU,sCAAsC,CAClF,CAAC;gBACF,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CACrD,CAAC;gBACF,SAAS,CACL,SAAS,EACT,sBAAsB,MAAM,CAAC,SAAS,SAAS,MAAM,CAAC,UAAU,sCAAsC,CACzG,CAAC;gBACF,SAAS,CAAC,IAAI,GAAG,wBAAwB,CACrC,SAAS,CAAC,IAAI,EACd,QAAQ,CAAC,UAAU,CACtB,CAAC;gBACF,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"applyAttachmentConstraintOverrides.js","names":[],"sources":["../../src/config/applyAttachmentConstraintOverrides.ts"],"sourcesContent":["import { invariant } from \"@bobbyfidz/panic\";\nimport type { AttachmentConstraint, OntologyIR, TypeDef } from \"@party-stack/ontology\";\nimport type { OntologyAttachmentBindingTarget } from \"@party-stack/ontology/utils\";\n\n// TODO: Remove these overrides once Foundry datasources expose mediaSetRid and\n// media-set schemas can drive constraints directly. See:\n// ../../../../specs/2026-08-05-foundry-media-support/README.md\n\nexport interface FoundryAttachmentConstraintOverride {\n target: OntologyAttachmentBindingTarget;\n constraint: AttachmentConstraint;\n}\n\nfunction withAttachmentConstraint(type: TypeDef, constraint: AttachmentConstraint): TypeDef {\n switch (type.kind) {\n case \"attachment\":\n return {\n ...type,\n value: {\n ...type.value,\n constraint,\n },\n };\n case \"optional\":\n return {\n ...type,\n value: {\n type: withAttachmentConstraint(type.value.type, constraint),\n },\n };\n case \"list\":\n return {\n ...type,\n value: {\n elementType: withAttachmentConstraint(type.value.elementType, constraint),\n },\n };\n default:\n throw new Error(\n `Foundry attachment constraint target resolved to \"${type.kind}\", not an attachment.`\n );\n }\n}\n\nexport function applyAttachmentConstraintOverrides(\n ontology: OntologyIR,\n overrides: FoundryAttachmentConstraintOverride[]\n): OntologyIR {\n for (const override of overrides) {\n const target = override.target;\n switch (target.kind) {\n case \"objectProperty\": {\n const objectType = ontology.objectTypes.find(\n (candidate) => candidate.name === target.objectType\n );\n invariant(\n objectType,\n `Unknown object type \"${target.objectType}\" in attachment constraint override.`\n );\n const property = objectType.properties.find(\n (candidate) => candidate.name === target.property\n );\n invariant(\n property,\n `Unknown property \"${target.property}\" on \"${target.objectType}\" in attachment constraint override.`\n );\n property.type = withAttachmentConstraint(property.type, override.constraint);\n break;\n }\n case \"actionParameter\": {\n const actionType = ontology.actionTypes.find(\n (candidate) => candidate.name === target.actionType\n );\n invariant(\n actionType,\n `Unknown action type \"${target.actionType}\" in attachment constraint override.`\n );\n const parameter = actionType.parameters.find(\n (candidate) => candidate.name === target.parameter\n );\n invariant(\n parameter,\n `Unknown parameter \"${target.parameter}\" on \"${target.actionType}\" in attachment constraint override.`\n );\n parameter.type = withAttachmentConstraint(parameter.type, override.constraint);\n break;\n }\n }\n }\n return ontology;\n}\n"],"mappings":";;AAaA,SAAS,yBAAyB,MAAe,YAA2C;CACxF,QAAQ,KAAK,MAAb;EACI,KAAK,cACD,OAAO;GACH,GAAG;GACH,OAAO;IACH,GAAG,KAAK;IACR;GACJ;EACJ;EACJ,KAAK,YACD,OAAO;GACH,GAAG;GACH,OAAO,EACH,MAAM,yBAAyB,KAAK,MAAM,MAAM,UAAU,EAC9D;EACJ;EACJ,KAAK,QACD,OAAO;GACH,GAAG;GACH,OAAO,EACH,aAAa,yBAAyB,KAAK,MAAM,aAAa,UAAU,EAC5E;EACJ;EACJ,SACI,MAAM,IAAI,MACN,qDAAqD,KAAK,KAAK,sBACnE;CACR;AACJ;AAEA,SAAgB,mCACZ,UACA,WACU;CACV,KAAK,MAAM,YAAY,WAAW;EAC9B,MAAM,SAAS,SAAS;EACxB,QAAQ,OAAO,MAAf;GACI,KAAK,kBAAkB;IACnB,MAAM,aAAa,SAAS,YAAY,MACnC,cAAc,UAAU,SAAS,OAAO,UAC7C;IACA,UACI,YACA,wBAAwB,OAAO,WAAW,qCAC9C;IACA,MAAM,WAAW,WAAW,WAAW,MAClC,cAAc,UAAU,SAAS,OAAO,QAC7C;IACA,UACI,UACA,qBAAqB,OAAO,SAAS,QAAQ,OAAO,WAAW,qCACnE;IACA,SAAS,OAAO,yBAAyB,SAAS,MAAM,SAAS,UAAU;IAC3E;GACJ;GACA,KAAK,mBAAmB;IACpB,MAAM,aAAa,SAAS,YAAY,MACnC,cAAc,UAAU,SAAS,OAAO,UAC7C;IACA,UACI,YACA,wBAAwB,OAAO,WAAW,qCAC9C;IACA,MAAM,YAAY,WAAW,WAAW,MACnC,cAAc,UAAU,SAAS,OAAO,SAC7C;IACA,UACI,WACA,sBAAsB,OAAO,UAAU,QAAQ,OAAO,WAAW,qCACrE;IACA,UAAU,OAAO,yBAAyB,UAAU,MAAM,SAAS,UAAU;IAC7E;GACJ;EACJ;CACJ;CACA,OAAO;AACX"}
@@ -1,22 +1,24 @@
1
- import { type Lens, type OntologyPullSource, type OntologyPullConfig } from "@party-stack/ontology";
2
- import { type FoundryAuthenticationClient, type FoundryOAuthConnectionOptions } from "../connection.js";
3
- import { type FoundryAttachmentConstraintOverride } from "./applyAttachmentConstraintOverrides.js";
4
- export type { FoundryAttachmentConstraintOverride } from "./applyAttachmentConstraintOverrides.js";
1
+ import { FoundryAttachmentConstraintOverride } from "./applyAttachmentConstraintOverrides.js";
2
+ import { FoundryAuthenticationClient, FoundryOAuthConnectionOptions } from "../connection.js";
3
+ import { Lens, OntologyPullConfig, OntologyPullSource } from "@party-stack/ontology";
4
+ //#region src/config/index.d.ts
5
5
  export interface FoundryOntologyPullConnectionOptions {
6
- oauth?: FoundryOAuthConnectionOptions;
7
- token?: string;
8
- userId?: string;
6
+ oauth?: FoundryOAuthConnectionOptions;
7
+ token?: string;
8
+ userId?: string;
9
9
  }
10
10
  export interface CreateFoundryOntologyPullSourceOptions {
11
- baseUrl: string;
12
- ontologyRid: string;
13
- connection: FoundryOntologyPullConnectionOptions;
14
- attachmentConstraints?: FoundryAttachmentConstraintOverride[];
15
- users?: {
16
- objectType: string;
17
- lens: Lens;
18
- };
11
+ baseUrl: string;
12
+ ontologyRid: string;
13
+ connection: FoundryOntologyPullConnectionOptions;
14
+ attachmentConstraints?: FoundryAttachmentConstraintOverride[];
15
+ users?: {
16
+ objectType: string;
17
+ lens: Lens;
18
+ };
19
19
  }
20
20
  export declare function createFoundryOntologyPullSource(options: CreateFoundryOntologyPullSourceOptions): OntologyPullSource<FoundryAuthenticationClient>;
21
21
  export type FoundryOntologyPullConfig = OntologyPullConfig<FoundryAuthenticationClient>;
22
+ //#endregion
23
+ export type { FoundryAttachmentConstraintOverride };
22
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,IAAI,EACT,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAE1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAMxG,OAAO,EAEH,KAAK,mCAAmC,EAC3C,MAAM,yCAAyC,CAAC;AAEjD,YAAY,EAAE,mCAAmC,EAAE,MAAM,yCAAyC,CAAC;AASnG,MAAM,WAAW,oCAAoC;IACjD,KAAK,CAAC,EAAE,6BAA6B,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sCAAsC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,oCAAoC,CAAC;IACjD,qBAAqB,CAAC,EAAE,mCAAmC,EAAE,CAAC;IAC9D,KAAK,CAAC,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,IAAI,CAAC;KACd,CAAC;CACL;AA0BD,wBAAgB,+BAA+B,CAC3C,OAAO,EAAE,sCAAsC,GAChD,kBAAkB,CAAC,2BAA2B,CAAC,CAmEjD;AAED,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/config/index.ts"],"mappings":";;;;iBA4BiB;EACb,QAAQ;EACR;EACA;;iBAGa;EACb;EACA;EACA,YAAY;EACZ,wBAAwB;EACxB;IACI;IACA,MAAM;;;wBA4BE,gCACZ,SAAS,yCACV,mBAAmB;YAiEV,4BAA4B,mBAAmB"}
@@ -1,88 +1,63 @@
1
- import { o, } from "@party-stack/ontology";
2
- import { createFoundryBackendInstallation, createFoundryOntologyRoute, } from "../installation/createFoundryBackendInstallation.js";
1
+ import { createFoundryBackendInstallation, createFoundryOntologyRoute } from "../installation/createFoundryBackendInstallation.js";
2
+ import { applyAttachmentConstraintOverrides } from "./applyAttachmentConstraintOverrides.js";
3
3
  import { createFoundryUserObjectType } from "../users/foundryUser.js";
4
- import { applyAttachmentConstraintOverrides, } from "./applyAttachmentConstraintOverrides.js";
4
+ import { o } from "@party-stack/ontology";
5
+ //#region src/config/index.ts
5
6
  const DEFAULT_FOUNDRY_SCOPES = [
6
- "api:use-ontologies-read",
7
- "offline_access",
8
- "ontology:view-unredacted-action-type",
9
- "ontology:view-object-type",
7
+ "api:use-ontologies-read",
8
+ "offline_access",
9
+ "ontology:view-unredacted-action-type",
10
+ "ontology:view-object-type"
10
11
  ];
11
12
  function addConfiguredUser(ontology, users) {
12
- if (!users)
13
- return ontology;
14
- const userObjectType = createFoundryUserObjectType(users.objectType, users.lens);
15
- return {
16
- ...ontology,
17
- objectTypes: [
18
- ...ontology.objectTypes.filter((objectType) => objectType.name !== users.objectType),
19
- userObjectType,
20
- ],
21
- contextType: o.struct({
22
- fields: [
23
- {
24
- name: "user",
25
- displayName: "User",
26
- type: o.objectReference({ objectType: users.objectType }),
27
- },
28
- ],
29
- }),
30
- };
13
+ if (!users) return ontology;
14
+ const userObjectType = createFoundryUserObjectType(users.objectType, users.lens);
15
+ return {
16
+ ...ontology,
17
+ objectTypes: [...ontology.objectTypes.filter((objectType) => objectType.name !== users.objectType), userObjectType],
18
+ contextType: o.struct({ fields: [{
19
+ name: "user",
20
+ displayName: "User",
21
+ type: o.objectReference({ objectType: users.objectType })
22
+ }] })
23
+ };
31
24
  }
32
- export function createFoundryOntologyPullSource(options) {
33
- return {
34
- ontologyId: options.ontologyRid,
35
- createInstallation: ({ runtime }) => {
36
- const scopes = options.connection.oauth?.scopes ??
37
- DEFAULT_FOUNDRY_SCOPES;
38
- return createFoundryBackendInstallation({
39
- installationId: `foundry-pull:${options.baseUrl}:${options.ontologyRid}:${[...scopes].sort().join(",")}`,
40
- baseUrl: options.baseUrl,
41
- runtime,
42
- connections: {
43
- token: options.connection.token,
44
- oauth: options.connection.oauth
45
- ? {
46
- ...options.connection.oauth,
47
- scopes,
48
- }
49
- : undefined,
50
- },
51
- routes: [
52
- createFoundryOntologyRoute({
53
- ontologyId: options.ontologyRid,
54
- }),
55
- ],
56
- });
57
- },
58
- async resolveConnection(installation) {
59
- const configuredUserId = options.connection.userId;
60
- const activeConnections = [...installation.connections.values()]
61
- .filter((connection) => connection.state.status === "active")
62
- .map((connection) => ({
63
- userId: connection.userId,
64
- state: connection.state,
65
- }));
66
- if (!options.connection.token && !configuredUserId && activeConnections.length > 1) {
67
- throw new Error("Multiple Foundry users are signed in for this project. Set connection.userId in the ontology pull source.");
68
- }
69
- let connection = options.connection.token
70
- ? await installation.authentication.signIn.apiToken()
71
- : configuredUserId
72
- ? activeConnections.find((candidate) => candidate.userId === configuredUserId)
73
- : activeConnections[0];
74
- if (!connection && options.connection.oauth) {
75
- connection = await installation.authentication.signIn.oauth();
76
- }
77
- if (!connection) {
78
- throw new Error("Foundry ontology pull requires connection.oauth or connection.token.");
79
- }
80
- if (configuredUserId && connection.userId !== configuredUserId) {
81
- throw new Error(`Foundry signed in as "${connection.userId}", but connection.userId is "${configuredUserId}".`);
82
- }
83
- return connection;
84
- },
85
- transformPulledOntology: (ontology) => addConfiguredUser(applyAttachmentConstraintOverrides(ontology, options.attachmentConstraints ?? []), options.users),
86
- };
25
+ function createFoundryOntologyPullSource(options) {
26
+ return {
27
+ ontologyId: options.ontologyRid,
28
+ createInstallation: ({ runtime }) => {
29
+ const scopes = options.connection.oauth?.scopes ?? DEFAULT_FOUNDRY_SCOPES;
30
+ return createFoundryBackendInstallation({
31
+ installationId: `foundry-pull:${options.baseUrl}:${options.ontologyRid}:${[...scopes].sort().join(",")}`,
32
+ baseUrl: options.baseUrl,
33
+ runtime,
34
+ connections: {
35
+ token: options.connection.token,
36
+ oauth: options.connection.oauth ? {
37
+ ...options.connection.oauth,
38
+ scopes
39
+ } : void 0
40
+ },
41
+ routes: [createFoundryOntologyRoute({ ontologyId: options.ontologyRid })]
42
+ });
43
+ },
44
+ async resolveConnection(installation) {
45
+ const configuredUserId = options.connection.userId;
46
+ const activeConnections = [...installation.connections.values()].filter((connection) => connection.state.status === "active").map((connection) => ({
47
+ userId: connection.userId,
48
+ state: connection.state
49
+ }));
50
+ if (!options.connection.token && !configuredUserId && activeConnections.length > 1) throw new Error("Multiple Foundry users are signed in for this project. Set connection.userId in the ontology pull source.");
51
+ let connection = options.connection.token ? await installation.authentication.signIn.apiToken() : configuredUserId ? activeConnections.find((candidate) => candidate.userId === configuredUserId) : activeConnections[0];
52
+ if (!connection && options.connection.oauth) connection = await installation.authentication.signIn.oauth();
53
+ if (!connection) throw new Error("Foundry ontology pull requires connection.oauth or connection.token.");
54
+ if (configuredUserId && connection.userId !== configuredUserId) throw new Error(`Foundry signed in as "${connection.userId}", but connection.userId is "${configuredUserId}".`);
55
+ return connection;
56
+ },
57
+ transformPulledOntology: (ontology) => addConfiguredUser(applyAttachmentConstraintOverrides(ontology, options.attachmentConstraints ?? []), options.users)
58
+ };
87
59
  }
60
+ //#endregion
61
+ export { createFoundryOntologyPullSource };
62
+
88
63
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/config/index.ts"],"sourcesContent":["import {\n o,\n type Lens,\n type OntologyPullSource,\n type OntologyPullConfig,\n type OntologyIR,\n} from \"@party-stack/ontology\";\nimport { type FoundryAuthenticationClient, type FoundryOAuthConnectionOptions } from \"../connection.js\";\nimport {\n createFoundryBackendInstallation,\n createFoundryOntologyRoute,\n} from \"../installation/createFoundryBackendInstallation.js\";\nimport { createFoundryUserObjectType } from \"../users/foundryUser.js\";\nimport {\n applyAttachmentConstraintOverrides,\n type FoundryAttachmentConstraintOverride,\n} from \"./applyAttachmentConstraintOverrides.js\";\nimport type { Connection } from \"@party-stack/connections\";\n\nexport type { FoundryAttachmentConstraintOverride } from \"./applyAttachmentConstraintOverrides.js\";\n\nconst DEFAULT_FOUNDRY_SCOPES = [\n \"api:use-ontologies-read\",\n \"offline_access\",\n \"ontology:view-unredacted-action-type\",\n \"ontology:view-object-type\",\n];\n\nexport interface FoundryOntologyPullConnectionOptions {\n oauth?: FoundryOAuthConnectionOptions;\n token?: string;\n userId?: string;\n}\n\nexport interface CreateFoundryOntologyPullSourceOptions {\n baseUrl: string;\n ontologyRid: string;\n connection: FoundryOntologyPullConnectionOptions;\n attachmentConstraints?: FoundryAttachmentConstraintOverride[];\n users?: {\n objectType: string;\n lens: Lens;\n };\n}\n\nfunction addConfiguredUser(\n ontology: OntologyIR,\n users: CreateFoundryOntologyPullSourceOptions[\"users\"]\n): OntologyIR {\n if (!users) return ontology;\n const userObjectType = createFoundryUserObjectType(users.objectType, users.lens);\n return {\n ...ontology,\n objectTypes: [\n ...ontology.objectTypes.filter((objectType) => objectType.name !== users.objectType),\n userObjectType,\n ],\n contextType: o.struct({\n fields: [\n {\n name: \"user\",\n displayName: \"User\",\n type: o.objectReference({ objectType: users.objectType }),\n },\n ],\n }),\n };\n}\n\nexport function createFoundryOntologyPullSource(\n options: CreateFoundryOntologyPullSourceOptions\n): OntologyPullSource<FoundryAuthenticationClient> {\n return {\n ontologyId: options.ontologyRid,\n createInstallation: ({ runtime }) => {\n const scopes = options.connection.oauth?.scopes ?? DEFAULT_FOUNDRY_SCOPES;\n return createFoundryBackendInstallation({\n installationId: `foundry-pull:${options.baseUrl}:${options.ontologyRid}:${[...scopes].sort().join(\",\")}`,\n baseUrl: options.baseUrl,\n runtime,\n connections: {\n token: options.connection.token,\n oauth: options.connection.oauth\n ? {\n ...options.connection.oauth,\n scopes,\n }\n : undefined,\n },\n routes: [\n createFoundryOntologyRoute({\n ontologyId: options.ontologyRid,\n }),\n ],\n });\n },\n async resolveConnection(installation) {\n const configuredUserId = options.connection.userId;\n const activeConnections = [...installation.connections.values()]\n .filter((connection) => connection.state.status === \"active\")\n .map((connection): Connection<\"active\"> => ({\n userId: connection.userId,\n state: connection.state as Connection<\"active\">[\"state\"],\n }));\n\n if (!options.connection.token && !configuredUserId && activeConnections.length > 1) {\n throw new Error(\n \"Multiple Foundry users are signed in for this project. Set connection.userId in the ontology pull source.\"\n );\n }\n let connection = options.connection.token\n ? await installation.authentication.signIn.apiToken()\n : configuredUserId\n ? activeConnections.find((candidate) => candidate.userId === configuredUserId)\n : activeConnections[0];\n if (!connection && options.connection.oauth) {\n connection = await installation.authentication.signIn.oauth();\n }\n if (!connection) {\n throw new Error(\"Foundry ontology pull requires connection.oauth or connection.token.\");\n }\n if (configuredUserId && connection.userId !== configuredUserId) {\n throw new Error(\n `Foundry signed in as \"${connection.userId}\", but connection.userId is \"${configuredUserId}\".`\n );\n }\n return connection;\n },\n transformPulledOntology: (ontology) =>\n addConfiguredUser(\n applyAttachmentConstraintOverrides(ontology, options.attachmentConstraints ?? []),\n options.users\n ),\n };\n}\n\nexport type FoundryOntologyPullConfig = OntologyPullConfig<FoundryAuthenticationClient>;\n"],"mappings":";;;;;AAqBA,MAAM,yBAAyB;CAC3B;CACA;CACA;CACA;AACJ;AAmBA,SAAS,kBACL,UACA,OACU;CACV,IAAI,CAAC,OAAO,OAAO;CACnB,MAAM,iBAAiB,4BAA4B,MAAM,YAAY,MAAM,IAAI;CAC/E,OAAO;EACH,GAAG;EACH,aAAa,CACT,GAAG,SAAS,YAAY,QAAQ,eAAe,WAAW,SAAS,MAAM,UAAU,GACnF,cACJ;EACA,aAAa,EAAE,OAAO,EAClB,QAAQ,CACJ;GACI,MAAM;GACN,aAAa;GACb,MAAM,EAAE,gBAAgB,EAAE,YAAY,MAAM,WAAW,CAAC;EAC5D,CACJ,EACJ,CAAC;CACL;AACJ;AAEA,SAAgB,gCACZ,SAC+C;CAC/C,OAAO;EACH,YAAY,QAAQ;EACpB,qBAAqB,EAAE,cAAc;GACjC,MAAM,SAAS,QAAQ,WAAW,OAAO,UAAU;GACnD,OAAO,iCAAiC;IACpC,gBAAgB,gBAAgB,QAAQ,QAAQ,GAAG,QAAQ,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG;IACrG,SAAS,QAAQ;IACjB;IACA,aAAa;KACT,OAAO,QAAQ,WAAW;KAC1B,OAAO,QAAQ,WAAW,QACpB;MACI,GAAG,QAAQ,WAAW;MACtB;KACJ,IACA,KAAA;IACV;IACA,QAAQ,CACJ,2BAA2B,EACvB,YAAY,QAAQ,YACxB,CAAC,CACL;GACJ,CAAC;EACL;EACA,MAAM,kBAAkB,cAAc;GAClC,MAAM,mBAAmB,QAAQ,WAAW;GAC5C,MAAM,oBAAoB,CAAC,GAAG,aAAa,YAAY,OAAO,CAAC,CAAC,CAC3D,QAAQ,eAAe,WAAW,MAAM,WAAW,QAAQ,CAAC,CAC5D,KAAK,gBAAsC;IACxC,QAAQ,WAAW;IACnB,OAAO,WAAW;GACtB,EAAE;GAEN,IAAI,CAAC,QAAQ,WAAW,SAAS,CAAC,oBAAoB,kBAAkB,SAAS,GAC7E,MAAM,IAAI,MACN,2GACJ;GAEJ,IAAI,aAAa,QAAQ,WAAW,QAC9B,MAAM,aAAa,eAAe,OAAO,SAAS,IAClD,mBACE,kBAAkB,MAAM,cAAc,UAAU,WAAW,gBAAgB,IAC3E,kBAAkB;GAC1B,IAAI,CAAC,cAAc,QAAQ,WAAW,OAClC,aAAa,MAAM,aAAa,eAAe,OAAO,MAAM;GAEhE,IAAI,CAAC,YACD,MAAM,IAAI,MAAM,sEAAsE;GAE1F,IAAI,oBAAoB,WAAW,WAAW,kBAC1C,MAAM,IAAI,MACN,yBAAyB,WAAW,OAAO,+BAA+B,iBAAiB,GAC/F;GAEJ,OAAO;EACX;EACA,0BAA0B,aACtB,kBACI,mCAAmC,UAAU,QAAQ,yBAAyB,CAAC,CAAC,GAChF,QAAQ,KACZ;CACR;AACJ"}
@@ -1,36 +1,38 @@
1
- import { type BackendConnectionAdapterProvider, type Connection } from "@party-stack/connections";
2
- import type { BrowserAuthenticationPresentation } from "@party-stack/runtime";
1
+ import { BackendConnectionAdapterProvider, Connection } from "@party-stack/connections";
2
+ import { BrowserAuthenticationPresentation } from "@party-stack/runtime";
3
+ //#region src/connection.d.ts
3
4
  export interface FoundryOAuthConnectionOptions {
4
- clientId: string;
5
- redirectUrl: string;
6
- scopes?: string[];
7
- fetch?: typeof globalThis.fetch;
8
- dangerouslyPersistSecrets?: boolean;
5
+ clientId: string;
6
+ redirectUrl: string;
7
+ scopes?: string[];
8
+ fetch?: typeof globalThis.fetch;
9
+ dangerouslyPersistSecrets?: boolean;
9
10
  }
10
11
  export interface FoundryClientCredentialsConnectionOptions {
11
- clientId: string;
12
- clientSecret: string;
13
- userId?: string;
14
- scopes?: string[];
15
- fetch?: typeof globalThis.fetch;
12
+ clientId: string;
13
+ clientSecret: string;
14
+ userId?: string;
15
+ scopes?: string[];
16
+ fetch?: typeof globalThis.fetch;
16
17
  }
17
18
  export interface CreateFoundryConnectionAdapterOptions {
18
- baseUrl: string;
19
- oauth?: FoundryOAuthConnectionOptions;
20
- clientCredentials?: FoundryClientCredentialsConnectionOptions;
21
- token?: string;
19
+ baseUrl: string;
20
+ oauth?: FoundryOAuthConnectionOptions;
21
+ clientCredentials?: FoundryClientCredentialsConnectionOptions;
22
+ token?: string;
22
23
  }
23
24
  export interface FoundryAuthenticationClient {
24
- completeOAuthRedirect(url: string): Promise<Connection<"active"> | undefined>;
25
- signIn: {
26
- oauth(options?: {
27
- browserPresentation?: BrowserAuthenticationPresentation;
28
- }): Promise<Connection<"active">>;
29
- clientCredentials(): Promise<Connection<"active">>;
30
- apiToken(options?: {
31
- token?: string;
32
- }): Promise<Connection<"active">>;
33
- };
25
+ completeOAuthRedirect(url: string): Promise<Connection<"active"> | undefined>;
26
+ signIn: {
27
+ oauth(options?: {
28
+ browserPresentation?: BrowserAuthenticationPresentation;
29
+ }): Promise<Connection<"active">>;
30
+ clientCredentials(): Promise<Connection<"active">>;
31
+ apiToken(options?: {
32
+ token?: string;
33
+ }): Promise<Connection<"active">>;
34
+ };
34
35
  }
35
36
  export declare function createFoundryConnectionAdapter(options: CreateFoundryConnectionAdapterOptions): BackendConnectionAdapterProvider<FoundryAuthenticationClient>;
37
+ //#endregion
36
38
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,gCAAgC,EACrC,KAAK,UAAU,EAMlB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,yCAAyC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC;AAED,MAAM,WAAW,qCAAqC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,6BAA6B,CAAC;IACtC,iBAAiB,CAAC,EAAE,yCAAyC,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IACxC,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9E,MAAM,EAAE;QACJ,KAAK,CAAC,OAAO,CAAC,EAAE;YACZ,mBAAmB,CAAC,EAAE,iCAAiC,CAAC;SAC3D,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,QAAQ,CAAC,OAAO,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;KACzE,CAAC;CACL;AA2RD,wBAAgB,8BAA8B,CAC1C,OAAO,EAAE,qCAAqC,GAC/C,gCAAgC,CAAC,2BAA2B,CAAC,CAE/D"}
1
+ {"version":3,"file":"connection.d.ts","names":[],"sources":["../src/connection.ts"],"mappings":";;;iBAsBiB;EACb;EACA;EACA;EACA,eAAe,WAAW;EAC1B;;iBAGa;EACb;EACA;EACA;EACA;EACA,eAAe,WAAW;;iBAGb;EACb;EACA,QAAQ;EACR,oBAAoB;EACpB;;iBAGa;EACb,sBAAsB,cAAc,QAAQ;EAC5C;IACI,MAAM;MACF,sBAAsB;QACtB,QAAQ;IACZ,qBAAqB,QAAQ;IAC7B,SAAS;MAAY;QAAmB,QAAQ;;;wBA2PxC,+BACZ,SAAS,wCACV,iCAAiC"}