@party-stack/ontology 0.18.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/lib/OntologyPullConfig.d.ts +15 -13
  2. package/lib/OntologyPullConfig.d.ts.map +1 -1
  3. package/lib/OntologyPullConfig.js +0 -1
  4. package/lib/_virtual/_rolldown/runtime.js +13 -0
  5. package/lib/cli/format.d.ts +4 -0
  6. package/lib/cli/format.d.ts.map +1 -0
  7. package/lib/cli/format.js +19 -0
  8. package/lib/cli/format.js.map +1 -0
  9. package/lib/cli/generate.d.ts +6 -5
  10. package/lib/cli/generate.d.ts.map +1 -1
  11. package/lib/cli/generate.js +86 -110
  12. package/lib/cli/generate.js.map +1 -1
  13. package/lib/cli/index.d.ts +1 -3
  14. package/lib/cli/index.js +42 -59
  15. package/lib/cli/index.js.map +1 -1
  16. package/lib/cli/pull.d.ts +3 -1
  17. package/lib/cli/pull.d.ts.map +1 -1
  18. package/lib/cli/pull.js +42 -60
  19. package/lib/cli/pull.js.map +1 -1
  20. package/lib/examples/blog.d.ts +347 -345
  21. package/lib/examples/blog.d.ts.map +1 -1
  22. package/lib/examples/blog.js +350 -337
  23. package/lib/examples/blog.js.map +1 -1
  24. package/lib/examples/blog.live-queries.d.ts +8 -3
  25. package/lib/examples/blog.live-queries.d.ts.map +1 -1
  26. package/lib/examples/blog.live-queries.js +28 -44
  27. package/lib/examples/blog.live-queries.js.map +1 -1
  28. package/lib/examples/generated/constants.d.ts +1 -2
  29. package/lib/examples/generated/constants.js +0 -2
  30. package/lib/examples/generated/live.d.ts +5 -3
  31. package/lib/examples/generated/live.d.ts.map +1 -1
  32. package/lib/examples/generated/live.js +12 -8
  33. package/lib/examples/generated/live.js.map +1 -1
  34. package/lib/examples/generated/types.d.ts +52 -50
  35. package/lib/examples/generated/types.d.ts.map +1 -1
  36. package/lib/examples/generated/types.js +0 -2
  37. package/lib/generate/builders.d.ts +8 -5
  38. package/lib/generate/builders.d.ts.map +1 -1
  39. package/lib/generate/builders.js +53 -55
  40. package/lib/generate/builders.js.map +1 -1
  41. package/lib/generate/constants.d.ts +3 -1
  42. package/lib/generate/constants.d.ts.map +1 -1
  43. package/lib/generate/constants.js +23 -26
  44. package/lib/generate/constants.js.map +1 -1
  45. package/lib/generate/index.d.ts +6 -6
  46. package/lib/generate/index.js +6 -6
  47. package/lib/generate/live.d.ts +8 -6
  48. package/lib/generate/live.d.ts.map +1 -1
  49. package/lib/generate/live.js +43 -42
  50. package/lib/generate/live.js.map +1 -1
  51. package/lib/generate/ontology.d.ts +4 -2
  52. package/lib/generate/ontology.d.ts.map +1 -1
  53. package/lib/generate/ontology.js +453 -354
  54. package/lib/generate/ontology.js.map +1 -1
  55. package/lib/generate/types.d.ts +7 -6
  56. package/lib/generate/types.d.ts.map +1 -1
  57. package/lib/generate/types.js +190 -262
  58. package/lib/generate/types.js.map +1 -1
  59. package/lib/generate/utils/buildJsDocs.d.ts +7 -4
  60. package/lib/generate/utils/buildJsDocs.d.ts.map +1 -1
  61. package/lib/generate/utils/buildJsDocs.js +14 -10
  62. package/lib/generate/utils/buildJsDocs.js.map +1 -1
  63. package/lib/index.d.ts +30 -13
  64. package/lib/index.js +18 -10
  65. package/lib/infer.d.ts +129 -152
  66. package/lib/infer.d.ts.map +1 -1
  67. package/lib/infer.js +10 -6
  68. package/lib/infer.js.map +1 -1
  69. package/lib/installation/createMetaOntologyConfiguration.d.ts +6 -3
  70. package/lib/installation/createMetaOntologyConfiguration.d.ts.map +1 -1
  71. package/lib/installation/createMetaOntologyConfiguration.js +13 -11
  72. package/lib/installation/createMetaOntologyConfiguration.js.map +1 -1
  73. package/lib/installation/createOntologyBackendInstallation.d.ts +3 -1
  74. package/lib/installation/createOntologyBackendInstallation.d.ts.map +1 -1
  75. package/lib/installation/createOntologyBackendInstallation.js +205 -268
  76. package/lib/installation/createOntologyBackendInstallation.js.map +1 -1
  77. package/lib/installation/index.d.ts +4 -4
  78. package/lib/installation/index.js +3 -3
  79. package/lib/installation/types.d.ts +83 -80
  80. package/lib/installation/types.d.ts.map +1 -1
  81. package/lib/installation/types.js +0 -1
  82. package/lib/ir/generated/builders.d.ts +294 -382
  83. package/lib/ir/generated/builders.d.ts.map +1 -1
  84. package/lib/ir/generated/builders.js +180 -119
  85. package/lib/ir/generated/builders.js.map +1 -1
  86. package/lib/ir/generated/constants.d.ts +137 -135
  87. package/lib/ir/generated/constants.d.ts.map +1 -1
  88. package/lib/ir/generated/constants.js +162 -129
  89. package/lib/ir/generated/constants.js.map +1 -1
  90. package/lib/ir/generated/types.d.ts +239 -234
  91. package/lib/ir/generated/types.d.ts.map +1 -1
  92. package/lib/ir/generated/types.js +0 -2
  93. package/lib/ir/index.d.ts +4 -4
  94. package/lib/ir/index.js +3 -4
  95. package/lib/ir/schema.d.ts +2174 -2172
  96. package/lib/ir/schema.d.ts.map +1 -1
  97. package/lib/ir/schema.js +1184 -1343
  98. package/lib/ir/schema.js.map +1 -1
  99. package/lib/ir/validate.d.ts +5 -3
  100. package/lib/ir/validate.d.ts.map +1 -1
  101. package/lib/ir/validate.js +589 -707
  102. package/lib/ir/validate.js.map +1 -1
  103. package/lib/json/index.d.ts +10 -8
  104. package/lib/json/index.d.ts.map +1 -1
  105. package/lib/json/index.js +101 -135
  106. package/lib/json/index.js.map +1 -1
  107. package/lib/lenses.d.ts +7 -4
  108. package/lib/lenses.d.ts.map +1 -1
  109. package/lib/lenses.js +96 -132
  110. package/lib/lenses.js.map +1 -1
  111. package/lib/live/LiveOntology.d.ts +55 -60
  112. package/lib/live/LiveOntology.d.ts.map +1 -1
  113. package/lib/live/LiveOntology.js +98 -124
  114. package/lib/live/LiveOntology.js.map +1 -1
  115. package/lib/live/OntologyBackendAdapter.d.ts +79 -76
  116. package/lib/live/OntologyBackendAdapter.d.ts.map +1 -1
  117. package/lib/live/OntologyBackendAdapter.js +0 -1
  118. package/lib/live/actions/createLiveOntologyAction.d.ts +27 -24
  119. package/lib/live/actions/createLiveOntologyAction.d.ts.map +1 -1
  120. package/lib/live/actions/createLiveOntologyAction.js +24 -21
  121. package/lib/live/actions/createLiveOntologyAction.js.map +1 -1
  122. package/lib/live/actions/createLiveOntologyActions.d.ts +23 -20
  123. package/lib/live/actions/createLiveOntologyActions.d.ts.map +1 -1
  124. package/lib/live/actions/createLiveOntologyActions.js +131 -161
  125. package/lib/live/actions/createLiveOntologyActions.js.map +1 -1
  126. package/lib/live/actions/prepareActionParameters.d.ts +14 -11
  127. package/lib/live/actions/prepareActionParameters.d.ts.map +1 -1
  128. package/lib/live/actions/prepareActionParameters.js +190 -228
  129. package/lib/live/actions/prepareActionParameters.js.map +1 -1
  130. package/lib/live/attachments/attachmentSources.d.ts +7 -4
  131. package/lib/live/attachments/attachmentSources.d.ts.map +1 -1
  132. package/lib/live/attachments/attachmentSources.js +55 -71
  133. package/lib/live/attachments/attachmentSources.js.map +1 -1
  134. package/lib/live/attachments/createLiveOntologyAttachments.d.ts +47 -45
  135. package/lib/live/attachments/createLiveOntologyAttachments.d.ts.map +1 -1
  136. package/lib/live/attachments/createLiveOntologyAttachments.js +65 -83
  137. package/lib/live/attachments/createLiveOntologyAttachments.js.map +1 -1
  138. package/lib/live/attachments/types.d.ts +10 -9
  139. package/lib/live/attachments/types.d.ts.map +1 -1
  140. package/lib/live/attachments/types.js +0 -1
  141. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts +3 -1
  142. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.d.ts.map +1 -1
  143. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js +5 -3
  144. package/lib/live/attachments/unsupportedOntologyAttachmentsAdapter.js.map +1 -1
  145. package/lib/live/expression.d.ts +16 -14
  146. package/lib/live/expression.d.ts.map +1 -1
  147. package/lib/live/expression.js +142 -223
  148. package/lib/live/expression.js.map +1 -1
  149. package/lib/live/index.d.ts +12 -9
  150. package/lib/live/index.js +6 -8
  151. package/lib/live/mutators/OntologyEdits.d.ts +12 -9
  152. package/lib/live/mutators/OntologyEdits.d.ts.map +1 -1
  153. package/lib/live/mutators/OntologyEdits.js +57 -74
  154. package/lib/live/mutators/OntologyEdits.js.map +1 -1
  155. package/lib/live/mutators/createMutatorTx.d.ts +7 -5
  156. package/lib/live/mutators/createMutatorTx.d.ts.map +1 -1
  157. package/lib/live/mutators/createMutatorTx.js +53 -69
  158. package/lib/live/mutators/createMutatorTx.js.map +1 -1
  159. package/lib/live/mutators/runOptimisticAction.d.ts +16 -13
  160. package/lib/live/mutators/runOptimisticAction.d.ts.map +1 -1
  161. package/lib/live/mutators/runOptimisticAction.js +26 -26
  162. package/lib/live/mutators/runOptimisticAction.js.map +1 -1
  163. package/lib/live/mutators/types.d.ts +18 -16
  164. package/lib/live/mutators/types.d.ts.map +1 -1
  165. package/lib/live/mutators/types.js +0 -1
  166. package/lib/live/objects/OntologyObject.d.ts +2 -0
  167. package/lib/live/objects/OntologyObject.d.ts.map +1 -1
  168. package/lib/live/objects/OntologyObject.js +0 -1
  169. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts +13 -10
  170. package/lib/live/objects/createLiveOntologyObjectCollection.d.ts.map +1 -1
  171. package/lib/live/objects/createLiveOntologyObjectCollection.js +49 -53
  172. package/lib/live/objects/createLiveOntologyObjectCollection.js.map +1 -1
  173. package/lib/live/objects/ontologyObjectCollectionId.d.ts +2 -0
  174. package/lib/live/objects/ontologyObjectCollectionId.d.ts.map +1 -1
  175. package/lib/live/objects/ontologyObjectCollectionId.js +6 -2
  176. package/lib/live/objects/ontologyObjectCollectionId.js.map +1 -1
  177. package/lib/live/outbox/createOntologyOutbox.d.ts +16 -14
  178. package/lib/live/outbox/createOntologyOutbox.d.ts.map +1 -1
  179. package/lib/live/outbox/createOntologyOutbox.js +275 -326
  180. package/lib/live/outbox/createOntologyOutbox.js.map +1 -1
  181. package/lib/live/outbox/leaderExecutor.d.ts +15 -13
  182. package/lib/live/outbox/leaderExecutor.d.ts.map +1 -1
  183. package/lib/live/outbox/leaderExecutor.js +114 -153
  184. package/lib/live/outbox/leaderExecutor.js.map +1 -1
  185. package/lib/live/outbox/outboxService.d.ts +4 -2
  186. package/lib/live/outbox/outboxService.d.ts.map +1 -1
  187. package/lib/live/outbox/outboxService.js +66 -71
  188. package/lib/live/outbox/outboxService.js.map +1 -1
  189. package/lib/live/outbox/projectionManager.d.ts +26 -24
  190. package/lib/live/outbox/projectionManager.d.ts.map +1 -1
  191. package/lib/live/outbox/projectionManager.js +121 -147
  192. package/lib/live/outbox/projectionManager.js.map +1 -1
  193. package/lib/live/outbox/repository.d.ts +27 -25
  194. package/lib/live/outbox/repository.d.ts.map +1 -1
  195. package/lib/live/outbox/repository.js +192 -241
  196. package/lib/live/outbox/repository.js.map +1 -1
  197. package/lib/live/outbox/service.d.ts +52 -50
  198. package/lib/live/outbox/service.d.ts.map +1 -1
  199. package/lib/live/outbox/service.js +5 -1
  200. package/lib/live/outbox/service.js.map +1 -1
  201. package/lib/live/outbox/types.d.ts +35 -33
  202. package/lib/live/outbox/types.d.ts.map +1 -1
  203. package/lib/live/outbox/types.js +10 -6
  204. package/lib/live/outbox/types.js.map +1 -1
  205. package/lib/live/waitForCollectionReady.d.ts +3 -1
  206. package/lib/live/waitForCollectionReady.d.ts.map +1 -1
  207. package/lib/live/waitForCollectionReady.js +44 -65
  208. package/lib/live/waitForCollectionReady.js.map +1 -1
  209. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts +5 -2
  210. package/lib/meta/createLocalMetaOntologyBackendAdapter.d.ts.map +1 -1
  211. package/lib/meta/createLocalMetaOntologyBackendAdapter.js +37 -39
  212. package/lib/meta/createLocalMetaOntologyBackendAdapter.js.map +1 -1
  213. package/lib/meta/generated/constants.d.ts +137 -135
  214. package/lib/meta/generated/constants.d.ts.map +1 -1
  215. package/lib/meta/generated/constants.js +162 -129
  216. package/lib/meta/generated/constants.js.map +1 -1
  217. package/lib/meta/generated/live.d.ts +5 -2
  218. package/lib/meta/generated/live.d.ts.map +1 -1
  219. package/lib/meta/generated/live.js +12 -8
  220. package/lib/meta/generated/live.js.map +1 -1
  221. package/lib/meta/generated/types.d.ts +233 -231
  222. package/lib/meta/generated/types.d.ts.map +1 -1
  223. package/lib/meta/generated/types.js +0 -2
  224. package/lib/meta/ontology.d.ts +23 -21
  225. package/lib/meta/ontology.d.ts.map +1 -1
  226. package/lib/meta/ontology.js +100 -104
  227. package/lib/meta/ontology.js.map +1 -1
  228. package/lib/meta/pull.d.ts +8 -6
  229. package/lib/meta/pull.d.ts.map +1 -1
  230. package/lib/meta/pull.js +39 -52
  231. package/lib/meta/pull.js.map +1 -1
  232. package/lib/utils/index.d.ts +8 -8
  233. package/lib/utils/index.js +5 -6
  234. package/lib/utils/links.d.ts +34 -32
  235. package/lib/utils/links.d.ts.map +1 -1
  236. package/lib/utils/links.js +10 -17
  237. package/lib/utils/links.js.map +1 -1
  238. package/lib/utils/paths.d.ts +2 -0
  239. package/lib/utils/paths.d.ts.map +1 -1
  240. package/lib/utils/paths.js +32 -44
  241. package/lib/utils/paths.js.map +1 -1
  242. package/lib/utils/provide.d.ts +2 -0
  243. package/lib/utils/provide.d.ts.map +1 -1
  244. package/lib/utils/provide.js +7 -9
  245. package/lib/utils/provide.js.map +1 -1
  246. package/lib/utils/targets.d.ts +20 -18
  247. package/lib/utils/targets.d.ts.map +1 -1
  248. package/lib/utils/targets.js +0 -1
  249. package/lib/utils/typeNames.d.ts +10 -8
  250. package/lib/utils/typeNames.d.ts.map +1 -1
  251. package/lib/utils/typeNames.js +0 -1
  252. package/lib/utils/types.d.ts +6 -4
  253. package/lib/utils/types.d.ts.map +1 -1
  254. package/lib/utils/types.js +38 -38
  255. package/lib/utils/types.js.map +1 -1
  256. package/lib/utils/uncertain.d.ts +5 -3
  257. package/lib/utils/uncertain.d.ts.map +1 -1
  258. package/lib/utils/uncertain.js +11 -9
  259. package/lib/utils/uncertain.js.map +1 -1
  260. package/lib/utils/validation.d.ts +4 -2
  261. package/lib/utils/validation.d.ts.map +1 -1
  262. package/lib/utils/validation.js +0 -1
  263. package/lib/utils/values.d.ts +21 -18
  264. package/lib/utils/values.d.ts.map +1 -1
  265. package/lib/utils/values.js +0 -1
  266. package/package.json +22 -25
  267. package/lib/OntologyPullConfig.js.map +0 -1
  268. package/lib/cli/index.d.ts.map +0 -1
  269. package/lib/cli/index.test.d.ts +0 -2
  270. package/lib/cli/index.test.d.ts.map +0 -1
  271. package/lib/cli/index.test.js +0 -34
  272. package/lib/cli/index.test.js.map +0 -1
  273. package/lib/cli/pull.test.d.ts +0 -2
  274. package/lib/cli/pull.test.d.ts.map +0 -1
  275. package/lib/cli/pull.test.js +0 -125
  276. package/lib/cli/pull.test.js.map +0 -1
  277. package/lib/examples/generated/constants.d.ts.map +0 -1
  278. package/lib/examples/generated/constants.js.map +0 -1
  279. package/lib/examples/generated/types.js.map +0 -1
  280. package/lib/generate/builders.test.d.ts +0 -2
  281. package/lib/generate/builders.test.d.ts.map +0 -1
  282. package/lib/generate/builders.test.js +0 -49
  283. package/lib/generate/builders.test.js.map +0 -1
  284. package/lib/generate/index.d.ts.map +0 -1
  285. package/lib/generate/index.js.map +0 -1
  286. package/lib/generate/live.test.d.ts +0 -2
  287. package/lib/generate/live.test.d.ts.map +0 -1
  288. package/lib/generate/live.test.js +0 -22
  289. package/lib/generate/live.test.js.map +0 -1
  290. package/lib/generate/ontology.test.d.ts +0 -2
  291. package/lib/generate/ontology.test.d.ts.map +0 -1
  292. package/lib/generate/ontology.test.js +0 -157
  293. package/lib/generate/ontology.test.js.map +0 -1
  294. package/lib/generate/types.test.d.ts +0 -2
  295. package/lib/generate/types.test.d.ts.map +0 -1
  296. package/lib/generate/types.test.js +0 -304
  297. package/lib/generate/types.test.js.map +0 -1
  298. package/lib/index.d.ts.map +0 -1
  299. package/lib/index.js.map +0 -1
  300. package/lib/infer.test.d.ts +0 -2
  301. package/lib/infer.test.d.ts.map +0 -1
  302. package/lib/infer.test.js +0 -125
  303. package/lib/infer.test.js.map +0 -1
  304. package/lib/installation/createMetaOntologyConfiguration.test.d.ts +0 -2
  305. package/lib/installation/createMetaOntologyConfiguration.test.d.ts.map +0 -1
  306. package/lib/installation/createMetaOntologyConfiguration.test.js +0 -20
  307. package/lib/installation/createMetaOntologyConfiguration.test.js.map +0 -1
  308. package/lib/installation/createOntologyBackendInstallation.test.d.ts +0 -2
  309. package/lib/installation/createOntologyBackendInstallation.test.d.ts.map +0 -1
  310. package/lib/installation/createOntologyBackendInstallation.test.js +0 -320
  311. package/lib/installation/createOntologyBackendInstallation.test.js.map +0 -1
  312. package/lib/installation/index.d.ts.map +0 -1
  313. package/lib/installation/index.js.map +0 -1
  314. package/lib/installation/types.js.map +0 -1
  315. package/lib/ir/generated/types.js.map +0 -1
  316. package/lib/ir/index.d.ts.map +0 -1
  317. package/lib/ir/index.js.map +0 -1
  318. package/lib/ir/validate.test.d.ts +0 -2
  319. package/lib/ir/validate.test.d.ts.map +0 -1
  320. package/lib/ir/validate.test.js +0 -1061
  321. package/lib/ir/validate.test.js.map +0 -1
  322. package/lib/json/index.test.d.ts +0 -2
  323. package/lib/json/index.test.d.ts.map +0 -1
  324. package/lib/json/index.test.js +0 -142
  325. package/lib/json/index.test.js.map +0 -1
  326. package/lib/lenses.test.d.ts +0 -2
  327. package/lib/lenses.test.d.ts.map +0 -1
  328. package/lib/lenses.test.js +0 -80
  329. package/lib/lenses.test.js.map +0 -1
  330. package/lib/live/LiveOntology.test.d.ts +0 -2
  331. package/lib/live/LiveOntology.test.d.ts.map +0 -1
  332. package/lib/live/LiveOntology.test.js +0 -507
  333. package/lib/live/LiveOntology.test.js.map +0 -1
  334. package/lib/live/OntologyBackendAdapter.js.map +0 -1
  335. package/lib/live/actions/createLiveOntologyAction.test.d.ts +0 -2
  336. package/lib/live/actions/createLiveOntologyAction.test.d.ts.map +0 -1
  337. package/lib/live/actions/createLiveOntologyAction.test.js +0 -232
  338. package/lib/live/actions/createLiveOntologyAction.test.js.map +0 -1
  339. package/lib/live/actions/prepareActionParameters.test.d.ts +0 -2
  340. package/lib/live/actions/prepareActionParameters.test.d.ts.map +0 -1
  341. package/lib/live/actions/prepareActionParameters.test.js +0 -165
  342. package/lib/live/actions/prepareActionParameters.test.js.map +0 -1
  343. package/lib/live/attachments/attachmentMetadata.test.d.ts +0 -2
  344. package/lib/live/attachments/attachmentMetadata.test.d.ts.map +0 -1
  345. package/lib/live/attachments/attachmentMetadata.test.js +0 -73
  346. package/lib/live/attachments/attachmentMetadata.test.js.map +0 -1
  347. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts +0 -2
  348. package/lib/live/attachments/createLiveOntologyAttachments.test.d.ts.map +0 -1
  349. package/lib/live/attachments/createLiveOntologyAttachments.test.js +0 -363
  350. package/lib/live/attachments/createLiveOntologyAttachments.test.js.map +0 -1
  351. package/lib/live/attachments/types.js.map +0 -1
  352. package/lib/live/expression.test.d.ts +0 -2
  353. package/lib/live/expression.test.d.ts.map +0 -1
  354. package/lib/live/expression.test.js +0 -281
  355. package/lib/live/expression.test.js.map +0 -1
  356. package/lib/live/index.d.ts.map +0 -1
  357. package/lib/live/index.js.map +0 -1
  358. package/lib/live/mutators/OntologyEdits.test.d.ts +0 -2
  359. package/lib/live/mutators/OntologyEdits.test.d.ts.map +0 -1
  360. package/lib/live/mutators/OntologyEdits.test.js +0 -85
  361. package/lib/live/mutators/OntologyEdits.test.js.map +0 -1
  362. package/lib/live/mutators/createMutatorTx.test.d.ts +0 -2
  363. package/lib/live/mutators/createMutatorTx.test.d.ts.map +0 -1
  364. package/lib/live/mutators/createMutatorTx.test.js +0 -182
  365. package/lib/live/mutators/createMutatorTx.test.js.map +0 -1
  366. package/lib/live/mutators/types.js.map +0 -1
  367. package/lib/live/objects/OntologyObject.js.map +0 -1
  368. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts +0 -2
  369. package/lib/live/objects/createLiveOntologyObjectCollection.test.d.ts.map +0 -1
  370. package/lib/live/objects/createLiveOntologyObjectCollection.test.js +0 -181
  371. package/lib/live/objects/createLiveOntologyObjectCollection.test.js.map +0 -1
  372. package/lib/live/outbox/createOntologyOutbox.test.d.ts +0 -2
  373. package/lib/live/outbox/createOntologyOutbox.test.d.ts.map +0 -1
  374. package/lib/live/outbox/createOntologyOutbox.test.js +0 -1007
  375. package/lib/live/outbox/createOntologyOutbox.test.js.map +0 -1
  376. package/lib/live/outbox/outboxValues.d.ts +0 -7
  377. package/lib/live/outbox/outboxValues.d.ts.map +0 -1
  378. package/lib/live/outbox/outboxValues.js +0 -76
  379. package/lib/live/outbox/outboxValues.js.map +0 -1
  380. package/lib/meta/generated/types.js.map +0 -1
  381. package/lib/meta/ontology.test.d.ts +0 -2
  382. package/lib/meta/ontology.test.d.ts.map +0 -1
  383. package/lib/meta/ontology.test.js +0 -84
  384. package/lib/meta/ontology.test.js.map +0 -1
  385. package/lib/utils/index.d.ts.map +0 -1
  386. package/lib/utils/index.js.map +0 -1
  387. package/lib/utils/links.test.d.ts +0 -2
  388. package/lib/utils/links.test.d.ts.map +0 -1
  389. package/lib/utils/links.test.js +0 -109
  390. package/lib/utils/links.test.js.map +0 -1
  391. package/lib/utils/paths.test.d.ts +0 -2
  392. package/lib/utils/paths.test.d.ts.map +0 -1
  393. package/lib/utils/paths.test.js +0 -33
  394. package/lib/utils/paths.test.js.map +0 -1
  395. package/lib/utils/targets.js.map +0 -1
  396. package/lib/utils/typeNames.js.map +0 -1
  397. package/lib/utils/types.test.d.ts +0 -2
  398. package/lib/utils/types.test.d.ts.map +0 -1
  399. package/lib/utils/types.test.js +0 -157
  400. package/lib/utils/types.test.js.map +0 -1
  401. package/lib/utils/uncertain.test.d.ts +0 -2
  402. package/lib/utils/uncertain.test.d.ts.map +0 -1
  403. package/lib/utils/uncertain.test.js +0 -14
  404. package/lib/utils/uncertain.test.js.map +0 -1
  405. package/lib/utils/validation.js.map +0 -1
  406. package/lib/utils/values.js.map +0 -1
@@ -1,1061 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { o } from "./generated/builders.js";
3
- import { validate } from "./validate.js";
4
- function expectOk(result) {
5
- expect(result.kind).toBe("ok");
6
- }
7
- function expectErr(result, count) {
8
- expect(result.kind).toBe("err");
9
- if (result.kind === "err" && count !== undefined) {
10
- expect(result.value).toHaveLength(count);
11
- }
12
- }
13
- function getErrors(result) {
14
- return result.kind === "ok" ? [] : result.value.map((issue) => issue.message);
15
- }
16
- const emptyOntology = {
17
- types: [],
18
- objectTypes: [],
19
- linkTypes: [],
20
- actionTypes: [],
21
- queryFunctionTypes: [],
22
- };
23
- const minimalObjectType = (overrides) => ({
24
- name: "Employee",
25
- displayName: "Employee",
26
- pluralDisplayName: "Employees",
27
- primaryKey: "employeeId",
28
- properties: [
29
- { name: "employeeId", displayName: "Employee ID", type: o.string({}) },
30
- { name: "name", displayName: "Name", type: o.string({}) },
31
- ],
32
- ...overrides,
33
- });
34
- describe("Ontology Validation", () => {
35
- it("should validate an empty ontology", () => {
36
- expectOk(validate(emptyOntology));
37
- });
38
- it("should validate a simple ontology with object types", () => {
39
- const ontology = {
40
- ...emptyOntology,
41
- objectTypes: [minimalObjectType()],
42
- };
43
- expectOk(validate(ontology));
44
- });
45
- describe("Primary Key Validation", () => {
46
- it("should detect primary key that doesn't reference a property", () => {
47
- const ontology = {
48
- ...emptyOntology,
49
- objectTypes: [minimalObjectType({ primaryKey: "nonExistent" })],
50
- };
51
- const result = validate(ontology);
52
- expectErr(result, 1);
53
- expect(getErrors(result)).toContain('Primary key "nonExistent" does not reference a valid property.');
54
- });
55
- it("should accept valid primary key reference", () => {
56
- const ontology = {
57
- ...emptyOntology,
58
- objectTypes: [minimalObjectType({ primaryKey: "employeeId" })],
59
- };
60
- expectOk(validate(ontology));
61
- });
62
- });
63
- describe("Title Validation", () => {
64
- it("should detect a title that doesn't reference a property", () => {
65
- const ontology = {
66
- ...emptyOntology,
67
- objectTypes: [minimalObjectType({ title: "nonExistent" })],
68
- };
69
- const result = validate(ontology);
70
- expectErr(result, 1);
71
- expect(getErrors(result)).toContain('Title "nonExistent" does not reference a valid property.');
72
- });
73
- it("should accept a valid title property reference", () => {
74
- const ontology = {
75
- ...emptyOntology,
76
- objectTypes: [minimalObjectType({ title: "name" })],
77
- };
78
- expectOk(validate(ontology));
79
- });
80
- });
81
- describe("Duplicate Name Detection", () => {
82
- it("should detect duplicate object type names", () => {
83
- const ontology = {
84
- ...emptyOntology,
85
- objectTypes: [minimalObjectType(), minimalObjectType()],
86
- };
87
- const result = validate(ontology);
88
- expectErr(result, 1);
89
- expect(getErrors(result)).toContain('Duplicate object type name: "Employee".');
90
- });
91
- it("should detect duplicate value type names", () => {
92
- const ontology = {
93
- ...emptyOntology,
94
- types: [
95
- { name: "Address", type: o.struct({ fields: [] }) },
96
- { name: "Address", type: o.struct({ fields: [] }) },
97
- ],
98
- };
99
- const result = validate(ontology);
100
- expectErr(result, 1);
101
- expect(getErrors(result)).toContain('Duplicate value type name: "Address".');
102
- });
103
- it("should detect duplicate link type target names for one source object", () => {
104
- const ontology = {
105
- ...emptyOntology,
106
- objectTypes: [minimalObjectType({ name: "A" }), minimalObjectType({ name: "B" })],
107
- linkTypes: [
108
- {
109
- id: "aToB1",
110
- source: { objectType: "A", name: "toB", displayName: "To B" },
111
- target: { objectType: "B", name: "fromA", displayName: "From A" },
112
- foreignKey: "employeeId",
113
- cardinality: "many",
114
- },
115
- {
116
- id: "aToB2",
117
- source: { objectType: "A", name: "toB2", displayName: "To B Again" },
118
- target: { objectType: "B", name: "fromA", displayName: "From A Again" },
119
- foreignKey: "employeeId",
120
- cardinality: "one",
121
- },
122
- ],
123
- };
124
- const result = validate(ontology);
125
- expectErr(result, 1);
126
- expect(getErrors(result)).toContain('Duplicate link type target name: "fromA" on "A".');
127
- });
128
- it("should detect duplicate property names within an object type", () => {
129
- const ontology = {
130
- ...emptyOntology,
131
- objectTypes: [
132
- {
133
- name: "Employee",
134
- displayName: "Employee",
135
- pluralDisplayName: "Employees",
136
- primaryKey: "id",
137
- properties: [
138
- { name: "id", displayName: "ID", type: o.string({}) },
139
- { name: "id", displayName: "ID Duplicate", type: o.string({}) },
140
- ],
141
- },
142
- ],
143
- };
144
- const result = validate(ontology);
145
- expectErr(result, 1);
146
- expect(getErrors(result)).toContain('Duplicate property name: "id".');
147
- });
148
- it("should detect duplicate query function type names and parameters", () => {
149
- const ontology = {
150
- ...emptyOntology,
151
- queryFunctionTypes: [
152
- {
153
- name: "search",
154
- displayName: "Search",
155
- parameters: [
156
- { name: "query", displayName: "Query", type: o.string({}) },
157
- { name: "query", displayName: "Query duplicate", type: o.string({}) },
158
- ],
159
- returnType: o.list({ elementType: o.string({}) }),
160
- },
161
- {
162
- name: "search",
163
- displayName: "Search duplicate",
164
- parameters: [],
165
- returnType: o.string({}),
166
- },
167
- ],
168
- };
169
- const result = validate(ontology);
170
- expectErr(result, 2);
171
- expect(getErrors(result)).toContain('Duplicate query function parameter name: "query".');
172
- expect(getErrors(result)).toContain('Duplicate query function type name: "search".');
173
- });
174
- });
175
- describe("Link Validation", () => {
176
- it("should detect link referencing non-existent source object type", () => {
177
- const ontology = {
178
- ...emptyOntology,
179
- objectTypes: [minimalObjectType()],
180
- linkTypes: [
181
- {
182
- id: "badLinkSource",
183
- source: {
184
- objectType: "NonExistent",
185
- name: "missingSource",
186
- displayName: "Missing Source",
187
- },
188
- target: {
189
- objectType: "Employee",
190
- name: "employee",
191
- displayName: "Employee",
192
- },
193
- foreignKey: "employeeId",
194
- cardinality: "one",
195
- },
196
- ],
197
- };
198
- const result = validate(ontology);
199
- expectErr(result, 1);
200
- expect(getErrors(result)).toContain('Source object type "NonExistent" does not exist.');
201
- });
202
- it("should detect link referencing non-existent target object type", () => {
203
- const ontology = {
204
- ...emptyOntology,
205
- objectTypes: [minimalObjectType()],
206
- linkTypes: [
207
- {
208
- id: "badLinkTarget",
209
- source: {
210
- objectType: "Employee",
211
- name: "missingTarget",
212
- displayName: "Missing Target",
213
- },
214
- target: {
215
- objectType: "NonExistent",
216
- name: "unknown",
217
- displayName: "Unknown",
218
- },
219
- foreignKey: "employeeId",
220
- cardinality: "many",
221
- },
222
- ],
223
- };
224
- const result = validate(ontology);
225
- expectErr(result, 1);
226
- expect(getErrors(result)).toContain('Target object type "NonExistent" does not exist.');
227
- });
228
- it("should reject a foreign key that exists only on the target", () => {
229
- const ontology = {
230
- ...emptyOntology,
231
- objectTypes: [
232
- minimalObjectType({
233
- name: "Project",
234
- }),
235
- minimalObjectType({
236
- name: "Issue",
237
- properties: [
238
- {
239
- name: "employeeId",
240
- displayName: "Employee ID",
241
- type: o.string({}),
242
- },
243
- {
244
- name: "projectId",
245
- displayName: "Project ID",
246
- type: o.string({}),
247
- },
248
- ],
249
- }),
250
- ],
251
- linkTypes: [
252
- {
253
- id: "projectIssues",
254
- source: {
255
- objectType: "Project",
256
- name: "project",
257
- displayName: "Project",
258
- },
259
- target: {
260
- objectType: "Issue",
261
- name: "issues",
262
- displayName: "Issues",
263
- },
264
- foreignKey: "projectId",
265
- cardinality: "many",
266
- },
267
- ],
268
- };
269
- const result = validate(ontology);
270
- expectErr(result, 1);
271
- expect(getErrors(result)).toContain('Foreign key "projectId" does not exist on source object type "Project" for link "projectIssues".');
272
- });
273
- it("should validate links with valid object type references", () => {
274
- const ontology = {
275
- ...emptyOntology,
276
- objectTypes: [minimalObjectType({ name: "Author" }), minimalObjectType({ name: "Post" })],
277
- linkTypes: [
278
- {
279
- id: "authorPosts",
280
- source: {
281
- objectType: "Author",
282
- name: "posts",
283
- displayName: "Posts",
284
- },
285
- target: {
286
- objectType: "Post",
287
- name: "author",
288
- displayName: "Author",
289
- },
290
- foreignKey: "employeeId",
291
- cardinality: "many",
292
- },
293
- ],
294
- };
295
- expectOk(validate(ontology));
296
- });
297
- });
298
- describe("Ref Resolution", () => {
299
- it("should detect unknown value type references in properties", () => {
300
- const ontology = {
301
- ...emptyOntology,
302
- objectTypes: [
303
- {
304
- name: "Employee",
305
- displayName: "Employee",
306
- pluralDisplayName: "Employees",
307
- primaryKey: "id",
308
- properties: [
309
- { name: "id", displayName: "ID", type: o.string({}) },
310
- {
311
- name: "address",
312
- displayName: "Address",
313
- type: o.ref({ name: "UnknownType" }),
314
- },
315
- ],
316
- },
317
- ],
318
- };
319
- const result = validate(ontology);
320
- expectErr(result, 1);
321
- expect(getErrors(result)).toContain('Unknown value type reference: "UnknownType".');
322
- });
323
- it("should detect unknown value type references in query function types", () => {
324
- const ontology = {
325
- ...emptyOntology,
326
- queryFunctionTypes: [
327
- {
328
- name: "lookup",
329
- displayName: "Lookup",
330
- parameters: [
331
- {
332
- name: "filter",
333
- displayName: "Filter",
334
- type: o.ref({ name: "MissingFilter" }),
335
- },
336
- ],
337
- returnType: o.ref({ name: "MissingResult" }),
338
- },
339
- ],
340
- };
341
- const result = validate(ontology);
342
- expectErr(result, 2);
343
- expect(getErrors(result)).toContain('Unknown value type reference: "MissingFilter".');
344
- expect(getErrors(result)).toContain('Unknown value type reference: "MissingResult".');
345
- });
346
- it("should resolve refs to declared value types", () => {
347
- const ontology = {
348
- ...emptyOntology,
349
- types: [
350
- {
351
- name: "Address",
352
- type: o.struct({
353
- fields: [{ name: "city", displayName: "City", type: o.string({}) }],
354
- }),
355
- },
356
- ],
357
- objectTypes: [
358
- {
359
- name: "Employee",
360
- displayName: "Employee",
361
- pluralDisplayName: "Employees",
362
- primaryKey: "id",
363
- properties: [
364
- { name: "id", displayName: "ID", type: o.string({}) },
365
- {
366
- name: "address",
367
- displayName: "Address",
368
- type: o.ref({ name: "Address" }),
369
- },
370
- ],
371
- },
372
- ],
373
- };
374
- expectOk(validate(ontology));
375
- });
376
- it("should detect unknown object type references", () => {
377
- const ontology = {
378
- ...emptyOntology,
379
- objectTypes: [
380
- {
381
- name: "Employee",
382
- displayName: "Employee",
383
- pluralDisplayName: "Employees",
384
- primaryKey: "id",
385
- properties: [
386
- { name: "id", displayName: "ID", type: o.string({}) },
387
- {
388
- name: "managerId",
389
- displayName: "Manager ID",
390
- type: o.objectReference({ objectType: "Manager" }),
391
- },
392
- ],
393
- },
394
- ],
395
- };
396
- const result = validate(ontology);
397
- expectErr(result, 1);
398
- expect(getErrors(result)).toContain('Unknown object type reference: "Manager".');
399
- });
400
- it("should resolve object references to declared object types", () => {
401
- const ontology = {
402
- ...emptyOntology,
403
- objectTypes: [
404
- {
405
- name: "Manager",
406
- displayName: "Manager",
407
- pluralDisplayName: "Managers",
408
- primaryKey: "id",
409
- properties: [{ name: "id", displayName: "ID", type: o.string({}) }],
410
- },
411
- {
412
- name: "Employee",
413
- displayName: "Employee",
414
- pluralDisplayName: "Employees",
415
- primaryKey: "id",
416
- properties: [
417
- { name: "id", displayName: "ID", type: o.string({}) },
418
- {
419
- name: "managerId",
420
- displayName: "Manager ID",
421
- type: o.objectReference({ objectType: "Manager" }),
422
- },
423
- ],
424
- },
425
- ],
426
- };
427
- expectOk(validate(ontology));
428
- });
429
- });
430
- describe("Attachment Type", () => {
431
- it("should validate properties with attachment type", () => {
432
- const ontology = {
433
- ...emptyOntology,
434
- objectTypes: [
435
- {
436
- name: "Document",
437
- displayName: "Document",
438
- pluralDisplayName: "Documents",
439
- primaryKey: "docId",
440
- properties: [
441
- { name: "docId", displayName: "Doc ID", type: o.string({}) },
442
- { name: "file", displayName: "File", type: o.attachment({}) },
443
- {
444
- name: "thumbnail",
445
- displayName: "Thumbnail",
446
- type: o.optional({ type: o.attachment({}) }),
447
- },
448
- ],
449
- },
450
- ],
451
- };
452
- expectOk(validate(ontology));
453
- });
454
- it("should validate attachment media type constraints", () => {
455
- const valid = {
456
- ...emptyOntology,
457
- types: [
458
- {
459
- name: "Image",
460
- type: o.attachment({
461
- constraint: {
462
- size: { min: 1, max: 10_000_000 },
463
- content: o.AttachmentContentConstraint.image({
464
- mediaTypes: ["image/png", "image/jpeg"],
465
- dimensions: {
466
- width: { min: 320, max: 4096 },
467
- height: { min: 320, max: 4096 },
468
- },
469
- }),
470
- },
471
- }),
472
- },
473
- ],
474
- };
475
- expectOk(validate(valid));
476
- const invalid = {
477
- ...emptyOntology,
478
- types: [
479
- {
480
- name: "Image",
481
- type: o.attachment({
482
- constraint: {
483
- size: { min: 10, max: 1 },
484
- content: o.AttachmentContentConstraint.image({
485
- mediaTypes: ["image/avif"],
486
- dimensions: {
487
- width: { min: -1 },
488
- },
489
- }),
490
- },
491
- }),
492
- },
493
- ],
494
- };
495
- const errors = getErrors(validate(invalid));
496
- expect(errors).toContain('Unsupported image media type: "image/avif".');
497
- expect(errors).toContain("Range min must be less than or equal to max.");
498
- expect(errors).toContain("Range min must be a finite, non-negative number.");
499
- });
500
- });
501
- describe("Action Validation", () => {
502
- it("should validate action defaults and logic steps", () => {
503
- const ontology = {
504
- ...emptyOntology,
505
- objectTypes: [
506
- {
507
- name: "Task",
508
- displayName: "Task",
509
- pluralDisplayName: "Tasks",
510
- primaryKey: "taskId",
511
- properties: [
512
- { name: "taskId", displayName: "Task ID", type: o.string({}) },
513
- { name: "title", displayName: "Title", type: o.string({}) },
514
- { name: "updatedAt", displayName: "Updated At", type: o.timestamp({}) },
515
- ],
516
- },
517
- ],
518
- actionTypes: [
519
- {
520
- name: "createTask",
521
- displayName: "Create Task",
522
- parameters: [
523
- {
524
- name: "title",
525
- displayName: "Title",
526
- type: o.string({}),
527
- },
528
- {
529
- name: "__taskId",
530
- displayName: "Task ID",
531
- type: o.optional({ type: o.string({}) }),
532
- defaultValue: o.Expression.uuid({}),
533
- },
534
- {
535
- name: "__now",
536
- displayName: "Now",
537
- type: o.optional({ type: o.timestamp({}) }),
538
- defaultValue: o.Expression.now({}),
539
- },
540
- ],
541
- logic: [
542
- o.ActionLogicStep.createObject({
543
- objectType: "Task",
544
- values: [
545
- {
546
- property: ["taskId"],
547
- value: o.Expression.inputReference({
548
- name: "__taskId",
549
- }),
550
- },
551
- {
552
- property: ["title"],
553
- value: o.Expression.inputReference({
554
- name: "title",
555
- }),
556
- },
557
- {
558
- property: ["updatedAt"],
559
- value: o.Expression.inputReference({
560
- name: "__now",
561
- }),
562
- },
563
- ],
564
- }),
565
- ],
566
- },
567
- ],
568
- };
569
- expectOk(validate(ontology));
570
- });
571
- it("should validate value-reference action parameter defaults", () => {
572
- const ontology = {
573
- ...emptyOntology,
574
- objectTypes: [minimalObjectType()],
575
- actionTypes: [
576
- {
577
- name: "updateEmployee",
578
- displayName: "Update Employee",
579
- parameters: [
580
- {
581
- name: "employee",
582
- displayName: "Employee",
583
- type: o.objectReference({ objectType: "Employee" }),
584
- },
585
- {
586
- name: "name",
587
- displayName: "Name",
588
- type: o.string({}),
589
- defaultValue: o.Expression.getAt({
590
- source: o.Expression.objectLookup({
591
- reference: o.Expression.inputReference({
592
- name: "employee",
593
- }),
594
- }),
595
- path: ["name"],
596
- }),
597
- },
598
- ],
599
- logic: [],
600
- },
601
- ],
602
- };
603
- expectOk(validate(ontology));
604
- });
605
- it("should detect incompatible value-reference defaults", () => {
606
- const ontology = {
607
- ...emptyOntology,
608
- objectTypes: [minimalObjectType()],
609
- actionTypes: [
610
- {
611
- name: "updateEmployee",
612
- displayName: "Update Employee",
613
- parameters: [
614
- {
615
- name: "employee",
616
- displayName: "Employee",
617
- type: o.objectReference({ objectType: "Employee" }),
618
- },
619
- {
620
- name: "count",
621
- displayName: "Count",
622
- type: o.integer({}),
623
- defaultValue: o.Expression.getAt({
624
- source: o.Expression.objectLookup({
625
- reference: o.Expression.inputReference({
626
- name: "employee",
627
- }),
628
- }),
629
- path: ["name"],
630
- }),
631
- },
632
- ],
633
- logic: [],
634
- },
635
- ],
636
- };
637
- expect(getErrors(validate(ontology))).toContain('Default value for "count" has an incompatible type.');
638
- });
639
- it("should detect invalid action parameter references", () => {
640
- const ontology = {
641
- ...emptyOntology,
642
- objectTypes: [minimalObjectType()],
643
- actionTypes: [
644
- {
645
- name: "renameEmployee",
646
- displayName: "Rename Employee",
647
- parameters: [
648
- {
649
- name: "employee",
650
- displayName: "Employee",
651
- type: o.objectReference({ objectType: "Employee" }),
652
- },
653
- ],
654
- logic: [
655
- o.ActionLogicStep.updateObject({
656
- object: {
657
- name: "missing",
658
- },
659
- values: [],
660
- }),
661
- ],
662
- },
663
- ],
664
- };
665
- const result = validate(ontology);
666
- expectErr(result, 1);
667
- expect(getErrors(result)).toContain('Unknown action parameter: "missing".');
668
- });
669
- it("validates map expressions with scoped element references", () => {
670
- const entryType = o.struct({
671
- fields: [
672
- {
673
- name: "code",
674
- displayName: "Code",
675
- type: o.string({}),
676
- },
677
- ],
678
- });
679
- const ontology = {
680
- ...emptyOntology,
681
- objectTypes: [
682
- {
683
- name: "Record",
684
- displayName: "Record",
685
- pluralDisplayName: "Records",
686
- primaryKey: "id",
687
- properties: [
688
- {
689
- name: "id",
690
- displayName: "ID",
691
- type: o.string({}),
692
- },
693
- {
694
- name: "entries",
695
- displayName: "Entries",
696
- type: o.list({
697
- elementType: o.struct({
698
- fields: [
699
- {
700
- name: "renamedCode",
701
- displayName: "Renamed code",
702
- type: o.string({}),
703
- },
704
- ],
705
- }),
706
- }),
707
- },
708
- ],
709
- },
710
- ],
711
- actionTypes: [
712
- {
713
- name: "createRecord",
714
- displayName: "Create record",
715
- parameters: [
716
- {
717
- name: "entries",
718
- displayName: "Entries",
719
- type: o.list({
720
- elementType: entryType,
721
- }),
722
- },
723
- ],
724
- logic: [
725
- o.ActionLogicStep.createObject({
726
- objectType: "Record",
727
- values: [
728
- {
729
- property: ["entries"],
730
- value: o.Expression.map({
731
- source: o.Expression.inputReference({
732
- name: "entries",
733
- }),
734
- binding: "entry",
735
- body: o.Expression.struct({
736
- fields: [
737
- {
738
- name: "renamedCode",
739
- value: o.Expression.getAt({
740
- source: o.Expression.localReference({
741
- name: "entry",
742
- }),
743
- path: ["code"],
744
- }),
745
- },
746
- ],
747
- }),
748
- }),
749
- },
750
- ],
751
- }),
752
- ],
753
- },
754
- ],
755
- };
756
- expectOk(validate(ontology));
757
- });
758
- it("rejects invalid map sources and local references", () => {
759
- const ontology = {
760
- ...emptyOntology,
761
- objectTypes: [
762
- {
763
- name: "Record",
764
- displayName: "Record",
765
- pluralDisplayName: "Records",
766
- primaryKey: "id",
767
- properties: [
768
- {
769
- name: "id",
770
- displayName: "ID",
771
- type: o.string({}),
772
- },
773
- ],
774
- },
775
- ],
776
- actionTypes: [
777
- {
778
- name: "createRecord",
779
- displayName: "Create record",
780
- parameters: [
781
- {
782
- name: "title",
783
- displayName: "Title",
784
- type: o.string({}),
785
- },
786
- ],
787
- logic: [
788
- o.ActionLogicStep.createObject({
789
- objectType: "Record",
790
- values: [
791
- {
792
- property: ["id"],
793
- value: o.Expression.map({
794
- source: o.Expression.inputReference({
795
- name: "title",
796
- }),
797
- binding: "entry",
798
- body: o.Expression.localReference({
799
- name: "missing",
800
- }),
801
- }),
802
- },
803
- ],
804
- }),
805
- ],
806
- },
807
- ],
808
- };
809
- const errors = getErrors(validate(ontology));
810
- expect(errors).toContain("Map expression source must resolve to a list.");
811
- expect(errors).toContain('Unknown expression binding: "missing".');
812
- });
813
- });
814
- describe("Literal Expression", () => {
815
- it("should validate an action with a literal default value", () => {
816
- const ontology = {
817
- ...emptyOntology,
818
- objectTypes: [
819
- {
820
- name: "Task",
821
- displayName: "Task",
822
- pluralDisplayName: "Tasks",
823
- primaryKey: "taskId",
824
- properties: [
825
- { name: "taskId", displayName: "Task ID", type: o.string({}) },
826
- { name: "status", displayName: "Status", type: o.string({}) },
827
- ],
828
- },
829
- ],
830
- actionTypes: [
831
- {
832
- name: "createTask",
833
- displayName: "Create Task",
834
- parameters: [
835
- {
836
- name: "taskId",
837
- displayName: "Task ID",
838
- type: o.string({}),
839
- defaultValue: o.Expression.uuid({}),
840
- },
841
- {
842
- name: "status",
843
- displayName: "Status",
844
- type: o.string({}),
845
- defaultValue: o.Expression.literal({ value: "open" }),
846
- },
847
- ],
848
- logic: [
849
- o.ActionLogicStep.createObject({
850
- objectType: "Task",
851
- values: [
852
- {
853
- property: ["taskId"],
854
- value: o.Expression.inputReference({ name: "taskId" }),
855
- },
856
- {
857
- property: ["status"],
858
- value: o.Expression.inputReference({ name: "status" }),
859
- },
860
- ],
861
- }),
862
- ],
863
- },
864
- ],
865
- };
866
- expectOk(validate(ontology));
867
- });
868
- it("should validate literal expressions in property assignments", () => {
869
- const ontology = {
870
- ...emptyOntology,
871
- objectTypes: [
872
- {
873
- name: "Task",
874
- displayName: "Task",
875
- pluralDisplayName: "Tasks",
876
- primaryKey: "taskId",
877
- properties: [
878
- { name: "taskId", displayName: "Task ID", type: o.string({}) },
879
- { name: "status", displayName: "Status", type: o.string({}) },
880
- ],
881
- },
882
- ],
883
- actionTypes: [
884
- {
885
- name: "createTask",
886
- displayName: "Create Task",
887
- parameters: [
888
- {
889
- name: "taskId",
890
- displayName: "Task ID",
891
- type: o.string({}),
892
- },
893
- ],
894
- logic: [
895
- o.ActionLogicStep.createObject({
896
- objectType: "Task",
897
- values: [
898
- {
899
- property: ["taskId"],
900
- value: o.Expression.inputReference({ name: "taskId" }),
901
- },
902
- {
903
- property: ["status"],
904
- value: o.Expression.literal({ value: "open" }),
905
- },
906
- ],
907
- }),
908
- ],
909
- },
910
- ],
911
- };
912
- expectOk(validate(ontology));
913
- });
914
- });
915
- describe("Context Validation", () => {
916
- const userObjectType = {
917
- name: "User",
918
- displayName: "User",
919
- pluralDisplayName: "Users",
920
- primaryKey: "id",
921
- properties: [{ name: "id", displayName: "ID", type: o.string({}) }],
922
- };
923
- it("validates context.user references in action logic", () => {
924
- const ontology = {
925
- ...emptyOntology,
926
- contextType: o.struct({
927
- fields: [
928
- {
929
- name: "user",
930
- displayName: "User",
931
- type: o.objectReference({ objectType: "User" }),
932
- },
933
- ],
934
- }),
935
- objectTypes: [
936
- userObjectType,
937
- {
938
- name: "Task",
939
- displayName: "Task",
940
- pluralDisplayName: "Tasks",
941
- primaryKey: "id",
942
- properties: [
943
- { name: "id", displayName: "ID", type: o.string({}) },
944
- {
945
- name: "createdBy",
946
- displayName: "Created by",
947
- type: o.objectReference({ objectType: "User" }),
948
- },
949
- ],
950
- },
951
- ],
952
- actionTypes: [
953
- {
954
- name: "createTask",
955
- displayName: "Create task",
956
- parameters: [],
957
- logic: [
958
- o.ActionLogicStep.createObject({
959
- objectType: "Task",
960
- values: [
961
- {
962
- property: ["id"],
963
- value: o.Expression.literal({
964
- value: "task-1",
965
- }),
966
- },
967
- {
968
- property: ["createdBy"],
969
- value: o.Expression.contextReference({
970
- name: "user",
971
- }),
972
- },
973
- ],
974
- }),
975
- ],
976
- },
977
- ],
978
- };
979
- expectOk(validate(ontology));
980
- });
981
- it("allows context.user to optionally reference any object type", () => {
982
- expectOk(validate({
983
- ...emptyOntology,
984
- objectTypes: [
985
- {
986
- name: "Membership",
987
- displayName: "Membership",
988
- pluralDisplayName: "Memberships",
989
- primaryKey: "id",
990
- properties: [
991
- {
992
- name: "id",
993
- displayName: "ID",
994
- type: o.string({}),
995
- },
996
- ],
997
- },
998
- ],
999
- contextType: o.struct({
1000
- fields: [
1001
- {
1002
- name: "user",
1003
- displayName: "User",
1004
- type: o.optional({
1005
- type: o.objectReference({
1006
- objectType: "Membership",
1007
- }),
1008
- }),
1009
- },
1010
- ],
1011
- }),
1012
- }));
1013
- });
1014
- it("rejects a non-reference type for reserved context.user", () => {
1015
- const result = validate({
1016
- ...emptyOntology,
1017
- contextType: o.struct({
1018
- fields: [
1019
- {
1020
- name: "user",
1021
- displayName: "User",
1022
- type: o.string({}),
1023
- },
1024
- ],
1025
- }),
1026
- });
1027
- expectErr(result, 1);
1028
- expect(getErrors(result)).toContain('Reserved context field "user" must be an object reference.');
1029
- });
1030
- });
1031
- describe("Blog Example", () => {
1032
- it("should validate the blog example ontology", async () => {
1033
- const { default: blogOntology } = await import("../examples/blog.js");
1034
- expectOk(validate(blogOntology));
1035
- });
1036
- });
1037
- describe("Ontology Ontology", () => {
1038
- it("should validate the ontology ontology (self-describing)", async () => {
1039
- const { default: ontologyOntology } = await import("../meta/ontology.js");
1040
- expectOk(validate(ontologyOntology));
1041
- });
1042
- it("should contain ObjectType, ValueType, LinkType, and ActionType as object types", async () => {
1043
- const { default: ontologyOntology } = await import("../meta/ontology.js");
1044
- const objectTypeNames = ontologyOntology.objectTypes.map((ot) => ot.name);
1045
- expect(objectTypeNames).toContain("ObjectType");
1046
- expect(objectTypeNames).toContain("ValueType");
1047
- expect(objectTypeNames).toContain("LinkType");
1048
- expect(objectTypeNames).toContain("ActionType");
1049
- });
1050
- it("should have links from LinkType to ObjectType for source and target metadata", async () => {
1051
- const { default: ontologyOntology } = await import("../meta/ontology.js");
1052
- const sourceNames = ontologyOntology.linkTypes.map((lt) => lt.source.name);
1053
- expect(sourceNames).toContain("outgoingLinkTypes");
1054
- expect(sourceNames).toContain("incomingLinkTypes");
1055
- const targetNames = ontologyOntology.linkTypes.map((lt) => lt.target.name);
1056
- expect(targetNames).toContain("source");
1057
- expect(targetNames).toContain("target");
1058
- });
1059
- });
1060
- });
1061
- //# sourceMappingURL=validate.test.js.map