@party-stack/ontology 0.19.1 → 0.21.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 (356) hide show
  1. package/README.md +31 -0
  2. package/lib/OntologyPullConfig.d.ts +4 -17
  3. package/lib/OntologyPullConfig.d.ts.map +1 -1
  4. package/lib/authentication.d.ts +1068 -0
  5. package/lib/authentication.d.ts.map +1 -0
  6. package/lib/authentication.js +55 -0
  7. package/lib/authentication.js.map +1 -0
  8. package/lib/cli/index.js +19 -45
  9. package/lib/cli/index.js.map +1 -1
  10. package/lib/cli/pull.d.ts.map +1 -1
  11. package/lib/cli/pull.js +16 -29
  12. package/lib/cli/pull.js.map +1 -1
  13. package/lib/client.d.ts +11 -0
  14. package/lib/client.d.ts.map +1 -0
  15. package/lib/client.js +21 -0
  16. package/lib/client.js.map +1 -0
  17. package/lib/examples/blog.d.ts +2 -387
  18. package/lib/examples/blog.js +1 -353
  19. package/lib/examples/blog.live-queries.d.ts +1 -1
  20. package/lib/examples/blog.live-queries.d.ts.map +1 -1
  21. package/lib/examples/blog.live-queries.js +1 -1
  22. package/lib/examples/blog.live-queries.js.map +1 -1
  23. package/lib/examples/generated/collections.d.ts +7 -0
  24. package/lib/examples/generated/collections.d.ts.map +1 -0
  25. package/lib/examples/generated/collections.js +12 -0
  26. package/lib/examples/generated/collections.js.map +1 -0
  27. package/lib/examples/generated/live.d.ts +2 -2
  28. package/lib/examples/generated/live.d.ts.map +1 -1
  29. package/lib/examples/generated/live.js.map +1 -1
  30. package/lib/http.d.ts +13 -0
  31. package/lib/http.d.ts.map +1 -0
  32. package/lib/http.js +29 -0
  33. package/lib/http.js.map +1 -0
  34. package/lib/index.d.ts +19 -25
  35. package/lib/index.js +9 -15
  36. package/lib/json/index.d.ts +1 -16
  37. package/lib/json/index.js +2 -132
  38. package/lib/live/LiveOntology.d.ts +114 -50
  39. package/lib/live/LiveOntology.d.ts.map +1 -1
  40. package/lib/live/LiveOntology.js +23 -103
  41. package/lib/live/LiveOntology.js.map +1 -1
  42. package/lib/live/actions/createLiveOntologyAction.d.ts +15 -16
  43. package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -1
  44. package/lib/live/actions/createLiveOntologyAction.js +3 -11
  45. package/lib/live/actions/createLiveOntologyAction.js.map +1 -1
  46. package/lib/live/actions/types.d.ts +21 -0
  47. package/lib/live/actions/types.d.ts.map +1 -0
  48. package/lib/live/attachments/createLiveOntologyAttachments.d.ts +30 -19
  49. package/lib/live/attachments/createLiveOntologyAttachments.d.ts.map +1 -1
  50. package/lib/live/attachments/createLiveOntologyAttachments.js +43 -60
  51. package/lib/live/attachments/createLiveOntologyAttachments.js.map +1 -1
  52. package/lib/live/attachments/types.d.ts +4 -3
  53. package/lib/live/index.d.ts +10 -10
  54. package/lib/live/index.js +5 -6
  55. package/lib/live/mutators/createReadTx.d.ts +5 -0
  56. package/lib/live/mutators/createReadTx.d.ts.map +1 -0
  57. package/lib/live/mutators/createReadTx.js +19 -0
  58. package/lib/live/mutators/createReadTx.js.map +1 -0
  59. package/lib/live/mutators/types.d.ts +7 -2
  60. package/lib/live/mutators/types.d.ts.map +1 -1
  61. package/lib/live/objects/types.d.ts +6 -0
  62. package/lib/live/objects/types.d.ts.map +1 -0
  63. package/lib/live/outbox/types.d.ts +24 -15
  64. package/lib/live/outbox/types.d.ts.map +1 -1
  65. package/lib/live/outbox/types.js +1 -11
  66. package/lib/live/pins.d.ts +51 -0
  67. package/lib/live/pins.d.ts.map +1 -0
  68. package/lib/live/pins.js +113 -0
  69. package/lib/live/pins.js.map +1 -0
  70. package/lib/live/storageBackend.d.ts +50 -0
  71. package/lib/live/storageBackend.d.ts.map +1 -0
  72. package/lib/live/storageBackend.js +42 -0
  73. package/lib/live/storageBackend.js.map +1 -0
  74. package/lib/local.d.ts +15 -0
  75. package/lib/local.d.ts.map +1 -0
  76. package/lib/local.js +19 -0
  77. package/lib/local.js.map +1 -0
  78. package/lib/meta/generated/collections.d.ts +7 -0
  79. package/lib/meta/generated/collections.d.ts.map +1 -0
  80. package/lib/meta/generated/collections.js +15 -0
  81. package/lib/meta/generated/collections.js.map +1 -0
  82. package/lib/meta/generated/live.d.ts +3 -3
  83. package/lib/meta/generated/live.d.ts.map +1 -1
  84. package/lib/meta/generated/live.js +2 -2
  85. package/lib/meta/generated/live.js.map +1 -1
  86. package/lib/meta/pull.d.ts +5 -9
  87. package/lib/meta/pull.d.ts.map +1 -1
  88. package/lib/meta/pull.js +5 -43
  89. package/lib/meta/pull.js.map +1 -1
  90. package/lib/query.d.ts +1 -0
  91. package/lib/query.js +2 -0
  92. package/lib/runtime/host.d.ts +35 -0
  93. package/lib/runtime/host.d.ts.map +1 -0
  94. package/lib/runtime/host.js +39 -0
  95. package/lib/runtime/host.js.map +1 -0
  96. package/lib/runtime/index.d.ts +2 -0
  97. package/lib/runtime/index.js +1 -0
  98. package/lib/runtime/live.d.ts +25 -0
  99. package/lib/runtime/live.d.ts.map +1 -0
  100. package/lib/runtime/live.js +31 -0
  101. package/lib/runtime/live.js.map +1 -0
  102. package/lib/runtime/resource.d.ts +24 -0
  103. package/lib/runtime/resource.d.ts.map +1 -0
  104. package/lib/runtime/resource.js +127 -0
  105. package/lib/runtime/resource.js.map +1 -0
  106. package/lib/runtime/transactions.d.ts +27 -0
  107. package/lib/runtime/transactions.d.ts.map +1 -0
  108. package/lib/runtime/transactions.js +188 -0
  109. package/lib/runtime/transactions.js.map +1 -0
  110. package/lib/runtime/view.d.ts +25 -0
  111. package/lib/runtime/view.d.ts.map +1 -0
  112. package/lib/runtime/view.js +256 -0
  113. package/lib/runtime/view.js.map +1 -0
  114. package/lib/tanstack/collections.d.ts +73 -0
  115. package/lib/tanstack/collections.d.ts.map +1 -0
  116. package/lib/tanstack/collections.js +495 -0
  117. package/lib/tanstack/collections.js.map +1 -0
  118. package/lib/tanstack/createLocalCollection.d.ts +14 -0
  119. package/lib/tanstack/createLocalCollection.d.ts.map +1 -0
  120. package/lib/tanstack/createLocalCollection.js +9 -0
  121. package/lib/tanstack/createLocalCollection.js.map +1 -0
  122. package/lib/tanstack/descriptors.d.ts +33 -0
  123. package/lib/tanstack/descriptors.d.ts.map +1 -0
  124. package/lib/tanstack/descriptors.js +38 -0
  125. package/lib/tanstack/descriptors.js.map +1 -0
  126. package/lib/tanstack/diagnostics.d.ts +23 -0
  127. package/lib/tanstack/diagnostics.d.ts.map +1 -0
  128. package/lib/tanstack/diagnostics.js +14 -0
  129. package/lib/tanstack/diagnostics.js.map +1 -0
  130. package/lib/tanstack/index.d.ts +6 -0
  131. package/lib/tanstack/index.js +6 -0
  132. package/lib/tanstack/localCollection.d.ts +14 -0
  133. package/lib/tanstack/localCollection.d.ts.map +1 -0
  134. package/lib/tanstack/localCollection.js +73 -0
  135. package/lib/tanstack/localCollection.js.map +1 -0
  136. package/lib/tanstack/subset.d.ts +28 -0
  137. package/lib/tanstack/subset.d.ts.map +1 -0
  138. package/lib/tanstack/subset.js +290 -0
  139. package/lib/tanstack/subset.js.map +1 -0
  140. package/lib/testing/sqlite.d.ts +40 -0
  141. package/lib/testing/sqlite.d.ts.map +1 -0
  142. package/lib/testing/sqlite.js +409 -0
  143. package/lib/testing/sqlite.js.map +1 -0
  144. package/lib/testing/sqliteBackend.d.ts +68 -0
  145. package/lib/testing/sqliteBackend.d.ts.map +1 -0
  146. package/lib/testing/sqliteBackend.js +34 -0
  147. package/lib/testing/sqliteBackend.js.map +1 -0
  148. package/lib/utils/index.d.ts +1 -8
  149. package/lib/utils/index.js +2 -5
  150. package/lib/utils/values.d.ts +1 -33
  151. package/lib/worker.d.ts +19 -0
  152. package/lib/worker.d.ts.map +1 -0
  153. package/lib/worker.js +46 -0
  154. package/lib/worker.js.map +1 -0
  155. package/package.json +54 -19
  156. package/lib/_virtual/_rolldown/runtime.js +0 -13
  157. package/lib/cli/format.d.ts +0 -4
  158. package/lib/cli/format.d.ts.map +0 -1
  159. package/lib/cli/format.js +0 -19
  160. package/lib/cli/format.js.map +0 -1
  161. package/lib/cli/generate.d.ts +0 -10
  162. package/lib/cli/generate.d.ts.map +0 -1
  163. package/lib/cli/generate.js +0 -108
  164. package/lib/cli/generate.js.map +0 -1
  165. package/lib/examples/blog.d.ts.map +0 -1
  166. package/lib/examples/blog.js.map +0 -1
  167. package/lib/generate/builders.d.ts +0 -12
  168. package/lib/generate/builders.d.ts.map +0 -1
  169. package/lib/generate/builders.js +0 -58
  170. package/lib/generate/builders.js.map +0 -1
  171. package/lib/generate/constants.d.ts +0 -5
  172. package/lib/generate/constants.d.ts.map +0 -1
  173. package/lib/generate/constants.js +0 -28
  174. package/lib/generate/constants.js.map +0 -1
  175. package/lib/generate/index.d.ts +0 -6
  176. package/lib/generate/index.js +0 -6
  177. package/lib/generate/live.d.ts +0 -12
  178. package/lib/generate/live.d.ts.map +0 -1
  179. package/lib/generate/live.js +0 -48
  180. package/lib/generate/live.js.map +0 -1
  181. package/lib/generate/ontology.d.ts +0 -8
  182. package/lib/generate/ontology.d.ts.map +0 -1
  183. package/lib/generate/ontology.js +0 -501
  184. package/lib/generate/ontology.js.map +0 -1
  185. package/lib/generate/types.d.ts +0 -17
  186. package/lib/generate/types.d.ts.map +0 -1
  187. package/lib/generate/types.js +0 -216
  188. package/lib/generate/types.js.map +0 -1
  189. package/lib/generate/utils/buildJsDocs.d.ts +0 -10
  190. package/lib/generate/utils/buildJsDocs.d.ts.map +0 -1
  191. package/lib/generate/utils/buildJsDocs.js +0 -16
  192. package/lib/generate/utils/buildJsDocs.js.map +0 -1
  193. package/lib/infer.d.ts +0 -222
  194. package/lib/infer.d.ts.map +0 -1
  195. package/lib/infer.js +0 -14
  196. package/lib/infer.js.map +0 -1
  197. package/lib/installation/createMetaOntologyConfiguration.d.ts +0 -10
  198. package/lib/installation/createMetaOntologyConfiguration.d.ts.map +0 -1
  199. package/lib/installation/createMetaOntologyConfiguration.js +0 -16
  200. package/lib/installation/createMetaOntologyConfiguration.js.map +0 -1
  201. package/lib/installation/createOntologyBackendInstallation.d.ts +0 -5
  202. package/lib/installation/createOntologyBackendInstallation.d.ts.map +0 -1
  203. package/lib/installation/createOntologyBackendInstallation.js +0 -221
  204. package/lib/installation/createOntologyBackendInstallation.js.map +0 -1
  205. package/lib/installation/index.d.ts +0 -4
  206. package/lib/installation/index.js +0 -3
  207. package/lib/installation/types.d.ts +0 -94
  208. package/lib/installation/types.d.ts.map +0 -1
  209. package/lib/ir/generated/builders.d.ts +0 -380
  210. package/lib/ir/generated/builders.d.ts.map +0 -1
  211. package/lib/ir/generated/builders.js +0 -186
  212. package/lib/ir/generated/builders.js.map +0 -1
  213. package/lib/ir/generated/constants.d.ts +0 -265
  214. package/lib/ir/generated/constants.d.ts.map +0 -1
  215. package/lib/ir/generated/constants.js +0 -165
  216. package/lib/ir/generated/constants.js.map +0 -1
  217. package/lib/ir/generated/types.d.ts +0 -416
  218. package/lib/ir/generated/types.d.ts.map +0 -1
  219. package/lib/ir/index.d.ts +0 -4
  220. package/lib/ir/index.js +0 -3
  221. package/lib/ir/schema.d.ts +0 -2246
  222. package/lib/ir/schema.d.ts.map +0 -1
  223. package/lib/ir/schema.js +0 -1187
  224. package/lib/ir/schema.js.map +0 -1
  225. package/lib/ir/validate.d.ts +0 -8
  226. package/lib/ir/validate.d.ts.map +0 -1
  227. package/lib/ir/validate.js +0 -623
  228. package/lib/ir/validate.js.map +0 -1
  229. package/lib/json/index.d.ts.map +0 -1
  230. package/lib/json/index.js.map +0 -1
  231. package/lib/lenses.d.ts +0 -21
  232. package/lib/lenses.d.ts.map +0 -1
  233. package/lib/lenses.js +0 -110
  234. package/lib/lenses.js.map +0 -1
  235. package/lib/live/OntologyBackendAdapter.d.ts +0 -100
  236. package/lib/live/OntologyBackendAdapter.d.ts.map +0 -1
  237. package/lib/live/OntologyBackendAdapter.js +0 -1
  238. package/lib/live/actions/createLiveOntologyActions.d.ts +0 -28
  239. package/lib/live/actions/createLiveOntologyActions.d.ts.map +0 -1
  240. package/lib/live/actions/createLiveOntologyActions.js +0 -139
  241. package/lib/live/actions/createLiveOntologyActions.js.map +0 -1
  242. package/lib/live/actions/prepareActionParameters.d.ts +0 -19
  243. package/lib/live/actions/prepareActionParameters.d.ts.map +0 -1
  244. package/lib/live/actions/prepareActionParameters.js +0 -213
  245. package/lib/live/actions/prepareActionParameters.js.map +0 -1
  246. package/lib/live/attachments/attachmentSources.d.ts +0 -10
  247. package/lib/live/attachments/attachmentSources.d.ts.map +0 -1
  248. package/lib/live/attachments/attachmentSources.js +0 -64
  249. package/lib/live/attachments/attachmentSources.js.map +0 -1
  250. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts +0 -5
  251. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts.map +0 -1
  252. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js +0 -6
  253. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js.map +0 -1
  254. package/lib/live/expression.d.ts +0 -23
  255. package/lib/live/expression.d.ts.map +0 -1
  256. package/lib/live/expression.js +0 -160
  257. package/lib/live/expression.js.map +0 -1
  258. package/lib/live/mutators/OntologyEdits.d.ts +0 -15
  259. package/lib/live/mutators/OntologyEdits.d.ts.map +0 -1
  260. package/lib/live/mutators/OntologyEdits.js +0 -65
  261. package/lib/live/mutators/OntologyEdits.js.map +0 -1
  262. package/lib/live/mutators/createMutatorTx.d.ts +0 -11
  263. package/lib/live/mutators/createMutatorTx.d.ts.map +0 -1
  264. package/lib/live/mutators/createMutatorTx.js +0 -61
  265. package/lib/live/mutators/createMutatorTx.js.map +0 -1
  266. package/lib/live/mutators/runOptimisticAction.d.ts +0 -19
  267. package/lib/live/mutators/runOptimisticAction.d.ts.map +0 -1
  268. package/lib/live/mutators/runOptimisticAction.js +0 -30
  269. package/lib/live/mutators/runOptimisticAction.js.map +0 -1
  270. package/lib/live/objects/OntologyObject.d.ts +0 -4
  271. package/lib/live/objects/OntologyObject.d.ts.map +0 -1
  272. package/lib/live/objects/OntologyObject.js +0 -1
  273. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts +0 -17
  274. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts.map +0 -1
  275. package/lib/live/objects/createLiveOntologyObjectCollection.js +0 -55
  276. package/lib/live/objects/createLiveOntologyObjectCollection.js.map +0 -1
  277. package/lib/live/objects/ontologyObjectCollectionId.d.ts +0 -4
  278. package/lib/live/objects/ontologyObjectCollectionId.d.ts.map +0 -1
  279. package/lib/live/objects/ontologyObjectCollectionId.js +0 -8
  280. package/lib/live/objects/ontologyObjectCollectionId.js.map +0 -1
  281. package/lib/live/outbox/createOntologyOutbox.d.ts +0 -23
  282. package/lib/live/outbox/createOntologyOutbox.d.ts.map +0 -1
  283. package/lib/live/outbox/createOntologyOutbox.js +0 -292
  284. package/lib/live/outbox/createOntologyOutbox.js.map +0 -1
  285. package/lib/live/outbox/leaderExecutor.d.ts +0 -20
  286. package/lib/live/outbox/leaderExecutor.d.ts.map +0 -1
  287. package/lib/live/outbox/leaderExecutor.js +0 -130
  288. package/lib/live/outbox/leaderExecutor.js.map +0 -1
  289. package/lib/live/outbox/outboxService.d.ts +0 -7
  290. package/lib/live/outbox/outboxService.d.ts.map +0 -1
  291. package/lib/live/outbox/outboxService.js +0 -68
  292. package/lib/live/outbox/outboxService.js.map +0 -1
  293. package/lib/live/outbox/projectionManager.d.ts +0 -31
  294. package/lib/live/outbox/projectionManager.d.ts.map +0 -1
  295. package/lib/live/outbox/projectionManager.js +0 -127
  296. package/lib/live/outbox/projectionManager.js.map +0 -1
  297. package/lib/live/outbox/repository.d.ts +0 -31
  298. package/lib/live/outbox/repository.d.ts.map +0 -1
  299. package/lib/live/outbox/repository.js +0 -196
  300. package/lib/live/outbox/repository.js.map +0 -1
  301. package/lib/live/outbox/service.d.ts +0 -61
  302. package/lib/live/outbox/service.d.ts.map +0 -1
  303. package/lib/live/outbox/service.js +0 -6
  304. package/lib/live/outbox/service.js.map +0 -1
  305. package/lib/live/outbox/types.js.map +0 -1
  306. package/lib/live/waitForCollectionReady.d.ts +0 -5
  307. package/lib/live/waitForCollectionReady.d.ts.map +0 -1
  308. package/lib/live/waitForCollectionReady.js +0 -49
  309. package/lib/live/waitForCollectionReady.js.map +0 -1
  310. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts +0 -7
  311. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts.map +0 -1
  312. package/lib/meta/createLocalMetaOntologyBackendAdapter.js +0 -44
  313. package/lib/meta/createLocalMetaOntologyBackendAdapter.js.map +0 -1
  314. package/lib/meta/generated/constants.d.ts +0 -265
  315. package/lib/meta/generated/constants.d.ts.map +0 -1
  316. package/lib/meta/generated/constants.js +0 -165
  317. package/lib/meta/generated/constants.js.map +0 -1
  318. package/lib/meta/generated/types.d.ts +0 -417
  319. package/lib/meta/generated/types.d.ts.map +0 -1
  320. package/lib/meta/generated/types.js +0 -1
  321. package/lib/meta/ontology.d.ts +0 -26
  322. package/lib/meta/ontology.d.ts.map +0 -1
  323. package/lib/meta/ontology.js +0 -111
  324. package/lib/meta/ontology.js.map +0 -1
  325. package/lib/utils/links.d.ts +0 -49
  326. package/lib/utils/links.d.ts.map +0 -1
  327. package/lib/utils/links.js +0 -13
  328. package/lib/utils/links.js.map +0 -1
  329. package/lib/utils/paths.d.ts +0 -6
  330. package/lib/utils/paths.d.ts.map +0 -1
  331. package/lib/utils/paths.js +0 -42
  332. package/lib/utils/paths.js.map +0 -1
  333. package/lib/utils/provide.d.ts +0 -4
  334. package/lib/utils/provide.d.ts.map +0 -1
  335. package/lib/utils/provide.js +0 -9
  336. package/lib/utils/provide.js.map +0 -1
  337. package/lib/utils/targets.d.ts +0 -37
  338. package/lib/utils/targets.d.ts.map +0 -1
  339. package/lib/utils/targets.js +0 -1
  340. package/lib/utils/typeNames.d.ts +0 -28
  341. package/lib/utils/typeNames.d.ts.map +0 -1
  342. package/lib/utils/typeNames.js +0 -1
  343. package/lib/utils/types.d.ts +0 -12
  344. package/lib/utils/types.d.ts.map +0 -1
  345. package/lib/utils/types.js +0 -48
  346. package/lib/utils/types.js.map +0 -1
  347. package/lib/utils/uncertain.d.ts +0 -11
  348. package/lib/utils/uncertain.d.ts.map +0 -1
  349. package/lib/utils/uncertain.js +0 -14
  350. package/lib/utils/uncertain.js.map +0 -1
  351. package/lib/utils/validation.d.ts +0 -7
  352. package/lib/utils/validation.d.ts.map +0 -1
  353. package/lib/utils/validation.js +0 -1
  354. package/lib/utils/values.d.ts.map +0 -1
  355. /package/lib/{installation → live/actions}/types.js +0 -0
  356. /package/lib/{ir/generated → live/objects}/types.js +0 -0
package/lib/infer.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"infer.js","names":[],"sources":["../src/infer.ts"],"sourcesContent":["import type { ImageMediaType, NamedTypeDef, OntologyIR, TypeDef } from \"./ir/generated/types.js\";\nimport type { OntologyDefinition } from \"./live/LiveOntology.js\";\nimport type {\n ActionTypeName,\n ActionTypes,\n ArrayElement,\n NamedTypes,\n ObjectTypeName,\n ObjectTypes,\n QueryFunctionTypeName,\n QueryFunctionTypes,\n} from \"./utils/typeNames.js\";\nimport type {\n attachment,\n date,\n double,\n float,\n geopoint,\n integer,\n Result,\n timestamp,\n} from \"./utils/values.js\";\n\nexport type ReadonlyDeep<T> = T extends (...args: never[]) => unknown\n ? T\n : T extends readonly (infer Element)[]\n ? readonly ReadonlyDeep<Element>[]\n : T extends object\n ? { readonly [K in keyof T]: ReadonlyDeep<T[K]> }\n : T;\n\nexport type MutableDeep<T> = T extends (...args: never[]) => unknown\n ? T\n : T extends readonly (infer Element)[]\n ? Array<MutableDeep<Element>>\n : T extends object\n ? { -readonly [K in keyof T]: MutableDeep<T[K]> }\n : T;\n\ntype FlattenObject<T> = { [K in keyof T]: T[K] } & {};\n\ntype TypeKind<Type> = Type extends { readonly kind: infer Kind extends string } ? Kind : never;\n\ntype TypeValue<Type> = Type extends { readonly value: infer Value } ? Value : never;\n\ntype NamedTypeByName<Ontology, Name extends PropertyKey> = Extract<\n NamedTypes<Ontology>,\n { readonly name: Name }\n>;\n\ntype ObjectTypeByName<Ontology, Name extends PropertyKey> = Extract<\n ObjectTypes<Ontology>,\n { readonly name: Name }\n>;\n\ntype ActionTypeByName<Ontology, Name extends PropertyKey> = Extract<\n ActionTypes<Ontology>,\n { readonly name: Name }\n>;\n\ntype QueryFunctionTypeByName<Ontology, Name extends PropertyKey> = Extract<\n QueryFunctionTypes<Ontology>,\n { readonly name: Name }\n>;\n\ntype ObjectTypeProperties<ObjectType> = ObjectType extends { readonly properties: infer Properties }\n ? Properties\n : never;\n\ntype InferString<Value> = Value extends { readonly constraint?: infer Constraint }\n ? NonNullable<Constraint> extends {\n readonly kind: \"enum\";\n readonly value: { readonly options: infer Options };\n }\n ? ArrayElement<Options> extends { readonly value: infer OptionValue extends string }\n ? OptionValue\n : never\n : string\n : string;\n\ntype StructField<Fields> = ArrayElement<Fields>;\n\ntype FieldName<Field> = Field extends { readonly name: infer Name extends PropertyKey } ? Name : never;\n\ntype FieldByName<Fields, Name extends PropertyKey> = Extract<StructField<Fields>, { readonly name: Name }>;\n\ntype FieldType<Fields, Name extends PropertyKey> =\n FieldByName<Fields, Name> extends { readonly type: infer Type } ? Type : never;\n\ntype RequiredFieldNames<Fields> =\n StructField<Fields> extends infer Field\n ? Field extends { readonly type: infer Type }\n ? Type extends { readonly kind: \"optional\" }\n ? never\n : FieldName<Field>\n : never\n : never;\n\ntype OptionalFieldNames<Fields> =\n StructField<Fields> extends infer Field\n ? Field extends { readonly type: infer Type }\n ? Type extends { readonly kind: \"optional\" }\n ? FieldName<Field>\n : never\n : never\n : never;\n\ntype InferStructFields<Fields, Ontology> =\n StructField<Fields> extends never\n ? Record<never, never>\n : FlattenObject<\n {\n [Name in RequiredFieldNames<Fields>]: InferType<FieldType<Fields, Name>, Ontology>;\n } & {\n [Name in OptionalFieldNames<Fields>]?: TypeValue<FieldType<Fields, Name>> extends {\n readonly type: infer Inner;\n }\n ? InferType<Inner, Ontology>\n : never;\n }\n >;\n\ntype InferUnionVariant<Variant, Ontology> = Variant extends {\n readonly name: infer Name extends string;\n readonly type: infer Type;\n}\n ? { kind: Name; value: InferType<Type, Ontology> }\n : never;\n\ntype ObjectPrimaryKey<ObjectType> = ObjectType extends {\n readonly primaryKey: infer PrimaryKey extends PropertyKey;\n}\n ? PrimaryKey\n : never;\n\ntype InferObjectReference<Value, Ontology> = Value extends {\n readonly objectType: infer Name extends PropertyKey;\n}\n ? InferType<\n FieldType<\n ObjectTypeProperties<ObjectTypeByName<Ontology, Name>>,\n ObjectPrimaryKey<ObjectTypeByName<Ontology, Name>>\n >,\n Ontology\n >\n : never;\n\ntype InferImageAttachment<Value> = Value extends { readonly mediaTypes: infer MediaTypes }\n ? attachment<Extract<ArrayElement<MediaTypes>, string>>\n : attachment<ImageMediaType>;\n\ntype InferAttachment<Value> = Value extends {\n readonly constraint: {\n readonly content: infer Content;\n };\n}\n ? Content extends {\n readonly kind: \"image\";\n readonly value: infer ImageConstraint;\n }\n ? InferImageAttachment<ImageConstraint>\n : attachment\n : attachment;\n\ntype InferByKind<Type, Ontology> = {\n string: InferString<TypeValue<Type>>;\n boolean: boolean;\n integer: integer;\n float: float;\n double: double;\n date: date;\n timestamp: timestamp;\n geopoint: geopoint;\n attachment: InferAttachment<TypeValue<Type>>;\n objectReference: InferObjectReference<TypeValue<Type>, Ontology>;\n unknown: unknown;\n list: TypeValue<Type> extends { readonly elementType: infer ElementType }\n ? Array<InferType<ElementType, Ontology>>\n : never;\n map: TypeValue<Type> extends { readonly valueType: infer ValueType }\n ? Record<string, InferType<ValueType, Ontology>>\n : never;\n struct: TypeValue<Type> extends { readonly fields: infer Fields }\n ? InferStructFields<Fields, Ontology>\n : never;\n union: TypeValue<Type> extends { readonly variants: infer Variants }\n ? InferUnionVariant<ArrayElement<Variants>, Ontology>\n : never;\n optional: TypeValue<Type> extends { readonly type: infer Inner }\n ? InferType<Inner, Ontology> | undefined\n : never;\n result: TypeValue<Type> extends { readonly okType: infer OkType; readonly errType: infer ErrType }\n ? Result<InferType<OkType, Ontology>, InferType<ErrType, Ontology>>\n : never;\n ref: TypeValue<Type> extends { readonly name: infer Name extends PropertyKey }\n ? InferNamedTypeByName<Ontology, Name>\n : never;\n};\n\nexport type InferType<Type, Ontology = never> =\n TypeKind<Type> extends keyof InferByKind<Type, Ontology>\n ? InferByKind<Type, Ontology>[TypeKind<Type>]\n : never;\n\ntype InferNamedTypeByName<Ontology, Name extends PropertyKey> =\n NamedTypeByName<Ontology, Name> extends { readonly type: infer Type }\n ? InferType<Type, Ontology>\n : ObjectTypeByName<Ontology, Name> extends { readonly properties: infer Properties }\n ? InferStructFields<Properties, Ontology>\n : never;\n\nexport type InferNamedType<Type, Ontology = never> = Type extends { readonly type: infer TypeDef }\n ? InferType<TypeDef, Ontology>\n : never;\n\ntype InferObjectType<ObjectType, Ontology> = ObjectType extends { readonly properties: infer Properties }\n ? InferStructFields<Properties, Ontology>\n : never;\n\ntype ActionParameters<ActionType> = ActionType extends { readonly parameters: infer Parameters }\n ? Parameters\n : never;\n\ntype ActionParameter<Parameters> = ArrayElement<Parameters>;\n\ntype ActionParameterName<Parameter> = Parameter extends { readonly name: infer Name extends PropertyKey }\n ? Name\n : never;\n\ntype ActionParameterByName<Parameters, Name extends PropertyKey> = Extract<\n ActionParameter<Parameters>,\n { readonly name: Name }\n>;\n\ntype ActionParameterType<Parameters, Name extends PropertyKey> =\n ActionParameterByName<Parameters, Name> extends { readonly type: infer Type } ? Type : never;\n\ntype RequiredActionParameterNames<Parameters> =\n ActionParameter<Parameters> extends infer Parameter\n ? Parameter extends { readonly type: infer Type }\n ? Type extends { readonly kind: \"optional\" }\n ? never\n : Parameter extends { readonly defaultValue: unknown }\n ? never\n : ActionParameterName<Parameter>\n : never\n : never;\n\ntype OptionalActionParameterNames<Parameters> =\n ActionParameter<Parameters> extends infer Parameter\n ? Parameter extends { readonly type: infer Type }\n ? Type extends { readonly kind: \"optional\" }\n ? ActionParameterName<Parameter>\n : Parameter extends { readonly defaultValue: unknown }\n ? ActionParameterName<Parameter>\n : never\n : never\n : never;\n\ntype InferActionParameter<Parameters, Name extends PropertyKey, Ontology> =\n ActionParameterType<Parameters, Name> extends infer Type\n ? Type extends { readonly kind: \"optional\"; readonly value: { readonly type: infer Inner } }\n ? InferType<Inner, Ontology> | null\n : InferType<Type, Ontology>\n : never;\n\ntype InferActionParameters<Parameters, Ontology> =\n ActionParameter<Parameters> extends never\n ? Record<never, never>\n : FlattenObject<\n {\n [Name in RequiredActionParameterNames<Parameters>]: InferActionParameter<\n Parameters,\n Name,\n Ontology\n >;\n } & {\n [Name in OptionalActionParameterNames<Parameters>]?: InferActionParameter<\n Parameters,\n Name,\n Ontology\n >;\n }\n >;\n\ntype QueryParameters<QueryFunctionType> = QueryFunctionType extends { readonly parameters: infer Parameters }\n ? Parameters\n : never;\n\ntype QueryReturnType<QueryFunctionType> = QueryFunctionType extends { readonly returnType: infer ReturnType }\n ? ReturnType\n : never;\n\ntype QueryParameter<Parameters> = ArrayElement<Parameters>;\n\ntype QueryParameterName<Parameter> = Parameter extends { readonly name: infer Name extends PropertyKey }\n ? Name\n : never;\n\ntype QueryParameterByName<Parameters, Name extends PropertyKey> = Extract<\n QueryParameter<Parameters>,\n { readonly name: Name }\n>;\n\ntype QueryParameterType<Parameters, Name extends PropertyKey> =\n QueryParameterByName<Parameters, Name> extends { readonly type: infer Type } ? Type : never;\n\ntype RequiredQueryParameterNames<Parameters> =\n QueryParameter<Parameters> extends infer Parameter\n ? Parameter extends { readonly type: infer Type }\n ? Type extends { readonly kind: \"optional\" }\n ? never\n : QueryParameterName<Parameter>\n : never\n : never;\n\ntype OptionalQueryParameterNames<Parameters> =\n QueryParameter<Parameters> extends infer Parameter\n ? Parameter extends { readonly type: infer Type }\n ? Type extends { readonly kind: \"optional\" }\n ? QueryParameterName<Parameter>\n : never\n : never\n : never;\n\ntype InferQueryParameter<Parameters, Name extends PropertyKey, Ontology> =\n QueryParameterType<Parameters, Name> extends infer Type\n ? Type extends { readonly kind: \"optional\"; readonly value: { readonly type: infer Inner } }\n ? InferType<Inner, Ontology>\n : InferType<Type, Ontology>\n : never;\n\ntype InferQueryParameters<Parameters, Ontology> =\n QueryParameter<Parameters> extends never\n ? Record<never, never>\n : FlattenObject<\n {\n [Name in RequiredQueryParameterNames<Parameters>]: InferQueryParameter<\n Parameters,\n Name,\n Ontology\n >;\n } & {\n [Name in OptionalQueryParameterNames<Parameters>]?: InferQueryParameter<\n Parameters,\n Name,\n Ontology\n >;\n }\n >;\n\nexport type InferOntology<Ontology> = {\n context: Ontology extends { readonly contextType: infer ContextType }\n ? InferType<ContextType, Ontology>\n : Record<string, unknown>;\n objectTypes: {\n [Name in ObjectTypeName<Ontology>]: InferObjectType<ObjectTypeByName<Ontology, Name>, Ontology>;\n };\n actionTypes: {\n [Name in ActionTypeName<Ontology>]: {\n parameters: InferActionParameters<ActionParameters<ActionTypeByName<Ontology, Name>>, Ontology>;\n };\n };\n queryFunctionTypes: {\n [Name in QueryFunctionTypeName<Ontology>]: {\n parameters: InferQueryParameters<\n QueryParameters<QueryFunctionTypeByName<Ontology, Name>>,\n Ontology\n >;\n returnType: InferType<QueryReturnType<QueryFunctionTypeByName<Ontology, Name>>, Ontology>;\n };\n };\n} & OntologyDefinition;\n\nexport type ConstOntologyIR = ReadonlyDeep<OntologyIR>;\nexport type ConstTypeDef = ReadonlyDeep<TypeDef>;\nexport type ConstNamedTypeDef = ReadonlyDeep<NamedTypeDef>;\n\nexport type Infer<\n Input extends ConstOntologyIR | ConstNamedTypeDef | ConstTypeDef,\n Ontology extends ConstOntologyIR = Extract<Input, ConstOntologyIR>,\n> = Input extends ConstOntologyIR\n ? InferOntology<Input>\n : Input extends ConstNamedTypeDef\n ? InferNamedType<Input, Ontology>\n : Input extends ConstTypeDef\n ? InferType<Input, Ontology>\n : never;\n\nexport function defineOntology<const Ontology extends ConstOntologyIR>(\n ontology: Ontology\n): MutableDeep<Ontology> {\n return ontology as MutableDeep<Ontology>;\n}\n\nexport function defineType<const Type extends ConstTypeDef>(type: Type): MutableDeep<Type> {\n return type as MutableDeep<Type>;\n}\n\nexport function defineNamedType<const Type extends ConstNamedTypeDef>(type: Type): MutableDeep<Type> {\n return type as MutableDeep<Type>;\n}\n"],"mappings":";AAqYA,SAAgB,eACZ,UACqB;CACrB,OAAO;AACX;AAEA,SAAgB,WAA4C,MAA+B;CACvF,OAAO;AACX;AAEA,SAAgB,gBAAsD,MAA+B;CACjG,OAAO;AACX"}
@@ -1,10 +0,0 @@
1
- import { OntologyIR } from "../ir/generated/types.js";
2
- import "../ir/index.js";
3
- import { OntologyConfiguration } from "./types.js";
4
- //#region src/installation/createMetaOntologyConfiguration.d.ts
5
- export type MetaOntologyConfigurationOptions = Omit<OntologyConfiguration, "ir"> | {
6
- ir: OntologyIR;
7
- };
8
- export declare function createMetaOntologyConfiguration(options: MetaOntologyConfigurationOptions): OntologyConfiguration;
9
- //#endregion
10
- //# sourceMappingURL=createMetaOntologyConfiguration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMetaOntologyConfiguration.d.ts","names":[],"sources":["../../src/installation/createMetaOntologyConfiguration.ts"],"mappings":";;;;YAKY,mCAAmC,KAAK;EAAiC,IAAI;;wBAEzE,gCACZ,SAAS,mCACV"}
@@ -1,16 +0,0 @@
1
- import { createLocalMetaOntologyBackendAdapter } from "../meta/createLocalMetaOntologyBackendAdapter.js";
2
- import ontology_default from "../meta/ontology.js";
3
- //#region src/installation/createMetaOntologyConfiguration.ts
4
- function createMetaOntologyConfiguration(options) {
5
- return {
6
- ..."ir" in options ? {
7
- backend: () => createLocalMetaOntologyBackendAdapter(options.ir),
8
- persistObjects: false
9
- } : options,
10
- ir: ontology_default
11
- };
12
- }
13
- //#endregion
14
- export { createMetaOntologyConfiguration };
15
-
16
- //# sourceMappingURL=createMetaOntologyConfiguration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMetaOntologyConfiguration.js","names":["metaOntology"],"sources":["../../src/installation/createMetaOntologyConfiguration.ts"],"sourcesContent":["import { createLocalMetaOntologyBackendAdapter } from \"../meta/createLocalMetaOntologyBackendAdapter.js\";\nimport metaOntology from \"../meta/ontology.js\";\nimport type { OntologyIR } from \"../ir/index.js\";\nimport type { OntologyConfiguration } from \"./types.js\";\n\nexport type MetaOntologyConfigurationOptions = Omit<OntologyConfiguration, \"ir\"> | { ir: OntologyIR };\n\nexport function createMetaOntologyConfiguration(\n options: MetaOntologyConfigurationOptions\n): OntologyConfiguration {\n return {\n ...(\"ir\" in options\n ? {\n backend: () => createLocalMetaOntologyBackendAdapter(options.ir),\n persistObjects: false,\n }\n : options),\n ir: metaOntology,\n };\n}\n"],"mappings":";;;AAOA,SAAgB,gCACZ,SACqB;CACrB,OAAO;EACH,GAAI,QAAQ,UACN;GACI,eAAe,sCAAsC,QAAQ,EAAE;GAC/D,gBAAgB;EACpB,IACA;EACN,IAAIA;CACR;AACJ"}
@@ -1,5 +0,0 @@
1
- import { CreateOntologyBackendInstallationOptions, OntologyBackendInstallation } from "./types.js";
2
- //#region src/installation/createOntologyBackendInstallation.d.ts
3
- export declare function createOntologyBackendInstallation<AuthenticationClient extends object = object>(options: CreateOntologyBackendInstallationOptions<AuthenticationClient>): Promise<OntologyBackendInstallation<AuthenticationClient>>;
4
- //#endregion
5
- //# sourceMappingURL=createOntologyBackendInstallation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createOntologyBackendInstallation.d.ts","names":[],"sources":["../../src/installation/createOntologyBackendInstallation.ts"],"mappings":";;wBAqDsB,kCAAkC,8CACpD,SAAS,yCAAyC,wBACnD,QAAQ,4BAA4B"}
@@ -1,221 +0,0 @@
1
- import { createLiveOntology } from "../live/LiveOntology.js";
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
6
- function scope(value) {
7
- return encodeURIComponent(value);
8
- }
9
- function ontologyKey(userId, ontologyId) {
10
- return `${scope(userId)}:${scope(ontologyId)}`;
11
- }
12
- function metaOntologyKey(userId, ontologyId) {
13
- return `${ontologyKey(userId, ontologyId)}:meta`;
14
- }
15
- function liveOntologyNamespace(installationId, ontologyId) {
16
- return `${scope(installationId)}:${scope(ontologyId)}`;
17
- }
18
- function isActiveConnection(connection) {
19
- return connection?.state.status === "active";
20
- }
21
- function routeFor(routes, ontologyId) {
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];
25
- }
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
- };
217
- }
218
- //#endregion
219
- export { createOntologyBackendInstallation };
220
-
221
- //# sourceMappingURL=createOntologyBackendInstallation.js.map
@@ -1 +0,0 @@
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 +0,0 @@
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 +0,0 @@
1
- import { createMetaOntologyConfiguration } from "./createMetaOntologyConfiguration.js";
2
- import { createOntologyBackendInstallation } from "./createOntologyBackendInstallation.js";
3
- export { createMetaOntologyConfiguration, createOntologyBackendInstallation };
@@ -1,94 +0,0 @@
1
- import { OntologyIR } from "../ir/generated/types.js";
2
- import "../ir/index.js";
3
- import { OntologyBackendAdapterProvider } from "../live/OntologyBackendAdapter.js";
4
- import { CreateLiveOntologyOpts, LiveOntology, OntologyDefinition } from "../live/LiveOntology.js";
5
- import { MetaOntology } from "../meta/generated/types.js";
6
- import { RuntimeAdapterProvider } from "@party-stack/runtime";
7
- import { Collection } from "@tanstack/db";
8
- import { BackendConnectionAdapterProvider, Connection, ConnectionEgress } from "@party-stack/connections";
9
- //#region src/installation/types.d.ts
10
- export interface ConfigureOntologyOptions {
11
- connection: Connection<"active">;
12
- egress: ConnectionEgress;
13
- ontologyId: string;
14
- }
15
- export interface OntologyConfiguration {
16
- ir: OntologyIR;
17
- backend: OntologyBackendAdapterProvider;
18
- context?: Record<string, unknown>;
19
- persistObjects?: boolean;
20
- writes?: CreateLiveOntologyOpts["writes"];
21
- }
22
- export interface OntologyRoute {
23
- matches(ontologyId: string): boolean;
24
- configure?(options: ConfigureOntologyOptions): OntologyConfiguration | Promise<OntologyConfiguration>;
25
- configureMeta?(options: ConfigureOntologyOptions): OntologyConfiguration | Promise<OntologyConfiguration>;
26
- }
27
- export interface CreateOntologyBackendInstallationOptions<AuthenticationClient extends object = object> {
28
- /**
29
- * Stable identity for one deployed backend and authentication domain.
30
- * Every ontology route must be usable through this installation's
31
- * connections and egress.
32
- */
33
- installationId: string;
34
- connections: BackendConnectionAdapterProvider<AuthenticationClient>;
35
- runtime: RuntimeAdapterProvider;
36
- routes: readonly OntologyRoute[];
37
- createContext?: (userId: string, ontologyId: string) => Record<string, unknown>;
38
- }
39
- export interface OntologyBackendInstallation<AuthenticationClient extends object = object> {
40
- readonly installationId: string;
41
- readonly authentication: AuthenticationClient;
42
- readonly connections: Collection<Connection, string>;
43
- /**
44
- * Opens or returns the cached LiveOntology for one user and ontology ID.
45
- * The user must have an active connection to this installation.
46
- */
47
- openOntology<Ontology extends OntologyDefinition = OntologyDefinition>(options: {
48
- userId: string;
49
- ontologyId: string;
50
- }): Promise<LiveOntology<Ontology>>;
51
- openMetaOntology(options: {
52
- userId: string;
53
- ontologyId: string;
54
- }): Promise<LiveOntology<MetaOntology>>;
55
- closeMetaOntology(options: {
56
- userId: string;
57
- ontologyId: string;
58
- }): Promise<void>;
59
- /**
60
- * Releases one cached LiveOntology and its process-local resources without
61
- * disconnecting the user's backend session or deleting durable local data
62
- * and pending writes.
63
- */
64
- closeOntology(options: {
65
- userId: string;
66
- ontologyId: string;
67
- }): Promise<void>;
68
- /**
69
- * Logs the user out of this backend installation.
70
- *
71
- * Closes every LiveOntology using the user's connection, then delegates to
72
- * the connection session to revoke, sign out, or deactivate its
73
- * credentials. The persisted Connection remains inactive. Local ontology
74
- * data and pending writes are retained.
75
- */
76
- disconnect(userId: string): Promise<void>;
77
- /**
78
- * Logs the user out and removes the persisted Connection from this
79
- * installation. Every indexed local ontology partition for the user,
80
- * including durable objects, blobs, and pending writes, is destroyed.
81
- * Remote backend data and provider accounts are not deleted.
82
- */
83
- forget(userId: string): Promise<void>;
84
- /**
85
- * Releases every open LiveOntology and all installation process resources.
86
- *
87
- * This does not revoke credentials, mark connections inactive, or delete
88
- * durable local data. A later installation instance may restore persisted
89
- * connections and reopen ontologies.
90
- */
91
- cleanup(): Promise<void>;
92
- }
93
- //#endregion
94
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/installation/types.ts"],"mappings":";;;;;;;;;iBAYiB;EACb,YAAY;EACZ,QAAQ;EACR;;iBAGa;EACb,IAAI;EACJ,SAAS;EACT,UAAU;EACV;EACA,SAAS;;iBAGI;EACb,QAAQ;EACR,WAAW,SAAS,2BAA2B,wBAAwB,QAAQ;EAC/E,eAAe,SAAS,2BAA2B,wBAAwB,QAAQ;;iBAGtE,yCAAyC;;;;;;EAMtD;EACA,aAAa,iCAAiC;EAC9C,SAAS;EACT,iBAAiB;EACjB,iBAAiB,gBAAgB,uBAAuB;;iBAG3C,4BAA4B;WAChC;WACA,gBAAgB;WAChB,aAAa,WAAW;;;;;EAMjC,aAAa,iBAAiB,qBAAqB,oBAAoB;IACnE;IACA;MACA,QAAQ,aAAa;EACzB,iBAAiB;IAAW;IAAgB;MAAuB,QAAQ,aAAa;EACxF,kBAAkB;IAAW;IAAgB;MAAuB;;;;;;EAMpE,cAAc;IAAW;IAAgB;MAAuB;;;;;;;;;EAShE,WAAW,iBAAiB;;;;;;;EAO5B,OAAO,iBAAiB;;;;;;;;EAQxB,WAAW"}