@party-stack/ontology 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/lib/OntologyPullConfig.d.ts +15 -13
  2. package/lib/OntologyPullConfig.d.ts.map +1 -1
  3. package/lib/OntologyPullConfig.js +0 -1
  4. package/lib/cli/format.d.ts +4 -0
  5. package/lib/cli/format.d.ts.map +1 -0
  6. package/lib/cli/format.js +19 -0
  7. package/lib/cli/format.js.map +1 -0
  8. package/lib/cli/generate.d.ts +6 -5
  9. package/lib/cli/generate.d.ts.map +1 -1
  10. package/lib/cli/generate.js +86 -110
  11. package/lib/cli/generate.js.map +1 -1
  12. package/lib/cli/index.d.ts +1 -3
  13. package/lib/cli/index.js +42 -59
  14. package/lib/cli/index.js.map +1 -1
  15. package/lib/cli/pull.d.ts +3 -1
  16. package/lib/cli/pull.d.ts.map +1 -1
  17. package/lib/cli/pull.js +42 -60
  18. package/lib/cli/pull.js.map +1 -1
  19. package/lib/examples/blog.d.ts +347 -345
  20. package/lib/examples/blog.d.ts.map +1 -1
  21. package/lib/examples/blog.js +350 -337
  22. package/lib/examples/blog.js.map +1 -1
  23. package/lib/examples/blog.live-queries.d.ts +8 -3
  24. package/lib/examples/blog.live-queries.d.ts.map +1 -1
  25. package/lib/examples/blog.live-queries.js +28 -44
  26. package/lib/examples/blog.live-queries.js.map +1 -1
  27. package/lib/examples/generated/constants.d.ts +1 -2
  28. package/lib/examples/generated/constants.js +0 -2
  29. package/lib/examples/generated/live.d.ts +5 -3
  30. package/lib/examples/generated/live.d.ts.map +1 -1
  31. package/lib/examples/generated/live.js +12 -8
  32. package/lib/examples/generated/live.js.map +1 -1
  33. package/lib/examples/generated/types.d.ts +52 -50
  34. package/lib/examples/generated/types.d.ts.map +1 -1
  35. package/lib/examples/generated/types.js +0 -2
  36. package/lib/generate/builders.d.ts +8 -5
  37. package/lib/generate/builders.d.ts.map +1 -1
  38. package/lib/generate/builders.js +53 -55
  39. package/lib/generate/builders.js.map +1 -1
  40. package/lib/generate/constants.d.ts +3 -1
  41. package/lib/generate/constants.d.ts.map +1 -1
  42. package/lib/generate/constants.js +23 -26
  43. package/lib/generate/constants.js.map +1 -1
  44. package/lib/generate/index.d.ts +6 -6
  45. package/lib/generate/index.js +6 -6
  46. package/lib/generate/live.d.ts +8 -6
  47. package/lib/generate/live.d.ts.map +1 -1
  48. package/lib/generate/live.js +43 -42
  49. package/lib/generate/live.js.map +1 -1
  50. package/lib/generate/ontology.d.ts +4 -2
  51. package/lib/generate/ontology.d.ts.map +1 -1
  52. package/lib/generate/ontology.js +453 -354
  53. package/lib/generate/ontology.js.map +1 -1
  54. package/lib/generate/types.d.ts +7 -5
  55. package/lib/generate/types.d.ts.map +1 -1
  56. package/lib/generate/types.js +190 -262
  57. package/lib/generate/types.js.map +1 -1
  58. package/lib/generate/utils/buildJsDocs.d.ts +7 -4
  59. package/lib/generate/utils/buildJsDocs.d.ts.map +1 -1
  60. package/lib/generate/utils/buildJsDocs.js +14 -10
  61. package/lib/generate/utils/buildJsDocs.js.map +1 -1
  62. package/lib/index.d.ts +30 -13
  63. package/lib/index.js +18 -10
  64. package/lib/infer.d.ts +129 -151
  65. package/lib/infer.d.ts.map +1 -1
  66. package/lib/infer.js +10 -6
  67. package/lib/infer.js.map +1 -1
  68. package/lib/installation/createMetaOntologyConfiguration.d.ts +6 -3
  69. package/lib/installation/createMetaOntologyConfiguration.d.ts.map +1 -1
  70. package/lib/installation/createMetaOntologyConfiguration.js +13 -11
  71. package/lib/installation/createMetaOntologyConfiguration.js.map +1 -1
  72. package/lib/installation/createOntologyBackendInstallation.d.ts +3 -1
  73. package/lib/installation/createOntologyBackendInstallation.d.ts.map +1 -1
  74. package/lib/installation/createOntologyBackendInstallation.js +205 -268
  75. package/lib/installation/createOntologyBackendInstallation.js.map +1 -1
  76. package/lib/installation/index.d.ts +4 -4
  77. package/lib/installation/index.js +3 -3
  78. package/lib/installation/types.d.ts +83 -80
  79. package/lib/installation/types.d.ts.map +1 -1
  80. package/lib/installation/types.js +0 -1
  81. package/lib/ir/generated/builders.d.ts +294 -382
  82. package/lib/ir/generated/builders.d.ts.map +1 -1
  83. package/lib/ir/generated/builders.js +180 -119
  84. package/lib/ir/generated/builders.js.map +1 -1
  85. package/lib/ir/generated/constants.d.ts +137 -135
  86. package/lib/ir/generated/constants.d.ts.map +1 -1
  87. package/lib/ir/generated/constants.js +162 -129
  88. package/lib/ir/generated/constants.js.map +1 -1
  89. package/lib/ir/generated/types.d.ts +236 -234
  90. package/lib/ir/generated/types.d.ts.map +1 -1
  91. package/lib/ir/generated/types.js +0 -2
  92. package/lib/ir/index.d.ts +4 -4
  93. package/lib/ir/index.js +3 -4
  94. package/lib/ir/schema.d.ts +2174 -2172
  95. package/lib/ir/schema.d.ts.map +1 -1
  96. package/lib/ir/schema.js +1184 -1343
  97. package/lib/ir/schema.js.map +1 -1
  98. package/lib/ir/validate.d.ts +5 -3
  99. package/lib/ir/validate.d.ts.map +1 -1
  100. package/lib/ir/validate.js +589 -707
  101. package/lib/ir/validate.js.map +1 -1
  102. package/lib/json/index.d.ts +10 -8
  103. package/lib/json/index.d.ts.map +1 -1
  104. package/lib/json/index.js +101 -135
  105. package/lib/json/index.js.map +1 -1
  106. package/lib/lenses.d.ts +7 -4
  107. package/lib/lenses.d.ts.map +1 -1
  108. package/lib/lenses.js +96 -132
  109. package/lib/lenses.js.map +1 -1
  110. package/lib/live/LiveOntology.d.ts +55 -60
  111. package/lib/live/LiveOntology.d.ts.map +1 -1
  112. package/lib/live/LiveOntology.js +98 -124
  113. package/lib/live/LiveOntology.js.map +1 -1
  114. package/lib/live/OntologyBackendAdapter.d.ts +84 -77
  115. package/lib/live/OntologyBackendAdapter.d.ts.map +1 -1
  116. package/lib/live/OntologyBackendAdapter.js +0 -1
  117. package/lib/live/actions/createLiveOntologyAction.d.ts +27 -24
  118. package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -1
  119. package/lib/live/actions/createLiveOntologyAction.js +24 -21
  120. package/lib/live/actions/createLiveOntologyAction.js.map +1 -1
  121. package/lib/live/actions/createLiveOntologyActions.d.ts +23 -20
  122. package/lib/live/actions/createLiveOntologyActions.d.ts.map +1 -1
  123. package/lib/live/actions/createLiveOntologyActions.js +131 -161
  124. package/lib/live/actions/createLiveOntologyActions.js.map +1 -1
  125. package/lib/live/actions/prepareActionParameters.d.ts +14 -11
  126. package/lib/live/actions/prepareActionParameters.d.ts.map +1 -1
  127. package/lib/live/actions/prepareActionParameters.js +190 -228
  128. package/lib/live/actions/prepareActionParameters.js.map +1 -1
  129. package/lib/live/attachments/attachmentSources.d.ts +7 -4
  130. package/lib/live/attachments/attachmentSources.d.ts.map +1 -1
  131. package/lib/live/attachments/attachmentSources.js +55 -71
  132. package/lib/live/attachments/attachmentSources.js.map +1 -1
  133. package/lib/live/attachments/createLiveOntologyAttachments.d.ts +47 -44
  134. package/lib/live/attachments/createLiveOntologyAttachments.d.ts.map +1 -1
  135. package/lib/live/attachments/createLiveOntologyAttachments.js +65 -83
  136. package/lib/live/attachments/createLiveOntologyAttachments.js.map +1 -1
  137. package/lib/live/attachments/types.d.ts +10 -8
  138. package/lib/live/attachments/types.d.ts.map +1 -1
  139. package/lib/live/attachments/types.js +0 -1
  140. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts +3 -1
  141. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts.map +1 -1
  142. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js +5 -3
  143. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js.map +1 -1
  144. package/lib/live/expression.d.ts +16 -13
  145. package/lib/live/expression.d.ts.map +1 -1
  146. package/lib/live/expression.js +142 -223
  147. package/lib/live/expression.js.map +1 -1
  148. package/lib/live/index.d.ts +12 -9
  149. package/lib/live/index.js +6 -8
  150. package/lib/live/mutators/OntologyEdits.d.ts +12 -9
  151. package/lib/live/mutators/OntologyEdits.d.ts.map +1 -1
  152. package/lib/live/mutators/OntologyEdits.js +57 -74
  153. package/lib/live/mutators/OntologyEdits.js.map +1 -1
  154. package/lib/live/mutators/createMutatorTx.d.ts +7 -5
  155. package/lib/live/mutators/createMutatorTx.d.ts.map +1 -1
  156. package/lib/live/mutators/createMutatorTx.js +53 -69
  157. package/lib/live/mutators/createMutatorTx.js.map +1 -1
  158. package/lib/live/mutators/runOptimisticAction.d.ts +16 -13
  159. package/lib/live/mutators/runOptimisticAction.d.ts.map +1 -1
  160. package/lib/live/mutators/runOptimisticAction.js +26 -26
  161. package/lib/live/mutators/runOptimisticAction.js.map +1 -1
  162. package/lib/live/mutators/types.d.ts +18 -16
  163. package/lib/live/mutators/types.d.ts.map +1 -1
  164. package/lib/live/mutators/types.js +0 -1
  165. package/lib/live/objects/OntologyObject.d.ts +2 -0
  166. package/lib/live/objects/OntologyObject.d.ts.map +1 -1
  167. package/lib/live/objects/OntologyObject.js +0 -1
  168. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts +14 -11
  169. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts.map +1 -1
  170. package/lib/live/objects/createLiveOntologyObjectCollection.js +62 -49
  171. package/lib/live/objects/createLiveOntologyObjectCollection.js.map +1 -1
  172. package/lib/live/objects/ontologyObjectCollectionId.d.ts +2 -0
  173. package/lib/live/objects/ontologyObjectCollectionId.d.ts.map +1 -1
  174. package/lib/live/objects/ontologyObjectCollectionId.js +6 -2
  175. package/lib/live/objects/ontologyObjectCollectionId.js.map +1 -1
  176. package/lib/live/outbox/createOntologyOutbox.d.ts +16 -14
  177. package/lib/live/outbox/createOntologyOutbox.d.ts.map +1 -1
  178. package/lib/live/outbox/createOntologyOutbox.js +275 -326
  179. package/lib/live/outbox/createOntologyOutbox.js.map +1 -1
  180. package/lib/live/outbox/leaderExecutor.d.ts +15 -13
  181. package/lib/live/outbox/leaderExecutor.d.ts.map +1 -1
  182. package/lib/live/outbox/leaderExecutor.js +114 -153
  183. package/lib/live/outbox/leaderExecutor.js.map +1 -1
  184. package/lib/live/outbox/outboxService.d.ts +4 -2
  185. package/lib/live/outbox/outboxService.d.ts.map +1 -1
  186. package/lib/live/outbox/outboxService.js +66 -71
  187. package/lib/live/outbox/outboxService.js.map +1 -1
  188. package/lib/live/outbox/projectionManager.d.ts +26 -24
  189. package/lib/live/outbox/projectionManager.d.ts.map +1 -1
  190. package/lib/live/outbox/projectionManager.js +121 -147
  191. package/lib/live/outbox/projectionManager.js.map +1 -1
  192. package/lib/live/outbox/repository.d.ts +27 -25
  193. package/lib/live/outbox/repository.d.ts.map +1 -1
  194. package/lib/live/outbox/repository.js +192 -241
  195. package/lib/live/outbox/repository.js.map +1 -1
  196. package/lib/live/outbox/service.d.ts +52 -50
  197. package/lib/live/outbox/service.d.ts.map +1 -1
  198. package/lib/live/outbox/service.js +5 -1
  199. package/lib/live/outbox/service.js.map +1 -1
  200. package/lib/live/outbox/types.d.ts +35 -33
  201. package/lib/live/outbox/types.d.ts.map +1 -1
  202. package/lib/live/outbox/types.js +10 -6
  203. package/lib/live/outbox/types.js.map +1 -1
  204. package/lib/live/waitForCollectionReady.d.ts +3 -1
  205. package/lib/live/waitForCollectionReady.d.ts.map +1 -1
  206. package/lib/live/waitForCollectionReady.js +44 -65
  207. package/lib/live/waitForCollectionReady.js.map +1 -1
  208. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts +5 -2
  209. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts.map +1 -1
  210. package/lib/meta/createLocalMetaOntologyBackendAdapter.js +37 -39
  211. package/lib/meta/createLocalMetaOntologyBackendAdapter.js.map +1 -1
  212. package/lib/meta/generated/constants.d.ts +137 -135
  213. package/lib/meta/generated/constants.d.ts.map +1 -1
  214. package/lib/meta/generated/constants.js +162 -129
  215. package/lib/meta/generated/constants.js.map +1 -1
  216. package/lib/meta/generated/live.d.ts +5 -2
  217. package/lib/meta/generated/live.d.ts.map +1 -1
  218. package/lib/meta/generated/live.js +12 -8
  219. package/lib/meta/generated/live.js.map +1 -1
  220. package/lib/meta/generated/types.d.ts +233 -231
  221. package/lib/meta/generated/types.d.ts.map +1 -1
  222. package/lib/meta/generated/types.js +0 -2
  223. package/lib/meta/ontology.d.ts +23 -21
  224. package/lib/meta/ontology.d.ts.map +1 -1
  225. package/lib/meta/ontology.js +100 -104
  226. package/lib/meta/ontology.js.map +1 -1
  227. package/lib/meta/pull.d.ts +8 -6
  228. package/lib/meta/pull.d.ts.map +1 -1
  229. package/lib/meta/pull.js +39 -52
  230. package/lib/meta/pull.js.map +1 -1
  231. package/lib/utils/index.d.ts +8 -8
  232. package/lib/utils/index.js +5 -6
  233. package/lib/utils/links.d.ts +34 -31
  234. package/lib/utils/links.d.ts.map +1 -1
  235. package/lib/utils/links.js +10 -17
  236. package/lib/utils/links.js.map +1 -1
  237. package/lib/utils/paths.d.ts +2 -0
  238. package/lib/utils/paths.d.ts.map +1 -1
  239. package/lib/utils/paths.js +32 -44
  240. package/lib/utils/paths.js.map +1 -1
  241. package/lib/utils/provide.d.ts +2 -0
  242. package/lib/utils/provide.d.ts.map +1 -1
  243. package/lib/utils/provide.js +7 -9
  244. package/lib/utils/provide.js.map +1 -1
  245. package/lib/utils/targets.d.ts +20 -18
  246. package/lib/utils/targets.d.ts.map +1 -1
  247. package/lib/utils/targets.js +0 -1
  248. package/lib/utils/typeNames.d.ts +10 -8
  249. package/lib/utils/typeNames.d.ts.map +1 -1
  250. package/lib/utils/typeNames.js +0 -1
  251. package/lib/utils/types.d.ts +6 -4
  252. package/lib/utils/types.d.ts.map +1 -1
  253. package/lib/utils/types.js +38 -38
  254. package/lib/utils/types.js.map +1 -1
  255. package/lib/utils/uncertain.d.ts +5 -3
  256. package/lib/utils/uncertain.d.ts.map +1 -1
  257. package/lib/utils/uncertain.js +11 -9
  258. package/lib/utils/uncertain.js.map +1 -1
  259. package/lib/utils/validation.d.ts +4 -2
  260. package/lib/utils/validation.d.ts.map +1 -1
  261. package/lib/utils/validation.js +0 -1
  262. package/lib/utils/values.d.ts +18 -18
  263. package/lib/utils/values.d.ts.map +1 -1
  264. package/lib/utils/values.js +0 -1
  265. package/package.json +22 -26
  266. package/lib/OntologyPullConfig.js.map +0 -1
  267. package/lib/cli/index.d.ts.map +0 -1
  268. package/lib/cli/index.test.d.ts +0 -2
  269. package/lib/cli/index.test.d.ts.map +0 -1
  270. package/lib/cli/index.test.js +0 -34
  271. package/lib/cli/index.test.js.map +0 -1
  272. package/lib/cli/pull.test.d.ts +0 -2
  273. package/lib/cli/pull.test.d.ts.map +0 -1
  274. package/lib/cli/pull.test.js +0 -125
  275. package/lib/cli/pull.test.js.map +0 -1
  276. package/lib/examples/generated/constants.d.ts.map +0 -1
  277. package/lib/examples/generated/constants.js.map +0 -1
  278. package/lib/examples/generated/types.js.map +0 -1
  279. package/lib/generate/builders.test.d.ts +0 -2
  280. package/lib/generate/builders.test.d.ts.map +0 -1
  281. package/lib/generate/builders.test.js +0 -49
  282. package/lib/generate/builders.test.js.map +0 -1
  283. package/lib/generate/index.d.ts.map +0 -1
  284. package/lib/generate/index.js.map +0 -1
  285. package/lib/generate/live.test.d.ts +0 -2
  286. package/lib/generate/live.test.d.ts.map +0 -1
  287. package/lib/generate/live.test.js +0 -22
  288. package/lib/generate/live.test.js.map +0 -1
  289. package/lib/generate/ontology.test.d.ts +0 -2
  290. package/lib/generate/ontology.test.d.ts.map +0 -1
  291. package/lib/generate/ontology.test.js +0 -157
  292. package/lib/generate/ontology.test.js.map +0 -1
  293. package/lib/generate/types.test.d.ts +0 -2
  294. package/lib/generate/types.test.d.ts.map +0 -1
  295. package/lib/generate/types.test.js +0 -304
  296. package/lib/generate/types.test.js.map +0 -1
  297. package/lib/index.d.ts.map +0 -1
  298. package/lib/index.js.map +0 -1
  299. package/lib/infer.test.d.ts +0 -2
  300. package/lib/infer.test.d.ts.map +0 -1
  301. package/lib/infer.test.js +0 -125
  302. package/lib/infer.test.js.map +0 -1
  303. package/lib/installation/createMetaOntologyConfiguration.test.d.ts +0 -2
  304. package/lib/installation/createMetaOntologyConfiguration.test.d.ts.map +0 -1
  305. package/lib/installation/createMetaOntologyConfiguration.test.js +0 -20
  306. package/lib/installation/createMetaOntologyConfiguration.test.js.map +0 -1
  307. package/lib/installation/createOntologyBackendInstallation.test.d.ts +0 -2
  308. package/lib/installation/createOntologyBackendInstallation.test.d.ts.map +0 -1
  309. package/lib/installation/createOntologyBackendInstallation.test.js +0 -320
  310. package/lib/installation/createOntologyBackendInstallation.test.js.map +0 -1
  311. package/lib/installation/index.d.ts.map +0 -1
  312. package/lib/installation/index.js.map +0 -1
  313. package/lib/installation/types.js.map +0 -1
  314. package/lib/ir/generated/types.js.map +0 -1
  315. package/lib/ir/index.d.ts.map +0 -1
  316. package/lib/ir/index.js.map +0 -1
  317. package/lib/ir/validate.test.d.ts +0 -2
  318. package/lib/ir/validate.test.d.ts.map +0 -1
  319. package/lib/ir/validate.test.js +0 -1061
  320. package/lib/ir/validate.test.js.map +0 -1
  321. package/lib/json/index.test.d.ts +0 -2
  322. package/lib/json/index.test.d.ts.map +0 -1
  323. package/lib/json/index.test.js +0 -142
  324. package/lib/json/index.test.js.map +0 -1
  325. package/lib/lenses.test.d.ts +0 -2
  326. package/lib/lenses.test.d.ts.map +0 -1
  327. package/lib/lenses.test.js +0 -80
  328. package/lib/lenses.test.js.map +0 -1
  329. package/lib/live/LiveOntology.test.d.ts +0 -2
  330. package/lib/live/LiveOntology.test.d.ts.map +0 -1
  331. package/lib/live/LiveOntology.test.js +0 -507
  332. package/lib/live/LiveOntology.test.js.map +0 -1
  333. package/lib/live/OntologyBackendAdapter.js.map +0 -1
  334. package/lib/live/actions/createLiveOntologyAction.test.d.ts +0 -2
  335. package/lib/live/actions/createLiveOntologyAction.test.d.ts.map +0 -1
  336. package/lib/live/actions/createLiveOntologyAction.test.js +0 -232
  337. package/lib/live/actions/createLiveOntologyAction.test.js.map +0 -1
  338. package/lib/live/actions/prepareActionParameters.test.d.ts +0 -2
  339. package/lib/live/actions/prepareActionParameters.test.d.ts.map +0 -1
  340. package/lib/live/actions/prepareActionParameters.test.js +0 -165
  341. package/lib/live/actions/prepareActionParameters.test.js.map +0 -1
  342. package/lib/live/attachments/attachmentMetadata.test.d.ts +0 -2
  343. package/lib/live/attachments/attachmentMetadata.test.d.ts.map +0 -1
  344. package/lib/live/attachments/attachmentMetadata.test.js +0 -73
  345. package/lib/live/attachments/attachmentMetadata.test.js.map +0 -1
  346. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts +0 -2
  347. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts.map +0 -1
  348. package/lib/live/attachments/createLiveOntologyAttachments.test.js +0 -363
  349. package/lib/live/attachments/createLiveOntologyAttachments.test.js.map +0 -1
  350. package/lib/live/attachments/types.js.map +0 -1
  351. package/lib/live/expression.test.d.ts +0 -2
  352. package/lib/live/expression.test.d.ts.map +0 -1
  353. package/lib/live/expression.test.js +0 -311
  354. package/lib/live/expression.test.js.map +0 -1
  355. package/lib/live/index.d.ts.map +0 -1
  356. package/lib/live/index.js.map +0 -1
  357. package/lib/live/mutators/OntologyEdits.test.d.ts +0 -2
  358. package/lib/live/mutators/OntologyEdits.test.d.ts.map +0 -1
  359. package/lib/live/mutators/OntologyEdits.test.js +0 -85
  360. package/lib/live/mutators/OntologyEdits.test.js.map +0 -1
  361. package/lib/live/mutators/createMutatorTx.test.d.ts +0 -2
  362. package/lib/live/mutators/createMutatorTx.test.d.ts.map +0 -1
  363. package/lib/live/mutators/createMutatorTx.test.js +0 -180
  364. package/lib/live/mutators/createMutatorTx.test.js.map +0 -1
  365. package/lib/live/mutators/types.js.map +0 -1
  366. package/lib/live/objects/OntologyObject.js.map +0 -1
  367. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts +0 -2
  368. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts.map +0 -1
  369. package/lib/live/objects/createLiveOntologyObjectCollection.test.js +0 -310
  370. package/lib/live/objects/createLiveOntologyObjectCollection.test.js.map +0 -1
  371. package/lib/live/outbox/createOntologyOutbox.test.d.ts +0 -2
  372. package/lib/live/outbox/createOntologyOutbox.test.d.ts.map +0 -1
  373. package/lib/live/outbox/createOntologyOutbox.test.js +0 -1030
  374. package/lib/live/outbox/createOntologyOutbox.test.js.map +0 -1
  375. package/lib/meta/generated/types.js.map +0 -1
  376. package/lib/meta/ontology.test.d.ts +0 -2
  377. package/lib/meta/ontology.test.d.ts.map +0 -1
  378. package/lib/meta/ontology.test.js +0 -84
  379. package/lib/meta/ontology.test.js.map +0 -1
  380. package/lib/utils/index.d.ts.map +0 -1
  381. package/lib/utils/index.js.map +0 -1
  382. package/lib/utils/links.test.d.ts +0 -2
  383. package/lib/utils/links.test.d.ts.map +0 -1
  384. package/lib/utils/links.test.js +0 -109
  385. package/lib/utils/links.test.js.map +0 -1
  386. package/lib/utils/paths.test.d.ts +0 -2
  387. package/lib/utils/paths.test.d.ts.map +0 -1
  388. package/lib/utils/paths.test.js +0 -33
  389. package/lib/utils/paths.test.js.map +0 -1
  390. package/lib/utils/targets.js.map +0 -1
  391. package/lib/utils/typeNames.js.map +0 -1
  392. package/lib/utils/types.test.d.ts +0 -2
  393. package/lib/utils/types.test.d.ts.map +0 -1
  394. package/lib/utils/types.test.js +0 -157
  395. package/lib/utils/types.test.js.map +0 -1
  396. package/lib/utils/uncertain.test.d.ts +0 -2
  397. package/lib/utils/uncertain.test.d.ts.map +0 -1
  398. package/lib/utils/uncertain.test.js +0 -14
  399. package/lib/utils/uncertain.test.js.map +0 -1
  400. package/lib/utils/validation.js.map +0 -1
  401. package/lib/utils/values.js.map +0 -1
@@ -1,241 +1,160 @@
1
+ import { isLinkHopFromForeignKeySource, resolveLinkHop } from "../utils/links.js";
2
+ import { resolveType, unwrapType } from "../utils/types.js";
3
+ import { getAtPath } from "../utils/paths.js";
1
4
  import { eq } from "@tanstack/db";
2
5
  import { Temporal } from "temporal-polyfill";
3
- import { isLinkHopFromForeignKeySource, resolveLinkHop, } from "../utils/links.js";
4
- import { getAtPath } from "../utils/paths.js";
5
- import { resolveType, unwrapType } from "../utils/types.js";
6
+ //#region src/live/expression.ts
6
7
  function getActionType(ir, actionTypeName) {
7
- return ir.actionTypes.find((actionType) => actionType.name === actionTypeName);
8
+ return ir.actionTypes.find((actionType) => actionType.name === actionTypeName);
8
9
  }
9
10
  const ontologyReference = Symbol("ontologyReference");
10
11
  const ontologyObject = Symbol("ontologyObject");
11
12
  function isEvaluatedObjectReference(value) {
12
- return (typeof value === "object" &&
13
- value !== null &&
14
- ontologyReference in value);
13
+ return typeof value === "object" && value !== null && ontologyReference in value;
15
14
  }
16
15
  function isEvaluatedOntologyObject(value) {
17
- return (typeof value === "object" &&
18
- value !== null &&
19
- ontologyObject in value);
16
+ return typeof value === "object" && value !== null && ontologyObject in value;
20
17
  }
21
18
  function unwrapEvaluatedValue(value) {
22
- if (isEvaluatedObjectReference(value))
23
- return value.key;
24
- if (isEvaluatedOntologyObject(value))
25
- return value.value;
26
- if (Array.isArray(value))
27
- return value.map(unwrapEvaluatedValue);
28
- if (value !== null &&
29
- typeof value === "object" &&
30
- Object.getPrototypeOf(value) === Object.prototype) {
31
- return Object.fromEntries(Object.entries(value).map(([key, entry]) => [
32
- key,
33
- unwrapEvaluatedValue(entry),
34
- ]));
35
- }
36
- return value;
19
+ if (isEvaluatedObjectReference(value)) return value.key;
20
+ if (isEvaluatedOntologyObject(value)) return value.value;
21
+ if (Array.isArray(value)) return value.map(unwrapEvaluatedValue);
22
+ if (value !== null && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype) return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, unwrapEvaluatedValue(entry)]));
23
+ return value;
37
24
  }
38
- export async function evaluateExpression(options) {
39
- return unwrapEvaluatedValue(await evaluateExpressionWithLocals(options, new Map()));
25
+ async function evaluateExpression(options) {
26
+ return unwrapEvaluatedValue(await evaluateExpressionWithLocals(options, /* @__PURE__ */ new Map()));
40
27
  }
41
28
  async function evaluateExpressionWithLocals(options, locals) {
42
- const { ir, actionTypeName, expression, resolveParameter, context, tx } = options;
43
- switch (expression.kind) {
44
- case "inputReference": {
45
- const parameterValue = await resolveParameter(expression.value.name);
46
- const actionType = getActionType(ir, actionTypeName);
47
- const parameter = actionType.parameters.find((candidate) => candidate.name === expression.value.name);
48
- const { type: parameterType, isOptional } = unwrapType(resolveType(ir, parameter.type));
49
- if (parameterType.kind === "objectReference") {
50
- return {
51
- [ontologyReference]: true,
52
- objectType: parameterType.value.objectType,
53
- key: parameterValue,
54
- optional: isOptional,
55
- };
56
- }
57
- return parameterValue;
58
- }
59
- case "localReference": {
60
- const { name } = expression.value;
61
- if (!locals.has(name)) {
62
- throw new Error(`Unknown expression binding "${name}".`);
63
- }
64
- return locals.get(name);
65
- }
66
- case "contextReference":
67
- return context[expression.value.name];
68
- case "getAt": {
69
- const source = await evaluateExpressionWithLocals({
70
- ...options,
71
- expression: expression.value.source,
72
- }, locals);
73
- if (isEvaluatedObjectReference(source)) {
74
- throw new Error(`Cannot access field "${expression.value.path.join(".")}" on an object reference without an object lookup.`);
75
- }
76
- return getAtPath(isEvaluatedOntologyObject(source)
77
- ? source.value
78
- : source, expression.value.path);
79
- }
80
- case "objectLookup": {
81
- const reference = await evaluateExpressionWithLocals({
82
- ...options,
83
- expression: expression.value.reference,
84
- }, locals);
85
- if (!isEvaluatedObjectReference(reference)) {
86
- throw new Error("Object lookup source must resolve to an object reference.");
87
- }
88
- if (reference.key === undefined || reference.key === null) {
89
- return undefined;
90
- }
91
- const referencedType = ir.objectTypes.find((candidate) => candidate.name === reference.objectType);
92
- const referencedObject = await tx.query((query, objects) => query
93
- .from({
94
- object: objects[referencedType.name],
95
- })
96
- .where(({ object }) => eq(object[referencedType.primaryKey], reference.key))
97
- .select(({ object }) => object)
98
- .findOne());
99
- if (!referencedObject && !reference.optional) {
100
- throw new Error(`Missing loaded "${referencedType.name}" object.`);
101
- }
102
- return referencedObject
103
- ? {
104
- [ontologyObject]: true,
105
- objectType: referencedType.name,
106
- value: referencedObject,
107
- }
108
- : undefined;
109
- }
110
- case "linkHop": {
111
- const source = await evaluateExpressionWithLocals({
112
- ...options,
113
- expression: expression.value.source,
114
- }, locals);
115
- if (!isEvaluatedOntologyObject(source)) {
116
- throw new Error("Link hop source must resolve to an ontology object.");
117
- }
118
- const link = resolveLinkHop(ir, source.objectType, expression.value.link);
119
- if (!link) {
120
- throw new Error(`Unknown link "${expression.value.link}" on object type "${source.objectType}".`);
121
- }
122
- const foreignKeyOnSource = isLinkHopFromForeignKeySource(link, source.objectType, expression.value.link);
123
- const cardinality = foreignKeyOnSource
124
- ? "one"
125
- : link.cardinality;
126
- if (cardinality === "many") {
127
- throw new Error(`Link "${expression.value.link}" on object type "${source.objectType}" is to-many.`);
128
- }
129
- const sourceType = ir.objectTypes.find((candidate) => candidate.name === source.objectType);
130
- const targetType = ir.objectTypes.find((candidate) => candidate.name ===
131
- (foreignKeyOnSource
132
- ? link.target.objectType
133
- : link.source.objectType));
134
- const foreignKeyPath = link.foreignKey.split(".");
135
- const sourceKey = foreignKeyOnSource
136
- ? getAtPath(source.value, foreignKeyPath)
137
- : source.value[sourceType.primaryKey];
138
- if (sourceKey === undefined || sourceKey === null) {
139
- return undefined;
140
- }
141
- const targetProperty = foreignKeyOnSource
142
- ? targetType.primaryKey
143
- : link.foreignKey;
144
- const linkedObject = await tx.query((query, objects) => query
145
- .from({
146
- object: objects[targetType.name],
147
- })
148
- .where(({ object }) => eq(object[targetProperty], sourceKey))
149
- .select(({ object }) => object)
150
- .findOne());
151
- return linkedObject
152
- ? {
153
- [ontologyObject]: true,
154
- objectType: targetType.name,
155
- value: linkedObject,
156
- }
157
- : undefined;
158
- }
159
- case "struct": {
160
- const fields = await Promise.all(expression.value.fields.map(async (field) => [
161
- field.name,
162
- await evaluateExpressionWithLocals({
163
- ...options,
164
- expression: field.value,
165
- }, locals),
166
- ]));
167
- return Object.fromEntries(fields);
168
- }
169
- case "map": {
170
- const source = await evaluateExpressionWithLocals({
171
- ...options,
172
- expression: expression.value.source,
173
- }, locals);
174
- if (source === undefined) {
175
- return undefined;
176
- }
177
- if (!Array.isArray(source)) {
178
- throw new Error("Map expression source must resolve to a list.");
179
- }
180
- return Promise.all(source.map((item) => {
181
- const itemLocals = new Map(locals);
182
- itemLocals.set(expression.value.binding, item);
183
- return evaluateExpressionWithLocals({
184
- ...options,
185
- expression: expression.value.body,
186
- }, itemLocals);
187
- }));
188
- }
189
- case "literal":
190
- return expression.value.value;
191
- case "uuid":
192
- return globalThis.crypto.randomUUID();
193
- case "now":
194
- return Temporal.Now.instant();
195
- }
29
+ const { ir, actionTypeName, expression, resolveParameter, context, tx } = options;
30
+ switch (expression.kind) {
31
+ case "inputReference": {
32
+ const parameterValue = await resolveParameter(expression.value.name);
33
+ const parameter = getActionType(ir, actionTypeName).parameters.find((candidate) => candidate.name === expression.value.name);
34
+ const { type: parameterType, isOptional } = unwrapType(resolveType(ir, parameter.type));
35
+ if (parameterType.kind === "objectReference") return {
36
+ [ontologyReference]: true,
37
+ objectType: parameterType.value.objectType,
38
+ key: parameterValue,
39
+ optional: isOptional
40
+ };
41
+ return parameterValue;
42
+ }
43
+ case "localReference": {
44
+ const { name } = expression.value;
45
+ if (!locals.has(name)) throw new Error(`Unknown expression binding "${name}".`);
46
+ return locals.get(name);
47
+ }
48
+ case "contextReference": return context[expression.value.name];
49
+ case "getAt": {
50
+ const source = await evaluateExpressionWithLocals({
51
+ ...options,
52
+ expression: expression.value.source
53
+ }, locals);
54
+ if (isEvaluatedObjectReference(source)) throw new Error(`Cannot access field "${expression.value.path.join(".")}" on an object reference without an object lookup.`);
55
+ return getAtPath(isEvaluatedOntologyObject(source) ? source.value : source, expression.value.path);
56
+ }
57
+ case "objectLookup": {
58
+ const reference = await evaluateExpressionWithLocals({
59
+ ...options,
60
+ expression: expression.value.reference
61
+ }, locals);
62
+ if (!isEvaluatedObjectReference(reference)) throw new Error("Object lookup source must resolve to an object reference.");
63
+ if (reference.key === void 0 || reference.key === null) return;
64
+ const referencedType = ir.objectTypes.find((candidate) => candidate.name === reference.objectType);
65
+ const referencedObject = await tx.query((query, objects) => query.from({ object: objects[referencedType.name] }).where(({ object }) => eq(object[referencedType.primaryKey], reference.key)).select(({ object }) => object).findOne());
66
+ if (!referencedObject && !reference.optional) throw new Error(`Missing loaded "${referencedType.name}" object.`);
67
+ return referencedObject ? {
68
+ [ontologyObject]: true,
69
+ objectType: referencedType.name,
70
+ value: referencedObject
71
+ } : void 0;
72
+ }
73
+ case "linkHop": {
74
+ const source = await evaluateExpressionWithLocals({
75
+ ...options,
76
+ expression: expression.value.source
77
+ }, locals);
78
+ if (!isEvaluatedOntologyObject(source)) throw new Error("Link hop source must resolve to an ontology object.");
79
+ const link = resolveLinkHop(ir, source.objectType, expression.value.link);
80
+ if (!link) throw new Error(`Unknown link "${expression.value.link}" on object type "${source.objectType}".`);
81
+ const foreignKeyOnSource = isLinkHopFromForeignKeySource(link, source.objectType, expression.value.link);
82
+ if ((foreignKeyOnSource ? "one" : link.cardinality) === "many") throw new Error(`Link "${expression.value.link}" on object type "${source.objectType}" is to-many.`);
83
+ const sourceType = ir.objectTypes.find((candidate) => candidate.name === source.objectType);
84
+ const targetType = ir.objectTypes.find((candidate) => candidate.name === (foreignKeyOnSource ? link.target.objectType : link.source.objectType));
85
+ const foreignKeyPath = link.foreignKey.split(".");
86
+ const sourceKey = foreignKeyOnSource ? getAtPath(source.value, foreignKeyPath) : source.value[sourceType.primaryKey];
87
+ if (sourceKey === void 0 || sourceKey === null) return;
88
+ const targetProperty = foreignKeyOnSource ? targetType.primaryKey : link.foreignKey;
89
+ const linkedObject = await tx.query((query, objects) => query.from({ object: objects[targetType.name] }).where(({ object }) => eq(object[targetProperty], sourceKey)).select(({ object }) => object).findOne());
90
+ return linkedObject ? {
91
+ [ontologyObject]: true,
92
+ objectType: targetType.name,
93
+ value: linkedObject
94
+ } : void 0;
95
+ }
96
+ case "struct": {
97
+ const fields = await Promise.all(expression.value.fields.map(async (field) => [field.name, await evaluateExpressionWithLocals({
98
+ ...options,
99
+ expression: field.value
100
+ }, locals)]));
101
+ return Object.fromEntries(fields);
102
+ }
103
+ case "map": {
104
+ const source = await evaluateExpressionWithLocals({
105
+ ...options,
106
+ expression: expression.value.source
107
+ }, locals);
108
+ if (source === void 0) return;
109
+ if (!Array.isArray(source)) throw new Error("Map expression source must resolve to a list.");
110
+ return Promise.all(source.map((item) => {
111
+ const itemLocals = new Map(locals);
112
+ itemLocals.set(expression.value.binding, item);
113
+ return evaluateExpressionWithLocals({
114
+ ...options,
115
+ expression: expression.value.body
116
+ }, itemLocals);
117
+ }));
118
+ }
119
+ case "literal": return expression.value.value;
120
+ case "uuid": return globalThis.crypto.randomUUID();
121
+ case "now": return Temporal.Now.instant();
122
+ }
196
123
  }
197
- export async function resolveActionParameters(options) {
198
- const action = getActionType(options.ir, options.actionTypeName);
199
- const resolvedParameters = {
200
- ...options.initialParameters,
201
- };
202
- const parametersByName = new Map(action.parameters.map((parameter) => [parameter.name, parameter]));
203
- const resolving = new Set();
204
- const resolveParameter = async (parameterName) => {
205
- if (resolvedParameters[parameterName] !== undefined) {
206
- return resolvedParameters[parameterName];
207
- }
208
- const parameter = parametersByName.get(parameterName);
209
- if (!parameter?.defaultValue)
210
- return undefined;
211
- if (resolving.has(parameterName)) {
212
- throw new Error(`Circular action parameter default for "${parameterName}".`);
213
- }
214
- resolving.add(parameterName);
215
- try {
216
- resolvedParameters[parameterName] = await evaluateExpression({
217
- ir: options.ir,
218
- actionTypeName: options.actionTypeName,
219
- expression: parameter.defaultValue,
220
- resolveParameter,
221
- context: options.context,
222
- tx: options.tx,
223
- });
224
- return resolvedParameters[parameterName];
225
- }
226
- finally {
227
- resolving.delete(parameterName);
228
- }
229
- };
230
- for (const parameter of action.parameters) {
231
- await resolveParameter(parameter.name);
232
- }
233
- return resolvedParameters;
124
+ async function resolveActionParameters(options) {
125
+ const action = getActionType(options.ir, options.actionTypeName);
126
+ const resolvedParameters = { ...options.initialParameters };
127
+ const parametersByName = new Map(action.parameters.map((parameter) => [parameter.name, parameter]));
128
+ const resolving = /* @__PURE__ */ new Set();
129
+ const resolveParameter = async (parameterName) => {
130
+ if (resolvedParameters[parameterName] !== void 0) return resolvedParameters[parameterName];
131
+ const parameter = parametersByName.get(parameterName);
132
+ if (!parameter?.defaultValue) return void 0;
133
+ if (resolving.has(parameterName)) throw new Error(`Circular action parameter default for "${parameterName}".`);
134
+ resolving.add(parameterName);
135
+ try {
136
+ resolvedParameters[parameterName] = await evaluateExpression({
137
+ ir: options.ir,
138
+ actionTypeName: options.actionTypeName,
139
+ expression: parameter.defaultValue,
140
+ resolveParameter,
141
+ context: options.context,
142
+ tx: options.tx
143
+ });
144
+ return resolvedParameters[parameterName];
145
+ } finally {
146
+ resolving.delete(parameterName);
147
+ }
148
+ };
149
+ for (const parameter of action.parameters) await resolveParameter(parameter.name);
150
+ return resolvedParameters;
234
151
  }
235
- export function getObjectReferenceObjectType(ir, actionTypeName, reference) {
236
- const actionType = getActionType(ir, actionTypeName);
237
- const parameter = actionType.parameters.find((candidate) => candidate.name === reference.name);
238
- const resolvedType = unwrapType(resolveType(ir, parameter.type)).type;
239
- return ir.objectTypes.find((candidate) => candidate.name === resolvedType.value.objectType);
152
+ function getObjectReferenceObjectType(ir, actionTypeName, reference) {
153
+ const parameter = getActionType(ir, actionTypeName).parameters.find((candidate) => candidate.name === reference.name);
154
+ const resolvedType = unwrapType(resolveType(ir, parameter.type)).type;
155
+ return ir.objectTypes.find((candidate) => candidate.name === resolvedType.value.objectType);
240
156
  }
157
+ //#endregion
158
+ export { evaluateExpression, getObjectReferenceObjectType, resolveActionParameters };
159
+
241
160
  //# sourceMappingURL=expression.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/live/expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression.js","names":[],"sources":["../../src/live/expression.ts"],"sourcesContent":["import { eq } from \"@tanstack/db\";\nimport { Temporal } from \"temporal-polyfill\";\nimport { isLinkHopFromForeignKeySource, resolveLinkHop } from \"../utils/links.js\";\nimport { getAtPath } from \"../utils/paths.js\";\nimport { resolveType, unwrapType } from \"../utils/types.js\";\nimport type {\n Expression,\n ObjectTypeDef,\n OntologyIR,\n TypeDef,\n InputReferenceExpression,\n} from \"../ir/index.js\";\nimport type { OntologyReadTx } from \"./mutators/types.js\";\nimport type { OntologyObject } from \"./objects/OntologyObject.js\";\n\nfunction getActionType(ir: OntologyIR, actionTypeName: string) {\n return ir.actionTypes.find((actionType) => actionType.name === actionTypeName)!;\n}\n\ninterface EvaluateExpressionOptions {\n ir: OntologyIR;\n actionTypeName: string;\n expression: Expression;\n resolveParameter: (parameterName: string) => Promise<unknown>;\n context: Record<string, unknown>;\n tx: OntologyReadTx;\n}\n\nconst ontologyReference = Symbol(\"ontologyReference\");\nconst ontologyObject = Symbol(\"ontologyObject\");\n\ninterface EvaluatedObjectReference {\n [ontologyReference]: true;\n objectType: string;\n key: unknown;\n optional: boolean;\n}\n\ninterface EvaluatedOntologyObject {\n [ontologyObject]: true;\n objectType: string;\n value: OntologyObject;\n}\n\nfunction isEvaluatedObjectReference(value: unknown): value is EvaluatedObjectReference {\n return typeof value === \"object\" && value !== null && ontologyReference in value;\n}\n\nfunction isEvaluatedOntologyObject(value: unknown): value is EvaluatedOntologyObject {\n return typeof value === \"object\" && value !== null && ontologyObject in value;\n}\n\nfunction unwrapEvaluatedValue(value: unknown): unknown {\n if (isEvaluatedObjectReference(value)) return value.key;\n if (isEvaluatedOntologyObject(value)) return value.value;\n if (Array.isArray(value)) return value.map(unwrapEvaluatedValue);\n if (value !== null && typeof value === \"object\" && Object.getPrototypeOf(value) === Object.prototype) {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [key, unwrapEvaluatedValue(entry)])\n );\n }\n return value;\n}\n\nexport async function evaluateExpression(options: EvaluateExpressionOptions): Promise<unknown> {\n return unwrapEvaluatedValue(await evaluateExpressionWithLocals(options, new Map()));\n}\n\nasync function evaluateExpressionWithLocals(\n options: EvaluateExpressionOptions,\n locals: ReadonlyMap<string, unknown>\n): Promise<unknown> {\n const { ir, actionTypeName, expression, resolveParameter, context, tx } = options;\n\n switch (expression.kind) {\n case \"inputReference\": {\n const parameterValue = await resolveParameter(expression.value.name);\n const actionType = getActionType(ir, actionTypeName);\n const parameter = actionType.parameters.find(\n (candidate) => candidate.name === expression.value.name\n )!;\n const { type: parameterType, isOptional } = unwrapType(resolveType(ir, parameter.type));\n if (parameterType.kind === \"objectReference\") {\n return {\n [ontologyReference]: true,\n objectType: parameterType.value.objectType,\n key: parameterValue,\n optional: isOptional,\n };\n }\n return parameterValue;\n }\n case \"localReference\": {\n const { name } = expression.value;\n if (!locals.has(name)) {\n throw new Error(`Unknown expression binding \"${name}\".`);\n }\n return locals.get(name);\n }\n case \"contextReference\":\n return context[expression.value.name];\n case \"getAt\": {\n const source = await evaluateExpressionWithLocals(\n {\n ...options,\n expression: expression.value.source,\n },\n locals\n );\n if (isEvaluatedObjectReference(source)) {\n throw new Error(\n `Cannot access field \"${expression.value.path.join(\".\")}\" on an object reference without an object lookup.`\n );\n }\n return getAtPath(\n isEvaluatedOntologyObject(source) ? source.value : source,\n expression.value.path\n );\n }\n case \"objectLookup\": {\n const reference = await evaluateExpressionWithLocals(\n {\n ...options,\n expression: expression.value.reference,\n },\n locals\n );\n if (!isEvaluatedObjectReference(reference)) {\n throw new Error(\"Object lookup source must resolve to an object reference.\");\n }\n if (reference.key === undefined || reference.key === null) {\n return undefined;\n }\n const referencedType = ir.objectTypes.find(\n (candidate) => candidate.name === reference.objectType\n )!;\n const referencedObject = await tx.query<OntologyObject | undefined>((query, objects) =>\n query\n .from({\n object: objects[referencedType.name]!,\n })\n .where(({ object }) => eq(object[referencedType.primaryKey], reference.key))\n .select(({ object }) => object)\n .findOne()\n );\n if (!referencedObject && !reference.optional) {\n throw new Error(`Missing loaded \"${referencedType.name}\" object.`);\n }\n return referencedObject\n ? {\n [ontologyObject]: true,\n objectType: referencedType.name,\n value: referencedObject,\n }\n : undefined;\n }\n case \"linkHop\": {\n const source = await evaluateExpressionWithLocals(\n {\n ...options,\n expression: expression.value.source,\n },\n locals\n );\n if (!isEvaluatedOntologyObject(source)) {\n throw new Error(\"Link hop source must resolve to an ontology object.\");\n }\n const link = resolveLinkHop(ir, source.objectType, expression.value.link);\n if (!link) {\n throw new Error(\n `Unknown link \"${expression.value.link}\" on object type \"${source.objectType}\".`\n );\n }\n const foreignKeyOnSource = isLinkHopFromForeignKeySource(\n link,\n source.objectType,\n expression.value.link\n );\n const cardinality = foreignKeyOnSource ? \"one\" : link.cardinality;\n if (cardinality === \"many\") {\n throw new Error(\n `Link \"${expression.value.link}\" on object type \"${source.objectType}\" is to-many.`\n );\n }\n const sourceType = ir.objectTypes.find((candidate) => candidate.name === source.objectType)!;\n const targetType = ir.objectTypes.find(\n (candidate) =>\n candidate.name === (foreignKeyOnSource ? link.target.objectType : link.source.objectType)\n )!;\n const foreignKeyPath = link.foreignKey.split(\".\");\n const sourceKey = foreignKeyOnSource\n ? getAtPath(source.value, foreignKeyPath)\n : source.value[sourceType.primaryKey];\n if (sourceKey === undefined || sourceKey === null) {\n return undefined;\n }\n const targetProperty = foreignKeyOnSource ? targetType.primaryKey : link.foreignKey;\n const linkedObject = await tx.query<OntologyObject | undefined>((query, objects) =>\n query\n .from({\n object: objects[targetType.name]!,\n })\n .where(({ object }) => eq(object[targetProperty], sourceKey))\n .select(({ object }) => object)\n .findOne()\n );\n return linkedObject\n ? {\n [ontologyObject]: true,\n objectType: targetType.name,\n value: linkedObject,\n }\n : undefined;\n }\n case \"struct\": {\n const fields = await Promise.all(\n expression.value.fields.map(\n async (field) =>\n [\n field.name,\n await evaluateExpressionWithLocals(\n {\n ...options,\n expression: field.value,\n },\n locals\n ),\n ] as const\n )\n );\n return Object.fromEntries(fields);\n }\n case \"map\": {\n const source = await evaluateExpressionWithLocals(\n {\n ...options,\n expression: expression.value.source,\n },\n locals\n );\n if (source === undefined) {\n return undefined;\n }\n if (!Array.isArray(source)) {\n throw new Error(\"Map expression source must resolve to a list.\");\n }\n return Promise.all(\n source.map((item) => {\n const itemLocals = new Map(locals);\n itemLocals.set(expression.value.binding, item);\n return evaluateExpressionWithLocals(\n {\n ...options,\n expression: expression.value.body,\n },\n itemLocals\n );\n })\n );\n }\n case \"literal\":\n return expression.value.value;\n case \"uuid\":\n return globalThis.crypto.randomUUID();\n case \"now\":\n return Temporal.Now.instant();\n }\n}\n\nexport async function resolveActionParameters(options: {\n ir: OntologyIR;\n actionTypeName: string;\n initialParameters: Record<string, unknown>;\n context: Record<string, unknown>;\n tx: OntologyReadTx;\n}): Promise<Record<string, unknown>> {\n const action = getActionType(options.ir, options.actionTypeName);\n const resolvedParameters = {\n ...options.initialParameters,\n };\n const parametersByName = new Map(action.parameters.map((parameter) => [parameter.name, parameter]));\n const resolving = new Set<string>();\n\n const resolveParameter = async (parameterName: string): Promise<unknown> => {\n if (resolvedParameters[parameterName] !== undefined) {\n return resolvedParameters[parameterName];\n }\n const parameter = parametersByName.get(parameterName);\n if (!parameter?.defaultValue) return undefined;\n if (resolving.has(parameterName)) {\n throw new Error(`Circular action parameter default for \"${parameterName}\".`);\n }\n\n resolving.add(parameterName);\n try {\n resolvedParameters[parameterName] = await evaluateExpression({\n ir: options.ir,\n actionTypeName: options.actionTypeName,\n expression: parameter.defaultValue,\n resolveParameter,\n context: options.context,\n tx: options.tx,\n });\n return resolvedParameters[parameterName];\n } finally {\n resolving.delete(parameterName);\n }\n };\n\n for (const parameter of action.parameters) {\n await resolveParameter(parameter.name);\n }\n return resolvedParameters;\n}\n\nexport function getObjectReferenceObjectType(\n ir: OntologyIR,\n actionTypeName: string,\n reference: InputReferenceExpression\n): ObjectTypeDef {\n const actionType = getActionType(ir, actionTypeName);\n const parameter = actionType.parameters.find((candidate) => candidate.name === reference.name)!;\n const resolvedType = unwrapType(resolveType(ir, parameter.type)).type as Extract<\n TypeDef,\n { kind: \"objectReference\" }\n >;\n return ir.objectTypes.find((candidate) => candidate.name === resolvedType.value.objectType)!;\n}\n"],"mappings":"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"}
@@ -1,9 +1,12 @@
1
- export * from "./OntologyBackendAdapter.js";
2
- export * from "./LiveOntology.js";
3
- export type { AttachmentMetadata, PartialAttachmentMetadata, } from "./attachments/types.js";
4
- export * from "./mutators/types.js";
5
- export { createReadTx, } from "./mutators/createMutatorTx.js";
6
- export { resolveActionParameters } from "./expression.js";
7
- export * from "./mutators/runOptimisticAction.js";
8
- export * from "./outbox/types.js";
9
- //# sourceMappingURL=index.d.ts.map
1
+ import { AttachmentMetadata, PartialAttachmentMetadata } from "./attachments/types.js";
2
+ import { ApplyActionLiveOpts, OntologyApplyActionResult, OntologyAttachmentIdMapping, OntologyAttachmentUpload, OntologyAttachmentsAdapter, OntologyBackendAdapter, OntologyBackendAdapterProvider, OntologyCollectionOptions, OntologyCollectionUtils, RunQueryLiveOpts, ValidateActionDraftLiveOpts, ValidateActionLiveOpts } from "./OntologyBackendAdapter.js";
3
+ import { LiveOntologyAttachments } from "./attachments/createLiveOntologyAttachments.js";
4
+ import { OntologyCollection } from "./objects/createLiveOntologyObjectCollection.js";
5
+ import { EnqueuedOntologyAction, NonRetryableError, OntologyActionRequest, OntologyOutbox, OntologyOutboxEntry, OntologyOutboxStatus } from "./outbox/types.js";
6
+ import { LiveOntologyAction, LiveOntologyActionOptions } from "./actions/createLiveOntologyAction.js";
7
+ import { OntologyMutator, OntologyMutatorObjects, OntologyMutatorRegistry, OntologyMutatorTx, OntologyPropertyChange, OntologyQueryFunctionHandler, OntologyQueryFunctionRegistry, OntologyReadTx } from "./mutators/types.js";
8
+ import { CreateLiveOntologyOpts, LiveOntology, LiveOntologyActions, LiveOntologyObjects, LiveOntologyOutboxFailureStrategy, LiveOntologyOutboxOptions, LiveOntologyQueryFunction, LiveOntologyQueryFunctions, LiveOntologyWriteMode, LiveOntologyWriteVisibility, LiveOntologyWrites, OntologyDefinition, createLiveOntology, waitForLiveOntologyReady } from "./LiveOntology.js";
9
+ import { createReadTx } from "./mutators/createMutatorTx.js";
10
+ import { resolveActionParameters } from "./expression.js";
11
+ import { runOptimisticAction } from "./mutators/runOptimisticAction.js";
12
+ export { ApplyActionLiveOpts, type AttachmentMetadata, CreateLiveOntologyOpts, EnqueuedOntologyAction, LiveOntology, type LiveOntologyAction, type LiveOntologyActionOptions, LiveOntologyActions, type LiveOntologyAttachments, LiveOntologyObjects, LiveOntologyOutboxFailureStrategy, LiveOntologyOutboxOptions, LiveOntologyQueryFunction, LiveOntologyQueryFunctions, LiveOntologyWriteMode, LiveOntologyWriteVisibility, LiveOntologyWrites, NonRetryableError, OntologyActionRequest, OntologyApplyActionResult, OntologyAttachmentIdMapping, OntologyAttachmentUpload, OntologyAttachmentsAdapter, OntologyBackendAdapter, OntologyBackendAdapterProvider, type OntologyCollection, OntologyCollectionOptions, OntologyCollectionUtils, OntologyDefinition, OntologyMutator, OntologyMutatorObjects, OntologyMutatorRegistry, OntologyMutatorTx, OntologyOutbox, OntologyOutboxEntry, OntologyOutboxStatus, OntologyPropertyChange, OntologyQueryFunctionHandler, OntologyQueryFunctionRegistry, OntologyReadTx, type PartialAttachmentMetadata, RunQueryLiveOpts, ValidateActionDraftLiveOpts, ValidateActionLiveOpts, createLiveOntology, createReadTx, resolveActionParameters, runOptimisticAction, waitForLiveOntologyReady };
package/lib/live/index.js CHANGED
@@ -1,8 +1,6 @@
1
- export * from "./OntologyBackendAdapter.js";
2
- export * from "./LiveOntology.js";
3
- export * from "./mutators/types.js";
4
- export { createReadTx, } from "./mutators/createMutatorTx.js";
5
- export { resolveActionParameters } from "./expression.js";
6
- export * from "./mutators/runOptimisticAction.js";
7
- export * from "./outbox/types.js";
8
- //# sourceMappingURL=index.js.map
1
+ import { resolveActionParameters } from "./expression.js";
2
+ import { createReadTx } from "./mutators/createMutatorTx.js";
3
+ import { runOptimisticAction } from "./mutators/runOptimisticAction.js";
4
+ import { NonRetryableError } from "./outbox/types.js";
5
+ import { createLiveOntology, waitForLiveOntologyReady } from "./LiveOntology.js";
6
+ export { NonRetryableError, createLiveOntology, createReadTx, resolveActionParameters, runOptimisticAction, waitForLiveOntologyReady };
@@ -1,12 +1,15 @@
1
- import type { OntologyMutatorObjects, OntologyMutatorTx } from "./types.js";
2
- import type { OntologyIR } from "../../ir/index.js";
1
+ import { OntologyIR } from "../../ir/generated/types.js";
2
+ import "../../ir/index.js";
3
+ import { OntologyMutatorObjects, OntologyMutatorTx } from "./types.js";
4
+ //#region src/live/mutators/OntologyEdits.d.ts
3
5
  export declare function applyActionLogicToMutatorTx(options: {
4
- ir: OntologyIR;
5
- actionTypeName: string;
6
- parameters: Record<string, unknown>;
7
- context: Record<string, unknown>;
8
- idempotencyKey?: string;
9
- objects: OntologyMutatorObjects;
10
- tx: OntologyMutatorTx;
6
+ ir: OntologyIR;
7
+ actionTypeName: string;
8
+ parameters: Record<string, unknown>;
9
+ context: Record<string, unknown>;
10
+ idempotencyKey?: string;
11
+ objects: OntologyMutatorObjects;
12
+ tx: OntologyMutatorTx;
11
13
  }): Promise<void>;
14
+ //#endregion
12
15
  //# sourceMappingURL=OntologyEdits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OntologyEdits.d.ts","sourceRoot":"","sources":["../../../src/live/mutators/OntologyEdits.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,sBAAsB,EACtB,iBAAiB,EAGpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAiB,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AAoCvF,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACvD,EAAE,EAAE,UAAU,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,sBAAsB,CAAC;IAChC,EAAE,EAAE,iBAAiB,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEhB"}
1
+ {"version":3,"file":"OntologyEdits.d.ts","names":[],"sources":["../../../src/live/mutators/OntologyEdits.ts"],"mappings":";;;;wBA8CsB,4BAA4B;EAC9C,IAAI;EACJ;EACA,YAAY;EACZ,SAAS;EACT;EACA,SAAS;EACT,IAAI;IACJ"}