@party-stack/ontology 0.18.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) 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/_virtual/_rolldown/runtime.js +13 -0
  5. package/lib/cli/format.d.ts +4 -0
  6. package/lib/cli/format.d.ts.map +1 -0
  7. package/lib/cli/format.js +19 -0
  8. package/lib/cli/format.js.map +1 -0
  9. package/lib/cli/generate.d.ts +6 -5
  10. package/lib/cli/generate.d.ts.map +1 -1
  11. package/lib/cli/generate.js +86 -110
  12. package/lib/cli/generate.js.map +1 -1
  13. package/lib/cli/index.d.ts +1 -3
  14. package/lib/cli/index.js +42 -59
  15. package/lib/cli/index.js.map +1 -1
  16. package/lib/cli/pull.d.ts +3 -1
  17. package/lib/cli/pull.d.ts.map +1 -1
  18. package/lib/cli/pull.js +42 -60
  19. package/lib/cli/pull.js.map +1 -1
  20. package/lib/examples/blog.d.ts +347 -345
  21. package/lib/examples/blog.d.ts.map +1 -1
  22. package/lib/examples/blog.js +350 -337
  23. package/lib/examples/blog.js.map +1 -1
  24. package/lib/examples/blog.live-queries.d.ts +8 -3
  25. package/lib/examples/blog.live-queries.d.ts.map +1 -1
  26. package/lib/examples/blog.live-queries.js +28 -44
  27. package/lib/examples/blog.live-queries.js.map +1 -1
  28. package/lib/examples/generated/constants.d.ts +1 -2
  29. package/lib/examples/generated/constants.js +0 -2
  30. package/lib/examples/generated/live.d.ts +5 -3
  31. package/lib/examples/generated/live.d.ts.map +1 -1
  32. package/lib/examples/generated/live.js +12 -8
  33. package/lib/examples/generated/live.js.map +1 -1
  34. package/lib/examples/generated/types.d.ts +52 -50
  35. package/lib/examples/generated/types.d.ts.map +1 -1
  36. package/lib/examples/generated/types.js +0 -2
  37. package/lib/generate/builders.d.ts +8 -5
  38. package/lib/generate/builders.d.ts.map +1 -1
  39. package/lib/generate/builders.js +53 -55
  40. package/lib/generate/builders.js.map +1 -1
  41. package/lib/generate/constants.d.ts +3 -1
  42. package/lib/generate/constants.d.ts.map +1 -1
  43. package/lib/generate/constants.js +23 -26
  44. package/lib/generate/constants.js.map +1 -1
  45. package/lib/generate/index.d.ts +6 -6
  46. package/lib/generate/index.js +6 -6
  47. package/lib/generate/live.d.ts +8 -6
  48. package/lib/generate/live.d.ts.map +1 -1
  49. package/lib/generate/live.js +43 -42
  50. package/lib/generate/live.js.map +1 -1
  51. package/lib/generate/ontology.d.ts +4 -2
  52. package/lib/generate/ontology.d.ts.map +1 -1
  53. package/lib/generate/ontology.js +453 -354
  54. package/lib/generate/ontology.js.map +1 -1
  55. package/lib/generate/types.d.ts +7 -6
  56. package/lib/generate/types.d.ts.map +1 -1
  57. package/lib/generate/types.js +190 -262
  58. package/lib/generate/types.js.map +1 -1
  59. package/lib/generate/utils/buildJsDocs.d.ts +7 -4
  60. package/lib/generate/utils/buildJsDocs.d.ts.map +1 -1
  61. package/lib/generate/utils/buildJsDocs.js +14 -10
  62. package/lib/generate/utils/buildJsDocs.js.map +1 -1
  63. package/lib/index.d.ts +30 -13
  64. package/lib/index.js +18 -10
  65. package/lib/infer.d.ts +129 -152
  66. package/lib/infer.d.ts.map +1 -1
  67. package/lib/infer.js +10 -6
  68. package/lib/infer.js.map +1 -1
  69. package/lib/installation/createMetaOntologyConfiguration.d.ts +6 -3
  70. package/lib/installation/createMetaOntologyConfiguration.d.ts.map +1 -1
  71. package/lib/installation/createMetaOntologyConfiguration.js +13 -11
  72. package/lib/installation/createMetaOntologyConfiguration.js.map +1 -1
  73. package/lib/installation/createOntologyBackendInstallation.d.ts +3 -1
  74. package/lib/installation/createOntologyBackendInstallation.d.ts.map +1 -1
  75. package/lib/installation/createOntologyBackendInstallation.js +205 -268
  76. package/lib/installation/createOntologyBackendInstallation.js.map +1 -1
  77. package/lib/installation/index.d.ts +4 -4
  78. package/lib/installation/index.js +3 -3
  79. package/lib/installation/types.d.ts +83 -80
  80. package/lib/installation/types.d.ts.map +1 -1
  81. package/lib/installation/types.js +0 -1
  82. package/lib/ir/generated/builders.d.ts +294 -382
  83. package/lib/ir/generated/builders.d.ts.map +1 -1
  84. package/lib/ir/generated/builders.js +180 -119
  85. package/lib/ir/generated/builders.js.map +1 -1
  86. package/lib/ir/generated/constants.d.ts +137 -135
  87. package/lib/ir/generated/constants.d.ts.map +1 -1
  88. package/lib/ir/generated/constants.js +162 -129
  89. package/lib/ir/generated/constants.js.map +1 -1
  90. package/lib/ir/generated/types.d.ts +239 -234
  91. package/lib/ir/generated/types.d.ts.map +1 -1
  92. package/lib/ir/generated/types.js +0 -2
  93. package/lib/ir/index.d.ts +4 -4
  94. package/lib/ir/index.js +3 -4
  95. package/lib/ir/schema.d.ts +2174 -2172
  96. package/lib/ir/schema.d.ts.map +1 -1
  97. package/lib/ir/schema.js +1184 -1343
  98. package/lib/ir/schema.js.map +1 -1
  99. package/lib/ir/validate.d.ts +5 -3
  100. package/lib/ir/validate.d.ts.map +1 -1
  101. package/lib/ir/validate.js +589 -707
  102. package/lib/ir/validate.js.map +1 -1
  103. package/lib/json/index.d.ts +10 -8
  104. package/lib/json/index.d.ts.map +1 -1
  105. package/lib/json/index.js +101 -135
  106. package/lib/json/index.js.map +1 -1
  107. package/lib/lenses.d.ts +7 -4
  108. package/lib/lenses.d.ts.map +1 -1
  109. package/lib/lenses.js +96 -132
  110. package/lib/lenses.js.map +1 -1
  111. package/lib/live/LiveOntology.d.ts +55 -60
  112. package/lib/live/LiveOntology.d.ts.map +1 -1
  113. package/lib/live/LiveOntology.js +98 -124
  114. package/lib/live/LiveOntology.js.map +1 -1
  115. package/lib/live/OntologyBackendAdapter.d.ts +79 -76
  116. package/lib/live/OntologyBackendAdapter.d.ts.map +1 -1
  117. package/lib/live/OntologyBackendAdapter.js +0 -1
  118. package/lib/live/actions/createLiveOntologyAction.d.ts +27 -24
  119. package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -1
  120. package/lib/live/actions/createLiveOntologyAction.js +24 -21
  121. package/lib/live/actions/createLiveOntologyAction.js.map +1 -1
  122. package/lib/live/actions/createLiveOntologyActions.d.ts +23 -20
  123. package/lib/live/actions/createLiveOntologyActions.d.ts.map +1 -1
  124. package/lib/live/actions/createLiveOntologyActions.js +131 -161
  125. package/lib/live/actions/createLiveOntologyActions.js.map +1 -1
  126. package/lib/live/actions/prepareActionParameters.d.ts +14 -11
  127. package/lib/live/actions/prepareActionParameters.d.ts.map +1 -1
  128. package/lib/live/actions/prepareActionParameters.js +190 -228
  129. package/lib/live/actions/prepareActionParameters.js.map +1 -1
  130. package/lib/live/attachments/attachmentSources.d.ts +7 -4
  131. package/lib/live/attachments/attachmentSources.d.ts.map +1 -1
  132. package/lib/live/attachments/attachmentSources.js +55 -71
  133. package/lib/live/attachments/attachmentSources.js.map +1 -1
  134. package/lib/live/attachments/createLiveOntologyAttachments.d.ts +47 -45
  135. package/lib/live/attachments/createLiveOntologyAttachments.d.ts.map +1 -1
  136. package/lib/live/attachments/createLiveOntologyAttachments.js +65 -83
  137. package/lib/live/attachments/createLiveOntologyAttachments.js.map +1 -1
  138. package/lib/live/attachments/types.d.ts +10 -9
  139. package/lib/live/attachments/types.d.ts.map +1 -1
  140. package/lib/live/attachments/types.js +0 -1
  141. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts +3 -1
  142. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts.map +1 -1
  143. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js +5 -3
  144. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js.map +1 -1
  145. package/lib/live/expression.d.ts +16 -14
  146. package/lib/live/expression.d.ts.map +1 -1
  147. package/lib/live/expression.js +142 -223
  148. package/lib/live/expression.js.map +1 -1
  149. package/lib/live/index.d.ts +12 -9
  150. package/lib/live/index.js +6 -8
  151. package/lib/live/mutators/OntologyEdits.d.ts +12 -9
  152. package/lib/live/mutators/OntologyEdits.d.ts.map +1 -1
  153. package/lib/live/mutators/OntologyEdits.js +57 -74
  154. package/lib/live/mutators/OntologyEdits.js.map +1 -1
  155. package/lib/live/mutators/createMutatorTx.d.ts +7 -5
  156. package/lib/live/mutators/createMutatorTx.d.ts.map +1 -1
  157. package/lib/live/mutators/createMutatorTx.js +53 -69
  158. package/lib/live/mutators/createMutatorTx.js.map +1 -1
  159. package/lib/live/mutators/runOptimisticAction.d.ts +16 -13
  160. package/lib/live/mutators/runOptimisticAction.d.ts.map +1 -1
  161. package/lib/live/mutators/runOptimisticAction.js +26 -26
  162. package/lib/live/mutators/runOptimisticAction.js.map +1 -1
  163. package/lib/live/mutators/types.d.ts +18 -16
  164. package/lib/live/mutators/types.d.ts.map +1 -1
  165. package/lib/live/mutators/types.js +0 -1
  166. package/lib/live/objects/OntologyObject.d.ts +2 -0
  167. package/lib/live/objects/OntologyObject.d.ts.map +1 -1
  168. package/lib/live/objects/OntologyObject.js +0 -1
  169. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts +13 -10
  170. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts.map +1 -1
  171. package/lib/live/objects/createLiveOntologyObjectCollection.js +49 -53
  172. package/lib/live/objects/createLiveOntologyObjectCollection.js.map +1 -1
  173. package/lib/live/objects/ontologyObjectCollectionId.d.ts +2 -0
  174. package/lib/live/objects/ontologyObjectCollectionId.d.ts.map +1 -1
  175. package/lib/live/objects/ontologyObjectCollectionId.js +6 -2
  176. package/lib/live/objects/ontologyObjectCollectionId.js.map +1 -1
  177. package/lib/live/outbox/createOntologyOutbox.d.ts +16 -14
  178. package/lib/live/outbox/createOntologyOutbox.d.ts.map +1 -1
  179. package/lib/live/outbox/createOntologyOutbox.js +275 -326
  180. package/lib/live/outbox/createOntologyOutbox.js.map +1 -1
  181. package/lib/live/outbox/leaderExecutor.d.ts +15 -13
  182. package/lib/live/outbox/leaderExecutor.d.ts.map +1 -1
  183. package/lib/live/outbox/leaderExecutor.js +114 -153
  184. package/lib/live/outbox/leaderExecutor.js.map +1 -1
  185. package/lib/live/outbox/outboxService.d.ts +4 -2
  186. package/lib/live/outbox/outboxService.d.ts.map +1 -1
  187. package/lib/live/outbox/outboxService.js +66 -71
  188. package/lib/live/outbox/outboxService.js.map +1 -1
  189. package/lib/live/outbox/projectionManager.d.ts +26 -24
  190. package/lib/live/outbox/projectionManager.d.ts.map +1 -1
  191. package/lib/live/outbox/projectionManager.js +121 -147
  192. package/lib/live/outbox/projectionManager.js.map +1 -1
  193. package/lib/live/outbox/repository.d.ts +27 -25
  194. package/lib/live/outbox/repository.d.ts.map +1 -1
  195. package/lib/live/outbox/repository.js +192 -241
  196. package/lib/live/outbox/repository.js.map +1 -1
  197. package/lib/live/outbox/service.d.ts +52 -50
  198. package/lib/live/outbox/service.d.ts.map +1 -1
  199. package/lib/live/outbox/service.js +5 -1
  200. package/lib/live/outbox/service.js.map +1 -1
  201. package/lib/live/outbox/types.d.ts +35 -33
  202. package/lib/live/outbox/types.d.ts.map +1 -1
  203. package/lib/live/outbox/types.js +10 -6
  204. package/lib/live/outbox/types.js.map +1 -1
  205. package/lib/live/waitForCollectionReady.d.ts +3 -1
  206. package/lib/live/waitForCollectionReady.d.ts.map +1 -1
  207. package/lib/live/waitForCollectionReady.js +44 -65
  208. package/lib/live/waitForCollectionReady.js.map +1 -1
  209. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts +5 -2
  210. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts.map +1 -1
  211. package/lib/meta/createLocalMetaOntologyBackendAdapter.js +37 -39
  212. package/lib/meta/createLocalMetaOntologyBackendAdapter.js.map +1 -1
  213. package/lib/meta/generated/constants.d.ts +137 -135
  214. package/lib/meta/generated/constants.d.ts.map +1 -1
  215. package/lib/meta/generated/constants.js +162 -129
  216. package/lib/meta/generated/constants.js.map +1 -1
  217. package/lib/meta/generated/live.d.ts +5 -2
  218. package/lib/meta/generated/live.d.ts.map +1 -1
  219. package/lib/meta/generated/live.js +12 -8
  220. package/lib/meta/generated/live.js.map +1 -1
  221. package/lib/meta/generated/types.d.ts +233 -231
  222. package/lib/meta/generated/types.d.ts.map +1 -1
  223. package/lib/meta/generated/types.js +0 -2
  224. package/lib/meta/ontology.d.ts +23 -21
  225. package/lib/meta/ontology.d.ts.map +1 -1
  226. package/lib/meta/ontology.js +100 -104
  227. package/lib/meta/ontology.js.map +1 -1
  228. package/lib/meta/pull.d.ts +8 -6
  229. package/lib/meta/pull.d.ts.map +1 -1
  230. package/lib/meta/pull.js +39 -52
  231. package/lib/meta/pull.js.map +1 -1
  232. package/lib/utils/index.d.ts +8 -8
  233. package/lib/utils/index.js +5 -6
  234. package/lib/utils/links.d.ts +34 -32
  235. package/lib/utils/links.d.ts.map +1 -1
  236. package/lib/utils/links.js +10 -17
  237. package/lib/utils/links.js.map +1 -1
  238. package/lib/utils/paths.d.ts +2 -0
  239. package/lib/utils/paths.d.ts.map +1 -1
  240. package/lib/utils/paths.js +32 -44
  241. package/lib/utils/paths.js.map +1 -1
  242. package/lib/utils/provide.d.ts +2 -0
  243. package/lib/utils/provide.d.ts.map +1 -1
  244. package/lib/utils/provide.js +7 -9
  245. package/lib/utils/provide.js.map +1 -1
  246. package/lib/utils/targets.d.ts +20 -18
  247. package/lib/utils/targets.d.ts.map +1 -1
  248. package/lib/utils/targets.js +0 -1
  249. package/lib/utils/typeNames.d.ts +10 -8
  250. package/lib/utils/typeNames.d.ts.map +1 -1
  251. package/lib/utils/typeNames.js +0 -1
  252. package/lib/utils/types.d.ts +6 -4
  253. package/lib/utils/types.d.ts.map +1 -1
  254. package/lib/utils/types.js +38 -38
  255. package/lib/utils/types.js.map +1 -1
  256. package/lib/utils/uncertain.d.ts +5 -3
  257. package/lib/utils/uncertain.d.ts.map +1 -1
  258. package/lib/utils/uncertain.js +11 -9
  259. package/lib/utils/uncertain.js.map +1 -1
  260. package/lib/utils/validation.d.ts +4 -2
  261. package/lib/utils/validation.d.ts.map +1 -1
  262. package/lib/utils/validation.js +0 -1
  263. package/lib/utils/values.d.ts +21 -18
  264. package/lib/utils/values.d.ts.map +1 -1
  265. package/lib/utils/values.js +0 -1
  266. package/package.json +22 -25
  267. package/lib/OntologyPullConfig.js.map +0 -1
  268. package/lib/cli/index.d.ts.map +0 -1
  269. package/lib/cli/index.test.d.ts +0 -2
  270. package/lib/cli/index.test.d.ts.map +0 -1
  271. package/lib/cli/index.test.js +0 -34
  272. package/lib/cli/index.test.js.map +0 -1
  273. package/lib/cli/pull.test.d.ts +0 -2
  274. package/lib/cli/pull.test.d.ts.map +0 -1
  275. package/lib/cli/pull.test.js +0 -125
  276. package/lib/cli/pull.test.js.map +0 -1
  277. package/lib/examples/generated/constants.d.ts.map +0 -1
  278. package/lib/examples/generated/constants.js.map +0 -1
  279. package/lib/examples/generated/types.js.map +0 -1
  280. package/lib/generate/builders.test.d.ts +0 -2
  281. package/lib/generate/builders.test.d.ts.map +0 -1
  282. package/lib/generate/builders.test.js +0 -49
  283. package/lib/generate/builders.test.js.map +0 -1
  284. package/lib/generate/index.d.ts.map +0 -1
  285. package/lib/generate/index.js.map +0 -1
  286. package/lib/generate/live.test.d.ts +0 -2
  287. package/lib/generate/live.test.d.ts.map +0 -1
  288. package/lib/generate/live.test.js +0 -22
  289. package/lib/generate/live.test.js.map +0 -1
  290. package/lib/generate/ontology.test.d.ts +0 -2
  291. package/lib/generate/ontology.test.d.ts.map +0 -1
  292. package/lib/generate/ontology.test.js +0 -157
  293. package/lib/generate/ontology.test.js.map +0 -1
  294. package/lib/generate/types.test.d.ts +0 -2
  295. package/lib/generate/types.test.d.ts.map +0 -1
  296. package/lib/generate/types.test.js +0 -304
  297. package/lib/generate/types.test.js.map +0 -1
  298. package/lib/index.d.ts.map +0 -1
  299. package/lib/index.js.map +0 -1
  300. package/lib/infer.test.d.ts +0 -2
  301. package/lib/infer.test.d.ts.map +0 -1
  302. package/lib/infer.test.js +0 -125
  303. package/lib/infer.test.js.map +0 -1
  304. package/lib/installation/createMetaOntologyConfiguration.test.d.ts +0 -2
  305. package/lib/installation/createMetaOntologyConfiguration.test.d.ts.map +0 -1
  306. package/lib/installation/createMetaOntologyConfiguration.test.js +0 -20
  307. package/lib/installation/createMetaOntologyConfiguration.test.js.map +0 -1
  308. package/lib/installation/createOntologyBackendInstallation.test.d.ts +0 -2
  309. package/lib/installation/createOntologyBackendInstallation.test.d.ts.map +0 -1
  310. package/lib/installation/createOntologyBackendInstallation.test.js +0 -320
  311. package/lib/installation/createOntologyBackendInstallation.test.js.map +0 -1
  312. package/lib/installation/index.d.ts.map +0 -1
  313. package/lib/installation/index.js.map +0 -1
  314. package/lib/installation/types.js.map +0 -1
  315. package/lib/ir/generated/types.js.map +0 -1
  316. package/lib/ir/index.d.ts.map +0 -1
  317. package/lib/ir/index.js.map +0 -1
  318. package/lib/ir/validate.test.d.ts +0 -2
  319. package/lib/ir/validate.test.d.ts.map +0 -1
  320. package/lib/ir/validate.test.js +0 -1061
  321. package/lib/ir/validate.test.js.map +0 -1
  322. package/lib/json/index.test.d.ts +0 -2
  323. package/lib/json/index.test.d.ts.map +0 -1
  324. package/lib/json/index.test.js +0 -142
  325. package/lib/json/index.test.js.map +0 -1
  326. package/lib/lenses.test.d.ts +0 -2
  327. package/lib/lenses.test.d.ts.map +0 -1
  328. package/lib/lenses.test.js +0 -80
  329. package/lib/lenses.test.js.map +0 -1
  330. package/lib/live/LiveOntology.test.d.ts +0 -2
  331. package/lib/live/LiveOntology.test.d.ts.map +0 -1
  332. package/lib/live/LiveOntology.test.js +0 -507
  333. package/lib/live/LiveOntology.test.js.map +0 -1
  334. package/lib/live/OntologyBackendAdapter.js.map +0 -1
  335. package/lib/live/actions/createLiveOntologyAction.test.d.ts +0 -2
  336. package/lib/live/actions/createLiveOntologyAction.test.d.ts.map +0 -1
  337. package/lib/live/actions/createLiveOntologyAction.test.js +0 -232
  338. package/lib/live/actions/createLiveOntologyAction.test.js.map +0 -1
  339. package/lib/live/actions/prepareActionParameters.test.d.ts +0 -2
  340. package/lib/live/actions/prepareActionParameters.test.d.ts.map +0 -1
  341. package/lib/live/actions/prepareActionParameters.test.js +0 -165
  342. package/lib/live/actions/prepareActionParameters.test.js.map +0 -1
  343. package/lib/live/attachments/attachmentMetadata.test.d.ts +0 -2
  344. package/lib/live/attachments/attachmentMetadata.test.d.ts.map +0 -1
  345. package/lib/live/attachments/attachmentMetadata.test.js +0 -73
  346. package/lib/live/attachments/attachmentMetadata.test.js.map +0 -1
  347. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts +0 -2
  348. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts.map +0 -1
  349. package/lib/live/attachments/createLiveOntologyAttachments.test.js +0 -363
  350. package/lib/live/attachments/createLiveOntologyAttachments.test.js.map +0 -1
  351. package/lib/live/attachments/types.js.map +0 -1
  352. package/lib/live/expression.test.d.ts +0 -2
  353. package/lib/live/expression.test.d.ts.map +0 -1
  354. package/lib/live/expression.test.js +0 -281
  355. package/lib/live/expression.test.js.map +0 -1
  356. package/lib/live/index.d.ts.map +0 -1
  357. package/lib/live/index.js.map +0 -1
  358. package/lib/live/mutators/OntologyEdits.test.d.ts +0 -2
  359. package/lib/live/mutators/OntologyEdits.test.d.ts.map +0 -1
  360. package/lib/live/mutators/OntologyEdits.test.js +0 -85
  361. package/lib/live/mutators/OntologyEdits.test.js.map +0 -1
  362. package/lib/live/mutators/createMutatorTx.test.d.ts +0 -2
  363. package/lib/live/mutators/createMutatorTx.test.d.ts.map +0 -1
  364. package/lib/live/mutators/createMutatorTx.test.js +0 -182
  365. package/lib/live/mutators/createMutatorTx.test.js.map +0 -1
  366. package/lib/live/mutators/types.js.map +0 -1
  367. package/lib/live/objects/OntologyObject.js.map +0 -1
  368. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts +0 -2
  369. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts.map +0 -1
  370. package/lib/live/objects/createLiveOntologyObjectCollection.test.js +0 -181
  371. package/lib/live/objects/createLiveOntologyObjectCollection.test.js.map +0 -1
  372. package/lib/live/outbox/createOntologyOutbox.test.d.ts +0 -2
  373. package/lib/live/outbox/createOntologyOutbox.test.d.ts.map +0 -1
  374. package/lib/live/outbox/createOntologyOutbox.test.js +0 -1007
  375. package/lib/live/outbox/createOntologyOutbox.test.js.map +0 -1
  376. package/lib/live/outbox/outboxValues.d.ts +0 -7
  377. package/lib/live/outbox/outboxValues.d.ts.map +0 -1
  378. package/lib/live/outbox/outboxValues.js +0 -76
  379. package/lib/live/outbox/outboxValues.js.map +0 -1
  380. package/lib/meta/generated/types.js.map +0 -1
  381. package/lib/meta/ontology.test.d.ts +0 -2
  382. package/lib/meta/ontology.test.d.ts.map +0 -1
  383. package/lib/meta/ontology.test.js +0 -84
  384. package/lib/meta/ontology.test.js.map +0 -1
  385. package/lib/utils/index.d.ts.map +0 -1
  386. package/lib/utils/index.js.map +0 -1
  387. package/lib/utils/links.test.d.ts +0 -2
  388. package/lib/utils/links.test.d.ts.map +0 -1
  389. package/lib/utils/links.test.js +0 -109
  390. package/lib/utils/links.test.js.map +0 -1
  391. package/lib/utils/paths.test.d.ts +0 -2
  392. package/lib/utils/paths.test.d.ts.map +0 -1
  393. package/lib/utils/paths.test.js +0 -33
  394. package/lib/utils/paths.test.js.map +0 -1
  395. package/lib/utils/targets.js.map +0 -1
  396. package/lib/utils/typeNames.js.map +0 -1
  397. package/lib/utils/types.test.d.ts +0 -2
  398. package/lib/utils/types.test.d.ts.map +0 -1
  399. package/lib/utils/types.test.js +0 -157
  400. package/lib/utils/types.test.js.map +0 -1
  401. package/lib/utils/uncertain.test.d.ts +0 -2
  402. package/lib/utils/uncertain.test.d.ts.map +0 -1
  403. package/lib/utils/uncertain.test.js +0 -14
  404. package/lib/utils/uncertain.test.js.map +0 -1
  405. package/lib/utils/validation.js.map +0 -1
  406. 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 };