@party-stack/ontology 0.19.0 → 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 (401) hide show
  1. package/lib/OntologyPullConfig.d.ts +15 -13
  2. package/lib/OntologyPullConfig.d.ts.map +1 -1
  3. package/lib/OntologyPullConfig.js +0 -1
  4. package/lib/cli/format.d.ts +4 -0
  5. package/lib/cli/format.d.ts.map +1 -0
  6. package/lib/cli/format.js +19 -0
  7. package/lib/cli/format.js.map +1 -0
  8. package/lib/cli/generate.d.ts +6 -5
  9. package/lib/cli/generate.d.ts.map +1 -1
  10. package/lib/cli/generate.js +86 -110
  11. package/lib/cli/generate.js.map +1 -1
  12. package/lib/cli/index.d.ts +1 -3
  13. package/lib/cli/index.js +42 -59
  14. package/lib/cli/index.js.map +1 -1
  15. package/lib/cli/pull.d.ts +3 -1
  16. package/lib/cli/pull.d.ts.map +1 -1
  17. package/lib/cli/pull.js +42 -60
  18. package/lib/cli/pull.js.map +1 -1
  19. package/lib/examples/blog.d.ts +347 -345
  20. package/lib/examples/blog.d.ts.map +1 -1
  21. package/lib/examples/blog.js +350 -337
  22. package/lib/examples/blog.js.map +1 -1
  23. package/lib/examples/blog.live-queries.d.ts +8 -3
  24. package/lib/examples/blog.live-queries.d.ts.map +1 -1
  25. package/lib/examples/blog.live-queries.js +28 -44
  26. package/lib/examples/blog.live-queries.js.map +1 -1
  27. package/lib/examples/generated/constants.d.ts +1 -2
  28. package/lib/examples/generated/constants.js +0 -2
  29. package/lib/examples/generated/live.d.ts +5 -3
  30. package/lib/examples/generated/live.d.ts.map +1 -1
  31. package/lib/examples/generated/live.js +12 -8
  32. package/lib/examples/generated/live.js.map +1 -1
  33. package/lib/examples/generated/types.d.ts +52 -50
  34. package/lib/examples/generated/types.d.ts.map +1 -1
  35. package/lib/examples/generated/types.js +0 -2
  36. package/lib/generate/builders.d.ts +8 -5
  37. package/lib/generate/builders.d.ts.map +1 -1
  38. package/lib/generate/builders.js +53 -55
  39. package/lib/generate/builders.js.map +1 -1
  40. package/lib/generate/constants.d.ts +3 -1
  41. package/lib/generate/constants.d.ts.map +1 -1
  42. package/lib/generate/constants.js +23 -26
  43. package/lib/generate/constants.js.map +1 -1
  44. package/lib/generate/index.d.ts +6 -6
  45. package/lib/generate/index.js +6 -6
  46. package/lib/generate/live.d.ts +8 -6
  47. package/lib/generate/live.d.ts.map +1 -1
  48. package/lib/generate/live.js +43 -42
  49. package/lib/generate/live.js.map +1 -1
  50. package/lib/generate/ontology.d.ts +4 -2
  51. package/lib/generate/ontology.d.ts.map +1 -1
  52. package/lib/generate/ontology.js +453 -354
  53. package/lib/generate/ontology.js.map +1 -1
  54. package/lib/generate/types.d.ts +7 -5
  55. package/lib/generate/types.d.ts.map +1 -1
  56. package/lib/generate/types.js +190 -262
  57. package/lib/generate/types.js.map +1 -1
  58. package/lib/generate/utils/buildJsDocs.d.ts +7 -4
  59. package/lib/generate/utils/buildJsDocs.d.ts.map +1 -1
  60. package/lib/generate/utils/buildJsDocs.js +14 -10
  61. package/lib/generate/utils/buildJsDocs.js.map +1 -1
  62. package/lib/index.d.ts +30 -13
  63. package/lib/index.js +18 -10
  64. package/lib/infer.d.ts +129 -151
  65. package/lib/infer.d.ts.map +1 -1
  66. package/lib/infer.js +10 -6
  67. package/lib/infer.js.map +1 -1
  68. package/lib/installation/createMetaOntologyConfiguration.d.ts +6 -3
  69. package/lib/installation/createMetaOntologyConfiguration.d.ts.map +1 -1
  70. package/lib/installation/createMetaOntologyConfiguration.js +13 -11
  71. package/lib/installation/createMetaOntologyConfiguration.js.map +1 -1
  72. package/lib/installation/createOntologyBackendInstallation.d.ts +3 -1
  73. package/lib/installation/createOntologyBackendInstallation.d.ts.map +1 -1
  74. package/lib/installation/createOntologyBackendInstallation.js +205 -268
  75. package/lib/installation/createOntologyBackendInstallation.js.map +1 -1
  76. package/lib/installation/index.d.ts +4 -4
  77. package/lib/installation/index.js +3 -3
  78. package/lib/installation/types.d.ts +83 -80
  79. package/lib/installation/types.d.ts.map +1 -1
  80. package/lib/installation/types.js +0 -1
  81. package/lib/ir/generated/builders.d.ts +294 -382
  82. package/lib/ir/generated/builders.d.ts.map +1 -1
  83. package/lib/ir/generated/builders.js +180 -119
  84. package/lib/ir/generated/builders.js.map +1 -1
  85. package/lib/ir/generated/constants.d.ts +137 -135
  86. package/lib/ir/generated/constants.d.ts.map +1 -1
  87. package/lib/ir/generated/constants.js +162 -129
  88. package/lib/ir/generated/constants.js.map +1 -1
  89. package/lib/ir/generated/types.d.ts +236 -234
  90. package/lib/ir/generated/types.d.ts.map +1 -1
  91. package/lib/ir/generated/types.js +0 -2
  92. package/lib/ir/index.d.ts +4 -4
  93. package/lib/ir/index.js +3 -4
  94. package/lib/ir/schema.d.ts +2174 -2172
  95. package/lib/ir/schema.d.ts.map +1 -1
  96. package/lib/ir/schema.js +1184 -1343
  97. package/lib/ir/schema.js.map +1 -1
  98. package/lib/ir/validate.d.ts +5 -3
  99. package/lib/ir/validate.d.ts.map +1 -1
  100. package/lib/ir/validate.js +589 -707
  101. package/lib/ir/validate.js.map +1 -1
  102. package/lib/json/index.d.ts +10 -8
  103. package/lib/json/index.d.ts.map +1 -1
  104. package/lib/json/index.js +101 -135
  105. package/lib/json/index.js.map +1 -1
  106. package/lib/lenses.d.ts +7 -4
  107. package/lib/lenses.d.ts.map +1 -1
  108. package/lib/lenses.js +96 -132
  109. package/lib/lenses.js.map +1 -1
  110. package/lib/live/LiveOntology.d.ts +55 -60
  111. package/lib/live/LiveOntology.d.ts.map +1 -1
  112. package/lib/live/LiveOntology.js +98 -124
  113. package/lib/live/LiveOntology.js.map +1 -1
  114. package/lib/live/OntologyBackendAdapter.d.ts +84 -77
  115. package/lib/live/OntologyBackendAdapter.d.ts.map +1 -1
  116. package/lib/live/OntologyBackendAdapter.js +0 -1
  117. package/lib/live/actions/createLiveOntologyAction.d.ts +27 -24
  118. package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -1
  119. package/lib/live/actions/createLiveOntologyAction.js +24 -21
  120. package/lib/live/actions/createLiveOntologyAction.js.map +1 -1
  121. package/lib/live/actions/createLiveOntologyActions.d.ts +23 -20
  122. package/lib/live/actions/createLiveOntologyActions.d.ts.map +1 -1
  123. package/lib/live/actions/createLiveOntologyActions.js +131 -161
  124. package/lib/live/actions/createLiveOntologyActions.js.map +1 -1
  125. package/lib/live/actions/prepareActionParameters.d.ts +14 -11
  126. package/lib/live/actions/prepareActionParameters.d.ts.map +1 -1
  127. package/lib/live/actions/prepareActionParameters.js +190 -228
  128. package/lib/live/actions/prepareActionParameters.js.map +1 -1
  129. package/lib/live/attachments/attachmentSources.d.ts +7 -4
  130. package/lib/live/attachments/attachmentSources.d.ts.map +1 -1
  131. package/lib/live/attachments/attachmentSources.js +55 -71
  132. package/lib/live/attachments/attachmentSources.js.map +1 -1
  133. package/lib/live/attachments/createLiveOntologyAttachments.d.ts +47 -44
  134. package/lib/live/attachments/createLiveOntologyAttachments.d.ts.map +1 -1
  135. package/lib/live/attachments/createLiveOntologyAttachments.js +65 -83
  136. package/lib/live/attachments/createLiveOntologyAttachments.js.map +1 -1
  137. package/lib/live/attachments/types.d.ts +10 -8
  138. package/lib/live/attachments/types.d.ts.map +1 -1
  139. package/lib/live/attachments/types.js +0 -1
  140. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts +3 -1
  141. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts.map +1 -1
  142. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js +5 -3
  143. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js.map +1 -1
  144. package/lib/live/expression.d.ts +16 -13
  145. package/lib/live/expression.d.ts.map +1 -1
  146. package/lib/live/expression.js +142 -223
  147. package/lib/live/expression.js.map +1 -1
  148. package/lib/live/index.d.ts +12 -9
  149. package/lib/live/index.js +6 -8
  150. package/lib/live/mutators/OntologyEdits.d.ts +12 -9
  151. package/lib/live/mutators/OntologyEdits.d.ts.map +1 -1
  152. package/lib/live/mutators/OntologyEdits.js +57 -74
  153. package/lib/live/mutators/OntologyEdits.js.map +1 -1
  154. package/lib/live/mutators/createMutatorTx.d.ts +7 -5
  155. package/lib/live/mutators/createMutatorTx.d.ts.map +1 -1
  156. package/lib/live/mutators/createMutatorTx.js +53 -69
  157. package/lib/live/mutators/createMutatorTx.js.map +1 -1
  158. package/lib/live/mutators/runOptimisticAction.d.ts +16 -13
  159. package/lib/live/mutators/runOptimisticAction.d.ts.map +1 -1
  160. package/lib/live/mutators/runOptimisticAction.js +26 -26
  161. package/lib/live/mutators/runOptimisticAction.js.map +1 -1
  162. package/lib/live/mutators/types.d.ts +18 -16
  163. package/lib/live/mutators/types.d.ts.map +1 -1
  164. package/lib/live/mutators/types.js +0 -1
  165. package/lib/live/objects/OntologyObject.d.ts +2 -0
  166. package/lib/live/objects/OntologyObject.d.ts.map +1 -1
  167. package/lib/live/objects/OntologyObject.js +0 -1
  168. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts +14 -11
  169. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts.map +1 -1
  170. package/lib/live/objects/createLiveOntologyObjectCollection.js +62 -49
  171. package/lib/live/objects/createLiveOntologyObjectCollection.js.map +1 -1
  172. package/lib/live/objects/ontologyObjectCollectionId.d.ts +2 -0
  173. package/lib/live/objects/ontologyObjectCollectionId.d.ts.map +1 -1
  174. package/lib/live/objects/ontologyObjectCollectionId.js +6 -2
  175. package/lib/live/objects/ontologyObjectCollectionId.js.map +1 -1
  176. package/lib/live/outbox/createOntologyOutbox.d.ts +16 -14
  177. package/lib/live/outbox/createOntologyOutbox.d.ts.map +1 -1
  178. package/lib/live/outbox/createOntologyOutbox.js +275 -326
  179. package/lib/live/outbox/createOntologyOutbox.js.map +1 -1
  180. package/lib/live/outbox/leaderExecutor.d.ts +15 -13
  181. package/lib/live/outbox/leaderExecutor.d.ts.map +1 -1
  182. package/lib/live/outbox/leaderExecutor.js +114 -153
  183. package/lib/live/outbox/leaderExecutor.js.map +1 -1
  184. package/lib/live/outbox/outboxService.d.ts +4 -2
  185. package/lib/live/outbox/outboxService.d.ts.map +1 -1
  186. package/lib/live/outbox/outboxService.js +66 -71
  187. package/lib/live/outbox/outboxService.js.map +1 -1
  188. package/lib/live/outbox/projectionManager.d.ts +26 -24
  189. package/lib/live/outbox/projectionManager.d.ts.map +1 -1
  190. package/lib/live/outbox/projectionManager.js +121 -147
  191. package/lib/live/outbox/projectionManager.js.map +1 -1
  192. package/lib/live/outbox/repository.d.ts +27 -25
  193. package/lib/live/outbox/repository.d.ts.map +1 -1
  194. package/lib/live/outbox/repository.js +192 -241
  195. package/lib/live/outbox/repository.js.map +1 -1
  196. package/lib/live/outbox/service.d.ts +52 -50
  197. package/lib/live/outbox/service.d.ts.map +1 -1
  198. package/lib/live/outbox/service.js +5 -1
  199. package/lib/live/outbox/service.js.map +1 -1
  200. package/lib/live/outbox/types.d.ts +35 -33
  201. package/lib/live/outbox/types.d.ts.map +1 -1
  202. package/lib/live/outbox/types.js +10 -6
  203. package/lib/live/outbox/types.js.map +1 -1
  204. package/lib/live/waitForCollectionReady.d.ts +3 -1
  205. package/lib/live/waitForCollectionReady.d.ts.map +1 -1
  206. package/lib/live/waitForCollectionReady.js +44 -65
  207. package/lib/live/waitForCollectionReady.js.map +1 -1
  208. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts +5 -2
  209. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts.map +1 -1
  210. package/lib/meta/createLocalMetaOntologyBackendAdapter.js +37 -39
  211. package/lib/meta/createLocalMetaOntologyBackendAdapter.js.map +1 -1
  212. package/lib/meta/generated/constants.d.ts +137 -135
  213. package/lib/meta/generated/constants.d.ts.map +1 -1
  214. package/lib/meta/generated/constants.js +162 -129
  215. package/lib/meta/generated/constants.js.map +1 -1
  216. package/lib/meta/generated/live.d.ts +5 -2
  217. package/lib/meta/generated/live.d.ts.map +1 -1
  218. package/lib/meta/generated/live.js +12 -8
  219. package/lib/meta/generated/live.js.map +1 -1
  220. package/lib/meta/generated/types.d.ts +233 -231
  221. package/lib/meta/generated/types.d.ts.map +1 -1
  222. package/lib/meta/generated/types.js +0 -2
  223. package/lib/meta/ontology.d.ts +23 -21
  224. package/lib/meta/ontology.d.ts.map +1 -1
  225. package/lib/meta/ontology.js +100 -104
  226. package/lib/meta/ontology.js.map +1 -1
  227. package/lib/meta/pull.d.ts +8 -6
  228. package/lib/meta/pull.d.ts.map +1 -1
  229. package/lib/meta/pull.js +39 -52
  230. package/lib/meta/pull.js.map +1 -1
  231. package/lib/utils/index.d.ts +8 -8
  232. package/lib/utils/index.js +5 -6
  233. package/lib/utils/links.d.ts +34 -31
  234. package/lib/utils/links.d.ts.map +1 -1
  235. package/lib/utils/links.js +10 -17
  236. package/lib/utils/links.js.map +1 -1
  237. package/lib/utils/paths.d.ts +2 -0
  238. package/lib/utils/paths.d.ts.map +1 -1
  239. package/lib/utils/paths.js +32 -44
  240. package/lib/utils/paths.js.map +1 -1
  241. package/lib/utils/provide.d.ts +2 -0
  242. package/lib/utils/provide.d.ts.map +1 -1
  243. package/lib/utils/provide.js +7 -9
  244. package/lib/utils/provide.js.map +1 -1
  245. package/lib/utils/targets.d.ts +20 -18
  246. package/lib/utils/targets.d.ts.map +1 -1
  247. package/lib/utils/targets.js +0 -1
  248. package/lib/utils/typeNames.d.ts +10 -8
  249. package/lib/utils/typeNames.d.ts.map +1 -1
  250. package/lib/utils/typeNames.js +0 -1
  251. package/lib/utils/types.d.ts +6 -4
  252. package/lib/utils/types.d.ts.map +1 -1
  253. package/lib/utils/types.js +38 -38
  254. package/lib/utils/types.js.map +1 -1
  255. package/lib/utils/uncertain.d.ts +5 -3
  256. package/lib/utils/uncertain.d.ts.map +1 -1
  257. package/lib/utils/uncertain.js +11 -9
  258. package/lib/utils/uncertain.js.map +1 -1
  259. package/lib/utils/validation.d.ts +4 -2
  260. package/lib/utils/validation.d.ts.map +1 -1
  261. package/lib/utils/validation.js +0 -1
  262. package/lib/utils/values.d.ts +18 -18
  263. package/lib/utils/values.d.ts.map +1 -1
  264. package/lib/utils/values.js +0 -1
  265. package/package.json +22 -26
  266. package/lib/OntologyPullConfig.js.map +0 -1
  267. package/lib/cli/index.d.ts.map +0 -1
  268. package/lib/cli/index.test.d.ts +0 -2
  269. package/lib/cli/index.test.d.ts.map +0 -1
  270. package/lib/cli/index.test.js +0 -34
  271. package/lib/cli/index.test.js.map +0 -1
  272. package/lib/cli/pull.test.d.ts +0 -2
  273. package/lib/cli/pull.test.d.ts.map +0 -1
  274. package/lib/cli/pull.test.js +0 -125
  275. package/lib/cli/pull.test.js.map +0 -1
  276. package/lib/examples/generated/constants.d.ts.map +0 -1
  277. package/lib/examples/generated/constants.js.map +0 -1
  278. package/lib/examples/generated/types.js.map +0 -1
  279. package/lib/generate/builders.test.d.ts +0 -2
  280. package/lib/generate/builders.test.d.ts.map +0 -1
  281. package/lib/generate/builders.test.js +0 -49
  282. package/lib/generate/builders.test.js.map +0 -1
  283. package/lib/generate/index.d.ts.map +0 -1
  284. package/lib/generate/index.js.map +0 -1
  285. package/lib/generate/live.test.d.ts +0 -2
  286. package/lib/generate/live.test.d.ts.map +0 -1
  287. package/lib/generate/live.test.js +0 -22
  288. package/lib/generate/live.test.js.map +0 -1
  289. package/lib/generate/ontology.test.d.ts +0 -2
  290. package/lib/generate/ontology.test.d.ts.map +0 -1
  291. package/lib/generate/ontology.test.js +0 -157
  292. package/lib/generate/ontology.test.js.map +0 -1
  293. package/lib/generate/types.test.d.ts +0 -2
  294. package/lib/generate/types.test.d.ts.map +0 -1
  295. package/lib/generate/types.test.js +0 -304
  296. package/lib/generate/types.test.js.map +0 -1
  297. package/lib/index.d.ts.map +0 -1
  298. package/lib/index.js.map +0 -1
  299. package/lib/infer.test.d.ts +0 -2
  300. package/lib/infer.test.d.ts.map +0 -1
  301. package/lib/infer.test.js +0 -125
  302. package/lib/infer.test.js.map +0 -1
  303. package/lib/installation/createMetaOntologyConfiguration.test.d.ts +0 -2
  304. package/lib/installation/createMetaOntologyConfiguration.test.d.ts.map +0 -1
  305. package/lib/installation/createMetaOntologyConfiguration.test.js +0 -20
  306. package/lib/installation/createMetaOntologyConfiguration.test.js.map +0 -1
  307. package/lib/installation/createOntologyBackendInstallation.test.d.ts +0 -2
  308. package/lib/installation/createOntologyBackendInstallation.test.d.ts.map +0 -1
  309. package/lib/installation/createOntologyBackendInstallation.test.js +0 -320
  310. package/lib/installation/createOntologyBackendInstallation.test.js.map +0 -1
  311. package/lib/installation/index.d.ts.map +0 -1
  312. package/lib/installation/index.js.map +0 -1
  313. package/lib/installation/types.js.map +0 -1
  314. package/lib/ir/generated/types.js.map +0 -1
  315. package/lib/ir/index.d.ts.map +0 -1
  316. package/lib/ir/index.js.map +0 -1
  317. package/lib/ir/validate.test.d.ts +0 -2
  318. package/lib/ir/validate.test.d.ts.map +0 -1
  319. package/lib/ir/validate.test.js +0 -1061
  320. package/lib/ir/validate.test.js.map +0 -1
  321. package/lib/json/index.test.d.ts +0 -2
  322. package/lib/json/index.test.d.ts.map +0 -1
  323. package/lib/json/index.test.js +0 -142
  324. package/lib/json/index.test.js.map +0 -1
  325. package/lib/lenses.test.d.ts +0 -2
  326. package/lib/lenses.test.d.ts.map +0 -1
  327. package/lib/lenses.test.js +0 -80
  328. package/lib/lenses.test.js.map +0 -1
  329. package/lib/live/LiveOntology.test.d.ts +0 -2
  330. package/lib/live/LiveOntology.test.d.ts.map +0 -1
  331. package/lib/live/LiveOntology.test.js +0 -507
  332. package/lib/live/LiveOntology.test.js.map +0 -1
  333. package/lib/live/OntologyBackendAdapter.js.map +0 -1
  334. package/lib/live/actions/createLiveOntologyAction.test.d.ts +0 -2
  335. package/lib/live/actions/createLiveOntologyAction.test.d.ts.map +0 -1
  336. package/lib/live/actions/createLiveOntologyAction.test.js +0 -232
  337. package/lib/live/actions/createLiveOntologyAction.test.js.map +0 -1
  338. package/lib/live/actions/prepareActionParameters.test.d.ts +0 -2
  339. package/lib/live/actions/prepareActionParameters.test.d.ts.map +0 -1
  340. package/lib/live/actions/prepareActionParameters.test.js +0 -165
  341. package/lib/live/actions/prepareActionParameters.test.js.map +0 -1
  342. package/lib/live/attachments/attachmentMetadata.test.d.ts +0 -2
  343. package/lib/live/attachments/attachmentMetadata.test.d.ts.map +0 -1
  344. package/lib/live/attachments/attachmentMetadata.test.js +0 -73
  345. package/lib/live/attachments/attachmentMetadata.test.js.map +0 -1
  346. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts +0 -2
  347. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts.map +0 -1
  348. package/lib/live/attachments/createLiveOntologyAttachments.test.js +0 -363
  349. package/lib/live/attachments/createLiveOntologyAttachments.test.js.map +0 -1
  350. package/lib/live/attachments/types.js.map +0 -1
  351. package/lib/live/expression.test.d.ts +0 -2
  352. package/lib/live/expression.test.d.ts.map +0 -1
  353. package/lib/live/expression.test.js +0 -311
  354. package/lib/live/expression.test.js.map +0 -1
  355. package/lib/live/index.d.ts.map +0 -1
  356. package/lib/live/index.js.map +0 -1
  357. package/lib/live/mutators/OntologyEdits.test.d.ts +0 -2
  358. package/lib/live/mutators/OntologyEdits.test.d.ts.map +0 -1
  359. package/lib/live/mutators/OntologyEdits.test.js +0 -85
  360. package/lib/live/mutators/OntologyEdits.test.js.map +0 -1
  361. package/lib/live/mutators/createMutatorTx.test.d.ts +0 -2
  362. package/lib/live/mutators/createMutatorTx.test.d.ts.map +0 -1
  363. package/lib/live/mutators/createMutatorTx.test.js +0 -180
  364. package/lib/live/mutators/createMutatorTx.test.js.map +0 -1
  365. package/lib/live/mutators/types.js.map +0 -1
  366. package/lib/live/objects/OntologyObject.js.map +0 -1
  367. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts +0 -2
  368. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts.map +0 -1
  369. package/lib/live/objects/createLiveOntologyObjectCollection.test.js +0 -310
  370. package/lib/live/objects/createLiveOntologyObjectCollection.test.js.map +0 -1
  371. package/lib/live/outbox/createOntologyOutbox.test.d.ts +0 -2
  372. package/lib/live/outbox/createOntologyOutbox.test.d.ts.map +0 -1
  373. package/lib/live/outbox/createOntologyOutbox.test.js +0 -1030
  374. package/lib/live/outbox/createOntologyOutbox.test.js.map +0 -1
  375. package/lib/meta/generated/types.js.map +0 -1
  376. package/lib/meta/ontology.test.d.ts +0 -2
  377. package/lib/meta/ontology.test.d.ts.map +0 -1
  378. package/lib/meta/ontology.test.js +0 -84
  379. package/lib/meta/ontology.test.js.map +0 -1
  380. package/lib/utils/index.d.ts.map +0 -1
  381. package/lib/utils/index.js.map +0 -1
  382. package/lib/utils/links.test.d.ts +0 -2
  383. package/lib/utils/links.test.d.ts.map +0 -1
  384. package/lib/utils/links.test.js +0 -109
  385. package/lib/utils/links.test.js.map +0 -1
  386. package/lib/utils/paths.test.d.ts +0 -2
  387. package/lib/utils/paths.test.d.ts.map +0 -1
  388. package/lib/utils/paths.test.js +0 -33
  389. package/lib/utils/paths.test.js.map +0 -1
  390. package/lib/utils/targets.js.map +0 -1
  391. package/lib/utils/typeNames.js.map +0 -1
  392. package/lib/utils/types.test.d.ts +0 -2
  393. package/lib/utils/types.test.d.ts.map +0 -1
  394. package/lib/utils/types.test.js +0 -157
  395. package/lib/utils/types.test.js.map +0 -1
  396. package/lib/utils/uncertain.test.d.ts +0 -2
  397. package/lib/utils/uncertain.test.d.ts.map +0 -1
  398. package/lib/utils/uncertain.test.js +0 -14
  399. package/lib/utils/uncertain.test.js.map +0 -1
  400. package/lib/utils/validation.js.map +0 -1
  401. package/lib/utils/values.js.map +0 -1
@@ -1,284 +1,221 @@
1
- import { createConnectionManager, createConnectionMonitor } from "@party-stack/connections";
2
- import { createLocalCollection } from "@party-stack/runtime";
3
1
  import { createLiveOntology } from "../live/LiveOntology.js";
4
2
  import { createMetaOntologyConfiguration } from "./createMetaOntologyConfiguration.js";
3
+ import { createLocalCollection } from "@party-stack/runtime";
4
+ import { createConnectionManager, createConnectionMonitor } from "@party-stack/connections";
5
+ //#region src/installation/createOntologyBackendInstallation.ts
5
6
  function scope(value) {
6
- return encodeURIComponent(value);
7
+ return encodeURIComponent(value);
7
8
  }
8
9
  function ontologyKey(userId, ontologyId) {
9
- return `${scope(userId)}:${scope(ontologyId)}`;
10
+ return `${scope(userId)}:${scope(ontologyId)}`;
10
11
  }
11
12
  function metaOntologyKey(userId, ontologyId) {
12
- return `${ontologyKey(userId, ontologyId)}:meta`;
13
+ return `${ontologyKey(userId, ontologyId)}:meta`;
13
14
  }
14
15
  function liveOntologyNamespace(installationId, ontologyId) {
15
- return `${scope(installationId)}:${scope(ontologyId)}`;
16
+ return `${scope(installationId)}:${scope(ontologyId)}`;
16
17
  }
17
18
  function isActiveConnection(connection) {
18
- return connection?.state.status === "active";
19
+ return connection?.state.status === "active";
19
20
  }
20
21
  function routeFor(routes, ontologyId) {
21
- const matching = routes.filter((route) => route.matches(ontologyId));
22
- if (matching.length !== 1) {
23
- throw new Error(matching.length === 0
24
- ? `No ontology route matched "${ontologyId}".`
25
- : `Multiple ontology routes matched "${ontologyId}".`);
26
- }
27
- return matching[0];
22
+ const matching = routes.filter((route) => route.matches(ontologyId));
23
+ if (matching.length !== 1) throw new Error(matching.length === 0 ? `No ontology route matched "${ontologyId}".` : `Multiple ontology routes matched "${ontologyId}".`);
24
+ return matching[0];
28
25
  }
29
- export async function createOntologyBackendInstallation(options) {
30
- const installationRuntime = await options.runtime("installation", scope(options.installationId));
31
- let connectionManager;
32
- try {
33
- connectionManager = await createConnectionManager({
34
- installationId: options.installationId,
35
- runtime: installationRuntime,
36
- adapter: options.connections,
37
- });
38
- }
39
- catch (error) {
40
- await installationRuntime.cleanup?.();
41
- throw error;
42
- }
43
- const partitions = createLocalCollection({
44
- name: "ontology-partitions",
45
- getKey: (partition) => partition.id,
46
- runtime: installationRuntime,
47
- schemaVersion: 1,
48
- });
49
- try {
50
- await partitions.preload();
51
- }
52
- catch (error) {
53
- await partitions.cleanup();
54
- await connectionManager.cleanup();
55
- await installationRuntime.cleanup?.();
56
- throw error;
57
- }
58
- const live = new Map();
59
- const opening = new Map();
60
- let disposed = false;
61
- let cleanupPromise;
62
- const closeKey = async (key) => {
63
- const pending = opening.get(key);
64
- if (pending) {
65
- await pending.catch(() => undefined);
66
- }
67
- const ontology = live.get(key);
68
- if (!ontology)
69
- return;
70
- live.delete(key);
71
- await ontology.cleanup();
72
- };
73
- const close = (userId, ontologyId) => closeKey(ontologyKey(userId, ontologyId));
74
- const recordPartition = async (partition) => {
75
- const existing = partitions.get(partition.id);
76
- const transaction = existing
77
- ? partitions.update(partition.id, {
78
- optimistic: false,
79
- }, (draft) => {
80
- Object.assign(draft, partition);
81
- })
82
- : partitions.insert(partition, {
83
- optimistic: false,
84
- });
85
- await transaction.isPersisted.promise;
86
- };
87
- const removePartitionRecord = async (id) => {
88
- if (!partitions.get(id)) {
89
- return;
90
- }
91
- const transaction = partitions.delete(id, {
92
- optimistic: false,
93
- });
94
- await transaction.isPersisted.promise;
95
- };
96
- const destroyPartition = async (partition) => {
97
- const pending = opening.get(partition.id);
98
- if (pending) {
99
- await pending.catch(() => undefined);
100
- }
101
- const ontology = live.get(partition.id);
102
- live.delete(partition.id);
103
- if (ontology) {
104
- await ontology.destroy();
105
- }
106
- else {
107
- const namespace = `${liveOntologyNamespace(options.installationId, partition.ontologyId)}${partition.meta ? ":meta" : ""}`;
108
- const runtime = await options.runtime(partition.userId, namespace);
109
- if (runtime.destroy) {
110
- await runtime.destroy();
111
- }
112
- else {
113
- await runtime.cleanup?.();
114
- }
115
- }
116
- await removePartitionRecord(partition.id);
117
- };
118
- const destroyUserPartitions = async (userId) => {
119
- const prefix = `${scope(userId)}:`;
120
- await Promise.allSettled([...opening].filter(([key]) => key.startsWith(prefix)).map(([, pending]) => pending));
121
- await Promise.all([...partitions.values()].filter((partition) => partition.userId === userId).map(destroyPartition));
122
- };
123
- const closeUserOntologies = async (userId) => {
124
- const prefix = `${scope(userId)}:`;
125
- const toClose = [...new Set([...live.keys(), ...opening.keys()])].filter((key) => key.startsWith(prefix));
126
- await Promise.all(toClose.map(closeKey));
127
- };
128
- const openConfiguredOntology = async (openOptions) => {
129
- const { userId, ontologyId, meta } = openOptions;
130
- if (disposed) {
131
- throw new Error(`Backend installation "${options.installationId}" is closed.`);
132
- }
133
- const current = connectionManager.connections.get(userId);
134
- if (!isActiveConnection(current)) {
135
- throw new Error(`User "${userId}" is not connected to backend installation "${options.installationId}".`);
136
- }
137
- const egress = connectionManager.egress(userId);
138
- if (!egress) {
139
- throw new Error(`Connection egress for user "${userId}" is unavailable.`);
140
- }
141
- const key = meta ? metaOntologyKey(userId, ontologyId) : ontologyKey(userId, ontologyId);
142
- const existing = live.get(key);
143
- if (existing) {
144
- return existing;
145
- }
146
- const pending = opening.get(key);
147
- if (pending) {
148
- return pending;
149
- }
150
- const open = (async () => {
151
- const route = routeFor(options.routes, ontologyId);
152
- const configureOptions = {
153
- connection: current,
154
- egress,
155
- ontologyId,
156
- };
157
- let configured;
158
- if (meta) {
159
- if (route.configureMeta) {
160
- configured = await route.configureMeta(configureOptions);
161
- }
162
- else if (route.configure) {
163
- const application = await route.configure(configureOptions);
164
- configured = createMetaOntologyConfiguration({
165
- ir: application.ir,
166
- });
167
- }
168
- else {
169
- throw new Error(`Ontology route for "${ontologyId}" does not support metadata.`);
170
- }
171
- }
172
- else {
173
- if (!route.configure) {
174
- throw new Error(`Ontology route for "${ontologyId}" does not support opening the application ontology.`);
175
- }
176
- configured = await route.configure(configureOptions);
177
- }
178
- const context = {
179
- ...options.createContext?.(userId, ontologyId),
180
- ...configured.context,
181
- user: userId,
182
- };
183
- const runtimeNamespace = `${liveOntologyNamespace(options.installationId, ontologyId)}${meta ? ":meta" : ""}`;
184
- await recordPartition({
185
- id: key,
186
- userId,
187
- ontologyId,
188
- meta: meta ? true : undefined,
189
- });
190
- const ontology = await createLiveOntology({
191
- id: runtimeNamespace,
192
- ir: configured.ir,
193
- backend: configured.backend,
194
- runtime: options.runtime,
195
- context,
196
- persistObjects: configured.persistObjects,
197
- writes: configured.writes,
198
- connection: createConnectionMonitor(connectionManager, userId),
199
- });
200
- if (disposed) {
201
- await ontology.cleanup();
202
- throw new Error(meta
203
- ? `Backend installation "${options.installationId}" closed while opening metadata for ontology "${ontologyId}".`
204
- : `Backend installation "${options.installationId}" closed while opening ontology "${ontologyId}".`);
205
- }
206
- live.set(key, ontology);
207
- return ontology;
208
- })();
209
- opening.set(key, open);
210
- try {
211
- return (await open);
212
- }
213
- finally {
214
- if (opening.get(key) === open) {
215
- opening.delete(key);
216
- }
217
- }
218
- };
219
- const installation = {
220
- installationId: options.installationId,
221
- get connections() {
222
- return connectionManager.connections;
223
- },
224
- get authentication() {
225
- return connectionManager.authentication;
226
- },
227
- async disconnect(userId) {
228
- await closeUserOntologies(userId);
229
- await connectionManager.disconnect(userId);
230
- },
231
- async forget(userId) {
232
- const results = await Promise.allSettled([
233
- destroyUserPartitions(userId),
234
- connectionManager.forget(userId),
235
- ]);
236
- const errors = [];
237
- for (const result of results) {
238
- if (result.status === "rejected") {
239
- errors.push(result.reason);
240
- }
241
- }
242
- if (errors.length > 0) {
243
- throw new AggregateError(errors, `Failed to forget user "${userId}" from backend installation "${options.installationId}".`);
244
- }
245
- },
246
- async openOntology({ userId, ontologyId, }) {
247
- return openConfiguredOntology({
248
- userId,
249
- ontologyId,
250
- meta: false,
251
- });
252
- },
253
- async openMetaOntology({ userId, ontologyId }) {
254
- return openConfiguredOntology({
255
- userId,
256
- ontologyId,
257
- meta: true,
258
- });
259
- },
260
- closeOntology: ({ userId, ontologyId }) => close(userId, ontologyId),
261
- closeMetaOntology: ({ userId, ontologyId }) => closeKey(metaOntologyKey(userId, ontologyId)),
262
- cleanup() {
263
- cleanupPromise ??= (async () => {
264
- disposed = true;
265
- try {
266
- await Promise.allSettled(opening.values());
267
- await Promise.all([...live.values()].map((ontology) => ontology.cleanup()));
268
- }
269
- finally {
270
- live.clear();
271
- try {
272
- await Promise.all([connectionManager.cleanup(), partitions.cleanup()]);
273
- }
274
- finally {
275
- await installationRuntime.cleanup?.();
276
- }
277
- }
278
- })();
279
- return cleanupPromise;
280
- },
281
- };
282
- return installation;
26
+ async function createOntologyBackendInstallation(options) {
27
+ const installationRuntime = await options.runtime("installation", scope(options.installationId));
28
+ let connectionManager;
29
+ try {
30
+ connectionManager = await createConnectionManager({
31
+ installationId: options.installationId,
32
+ runtime: installationRuntime,
33
+ adapter: options.connections
34
+ });
35
+ } catch (error) {
36
+ await installationRuntime.cleanup?.();
37
+ throw error;
38
+ }
39
+ const partitions = createLocalCollection({
40
+ name: "ontology-partitions",
41
+ getKey: (partition) => partition.id,
42
+ runtime: installationRuntime,
43
+ schemaVersion: 1
44
+ });
45
+ try {
46
+ await partitions.preload();
47
+ } catch (error) {
48
+ await partitions.cleanup();
49
+ await connectionManager.cleanup();
50
+ await installationRuntime.cleanup?.();
51
+ throw error;
52
+ }
53
+ const live = /* @__PURE__ */ new Map();
54
+ const opening = /* @__PURE__ */ new Map();
55
+ let disposed = false;
56
+ let cleanupPromise;
57
+ const closeKey = async (key) => {
58
+ const pending = opening.get(key);
59
+ if (pending) await pending.catch(() => void 0);
60
+ const ontology = live.get(key);
61
+ if (!ontology) return;
62
+ live.delete(key);
63
+ await ontology.cleanup();
64
+ };
65
+ const close = (userId, ontologyId) => closeKey(ontologyKey(userId, ontologyId));
66
+ const recordPartition = async (partition) => {
67
+ await (partitions.get(partition.id) ? partitions.update(partition.id, { optimistic: false }, (draft) => {
68
+ Object.assign(draft, partition);
69
+ }) : partitions.insert(partition, { optimistic: false })).isPersisted.promise;
70
+ };
71
+ const removePartitionRecord = async (id) => {
72
+ if (!partitions.get(id)) return;
73
+ await partitions.delete(id, { optimistic: false }).isPersisted.promise;
74
+ };
75
+ const destroyPartition = async (partition) => {
76
+ const pending = opening.get(partition.id);
77
+ if (pending) await pending.catch(() => void 0);
78
+ const ontology = live.get(partition.id);
79
+ live.delete(partition.id);
80
+ if (ontology) await ontology.destroy();
81
+ else {
82
+ const namespace = `${liveOntologyNamespace(options.installationId, partition.ontologyId)}${partition.meta ? ":meta" : ""}`;
83
+ const runtime = await options.runtime(partition.userId, namespace);
84
+ if (runtime.destroy) await runtime.destroy();
85
+ else await runtime.cleanup?.();
86
+ }
87
+ await removePartitionRecord(partition.id);
88
+ };
89
+ const destroyUserPartitions = async (userId) => {
90
+ const prefix = `${scope(userId)}:`;
91
+ await Promise.allSettled([...opening].filter(([key]) => key.startsWith(prefix)).map(([, pending]) => pending));
92
+ await Promise.all([...partitions.values()].filter((partition) => partition.userId === userId).map(destroyPartition));
93
+ };
94
+ const closeUserOntologies = async (userId) => {
95
+ const prefix = `${scope(userId)}:`;
96
+ const toClose = [.../* @__PURE__ */ new Set([...live.keys(), ...opening.keys()])].filter((key) => key.startsWith(prefix));
97
+ await Promise.all(toClose.map(closeKey));
98
+ };
99
+ const openConfiguredOntology = async (openOptions) => {
100
+ const { userId, ontologyId, meta } = openOptions;
101
+ if (disposed) throw new Error(`Backend installation "${options.installationId}" is closed.`);
102
+ const current = connectionManager.connections.get(userId);
103
+ if (!isActiveConnection(current)) throw new Error(`User "${userId}" is not connected to backend installation "${options.installationId}".`);
104
+ const egress = connectionManager.egress(userId);
105
+ if (!egress) throw new Error(`Connection egress for user "${userId}" is unavailable.`);
106
+ const key = meta ? metaOntologyKey(userId, ontologyId) : ontologyKey(userId, ontologyId);
107
+ const existing = live.get(key);
108
+ if (existing) return existing;
109
+ const pending = opening.get(key);
110
+ if (pending) return pending;
111
+ const open = (async () => {
112
+ const route = routeFor(options.routes, ontologyId);
113
+ const configureOptions = {
114
+ connection: current,
115
+ egress,
116
+ ontologyId
117
+ };
118
+ let configured;
119
+ if (meta) {
120
+ if (route.configureMeta) configured = await route.configureMeta(configureOptions);
121
+ else if (route.configure) {
122
+ const application = await route.configure(configureOptions);
123
+ configured = createMetaOntologyConfiguration({ ir: application.ir });
124
+ } else throw new Error(`Ontology route for "${ontologyId}" does not support metadata.`);
125
+ } else {
126
+ if (!route.configure) throw new Error(`Ontology route for "${ontologyId}" does not support opening the application ontology.`);
127
+ configured = await route.configure(configureOptions);
128
+ }
129
+ const context = {
130
+ ...options.createContext?.(userId, ontologyId),
131
+ ...configured.context,
132
+ user: userId
133
+ };
134
+ const runtimeNamespace = `${liveOntologyNamespace(options.installationId, ontologyId)}${meta ? ":meta" : ""}`;
135
+ await recordPartition({
136
+ id: key,
137
+ userId,
138
+ ontologyId,
139
+ meta: meta ? true : void 0
140
+ });
141
+ const ontology = await createLiveOntology({
142
+ id: runtimeNamespace,
143
+ ir: configured.ir,
144
+ backend: configured.backend,
145
+ runtime: options.runtime,
146
+ context,
147
+ persistObjects: configured.persistObjects,
148
+ writes: configured.writes,
149
+ connection: createConnectionMonitor(connectionManager, userId)
150
+ });
151
+ if (disposed) {
152
+ await ontology.cleanup();
153
+ throw new Error(meta ? `Backend installation "${options.installationId}" closed while opening metadata for ontology "${ontologyId}".` : `Backend installation "${options.installationId}" closed while opening ontology "${ontologyId}".`);
154
+ }
155
+ live.set(key, ontology);
156
+ return ontology;
157
+ })();
158
+ opening.set(key, open);
159
+ try {
160
+ return await open;
161
+ } finally {
162
+ if (opening.get(key) === open) opening.delete(key);
163
+ }
164
+ };
165
+ return {
166
+ installationId: options.installationId,
167
+ get connections() {
168
+ return connectionManager.connections;
169
+ },
170
+ get authentication() {
171
+ return connectionManager.authentication;
172
+ },
173
+ async disconnect(userId) {
174
+ await closeUserOntologies(userId);
175
+ await connectionManager.disconnect(userId);
176
+ },
177
+ async forget(userId) {
178
+ const results = await Promise.allSettled([destroyUserPartitions(userId), connectionManager.forget(userId)]);
179
+ const errors = [];
180
+ for (const result of results) if (result.status === "rejected") errors.push(result.reason);
181
+ if (errors.length > 0) throw new AggregateError(errors, `Failed to forget user "${userId}" from backend installation "${options.installationId}".`);
182
+ },
183
+ async openOntology({ userId, ontologyId }) {
184
+ return openConfiguredOntology({
185
+ userId,
186
+ ontologyId,
187
+ meta: false
188
+ });
189
+ },
190
+ async openMetaOntology({ userId, ontologyId }) {
191
+ return openConfiguredOntology({
192
+ userId,
193
+ ontologyId,
194
+ meta: true
195
+ });
196
+ },
197
+ closeOntology: ({ userId, ontologyId }) => close(userId, ontologyId),
198
+ closeMetaOntology: ({ userId, ontologyId }) => closeKey(metaOntologyKey(userId, ontologyId)),
199
+ cleanup() {
200
+ cleanupPromise ??= (async () => {
201
+ disposed = true;
202
+ try {
203
+ await Promise.allSettled(opening.values());
204
+ await Promise.all([...live.values()].map((ontology) => ontology.cleanup()));
205
+ } finally {
206
+ live.clear();
207
+ try {
208
+ await Promise.all([connectionManager.cleanup(), partitions.cleanup()]);
209
+ } finally {
210
+ await installationRuntime.cleanup?.();
211
+ }
212
+ }
213
+ })();
214
+ return cleanupPromise;
215
+ }
216
+ };
283
217
  }
218
+ //#endregion
219
+ export { createOntologyBackendInstallation };
220
+
284
221
  //# sourceMappingURL=createOntologyBackendInstallation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createOntologyBackendInstallation.js","sourceRoot":"","sources":["../../src/installation/createOntologyBackendInstallation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createOntologyBackendInstallation.js","names":[],"sources":["../../src/installation/createOntologyBackendInstallation.ts"],"sourcesContent":["import { createConnectionManager, createConnectionMonitor } from \"@party-stack/connections\";\nimport { createLocalCollection } from \"@party-stack/runtime\";\nimport { createLiveOntology } from \"../live/LiveOntology.js\";\nimport { createMetaOntologyConfiguration } from \"./createMetaOntologyConfiguration.js\";\nimport type { LiveOntology } from \"../live/LiveOntology.js\";\nimport type { OntologyDefinition } from \"../live/LiveOntology.js\";\nimport type { MetaOntology } from \"../meta/generated/types.js\";\nimport type {\n CreateOntologyBackendInstallationOptions,\n OntologyBackendInstallation,\n OntologyRoute,\n} from \"./types.js\";\nimport type { Connection } from \"@party-stack/connections\";\n\ninterface LocalOntologyPartition {\n id: string;\n userId: string;\n ontologyId: string;\n meta?: true;\n}\n\nfunction scope(value: string): string {\n return encodeURIComponent(value);\n}\n\nfunction ontologyKey(userId: string, ontologyId: string): string {\n return `${scope(userId)}:${scope(ontologyId)}`;\n}\n\nfunction metaOntologyKey(userId: string, ontologyId: string): string {\n return `${ontologyKey(userId, ontologyId)}:meta`;\n}\n\nfunction liveOntologyNamespace(installationId: string, ontologyId: string): string {\n return `${scope(installationId)}:${scope(ontologyId)}`;\n}\n\nfunction isActiveConnection(connection: Connection | undefined): connection is Connection<\"active\"> {\n return connection?.state.status === \"active\";\n}\n\nfunction routeFor(routes: readonly OntologyRoute[], ontologyId: string): OntologyRoute {\n const matching = routes.filter((route) => route.matches(ontologyId));\n if (matching.length !== 1) {\n throw new Error(\n matching.length === 0\n ? `No ontology route matched \"${ontologyId}\".`\n : `Multiple ontology routes matched \"${ontologyId}\".`\n );\n }\n return matching[0]!;\n}\n\nexport async function createOntologyBackendInstallation<AuthenticationClient extends object = object>(\n options: CreateOntologyBackendInstallationOptions<AuthenticationClient>\n): Promise<OntologyBackendInstallation<AuthenticationClient>> {\n const installationRuntime = await options.runtime(\"installation\", scope(options.installationId));\n let connectionManager;\n try {\n connectionManager = await createConnectionManager({\n installationId: options.installationId,\n runtime: installationRuntime,\n adapter: options.connections,\n });\n } catch (error) {\n await installationRuntime.cleanup?.();\n throw error;\n }\n const partitions = createLocalCollection<LocalOntologyPartition, string>({\n name: \"ontology-partitions\",\n getKey: (partition) => partition.id,\n runtime: installationRuntime,\n schemaVersion: 1,\n });\n try {\n await partitions.preload();\n } catch (error) {\n await partitions.cleanup();\n await connectionManager.cleanup();\n await installationRuntime.cleanup?.();\n throw error;\n }\n const live = new Map<string, LiveOntology>();\n const opening = new Map<string, Promise<LiveOntology>>();\n let disposed = false;\n let cleanupPromise: Promise<void> | undefined;\n\n const closeKey = async (key: string) => {\n const pending = opening.get(key);\n if (pending) {\n await pending.catch(() => undefined);\n }\n const ontology = live.get(key);\n if (!ontology) return;\n live.delete(key);\n await ontology.cleanup();\n };\n const close = (userId: string, ontologyId: string) => closeKey(ontologyKey(userId, ontologyId));\n const recordPartition = async (partition: LocalOntologyPartition): Promise<void> => {\n const existing = partitions.get(partition.id);\n const transaction = existing\n ? partitions.update(\n partition.id,\n {\n optimistic: false,\n },\n (draft) => {\n Object.assign(draft, partition);\n }\n )\n : partitions.insert(partition, {\n optimistic: false,\n });\n await transaction.isPersisted.promise;\n };\n const removePartitionRecord = async (id: string): Promise<void> => {\n if (!partitions.get(id)) {\n return;\n }\n const transaction = partitions.delete(id, {\n optimistic: false,\n });\n await transaction.isPersisted.promise;\n };\n const destroyPartition = async (partition: LocalOntologyPartition): Promise<void> => {\n const pending = opening.get(partition.id);\n if (pending) {\n await pending.catch(() => undefined);\n }\n const ontology = live.get(partition.id);\n live.delete(partition.id);\n if (ontology) {\n await ontology.destroy();\n } else {\n const namespace = `${liveOntologyNamespace(\n options.installationId,\n partition.ontologyId\n )}${partition.meta ? \":meta\" : \"\"}`;\n const runtime = await options.runtime(partition.userId, namespace);\n if (runtime.destroy) {\n await runtime.destroy();\n } else {\n await runtime.cleanup?.();\n }\n }\n await removePartitionRecord(partition.id);\n };\n const destroyUserPartitions = async (userId: string): Promise<void> => {\n const prefix = `${scope(userId)}:`;\n await Promise.allSettled(\n [...opening].filter(([key]) => key.startsWith(prefix)).map(([, pending]) => pending)\n );\n await Promise.all(\n [...partitions.values()].filter((partition) => partition.userId === userId).map(destroyPartition)\n );\n };\n const closeUserOntologies = async (userId: string): Promise<void> => {\n const prefix = `${scope(userId)}:`;\n const toClose = [...new Set([...live.keys(), ...opening.keys()])].filter((key) =>\n key.startsWith(prefix)\n );\n await Promise.all(toClose.map(closeKey));\n };\n const openConfiguredOntology = async <Ontology extends OntologyDefinition>(openOptions: {\n userId: string;\n ontologyId: string;\n meta: boolean;\n }): Promise<LiveOntology<Ontology>> => {\n const { userId, ontologyId, meta } = openOptions;\n if (disposed) {\n throw new Error(`Backend installation \"${options.installationId}\" is closed.`);\n }\n const current = connectionManager.connections.get(userId);\n if (!isActiveConnection(current)) {\n throw new Error(\n `User \"${userId}\" is not connected to backend installation \"${options.installationId}\".`\n );\n }\n const egress = connectionManager.egress(userId);\n if (!egress) {\n throw new Error(`Connection egress for user \"${userId}\" is unavailable.`);\n }\n const key = meta ? metaOntologyKey(userId, ontologyId) : ontologyKey(userId, ontologyId);\n const existing = live.get(key);\n if (existing) {\n return existing as unknown as LiveOntology<Ontology>;\n }\n const pending = opening.get(key);\n if (pending) {\n return pending as unknown as Promise<LiveOntology<Ontology>>;\n }\n const open = (async () => {\n const route = routeFor(options.routes, ontologyId);\n const configureOptions = {\n connection: current,\n egress,\n ontologyId,\n };\n let configured;\n if (meta) {\n if (route.configureMeta) {\n configured = await route.configureMeta(configureOptions);\n } else if (route.configure) {\n const application = await route.configure(configureOptions);\n configured = createMetaOntologyConfiguration({\n ir: application.ir,\n });\n } else {\n throw new Error(`Ontology route for \"${ontologyId}\" does not support metadata.`);\n }\n } else {\n if (!route.configure) {\n throw new Error(\n `Ontology route for \"${ontologyId}\" does not support opening the application ontology.`\n );\n }\n configured = await route.configure(configureOptions);\n }\n const context = {\n ...options.createContext?.(userId, ontologyId),\n ...configured.context,\n user: userId,\n };\n const runtimeNamespace = `${liveOntologyNamespace(options.installationId, ontologyId)}${\n meta ? \":meta\" : \"\"\n }`;\n await recordPartition({\n id: key,\n userId,\n ontologyId,\n meta: meta ? true : undefined,\n });\n const ontology = await createLiveOntology({\n id: runtimeNamespace,\n ir: configured.ir,\n backend: configured.backend,\n runtime: options.runtime,\n context,\n persistObjects: configured.persistObjects,\n writes: configured.writes,\n connection: createConnectionMonitor(connectionManager, userId),\n });\n if (disposed) {\n await ontology.cleanup();\n throw new Error(\n meta\n ? `Backend installation \"${options.installationId}\" closed while opening metadata for ontology \"${ontologyId}\".`\n : `Backend installation \"${options.installationId}\" closed while opening ontology \"${ontologyId}\".`\n );\n }\n live.set(key, ontology);\n return ontology;\n })();\n opening.set(key, open);\n try {\n return (await open) as unknown as LiveOntology<Ontology>;\n } finally {\n if (opening.get(key) === open) {\n opening.delete(key);\n }\n }\n };\n\n const installation: OntologyBackendInstallation<AuthenticationClient> = {\n installationId: options.installationId,\n get connections() {\n return connectionManager.connections;\n },\n get authentication() {\n return connectionManager.authentication;\n },\n async disconnect(userId) {\n await closeUserOntologies(userId);\n await connectionManager.disconnect(userId);\n },\n async forget(userId) {\n const results = await Promise.allSettled([\n destroyUserPartitions(userId),\n connectionManager.forget(userId),\n ]);\n const errors: unknown[] = [];\n for (const result of results) {\n if (result.status === \"rejected\") {\n errors.push(result.reason as unknown);\n }\n }\n if (errors.length > 0) {\n throw new AggregateError(\n errors,\n `Failed to forget user \"${userId}\" from backend installation \"${options.installationId}\".`\n );\n }\n },\n async openOntology<Ontology extends OntologyDefinition = OntologyDefinition>({\n userId,\n ontologyId,\n }: {\n userId: string;\n ontologyId: string;\n }): Promise<LiveOntology<Ontology>> {\n return openConfiguredOntology<Ontology>({\n userId,\n ontologyId,\n meta: false,\n });\n },\n async openMetaOntology({ userId, ontologyId }) {\n return openConfiguredOntology<MetaOntology>({\n userId,\n ontologyId,\n meta: true,\n });\n },\n closeOntology: ({ userId, ontologyId }) => close(userId, ontologyId),\n closeMetaOntology: ({ userId, ontologyId }) => closeKey(metaOntologyKey(userId, ontologyId)),\n cleanup() {\n cleanupPromise ??= (async () => {\n disposed = true;\n try {\n await Promise.allSettled(opening.values());\n await Promise.all([...live.values()].map((ontology) => ontology.cleanup()));\n } finally {\n live.clear();\n try {\n await Promise.all([connectionManager.cleanup(), partitions.cleanup()]);\n } finally {\n await installationRuntime.cleanup?.();\n }\n }\n })();\n return cleanupPromise;\n },\n };\n return installation;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { createOntologyBackendInstallation } from "./createOntologyBackendInstallation.js";
2
- export { createMetaOntologyConfiguration, type MetaOntologyConfigurationOptions, } from "./createMetaOntologyConfiguration.js";
3
- export type { ConfigureOntologyOptions, CreateOntologyBackendInstallationOptions, OntologyConfiguration, OntologyBackendInstallation, OntologyRoute, } from "./types.js";
4
- //# sourceMappingURL=index.d.ts.map
1
+ import { ConfigureOntologyOptions, CreateOntologyBackendInstallationOptions, OntologyBackendInstallation, OntologyConfiguration, OntologyRoute } from "./types.js";
2
+ import { createOntologyBackendInstallation } from "./createOntologyBackendInstallation.js";
3
+ import { MetaOntologyConfigurationOptions, createMetaOntologyConfiguration } from "./createMetaOntologyConfiguration.js";
4
+ export { type ConfigureOntologyOptions, type CreateOntologyBackendInstallationOptions, type MetaOntologyConfigurationOptions, type OntologyBackendInstallation, type OntologyConfiguration, type OntologyRoute, createMetaOntologyConfiguration, createOntologyBackendInstallation };
@@ -1,3 +1,3 @@
1
- export { createOntologyBackendInstallation } from "./createOntologyBackendInstallation.js";
2
- export { createMetaOntologyConfiguration, } from "./createMetaOntologyConfiguration.js";
3
- //# sourceMappingURL=index.js.map
1
+ import { createMetaOntologyConfiguration } from "./createMetaOntologyConfiguration.js";
2
+ import { createOntologyBackendInstallation } from "./createOntologyBackendInstallation.js";
3
+ export { createMetaOntologyConfiguration, createOntologyBackendInstallation };