@dxos/echo 0.8.4-main.406dc2a → 0.8.4-main.40e3dcdf1b

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 (655) hide show
  1. package/README.md +3 -4
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/neutral/Entity.mjs +59 -0
  5. package/dist/lib/neutral/Err.mjs +12 -0
  6. package/dist/lib/neutral/Feed.mjs +46 -0
  7. package/dist/lib/neutral/Filter.mjs +64 -0
  8. package/dist/lib/neutral/Format.mjs +66 -0
  9. package/dist/lib/neutral/Format.mjs.map +7 -0
  10. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  11. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  12. package/dist/lib/neutral/Key.mjs +12 -0
  13. package/dist/lib/neutral/Key.mjs.map +7 -0
  14. package/dist/lib/neutral/Obj.mjs +110 -0
  15. package/dist/lib/neutral/Obj.mjs.map +7 -0
  16. package/dist/lib/neutral/Order.mjs +12 -0
  17. package/dist/lib/neutral/Order.mjs.map +7 -0
  18. package/dist/lib/neutral/Query.mjs +35 -0
  19. package/dist/lib/neutral/Query.mjs.map +7 -0
  20. package/dist/lib/neutral/QueryResult.mjs +2 -0
  21. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  22. package/dist/lib/neutral/Ref.mjs +24 -0
  23. package/dist/lib/neutral/Ref.mjs.map +7 -0
  24. package/dist/lib/neutral/Relation.mjs +93 -0
  25. package/dist/lib/neutral/Relation.mjs.map +7 -0
  26. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  27. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  28. package/dist/lib/neutral/Tag.mjs +28 -0
  29. package/dist/lib/neutral/Tag.mjs.map +7 -0
  30. package/dist/lib/neutral/Type.mjs +37 -0
  31. package/dist/lib/neutral/Type.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-43Y5DOS6.mjs +396 -0
  33. package/dist/lib/neutral/chunk-43Y5DOS6.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-724GQYEN.mjs +56 -0
  35. package/dist/lib/neutral/chunk-724GQYEN.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  37. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-B5OXLWZL.mjs +402 -0
  39. package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +7 -0
  41. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-BOZZPUXE.mjs +787 -0
  43. package/dist/lib/neutral/chunk-BOZZPUXE.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-CIRHIEMW.mjs +298 -0
  45. package/dist/lib/neutral/chunk-CIRHIEMW.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-DYDJBZEG.mjs +102 -0
  47. package/dist/lib/neutral/chunk-DYDJBZEG.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-FXEG7EOK.mjs +45 -0
  49. package/dist/lib/neutral/chunk-FXEG7EOK.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-FZO7LQO7.mjs +73 -0
  51. package/dist/lib/neutral/chunk-FZO7LQO7.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  53. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-KTAWP7GI.mjs +283 -0
  55. package/dist/lib/neutral/chunk-KTAWP7GI.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-NEGC54NE.mjs +130 -0
  57. package/dist/lib/neutral/chunk-NEGC54NE.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-NQRLRYJM.mjs +313 -0
  59. package/dist/lib/neutral/chunk-NQRLRYJM.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-NXMFBIT5.mjs +299 -0
  61. package/dist/lib/neutral/chunk-NXMFBIT5.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-OENWMTE6.mjs +45 -0
  63. package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  65. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-RMLF7JOZ.mjs +97 -0
  67. package/dist/lib/neutral/chunk-RMLF7JOZ.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-SEMVAGBM.mjs +355 -0
  69. package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-TQQZLKB7.mjs +2712 -0
  71. package/dist/lib/neutral/chunk-TQQZLKB7.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-UBEZSGXY.mjs +51 -0
  73. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-UFDK26FO.mjs +121 -0
  75. package/dist/lib/neutral/chunk-UFDK26FO.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-UI6MWK5W.mjs +42 -0
  77. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-UTBRYVQC.mjs +27 -0
  79. package/dist/lib/neutral/chunk-UTBRYVQC.mjs.map +7 -0
  80. package/dist/lib/neutral/chunk-VA2F47ZC.mjs +152 -0
  81. package/dist/lib/neutral/chunk-VA2F47ZC.mjs.map +7 -0
  82. package/dist/lib/neutral/chunk-WYOKA6AE.mjs +67 -0
  83. package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
  84. package/dist/lib/neutral/chunk-YWXWXIE5.mjs +34 -0
  85. package/dist/lib/neutral/chunk-YWXWXIE5.mjs.map +7 -0
  86. package/dist/lib/neutral/index.mjs +97 -0
  87. package/dist/lib/neutral/index.mjs.map +7 -0
  88. package/dist/lib/{node-esm → neutral}/internal/index.mjs +286 -148
  89. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  90. package/dist/lib/neutral/meta.json +1 -0
  91. package/dist/lib/neutral/testing/index.mjs +373 -0
  92. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  93. package/dist/types/src/Annotation.d.ts +24 -0
  94. package/dist/types/src/Annotation.d.ts.map +1 -0
  95. package/dist/types/src/Collection.d.ts +16 -0
  96. package/dist/types/src/Collection.d.ts.map +1 -0
  97. package/dist/types/src/Database.d.ts +189 -0
  98. package/dist/types/src/Database.d.ts.map +1 -0
  99. package/dist/types/src/Dataset.d.ts +18 -0
  100. package/dist/types/src/Dataset.d.ts.map +1 -0
  101. package/dist/types/src/Entity.d.ts +168 -0
  102. package/dist/types/src/Entity.d.ts.map +1 -0
  103. package/dist/types/src/Entity.test.d.ts +2 -0
  104. package/dist/types/src/Entity.test.d.ts.map +1 -0
  105. package/dist/types/src/Err.d.ts +107 -0
  106. package/dist/types/src/Err.d.ts.map +1 -0
  107. package/dist/types/src/Feed.d.ts +165 -0
  108. package/dist/types/src/Feed.d.ts.map +1 -0
  109. package/dist/types/src/Filter.d.ts +120 -0
  110. package/dist/types/src/Filter.d.ts.map +1 -0
  111. package/dist/types/src/Format.d.ts +4 -0
  112. package/dist/types/src/Format.d.ts.map +1 -0
  113. package/dist/types/src/Hypergraph.d.ts +65 -0
  114. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  115. package/dist/types/src/JsonSchema.d.ts +16 -0
  116. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  117. package/dist/types/src/Key.d.ts +1 -0
  118. package/dist/types/src/Key.d.ts.map +1 -1
  119. package/dist/types/src/Obj.d.ts +419 -101
  120. package/dist/types/src/Obj.d.ts.map +1 -1
  121. package/dist/types/src/Obj.test.d.ts +2 -0
  122. package/dist/types/src/Obj.test.d.ts.map +1 -0
  123. package/dist/types/src/Order.d.ts +16 -0
  124. package/dist/types/src/Order.d.ts.map +1 -0
  125. package/dist/types/src/Query.d.ts +202 -0
  126. package/dist/types/src/Query.d.ts.map +1 -0
  127. package/dist/types/src/Query.test.d.ts +2 -0
  128. package/dist/types/src/Query.test.d.ts.map +1 -0
  129. package/dist/types/src/QueryResult.d.ts +80 -0
  130. package/dist/types/src/QueryResult.d.ts.map +1 -0
  131. package/dist/types/src/Ref.d.ts +61 -11
  132. package/dist/types/src/Ref.d.ts.map +1 -1
  133. package/dist/types/src/Relation.d.ts +288 -21
  134. package/dist/types/src/Relation.d.ts.map +1 -1
  135. package/dist/types/src/Relation.test.d.ts +2 -0
  136. package/dist/types/src/Relation.test.d.ts.map +1 -0
  137. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  138. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  139. package/dist/types/src/Tag.d.ts +18 -0
  140. package/dist/types/src/Tag.d.ts.map +1 -0
  141. package/dist/types/src/Type.d.ts +123 -99
  142. package/dist/types/src/Type.d.ts.map +1 -1
  143. package/dist/types/src/Type.test.d.ts +2 -0
  144. package/dist/types/src/Type.test.d.ts.map +1 -0
  145. package/dist/types/src/View.d.ts +68 -0
  146. package/dist/types/src/View.d.ts.map +1 -0
  147. package/dist/types/src/hierarchy.test.d.ts +2 -0
  148. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  149. package/dist/types/src/index.d.ts +19 -5
  150. package/dist/types/src/index.d.ts.map +1 -1
  151. package/dist/types/src/internal/Annotation/annotations.d.ts +230 -0
  152. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  153. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  154. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  155. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  156. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  157. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  158. package/dist/types/src/internal/Annotation/util.d.ts +39 -0
  159. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  160. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  161. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  162. package/dist/types/src/internal/Entity/entity.d.ts +20 -0
  163. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  164. package/dist/types/src/internal/Entity/index.d.ts +8 -0
  165. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  166. package/dist/types/src/internal/Entity/model.d.ts +55 -0
  167. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  168. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  169. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  170. package/dist/types/src/internal/Entity/relation.d.ts +35 -0
  171. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  172. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  173. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  174. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  175. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  176. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  177. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  178. package/dist/types/src/internal/{formats → Format}/format.d.ts +4 -2
  179. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  180. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  181. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  182. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  183. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  184. package/dist/types/src/internal/{formats → Format}/select.d.ts +6 -4
  185. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  186. package/dist/types/src/internal/{formats → Format}/string.d.ts +4 -0
  187. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  188. package/dist/types/src/internal/{formats → Format}/types.d.ts +14 -10
  189. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  190. package/dist/types/src/internal/{json → JsonSchema}/annotations.d.ts +1 -1
  191. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  192. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  193. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  194. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  195. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  196. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
  197. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  198. package/dist/types/src/internal/{json → JsonSchema}/json-schema.d.ts +4 -2
  199. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  200. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  201. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  202. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  203. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  204. package/dist/types/src/internal/{object/create.d.ts → Obj/create-object.d.ts} +10 -11
  205. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  206. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  207. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  208. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  209. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  210. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  211. package/dist/types/src/internal/Obj/index.d.ts +11 -0
  212. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  213. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  214. package/dist/types/src/internal/Obj/json-serializer.d.ts +44 -0
  215. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  216. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  217. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  218. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  219. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  220. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  221. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  222. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  223. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  225. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  226. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  227. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  228. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  229. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  230. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +4 -4
  231. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  232. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +44 -19
  233. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  234. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  235. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  236. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  237. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  238. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +27 -14
  239. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  240. package/dist/types/src/internal/Type/index.d.ts +4 -0
  241. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  242. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  243. package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
  244. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  245. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  246. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  247. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  248. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  249. package/dist/types/src/internal/common/index.d.ts +4 -0
  250. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  251. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  252. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  253. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  254. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  255. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  256. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  257. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  258. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  259. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  260. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  261. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  262. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  263. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  264. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  265. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  266. package/dist/types/src/internal/common/proxy/make-object.d.ts +14 -0
  267. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  268. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  269. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  270. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  271. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  272. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  273. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  274. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  275. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  276. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  277. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  278. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  279. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  280. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  281. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  282. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +16 -12
  283. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  284. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  285. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  286. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  287. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  288. package/dist/types/src/internal/common/types/entity.d.ts +37 -0
  289. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  290. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  291. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  292. package/dist/types/src/internal/{object → common/types}/meta.d.ts +18 -16
  293. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  294. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  295. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  296. package/dist/types/src/internal/common/types/typename.d.ts +21 -0
  297. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  298. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  299. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  300. package/dist/types/src/internal/index.d.ts +9 -14
  301. package/dist/types/src/internal/index.d.ts.map +1 -1
  302. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  303. package/dist/types/src/testing/index.d.ts +3 -3
  304. package/dist/types/src/testing/index.d.ts.map +1 -1
  305. package/dist/types/src/testing/test-data.d.ts +18 -0
  306. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  307. package/dist/types/src/testing/test-schema.d.ts +304 -0
  308. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  309. package/dist/types/src/testing/util.d.ts +21 -0
  310. package/dist/types/src/testing/util.d.ts.map +1 -0
  311. package/dist/types/tsconfig.tsbuildinfo +1 -1
  312. package/package.json +106 -65
  313. package/src/Annotation.ts +48 -0
  314. package/src/Collection.ts +32 -0
  315. package/src/Database.ts +317 -0
  316. package/src/Dataset.ts +26 -0
  317. package/src/Entity.test.ts +22 -0
  318. package/src/Entity.ts +237 -0
  319. package/src/Err.ts +40 -0
  320. package/src/Feed.ts +257 -0
  321. package/src/Filter.ts +391 -0
  322. package/src/Format.ts +9 -0
  323. package/src/Hypergraph.ts +79 -0
  324. package/src/JsonSchema.ts +26 -0
  325. package/src/Key.ts +3 -0
  326. package/src/Obj.test.ts +447 -0
  327. package/src/Obj.ts +587 -268
  328. package/src/Order.ts +46 -0
  329. package/src/Query.test.ts +632 -0
  330. package/src/Query.ts +522 -0
  331. package/src/QueryResult.ts +106 -0
  332. package/src/Ref.ts +79 -9
  333. package/src/Relation.test.ts +88 -0
  334. package/src/Relation.ts +443 -58
  335. package/src/SchemaRegistry.ts +106 -0
  336. package/src/{query/tag.ts → Tag.ts} +13 -9
  337. package/src/Type.test.ts +52 -0
  338. package/src/Type.ts +167 -153
  339. package/src/View.ts +102 -0
  340. package/src/hierarchy.test.ts +33 -0
  341. package/src/index.ts +20 -6
  342. package/src/internal/{ast → Annotation}/annotations.test.ts +20 -22
  343. package/src/internal/Annotation/annotations.ts +571 -0
  344. package/src/internal/Annotation/index.ts +7 -0
  345. package/src/internal/Annotation/sorting.ts +52 -0
  346. package/src/internal/Annotation/util.ts +85 -0
  347. package/src/internal/Entity/api.ts +31 -0
  348. package/src/internal/Entity/entity.ts +128 -0
  349. package/src/internal/Entity/index.ts +11 -0
  350. package/src/internal/Entity/model.ts +109 -0
  351. package/src/internal/Entity/object.ts +58 -0
  352. package/src/internal/Entity/relation.ts +154 -0
  353. package/src/internal/Entity/util.ts +33 -0
  354. package/src/internal/Entity/version.ts +97 -0
  355. package/src/internal/{formats → Format}/date.test.ts +1 -1
  356. package/src/internal/{formats → Format}/date.ts +5 -5
  357. package/src/internal/{formats → Format}/format.test.ts +6 -6
  358. package/src/internal/{formats → Format}/format.ts +8 -6
  359. package/src/internal/{formats → Format}/number.ts +5 -5
  360. package/src/internal/{formats → Format}/object.ts +4 -4
  361. package/src/internal/{formats → Format}/select.ts +6 -4
  362. package/src/internal/{formats → Format}/string.ts +14 -9
  363. package/src/internal/{formats → Format}/types.ts +54 -43
  364. package/src/internal/{json → JsonSchema}/annotations.ts +3 -3
  365. package/src/internal/{json-schema → JsonSchema}/index.ts +2 -0
  366. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  367. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +36 -36
  368. package/src/internal/{json → JsonSchema}/json-schema.test.ts +98 -94
  369. package/src/internal/{json → JsonSchema}/json-schema.ts +30 -15
  370. package/src/internal/Obj/clone.ts +48 -0
  371. package/src/internal/{object → Obj}/common.ts +3 -4
  372. package/src/internal/{object/create.test.ts → Obj/create-object.test.ts} +31 -33
  373. package/src/internal/{object/create.ts → Obj/create-object.ts} +36 -37
  374. package/src/internal/Obj/deleted.ts +19 -0
  375. package/src/internal/{object → Obj}/ids.ts +1 -1
  376. package/src/internal/Obj/index.ts +14 -0
  377. package/src/internal/{object → Obj}/inspect.ts +5 -7
  378. package/src/internal/Obj/json-serializer.test.ts +121 -0
  379. package/src/internal/{object → Obj}/json-serializer.ts +99 -109
  380. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  381. package/src/internal/Obj/schema-validator.ts +6 -0
  382. package/src/internal/Obj/set-value.test.ts +281 -0
  383. package/src/internal/Obj/set-value.ts +165 -0
  384. package/src/internal/Obj/snapshot.ts +105 -0
  385. package/src/internal/{object → Obj}/typed-object.test.ts +12 -12
  386. package/src/internal/Obj/typed-object.ts +30 -0
  387. package/src/internal/{ref → Ref}/ref-array.ts +4 -4
  388. package/src/internal/{ref → Ref}/ref.test.ts +11 -10
  389. package/src/internal/{ref → Ref}/ref.ts +108 -57
  390. package/src/internal/{projection → Type}/compose.test.ts +8 -9
  391. package/src/internal/{projection → Type}/compose.ts +14 -9
  392. package/src/internal/{schema → Type}/echo-schema.ts +74 -33
  393. package/src/internal/Type/index.ts +7 -0
  394. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  395. package/src/internal/Type/persistent-schema.ts +33 -0
  396. package/src/internal/common/README.md +102 -0
  397. package/src/internal/common/api/index.ts +15 -0
  398. package/src/internal/common/api/meta.ts +88 -0
  399. package/src/internal/{testing → common}/index.ts +2 -1
  400. package/src/internal/common/proxy/change-context.ts +138 -0
  401. package/src/internal/common/proxy/change.test.ts +519 -0
  402. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  403. package/src/internal/common/proxy/errors.ts +42 -0
  404. package/src/internal/common/proxy/event-batch.ts +44 -0
  405. package/src/internal/common/proxy/handler.test.ts +123 -0
  406. package/src/internal/common/proxy/index.ts +17 -0
  407. package/src/internal/common/proxy/json-serializer.ts +90 -0
  408. package/src/internal/common/proxy/make-object.ts +106 -0
  409. package/src/internal/common/proxy/ownership.ts +253 -0
  410. package/src/internal/common/proxy/proxy-types.ts +23 -0
  411. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  412. package/src/internal/common/proxy/reactive-array.ts +71 -0
  413. package/src/internal/common/proxy/reactive.ts +69 -0
  414. package/src/internal/{object → common/proxy}/schema-validator.ts +6 -3
  415. package/src/internal/{proxy → common/proxy}/schema.test.ts +31 -22
  416. package/src/internal/common/proxy/symbols.ts +7 -0
  417. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  418. package/src/internal/common/proxy/typed-handler.ts +449 -0
  419. package/src/internal/common/proxy/typed-object.test.ts +116 -0
  420. package/src/internal/common/types/base.ts +43 -0
  421. package/src/internal/common/types/entity.ts +54 -0
  422. package/src/internal/common/types/index.ts +10 -0
  423. package/src/internal/common/types/meta.ts +68 -0
  424. package/src/internal/common/types/model-symbols.ts +69 -0
  425. package/src/internal/common/types/typename.ts +55 -0
  426. package/src/internal/common/types/version.ts +19 -0
  427. package/src/internal/index.ts +11 -17
  428. package/src/testing/api.test.ts +126 -0
  429. package/src/testing/index.ts +3 -3
  430. package/src/testing/test-data.ts +130 -0
  431. package/src/testing/test-schema.ts +240 -0
  432. package/src/testing/util.ts +85 -0
  433. package/dist/lib/browser/chunk-HKFCK2GL.mjs +0 -175
  434. package/dist/lib/browser/chunk-HKFCK2GL.mjs.map +0 -7
  435. package/dist/lib/browser/chunk-MAAYELT7.mjs +0 -830
  436. package/dist/lib/browser/chunk-MAAYELT7.mjs.map +0 -7
  437. package/dist/lib/browser/chunk-MB6MMNFP.mjs +0 -3857
  438. package/dist/lib/browser/chunk-MB6MMNFP.mjs.map +0 -7
  439. package/dist/lib/browser/index.mjs +0 -35
  440. package/dist/lib/browser/internal/index.mjs +0 -332
  441. package/dist/lib/browser/meta.json +0 -1
  442. package/dist/lib/browser/query/index.mjs +0 -15
  443. package/dist/lib/browser/testing/index.mjs +0 -298
  444. package/dist/lib/browser/testing/index.mjs.map +0 -7
  445. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs +0 -830
  446. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs.map +0 -7
  447. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs +0 -175
  448. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs.map +0 -7
  449. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs +0 -3857
  450. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs.map +0 -7
  451. package/dist/lib/node-esm/index.mjs +0 -35
  452. package/dist/lib/node-esm/meta.json +0 -1
  453. package/dist/lib/node-esm/query/index.mjs +0 -15
  454. package/dist/lib/node-esm/testing/index.mjs +0 -298
  455. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  456. package/dist/types/src/errors.d.ts +0 -72
  457. package/dist/types/src/errors.d.ts.map +0 -1
  458. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  459. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  460. package/dist/types/src/internal/ast/annotations.d.ts +0 -125
  461. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  462. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  463. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  464. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  465. package/dist/types/src/internal/ast/index.d.ts +0 -5
  466. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  467. package/dist/types/src/internal/ast/types.d.ts +0 -6
  468. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  469. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  470. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  471. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  472. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  473. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  474. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  475. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  476. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  477. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  478. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  479. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  480. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  481. package/dist/types/src/internal/json/index.d.ts +0 -2
  482. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  483. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  484. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  485. package/dist/types/src/internal/json-schema/index.d.ts +0 -3
  486. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  487. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  488. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  489. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  490. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  491. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  492. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  493. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  494. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  495. package/dist/types/src/internal/object/deleted.d.ts +0 -6
  496. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  497. package/dist/types/src/internal/object/entity.d.ts +0 -33
  498. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  499. package/dist/types/src/internal/object/expando.d.ts +0 -14
  500. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  501. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  502. package/dist/types/src/internal/object/index.d.ts +0 -16
  503. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  504. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  505. package/dist/types/src/internal/object/json-serializer.d.ts +0 -32
  506. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  507. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  508. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  509. package/dist/types/src/internal/object/model.d.ts +0 -117
  510. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  511. package/dist/types/src/internal/object/relation.d.ts +0 -17
  512. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  513. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  514. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  515. package/dist/types/src/internal/object/typed-object.d.ts +0 -31
  516. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  517. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  518. package/dist/types/src/internal/object/typename.d.ts +0 -15
  519. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  520. package/dist/types/src/internal/object/version.d.ts +0 -14
  521. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  522. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  523. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  524. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  525. package/dist/types/src/internal/projection/index.d.ts +0 -2
  526. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  527. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  528. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  529. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  530. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  531. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  532. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  533. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  534. package/dist/types/src/internal/query/index.d.ts +0 -2
  535. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  536. package/dist/types/src/internal/query/query.d.ts +0 -17
  537. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  538. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  539. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  540. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  541. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  542. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  543. package/dist/types/src/internal/schema/index.d.ts +0 -7
  544. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  545. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  546. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  547. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  548. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  549. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  550. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  551. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  552. package/dist/types/src/internal/testing/index.d.ts +0 -3
  553. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  554. package/dist/types/src/internal/testing/types.d.ts +0 -455
  555. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  556. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  557. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  558. package/dist/types/src/internal/types/index.d.ts +0 -3
  559. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  560. package/dist/types/src/internal/types/types.d.ts +0 -79
  561. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  562. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  563. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  564. package/dist/types/src/internal/types/util.d.ts +0 -5
  565. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  566. package/dist/types/src/query/index.d.ts +0 -3
  567. package/dist/types/src/query/index.d.ts.map +0 -1
  568. package/dist/types/src/query/query.d.ts +0 -248
  569. package/dist/types/src/query/query.d.ts.map +0 -1
  570. package/dist/types/src/query/query.test.d.ts +0 -2
  571. package/dist/types/src/query/query.test.d.ts.map +0 -1
  572. package/dist/types/src/query/tag.d.ts +0 -17
  573. package/dist/types/src/query/tag.d.ts.map +0 -1
  574. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  575. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  576. package/dist/types/src/testing/types.d.ts +0 -113
  577. package/dist/types/src/testing/types.d.ts.map +0 -1
  578. package/src/errors.ts +0 -18
  579. package/src/internal/ast/annotation-helper.ts +0 -22
  580. package/src/internal/ast/annotations.ts +0 -219
  581. package/src/internal/ast/entity-kind.ts +0 -15
  582. package/src/internal/ast/index.ts +0 -8
  583. package/src/internal/ast/types.ts +0 -17
  584. package/src/internal/json/index.ts +0 -5
  585. package/src/internal/object/accessors.ts +0 -153
  586. package/src/internal/object/deleted.ts +0 -19
  587. package/src/internal/object/entity.ts +0 -248
  588. package/src/internal/object/expando.ts +0 -21
  589. package/src/internal/object/index.ts +0 -19
  590. package/src/internal/object/json-serializer.test.ts +0 -99
  591. package/src/internal/object/meta.ts +0 -61
  592. package/src/internal/object/model.ts +0 -170
  593. package/src/internal/object/relation.ts +0 -24
  594. package/src/internal/object/typed-object.ts +0 -88
  595. package/src/internal/object/typename.ts +0 -61
  596. package/src/internal/object/version.ts +0 -22
  597. package/src/internal/projection/index.ts +0 -5
  598. package/src/internal/proxy/handler.test.ts +0 -163
  599. package/src/internal/proxy/reactive-object.ts +0 -108
  600. package/src/internal/proxy/typed-handler.test.ts +0 -102
  601. package/src/internal/proxy/typed-handler.ts +0 -228
  602. package/src/internal/proxy/typed-object.test.ts +0 -100
  603. package/src/internal/query/index.ts +0 -5
  604. package/src/internal/query/query.ts +0 -23
  605. package/src/internal/schema/index.ts +0 -10
  606. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  607. package/src/internal/schema/snapshot.ts +0 -25
  608. package/src/internal/schema/stored-schema.ts +0 -26
  609. package/src/internal/testing/types.ts +0 -211
  610. package/src/internal/testing/utils.ts +0 -54
  611. package/src/internal/types/index.ts +0 -6
  612. package/src/internal/types/types.test.ts +0 -48
  613. package/src/internal/types/types.ts +0 -176
  614. package/src/internal/types/util.ts +0 -9
  615. package/src/query/index.ts +0 -6
  616. package/src/query/query.test.ts +0 -401
  617. package/src/query/query.ts +0 -789
  618. package/src/test/api.test.ts +0 -180
  619. package/src/testing/echo-schema.ts +0 -39
  620. package/src/testing/types.ts +0 -91
  621. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  622. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  623. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  624. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  625. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Feed.mjs.map} +0 -0
  626. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Filter.mjs.map} +0 -0
  627. /package/dist/types/src/internal/{ast → Annotation}/annotations.test.d.ts +0 -0
  628. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  629. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  630. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  631. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  632. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  633. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  634. /package/dist/types/src/internal/{json → JsonSchema}/effect-schema.test.d.ts +0 -0
  635. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  636. /package/dist/types/src/internal/{json → JsonSchema}/json-schema.test.d.ts +0 -0
  637. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  638. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  639. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  640. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  641. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  642. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  643. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  644. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  645. /package/dist/types/src/internal/{projection → Type}/compose.test.d.ts +0 -0
  646. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  647. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  648. /package/dist/types/src/internal/{object → common/proxy}/schema-validator.d.ts +0 -0
  649. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  650. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  651. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  652. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  653. /package/src/internal/{formats → Format}/index.ts +0 -0
  654. /package/src/internal/{json → JsonSchema}/effect-schema.test.ts +0 -0
  655. /package/src/internal/{ref → Ref}/index.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/JsonSchema/annotations.ts", "../../../src/internal/JsonSchema/json-schema-type.ts", "../../../src/internal/JsonSchema/json-schema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { GeneratorAnnotationId, LabelAnnotationId, PropertyMetaAnnotationId } from '../Annotation';\nimport { CurrencyAnnotationId, FormatAnnotationId } from '../Format';\nimport { type JsonSchemaEchoAnnotations, type JsonSchemaType } from '../JsonSchema';\n\n//\n// This file configures annotations for JSON encoding/decoding.\n//\n\n// Go on the root level.\ntype RootJsonSchemaProperty = keyof JsonSchemaType;\n\n// Go on the namespaced `annotations` property.\ntype NamespacedJsonSchemaProperty = keyof JsonSchemaEchoAnnotations;\n\n/**\n * List of annotations for JSON encoding/decoding.\n * Omits default effect-schema annotations since they are encoded with default serializer.\n */\n// TODO(burdon): Reconcile with `EchoAnnotations`.\nexport const CustomAnnotations: Partial<Record<RootJsonSchemaProperty, symbol>> = {\n format: FormatAnnotationId,\n currency: CurrencyAnnotationId,\n};\n\n/**\n * List of annotations for JSON decoding only.\n * Includes default effect annotations.\n */\nexport const DecodedAnnotations: Partial<Record<RootJsonSchemaProperty, symbol>> = {\n title: SchemaAST.TitleAnnotationId,\n description: SchemaAST.DescriptionAnnotationId,\n};\n\n/**\n * Annotations that go into ECHO namespace in json-schema.\n */\n// TODO(dmaretskyi): Consider removing ECHO namespace and putting them at the top level.\n// TODO(dmaretskyi): Move to format.ts when circular imports are solved\nexport const EchoAnnotations: Partial<Record<NamespacedJsonSchemaProperty, symbol>> = {\n // TODO(dmaretskyi): `FieldLookupAnnotationId` might go here, but lets remove it entirely and use LabelAnnotation instead.\n meta: PropertyMetaAnnotationId,\n generator: GeneratorAnnotationId,\n labelProp: LabelAnnotationId,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { JsonPath, type JsonProp } from '@dxos/effect';\n\nimport { FormatAnnotation, TypeFormat } from '../Format';\nimport { type Mutable } from '../common/proxy';\nimport { EntityKindSchema } from '../common/types';\n\n//\n// JSON Schema\n//\n\n// TODO(burdon): Reuse/reconcile with ScalarTypeEnum (handle arrays).\nconst SimpleTypes = Schema.Literal('array', 'boolean', 'integer', 'null', 'number', 'object', 'string');\n\nconst NonNegativeInteger = Schema.Number.pipe(Schema.greaterThanOrEqualTo(0));\n\nconst StringArray = Schema.Array(Schema.String);\n\nconst JsonSchemaOrBoolean = Schema.Union(\n Schema.suspend(() => JsonSchemaType),\n Schema.Boolean,\n);\n\n/**\n * Go under the `annotations` property.\n */\nexport const JsonSchemaEchoAnnotations = Schema.Struct({\n /**\n * Label for this schema.\n * Mapped from {@link LabelAnnotationId}.\n */\n labelProp: Schema.optional(Schema.Union(JsonPath, Schema.Array(JsonPath))),\n\n /**\n * Generator function for this schema.\n * Mapped from {@link GeneratorAnnotationId}.\n */\n generator: Schema.optional(Schema.Union(Schema.String, Schema.Tuple(Schema.String, Schema.Number))),\n\n /**\n * {@link PropertyMeta} annotations get serialized here.\n */\n meta: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.Any,\n }),\n ),\n\n /**\n * @deprecated\n */\n // TODO(dmaretskyi): We risk old schema not passing validation due to the extra fields. Remove when we are sure this is safe.\n type: Schema.optional(\n Schema.Struct({\n typename: Schema.String,\n version: Schema.String,\n\n // Not used.\n schemaId: Schema.optional(Schema.String),\n }),\n ),\n\n /**\n * @deprecated Superseded by `meta`.\n */\n annotations: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.Any,\n }),\n ),\n});\nexport type JsonSchemaEchoAnnotations = Schema.Schema.Type<typeof JsonSchemaEchoAnnotations>;\n\n/**\n * Describes a schema for the JSON-schema objects stored in ECHO.\n * Contains extensions for ECHO (e.g., references).\n * Ref: https://json-schema.org/draft-07/schema\n */\n// TODO(burdon): Integrate with Effect Serializable?\n// TODO(dmaretskyi): Update to latest draft: https://json-schema.org/draft/2020-12\nconst _JsonSchemaType = Schema.Struct({\n /**\n * Identifier for this schema.\n * This schema might be referenced by $ref clause in other schemas.\n */\n // TODO(dmaretskyi): Specify how the ids are generated.\n // TODO(dmaretskyi): For type dxns, should this include the version?\n $id: Schema.optional(Schema.String),\n\n /**\n * Schema of this schema.\n * Set to \"https://json-schema.org/draft-07/schema\".\n */\n $schema: Schema.optional(Schema.String),\n\n /**\n * Reference to another schema.\n */\n $ref: Schema.optional(Schema.String),\n\n /**\n * Comments are ignored when interpreting the schema.\n */\n $comment: Schema.optional(Schema.String),\n\n /**\n * Defines whether this schema is an object schema or a relation schema.\n */\n entityKind: Schema.optional(EntityKindSchema),\n\n /**\n * Typename of this schema.\n * Only on schema representing an ECHO object.\n *\n * @example 'com.example.type.my-type'\n */\n typename: Schema.optional(Schema.String),\n\n /**\n * Version of this schema.\n * Custom dialect for ECHO.\n */\n version: Schema.optional(Schema.String),\n\n /**\n * Target of this relation.\n * Only for relation schemas.\n * The referenced schema must be an object schema.\n */\n relationTarget: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n\n /**\n * Source of this relation.\n * Only for relation schemas.\n * The referenced schema must be an object schema.\n */\n relationSource: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n\n /**\n * Title of this schema.\n */\n title: Schema.optional(Schema.String),\n\n /**\n * Description of this schema.\n */\n description: Schema.optional(Schema.String),\n\n /**\n * Whether this schema is read-only.\n */\n readOnly: Schema.optional(Schema.Boolean),\n\n /**\n * Whether this schema is write-only.\n */\n writeOnly: Schema.optional(Schema.Boolean),\n\n /**\n * Examples of instances of this schema.\n */\n examples: Schema.optional(Schema.Array(Schema.Any)),\n\n /**\n * Default value for this schema.\n */\n default: Schema.optional(Schema.Any),\n\n /**\n * This schema only matches values that are equal to this value.\n */\n const: Schema.optional(Schema.Any),\n\n /**\n * This schema only matches one of the values in this array.\n */\n enum: Schema.optional(Schema.Array(Schema.Any)),\n\n /**\n * Base type of the schema.\n */\n type: Schema.optional(Schema.Union(SimpleTypes, Schema.Array(SimpleTypes))),\n\n //\n // Numbers.\n //\n\n multipleOf: Schema.optional(Schema.Number.pipe(Schema.greaterThan(0))),\n maximum: Schema.optional(Schema.Number),\n exclusiveMaximum: Schema.optional(Schema.Number),\n minimum: Schema.optional(Schema.Number),\n exclusiveMinimum: Schema.optional(Schema.Number),\n\n //\n // Strings.\n //\n\n maxLength: Schema.optional(NonNegativeInteger),\n\n /**\n * Regex pattern for strings.\n */\n pattern: Schema.optional(Schema.String.pipe(FormatAnnotation.set(TypeFormat.Regex))),\n\n /**\n * Serialized from {@link FormatAnnotationId}.\n */\n format: Schema.optional(Schema.String),\n\n //\n // Arrays\n //\n\n minLength: Schema.optional(NonNegativeInteger),\n items: Schema.optional(\n Schema.Union(\n Schema.suspend(() => JsonSchemaType),\n Schema.Array(Schema.suspend(() => JsonSchemaType)),\n ),\n ),\n additionalItems: Schema.optional(\n Schema.Union(\n Schema.suspend(() => JsonSchemaType),\n Schema.Boolean,\n ),\n ),\n maxItems: Schema.optional(NonNegativeInteger),\n minItems: Schema.optional(NonNegativeInteger),\n uniqueItems: Schema.optional(Schema.Boolean),\n contains: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n\n //\n // Objects\n //\n\n maxProperties: Schema.optional(NonNegativeInteger),\n minProperties: Schema.optional(NonNegativeInteger),\n required: Schema.optional(StringArray),\n\n /**\n * Non-standard JSON Schema extension.\n * Defines the order of properties in the object.\n * The unmentioned properties are placed at the end.\n *\n * Related: https://github.com/json-schema/json-schema/issues/119\n */\n propertyOrder: Schema.optional(StringArray),\n\n additionalProperties: Schema.optional(JsonSchemaOrBoolean),\n properties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.suspend(() => JsonSchemaType),\n }),\n ),\n patternProperties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.suspend(() => JsonSchemaType),\n }),\n ),\n propertyNames: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n\n definitions: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.suspend(() => JsonSchemaType),\n }),\n ),\n dependencies: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.suspend(() => Schema.Union(Schema.String, StringArray, JsonSchemaType)).annotations({\n identifier: 'dependency',\n description: 'Dependency',\n }),\n }),\n ),\n\n contentMediaType: Schema.optional(Schema.String),\n contentEncoding: Schema.optional(Schema.String),\n\n if: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n then: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n else: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n allOf: Schema.optional(Schema.Array(Schema.suspend(() => JsonSchemaType))),\n anyOf: Schema.optional(Schema.Array(Schema.suspend(() => JsonSchemaType))),\n oneOf: Schema.optional(Schema.Array(Schema.suspend(() => JsonSchemaType))),\n not: Schema.optional(Schema.suspend(() => JsonSchemaType)),\n $defs: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.suspend(() => JsonSchemaType),\n }),\n ),\n\n //\n // ECHO extensions.\n //\n\n currency: Schema.optional(Schema.String),\n\n reference: Schema.optional(\n Schema.Struct({\n schema: Schema.suspend(() => JsonSchemaType),\n schemaVersion: Schema.optional(Schema.String),\n schemaObject: Schema.optional(Schema.String),\n }),\n ),\n\n /**\n * ECHO-specific annotations.\n */\n // TODO(dmaretskyi): Since we are adding a lot of new extensions to the JSON Schema, it is safer to namespace them here.\n annotations: Schema.optional(JsonSchemaEchoAnnotations),\n\n /**\n * @deprecated Use `annotations` instead.\n */\n echo: Schema.optional(JsonSchemaEchoAnnotations),\n}).annotations({ identifier: 'jsonSchema', description: 'JSON Schema' });\n\nexport const JsonSchemaFields = Object.keys(_JsonSchemaType.fields);\n\n/**\n * https://json-schema.org/draft-07/schema\n */\n// TODO(burdon): Reconcile with @effect/Schema/JSONSchema\nexport interface JsonSchemaType extends Schema.Schema.Type<typeof _JsonSchemaType> {}\n\nexport const JsonSchemaType: Schema.Schema<JsonSchemaType> = _JsonSchemaType;\n\n// TODO(burdon): Factor out JSON schema utils.\n\nexport const getSchemaProperty = (schema: JsonSchemaType, property: JsonProp): JsonSchemaType | undefined => {\n return schema.properties?.[property];\n};\n\n// TODO(burdon): Properties should be ordered.\nexport const setSchemaProperty = (\n schema: Mutable<JsonSchemaType>,\n property: JsonProp,\n value: Mutable<JsonSchemaType>,\n) => {\n schema.properties ??= {};\n schema.properties[property] = value;\n return schema;\n};\n\n/**\n * @internal\n */\nexport const ECHO_ANNOTATIONS_NS_DEPRECATED_KEY: keyof JsonSchemaType = 'echo';\n\n/**\n * @internal\n */\nexport const ECHO_ANNOTATIONS_NS_KEY = 'annotations';\n\n/**\n * @internal\n * @returns ECHO annotations namespace object in its normalized form.\n *\n * `meta` holds PropertyMeta annotations.\n * `annotations` holds other annotations.\n */\nexport const getNormalizedEchoAnnotations = (obj: JsonSchemaType): JsonSchemaEchoAnnotations | undefined => {\n if (obj[ECHO_ANNOTATIONS_NS_KEY] != null && obj[ECHO_ANNOTATIONS_NS_DEPRECATED_KEY] != null) {\n return normalizeEchoAnnotations({\n ...obj[ECHO_ANNOTATIONS_NS_DEPRECATED_KEY],\n ...obj[ECHO_ANNOTATIONS_NS_KEY],\n });\n } else if (obj[ECHO_ANNOTATIONS_NS_KEY] != null) {\n return normalizeEchoAnnotations(obj[ECHO_ANNOTATIONS_NS_KEY]!);\n } else if (obj[ECHO_ANNOTATIONS_NS_DEPRECATED_KEY] != null) {\n return normalizeEchoAnnotations(obj[ECHO_ANNOTATIONS_NS_DEPRECATED_KEY]!);\n } else {\n return undefined;\n }\n};\n\nconst normalizeEchoAnnotations = (obj: JsonSchemaEchoAnnotations): JsonSchemaEchoAnnotations => {\n if (!obj.annotations) {\n return obj;\n } else {\n const res = {\n ...obj,\n meta: {\n ...obj.annotations,\n ...(obj.meta ?? {}),\n },\n };\n delete res.annotations;\n return res;\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as Function from 'effect/Function';\nimport * as JSONSchema from 'effect/JSONSchema';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\nimport type * as Types from 'effect/Types';\n\nimport { raise } from '@dxos/debug';\nimport { mapAst } from '@dxos/effect';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { DXN, ObjectId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { clearUndefined, orderKeys, removeProperties } from '@dxos/util';\n\nimport {\n type TypeAnnotation,\n TypeAnnotationId,\n TypeIdentifierAnnotationId,\n makeTypeJsonSchemaAnnotation,\n} from '../Annotation';\nimport { type JsonSchemaReferenceInfo, createEchoReferenceSchema } from '../Ref';\nimport { ANY_OBJECT_TYPENAME, ANY_OBJECT_VERSION, EntityKind, EntityKindSchema } from '../common/types';\n\nimport { CustomAnnotations, DecodedAnnotations, EchoAnnotations } from './annotations';\nimport {\n ECHO_ANNOTATIONS_NS_DEPRECATED_KEY,\n ECHO_ANNOTATIONS_NS_KEY,\n type JsonSchemaEchoAnnotations,\n type JsonSchemaType,\n getNormalizedEchoAnnotations,\n} from './json-schema-type';\n\n// TODO(burdon): Are these values stored (can they be changed?)\nexport enum PropType {\n NONE = 0,\n STRING = 1, // TODO(burdon): vs TEXT?\n NUMBER = 2,\n BOOLEAN = 3,\n DATE = 4,\n REF = 5,\n RECORD = 6,\n ENUM = 7,\n}\n\n// TODO(burdon): Reconcile with @dxos/schema.\nexport const toPropType = (type?: PropType): string => {\n switch (type) {\n case PropType.STRING:\n return 'string';\n case PropType.NUMBER:\n return 'number';\n case PropType.BOOLEAN:\n return 'boolean';\n case PropType.DATE:\n return 'date';\n case PropType.REF:\n return 'ref';\n case PropType.RECORD:\n return 'object';\n default:\n throw new Error(`Invalid type: ${type}`);\n }\n};\n\nconst JSON_SCHEMA_URL = 'http://json-schema.org/draft-07/schema#';\n\nexport type JsonSchemaOptions = {\n strict?: boolean;\n};\n\n/**\n * Convert effect schema to JSON Schema.\n * NOTE: This handles custom annotations.\n * @param schema\n */\n// TODO(burdon): Reconcile with possibly extending @effect/Schema/JSONSchema\n// We add additional propertyOrder (but the object properties ARE ordered); and type \"string\" for literals.\n// TODO(wittjosiah): This is mutable because its a pojo, perhaps should be left as readonly at type level though?\nexport const toJsonSchema = (\n schema: Schema.Schema.All,\n options: JsonSchemaOptions = {},\n): Types.DeepMutable<JsonSchemaType> => {\n assertArgument(Schema.isSchema(schema), 'schema');\n let jsonSchema = _toJsonSchemaAST(schema.ast);\n if (options.strict) {\n // TOOD(burdon): Workaround to ensure JSON schema is valid (for agv parsing).\n jsonSchema = removeProperties(jsonSchema, (key, value) => {\n if (key === '$id' && value === '/schemas/any') {\n return true;\n }\n if (key === '$ref' && value === '#/$defs/dependency') {\n return true;\n }\n if (key === '$ref' && value === '#/$defs/jsonSchema') {\n return true;\n }\n\n return false;\n });\n }\n\n return jsonSchema;\n};\n\nconst _toJsonSchemaAST = (ast: SchemaAST.AST): Types.DeepMutable<JsonSchemaType> => {\n const withRefinements = withEchoRefinements(ast, '#');\n const jsonSchema = JSONSchema.fromAST(withRefinements, {\n definitions: {},\n }) as Types.DeepMutable<JsonSchemaType>;\n\n return normalizeJsonSchema(jsonSchema);\n};\n\nconst withEchoRefinements = (\n ast: SchemaAST.AST,\n path: string | undefined,\n suspendCache = new Map<SchemaAST.AST, string>(),\n): SchemaAST.AST => {\n if (path) {\n suspendCache.set(ast, path);\n }\n\n let recursiveResult: SchemaAST.AST;\n if (SchemaAST.isSuspend(ast)) {\n // Precompute JSON schema for suspended AST since effect serializer does not support it.\n const suspendedAst = ast.f();\n const cachedPath = suspendCache.get(suspendedAst);\n if (cachedPath) {\n recursiveResult = new SchemaAST.Suspend(() => withEchoRefinements(suspendedAst, path, suspendCache), {\n [SchemaAST.JSONSchemaAnnotationId]: {\n $ref: cachedPath,\n },\n });\n } else {\n const jsonSchema = _toJsonSchemaAST(suspendedAst);\n recursiveResult = new SchemaAST.Suspend(() => withEchoRefinements(suspendedAst, path, suspendCache), {\n [SchemaAST.JSONSchemaAnnotationId]: jsonSchema,\n });\n }\n } else if (SchemaAST.isTypeLiteral(ast)) {\n // Add property order annotations\n recursiveResult = mapAst(ast, (ast, key) =>\n withEchoRefinements(ast, path && typeof key === 'string' ? `${path}/${key}` : undefined, suspendCache),\n );\n recursiveResult = addJsonSchemaFields(recursiveResult, {\n propertyOrder: [...ast.propertySignatures.map((p) => p.name)] as string[],\n });\n } else if (SchemaAST.isUndefinedKeyword(ast)) {\n // Ignore undefined keyword that appears in the optional fields.\n return ast;\n } else {\n recursiveResult = mapAst(ast, (ast, key) =>\n withEchoRefinements(\n ast,\n path && (typeof key === 'string' || typeof key === 'number') ? `${path}/${key}` : undefined,\n suspendCache,\n ),\n );\n }\n\n const annotationFields = annotations_toJsonSchemaFields(ast.annotations);\n if (Object.keys(annotationFields).length === 0) {\n return recursiveResult;\n } else {\n return addJsonSchemaFields(recursiveResult, annotationFields);\n }\n};\n\n/**\n * Convert JSON schema to effect schema.\n * @param root\n * @param definitions\n */\nexport const toEffectSchema = (root: JsonSchemaType, _defs?: JsonSchemaType['$defs']): Schema.Schema.AnyNoContext => {\n const defs = root.$defs ? { ..._defs, ...root.$defs } : (_defs ?? {});\n if ('type' in root && root.type === 'object') {\n return objectToEffectSchema(root, defs);\n }\n\n let result: Schema.Schema.AnyNoContext = Schema.Unknown;\n if ('$ref' in root) {\n switch (root.$ref) {\n case '/schemas/echo/ref': {\n result = refToEffectSchema(root);\n break;\n }\n }\n } else if ('$id' in root) {\n switch (root.$id as string) {\n case '/schemas/any': {\n result = anyToEffectSchema(root as JSONSchema.JsonSchema7Any);\n break;\n }\n case '/schemas/unknown': {\n result = Schema.Unknown;\n break;\n }\n case '/schemas/{}':\n case '/schemas/object': {\n result = Schema.Object;\n break;\n }\n // Custom ECHO object reference.\n case '/schemas/echo/ref': {\n result = refToEffectSchema(root);\n break;\n }\n }\n } else if ('enum' in root) {\n result = Schema.Union(...root.enum!.map((e) => Schema.Literal(e)));\n } else if ('oneOf' in root) {\n result = Schema.Union(...root.oneOf!.map((v) => toEffectSchema(v, defs)));\n } else if ('anyOf' in root) {\n result = Schema.Union(...root.anyOf!.map((v) => toEffectSchema(v, defs)));\n } else if ('allOf' in root) {\n if (root.allOf!.length === 1) {\n result = toEffectSchema(root.allOf![0], defs);\n } else {\n log.warn('allOf with multiple schemas is not supported');\n result = Schema.Unknown;\n }\n } else if ('type' in root) {\n switch (root.type) {\n case 'string': {\n result = Schema.String;\n if (root.pattern) {\n result = result.pipe(Schema.pattern(new RegExp(root.pattern)));\n }\n break;\n }\n case 'number': {\n result = Schema.Number;\n break;\n }\n case 'integer': {\n result = Schema.Number.pipe(Schema.int());\n break;\n }\n case 'boolean': {\n result = Schema.Boolean;\n break;\n }\n case 'array': {\n if (Array.isArray(root.items)) {\n const [required, optional] = Function.pipe(\n root.items,\n Array.map((v) => toEffectSchema(v as JsonSchemaType, defs)),\n Array.splitAt(root.minItems ?? root.items.length),\n );\n result = Schema.Tuple(...required, ...optional.map(Schema.optionalElement));\n } else {\n invariant(root.items);\n const items = root.items;\n result = Array.isArray(items)\n ? Schema.Tuple(...items.map((v) => toEffectSchema(v as JsonSchemaType, defs)))\n : Schema.Array(toEffectSchema(items as JsonSchemaType, defs));\n }\n break;\n }\n case 'null': {\n result = Schema.Null;\n break;\n }\n }\n } else if ('$ref' in root) {\n const refSegments = root.$ref!.split('/');\n const jsonSchema = defs[refSegments[refSegments.length - 1]];\n invariant(jsonSchema, `missing definition for ${root.$ref}`);\n result = toEffectSchema(jsonSchema, defs).pipe(\n Schema.annotations({ identifier: refSegments[refSegments.length - 1] }),\n );\n }\n\n const annotations = jsonSchemaFieldsToAnnotations(root);\n\n // log.info('toEffectSchema', { root, annotations });\n result = result.annotations(annotations);\n\n return result;\n};\n\nconst objectToEffectSchema = (root: JsonSchemaType, defs: JsonSchemaType['$defs']): Schema.Schema.AnyNoContext => {\n invariant('type' in root && root.type === 'object', `not an object: ${root}`);\n\n const echoRefinement: JsonSchemaEchoAnnotations = (root as any)[ECHO_ANNOTATIONS_NS_DEPRECATED_KEY];\n const isEchoObject =\n echoRefinement != null || ('$id' in root && typeof root.$id === 'string' && root.$id.startsWith('dxn:'));\n\n let fields: Schema.Struct.Fields = {};\n const propertyList = Object.entries(root.properties ?? {});\n let immutableIdField: Schema.Schema.AnyNoContext | undefined;\n for (const [key, value] of propertyList) {\n if (isEchoObject && key === 'id') {\n immutableIdField = toEffectSchema(value, defs);\n } else {\n // TODO(burdon): Mutable cast.\n (fields as any)[key] = root.required?.includes(key)\n ? toEffectSchema(value, defs)\n : Schema.optional(toEffectSchema(value, defs));\n }\n }\n\n if (root.propertyOrder) {\n fields = orderKeys(fields, root.propertyOrder as any);\n }\n\n let schema: Schema.Schema<any, any, unknown>;\n if (root.patternProperties) {\n invariant(propertyList.length === 0, 'pattern properties mixed with regular properties are not supported');\n invariant(\n Object.keys(root.patternProperties).length === 1 && Object.keys(root.patternProperties)[0] === '',\n 'only one pattern property is supported',\n );\n\n schema = Schema.Record({ key: Schema.String, value: toEffectSchema(root.patternProperties[''], defs) });\n } else if (typeof root.additionalProperties !== 'object') {\n schema = Schema.Struct(fields);\n } else {\n const indexValue = toEffectSchema(root.additionalProperties, defs);\n if (propertyList.length > 0) {\n schema = Schema.Struct(fields, { key: Schema.String, value: indexValue });\n } else {\n schema = Schema.Record({ key: Schema.String, value: indexValue });\n }\n }\n\n if (immutableIdField) {\n schema = Schema.extend(schema, Schema.Struct({ id: immutableIdField }));\n }\n\n const annotations = jsonSchemaFieldsToAnnotations(root);\n return schema.annotations(annotations) as any;\n};\n\nconst anyToEffectSchema = (root: JSONSchema.JsonSchema7Any): Schema.Schema.AnyNoContext => {\n const echoRefinement: JsonSchemaEchoAnnotations = (root as any)[ECHO_ANNOTATIONS_NS_DEPRECATED_KEY];\n // TODO(dmaretskyi): Is this branch still taken?\n if ((echoRefinement as any)?.reference != null) {\n const echoId = root.$id.startsWith('dxn:echo:') ? root.$id : undefined;\n return createEchoReferenceSchema(\n echoId,\n (echoRefinement as any).reference.typename,\n (echoRefinement as any).reference.version,\n );\n }\n\n return Schema.Any;\n};\n\n// TODO(dmaretskyi): Types.\nconst refToEffectSchema = (root: any): Schema.Schema.AnyNoContext => {\n if (!('reference' in root)) {\n // Fallback to generic object ref when no reference info is provided.\n return createEchoReferenceSchema(undefined, ANY_OBJECT_TYPENAME, ANY_OBJECT_VERSION);\n }\n\n const reference: JsonSchemaReferenceInfo = root.reference;\n if (typeof reference !== 'object') {\n throw new Error('Invalid reference field in ref schema');\n }\n\n const targetSchemaDXN = DXN.parse(reference.schema.$ref);\n invariant(targetSchemaDXN.kind === DXN.kind.TYPE);\n\n return createEchoReferenceSchema(\n targetSchemaDXN.toString(),\n targetSchemaDXN.kind === DXN.kind.TYPE ? targetSchemaDXN.parts[0] : undefined,\n reference.schemaVersion,\n );\n};\n\n//\n// Annotations\n//\n\nconst annotations_toJsonSchemaFields = (annotations: SchemaAST.Annotations): Record<symbol, any> => {\n const schemaFields: Record<string, any> = {};\n\n const echoAnnotations: Types.Mutable<JsonSchemaEchoAnnotations> = {};\n for (const [key, annotationId] of Object.entries(EchoAnnotations)) {\n if (annotations[annotationId] != null) {\n echoAnnotations[key as keyof JsonSchemaEchoAnnotations] = annotations[annotationId] as any;\n }\n }\n if (Object.keys(echoAnnotations).length > 0) {\n // TODO(dmaretskyi): use new namespace.\n schemaFields[ECHO_ANNOTATIONS_NS_KEY] = echoAnnotations;\n }\n\n const echoIdentifier = annotations[TypeIdentifierAnnotationId];\n if (echoIdentifier) {\n schemaFields[ECHO_ANNOTATIONS_NS_KEY] ??= {};\n schemaFields[ECHO_ANNOTATIONS_NS_KEY].schemaId = echoIdentifier;\n }\n\n // Custom (at end).\n for (const [key, annotationId] of Object.entries(CustomAnnotations)) {\n const value = annotations[annotationId];\n if (value != null) {\n schemaFields[key] = value;\n }\n }\n\n return schemaFields;\n};\n\nconst decodeTypeIdentifierAnnotation = (schema: JsonSchemaType): string | undefined => {\n // Limit to dxn:echo: URIs.\n if (schema.$id && schema.$id.startsWith('dxn:echo:')) {\n return schema.$id;\n } else if (schema.$id && schema.$id.startsWith('dxn:type:') && schema?.echo?.type?.schemaId) {\n const id = schema?.echo?.type?.schemaId;\n if (ObjectId.isValid(id)) {\n return DXN.fromLocalObjectId(id).toString();\n }\n }\n return undefined;\n};\n\nconst decodeTypeAnnotation = (schema: JsonSchemaType): TypeAnnotation | undefined => {\n if (schema.typename) {\n const annotation: Types.Mutable<TypeAnnotation> = {\n // TODO(dmaretskyi): Decoding default.\n kind: schema.entityKind ? Schema.decodeSync(EntityKindSchema)(schema.entityKind) : EntityKind.Object,\n typename: schema.typename,\n version: schema.version ?? '0.1.0',\n };\n\n if (annotation.kind === EntityKind.Relation) {\n const source = schema.relationSource?.$ref ?? raise(new Error('Relation source not set'));\n const target = schema.relationTarget?.$ref ?? raise(new Error('Relation target not set'));\n annotation.sourceSchema = DXN.parse(source).toString();\n annotation.targetSchema = DXN.parse(target).toString();\n }\n\n return annotation;\n }\n\n // Decode legacy schema.\n if (!schema.typename && schema?.echo?.type) {\n return {\n kind: EntityKind.Object,\n typename: schema.echo.type.typename,\n version: schema.echo.type.version,\n };\n }\n\n return undefined;\n};\n\nconst jsonSchemaFieldsToAnnotations = (schema: JsonSchemaType): SchemaAST.Annotations => {\n const annotations: Types.Mutable<Schema.Annotations.Schema<any>> = {};\n\n const echoAnnotations: JsonSchemaEchoAnnotations = getNormalizedEchoAnnotations(schema) ?? {};\n if (echoAnnotations) {\n for (const [key, annotationId] of Object.entries(EchoAnnotations)) {\n if (echoAnnotations[key as keyof JsonSchemaEchoAnnotations]) {\n annotations[annotationId] = echoAnnotations[key as keyof JsonSchemaEchoAnnotations];\n }\n }\n }\n\n const typeIdentifier = decodeTypeIdentifierAnnotation(schema);\n annotations[TypeIdentifierAnnotationId] = typeIdentifier;\n const typeAnnotation = decodeTypeAnnotation(schema);\n if (typeAnnotation) {\n annotations[TypeAnnotationId] = typeAnnotation;\n annotations[SchemaAST.JSONSchemaAnnotationId] = makeTypeJsonSchemaAnnotation({\n identifier: typeIdentifier,\n kind: typeAnnotation.kind,\n typename: typeAnnotation.typename,\n version: typeAnnotation.version,\n relationSource: typeAnnotation.sourceSchema,\n relationTarget: typeAnnotation.targetSchema,\n });\n }\n\n // Custom (at end).\n for (const [key, annotationId] of Object.entries({ ...CustomAnnotations, ...DecodedAnnotations })) {\n if (key in schema) {\n annotations[annotationId] = (schema as any)[key];\n }\n }\n\n return clearUndefined(annotations);\n};\n\nconst makeAnnotatedRefinement = (ast: SchemaAST.AST, annotations: SchemaAST.Annotations): SchemaAST.Refinement => {\n return new SchemaAST.Refinement(ast, () => Option.none(), annotations);\n};\n\nconst addJsonSchemaFields = (ast: SchemaAST.AST, schema: JsonSchemaType): SchemaAST.AST =>\n makeAnnotatedRefinement(ast, { [SchemaAST.JSONSchemaAnnotationId]: schema });\n\n/**\n * Fixes field order.\n * Sets `$schema` prop.\n */\nconst normalizeJsonSchema = (jsonSchema: Types.DeepMutable<JsonSchemaType>): Types.DeepMutable<JsonSchemaType> => {\n if (jsonSchema.properties && 'id' in jsonSchema.properties) {\n jsonSchema.properties = orderKeys(jsonSchema.properties, ['id']); // Put id first.\n }\n\n // TODO(dmaretskyi): Makes sure undefined is not left on optional fields for the resulting object.\n jsonSchema.$schema = JSON_SCHEMA_URL;\n jsonSchema = orderKeys(jsonSchema, [\n '$schema',\n '$id',\n\n 'entityKind',\n 'typename',\n 'version',\n 'relationTarget',\n 'relationSource',\n\n 'type',\n 'enum',\n\n 'properties',\n 'required',\n 'propertyOrder', // Custom.\n 'items',\n 'additionalProperties',\n\n 'anyOf',\n 'oneOf',\n ]);\n return jsonSchema;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["SchemaAST", "CustomAnnotations", "format", "FormatAnnotationId", "currency", "CurrencyAnnotationId", "DecodedAnnotations", "title", "TitleAnnotationId", "description", "DescriptionAnnotationId", "EchoAnnotations", "meta", "PropertyMetaAnnotationId", "generator", "GeneratorAnnotationId", "labelProp", "LabelAnnotationId", "Schema", "JsonPath", "SimpleTypes", "Literal", "NonNegativeInteger", "Number", "pipe", "greaterThanOrEqualTo", "StringArray", "Array", "String", "JsonSchemaOrBoolean", "Union", "suspend", "JsonSchemaType", "Boolean", "JsonSchemaEchoAnnotations", "Struct", "labelProp", "optional", "JsonPath", "generator", "Tuple", "meta", "Record", "key", "value", "Any", "type", "typename", "version", "schemaId", "annotations", "_JsonSchemaType", "$id", "$schema", "$ref", "$comment", "entityKind", "EntityKindSchema", "relationTarget", "relationSource", "title", "description", "readOnly", "writeOnly", "examples", "default", "const", "enum", "multipleOf", "greaterThan", "maximum", "exclusiveMaximum", "minimum", "exclusiveMinimum", "maxLength", "pattern", "FormatAnnotation", "set", "TypeFormat", "Regex", "format", "minLength", "items", "additionalItems", "maxItems", "minItems", "uniqueItems", "contains", "maxProperties", "minProperties", "required", "propertyOrder", "additionalProperties", "properties", "patternProperties", "propertyNames", "definitions", "dependencies", "identifier", "contentMediaType", "contentEncoding", "if", "then", "else", "allOf", "anyOf", "oneOf", "not", "$defs", "currency", "reference", "schema", "schemaVersion", "schemaObject", "echo", "JsonSchemaFields", "Object", "keys", "fields", "getSchemaProperty", "property", "setSchemaProperty", "ECHO_ANNOTATIONS_NS_DEPRECATED_KEY", "ECHO_ANNOTATIONS_NS_KEY", "getNormalizedEchoAnnotations", "obj", "normalizeEchoAnnotations", "undefined", "res", "Array", "Function", "JSONSchema", "Option", "Schema", "SchemaAST", "raise", "mapAst", "assertArgument", "invariant", "DXN", "ObjectId", "log", "clearUndefined", "orderKeys", "removeProperties", "PropType", "toPropType", "type", "Error", "JSON_SCHEMA_URL", "toJsonSchema", "schema", "options", "assertArgument", "isSchema", "jsonSchema", "_toJsonSchemaAST", "ast", "strict", "removeProperties", "key", "value", "withRefinements", "withEchoRefinements", "fromAST", "definitions", "normalizeJsonSchema", "path", "suspendCache", "Map", "set", "recursiveResult", "isSuspend", "suspendedAst", "f", "cachedPath", "get", "Suspend", "JSONSchemaAnnotationId", "$ref", "isTypeLiteral", "mapAst", "undefined", "addJsonSchemaFields", "propertyOrder", "propertySignatures", "map", "p", "name", "isUndefinedKeyword", "annotationFields", "annotations_toJsonSchemaFields", "annotations", "Object", "keys", "length", "toEffectSchema", "root", "_defs", "defs", "$defs", "objectToEffectSchema", "result", "Unknown", "refToEffectSchema", "$id", "anyToEffectSchema", "Union", "enum", "e", "Literal", "oneOf", "v", "anyOf", "allOf", "log", "warn", "String", "pattern", "pipe", "RegExp", "Number", "int", "Boolean", "isArray", "items", "required", "optional", "splitAt", "minItems", "Tuple", "optionalElement", "invariant", "Array", "Null", "refSegments", "split", "identifier", "jsonSchemaFieldsToAnnotations", "echoRefinement", "ECHO_ANNOTATIONS_NS_DEPRECATED_KEY", "isEchoObject", "startsWith", "fields", "propertyList", "entries", "properties", "immutableIdField", "includes", "orderKeys", "patternProperties", "Record", "additionalProperties", "Struct", "indexValue", "extend", "id", "reference", "echoId", "createEchoReferenceSchema", "typename", "version", "Any", "ANY_OBJECT_TYPENAME", "ANY_OBJECT_VERSION", "targetSchemaDXN", "DXN", "parse", "kind", "TYPE", "toString", "parts", "schemaVersion", "schemaFields", "echoAnnotations", "annotationId", "EchoAnnotations", "ECHO_ANNOTATIONS_NS_KEY", "echoIdentifier", "TypeIdentifierAnnotationId", "schemaId", "CustomAnnotations", "decodeTypeIdentifierAnnotation", "echo", "ObjectId", "isValid", "fromLocalObjectId", "decodeTypeAnnotation", "annotation", "entityKind", "decodeSync", "EntityKindSchema", "EntityKind", "Relation", "source", "relationSource", "raise", "target", "relationTarget", "sourceSchema", "targetSchema", "getNormalizedEchoAnnotations", "typeIdentifier", "typeAnnotation", "TypeAnnotationId", "makeTypeJsonSchemaAnnotation", "DecodedAnnotations", "clearUndefined", "makeAnnotatedRefinement", "Refinement", "none", "$schema"]
7
+ }
@@ -0,0 +1,298 @@
1
+ import {
2
+ Unknown
3
+ } from "./chunk-NQRLRYJM.mjs";
4
+ import {
5
+ KindId,
6
+ SnapshotKindId
7
+ } from "./chunk-UFDK26FO.mjs";
8
+ import {
9
+ ATTR_RELATION_SOURCE,
10
+ ATTR_RELATION_TARGET,
11
+ EchoRelationSchema,
12
+ MetaId,
13
+ RelationSourceDXNId,
14
+ RelationSourceId,
15
+ RelationTargetDXNId,
16
+ RelationTargetId,
17
+ VersionTypeId,
18
+ addTag,
19
+ change,
20
+ deleteKeys,
21
+ getDXN,
22
+ getDatabase,
23
+ getKeys,
24
+ getMetaChecked,
25
+ getObjectDXN,
26
+ getSnapshot,
27
+ getValue,
28
+ isDeleted,
29
+ isVersion,
30
+ makeObject,
31
+ objectToJSON,
32
+ removeTag,
33
+ setValue,
34
+ sort,
35
+ sortByLabel,
36
+ sortByTypename,
37
+ subscribe,
38
+ version
39
+ } from "./chunk-TQQZLKB7.mjs";
40
+ import {
41
+ ParentId,
42
+ getDescription,
43
+ getLabel,
44
+ getSchema,
45
+ getTypeAnnotation,
46
+ getTypeDXN,
47
+ getTypename,
48
+ setDescription,
49
+ setLabel
50
+ } from "./chunk-SEMVAGBM.mjs";
51
+ import {
52
+ EntityKind,
53
+ SchemaKindId
54
+ } from "./chunk-WYOKA6AE.mjs";
55
+ import {
56
+ __export
57
+ } from "./chunk-J5LGTIGS.mjs";
58
+
59
+ // src/Relation.ts
60
+ var Relation_exports = {};
61
+ __export(Relation_exports, {
62
+ Meta: () => Meta,
63
+ Source: () => Source,
64
+ Target: () => Target,
65
+ Unknown: () => Unknown3,
66
+ VersionTypeId: () => VersionTypeId2,
67
+ addTag: () => addTag2,
68
+ change: () => change2,
69
+ deleteKeys: () => deleteKeys2,
70
+ getDXN: () => getDXN2,
71
+ getDatabase: () => getDatabase2,
72
+ getDescription: () => getDescription2,
73
+ getKeys: () => getKeys2,
74
+ getLabel: () => getLabel2,
75
+ getMeta: () => getMeta,
76
+ getSchema: () => getSchema2,
77
+ getSnapshot: () => getSnapshot2,
78
+ getSource: () => getSource,
79
+ getSourceDXN: () => getSourceDXN,
80
+ getTarget: () => getTarget,
81
+ getTargetDXN: () => getTargetDXN,
82
+ getTypeDXN: () => getTypeDXN2,
83
+ getTypename: () => getTypename2,
84
+ getValue: () => getValue2,
85
+ isDeleted: () => isDeleted2,
86
+ isRelation: () => isRelation,
87
+ isSnapshot: () => isSnapshot,
88
+ isVersion: () => isVersion2,
89
+ make: () => make,
90
+ removeTag: () => removeTag2,
91
+ setDescription: () => setDescription2,
92
+ setLabel: () => setLabel2,
93
+ setValue: () => setValue2,
94
+ sort: () => sort2,
95
+ sortByLabel: () => sortByLabel2,
96
+ sortByTypename: () => sortByTypename2,
97
+ subscribe: () => subscribe2,
98
+ toJSON: () => toJSON,
99
+ version: () => version2
100
+ });
101
+ import * as Schema from "effect/Schema";
102
+ import { raise } from "@dxos/debug";
103
+ import { createJsonPath } from "@dxos/effect";
104
+ import { assertArgument, invariant } from "@dxos/invariant";
105
+ import { DXN } from "@dxos/keys";
106
+ import { assumeType } from "@dxos/util";
107
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Relation.ts";
108
+ var Unknown3 = Schema.Struct({
109
+ id: Schema.String
110
+ }).pipe(
111
+ Schema.extend(Schema.Record({
112
+ key: Schema.String,
113
+ value: Schema.Unknown
114
+ })),
115
+ // TODO(dmaretskyi): Clean this up.
116
+ // NOTE: The EchoRelationSchema annotation is required for Ref.Ref(Relation.Unknown) to work.
117
+ // The typename/version/source/target only satisfy ECHO schema machinery for reference targets.
118
+ EchoRelationSchema({
119
+ typename: "org.dxos.schema.any-relation",
120
+ version: "0.0.0",
121
+ source: Unknown,
122
+ target: Unknown
123
+ }),
124
+ (schema) => Object.assign(schema, {
125
+ [SchemaKindId]: schema[SchemaKindId]
126
+ })
127
+ );
128
+ var Source = RelationSourceId;
129
+ var Target = RelationTargetId;
130
+ var make = (schema, props) => {
131
+ assertArgument(getTypeAnnotation(schema)?.kind === EntityKind.Relation, "schema", "Expected a relation schema");
132
+ assertArgument(props[ParentId] === void 0, "props", "Parent is not allowed for relations");
133
+ let meta = void 0;
134
+ if (props[MetaId] != null) {
135
+ meta = props[MetaId];
136
+ delete props[MetaId];
137
+ }
138
+ const sourceDXN = getObjectDXN(props[Source]) ?? raise(new Error("Unresolved relation source"));
139
+ const targetDXN = getObjectDXN(props[Target]) ?? raise(new Error("Unresolved relation target"));
140
+ props[RelationSourceDXNId] = sourceDXN;
141
+ props[RelationTargetDXNId] = targetDXN;
142
+ return makeObject(schema, props, meta);
143
+ };
144
+ var isRelation = (value) => {
145
+ if (typeof value !== "object" || value === null) {
146
+ return false;
147
+ }
148
+ if (ATTR_RELATION_SOURCE in value || ATTR_RELATION_TARGET in value) {
149
+ return true;
150
+ }
151
+ const kind = value[KindId] ?? value[SnapshotKindId];
152
+ return kind === EntityKind.Relation;
153
+ };
154
+ var isSnapshot = (value) => {
155
+ if (typeof value !== "object" || value === null) {
156
+ return false;
157
+ }
158
+ return value[SnapshotKindId] === EntityKind.Relation;
159
+ };
160
+ var getSourceDXN = (value) => {
161
+ assertArgument(isRelation(value), "Expected a relation");
162
+ assumeType(value);
163
+ const dxn = value[RelationSourceDXNId];
164
+ invariant(dxn instanceof DXN, void 0, {
165
+ F: __dxlog_file,
166
+ L: 214,
167
+ S: void 0,
168
+ A: [
169
+ "dxn instanceof DXN",
170
+ ""
171
+ ]
172
+ });
173
+ return dxn;
174
+ };
175
+ var getTargetDXN = (value) => {
176
+ assertArgument(isRelation(value), "Expected a relation");
177
+ assumeType(value);
178
+ const dxn = value[RelationTargetDXNId];
179
+ invariant(dxn instanceof DXN, void 0, {
180
+ F: __dxlog_file,
181
+ L: 227,
182
+ S: void 0,
183
+ A: [
184
+ "dxn instanceof DXN",
185
+ ""
186
+ ]
187
+ });
188
+ return dxn;
189
+ };
190
+ var getSource = (relation) => {
191
+ assertArgument(isRelation(relation), "Expected a relation");
192
+ assumeType(relation);
193
+ const obj = relation[RelationSourceId];
194
+ invariant(obj !== void 0, `Invalid source: ${relation.id}`, {
195
+ F: __dxlog_file,
196
+ L: 240,
197
+ S: void 0,
198
+ A: [
199
+ "obj !== undefined",
200
+ "`Invalid source: ${relation.id}`"
201
+ ]
202
+ });
203
+ return obj;
204
+ };
205
+ var getTarget = (relation) => {
206
+ assertArgument(isRelation(relation), "Expected a relation");
207
+ assumeType(relation);
208
+ const obj = relation[RelationTargetId];
209
+ invariant(obj !== void 0, `Invalid target: ${relation.id}`, {
210
+ F: __dxlog_file,
211
+ L: 253,
212
+ S: void 0,
213
+ A: [
214
+ "obj !== undefined",
215
+ "`Invalid target: ${relation.id}`"
216
+ ]
217
+ });
218
+ return obj;
219
+ };
220
+ var change2 = (relation, callback) => {
221
+ change(relation, callback);
222
+ };
223
+ var getSnapshot2 = getSnapshot;
224
+ var subscribe2 = (rel, callback) => {
225
+ return subscribe(rel, callback);
226
+ };
227
+ var getValue2 = (rel, path) => {
228
+ return getValue(rel, createJsonPath(path));
229
+ };
230
+ var setValue2 = setValue;
231
+ var getDXN2 = (entity) => getDXN(entity);
232
+ var getTypeDXN2 = getTypeDXN;
233
+ var getSchema2 = getSchema;
234
+ var getTypename2 = (entity) => getTypename(entity);
235
+ var getDatabase2 = (entity) => getDatabase(entity);
236
+ var Meta = MetaId;
237
+ function getMeta(entity) {
238
+ return getMetaChecked(entity);
239
+ }
240
+ var getKeys2 = (entity, source) => getKeys(entity, source);
241
+ var deleteKeys2 = (entity, source) => deleteKeys(entity, source);
242
+ var addTag2 = (entity, tag) => addTag(entity, tag);
243
+ var removeTag2 = (entity, tag) => removeTag(entity, tag);
244
+ var isDeleted2 = (entity) => isDeleted(entity);
245
+ var getLabel2 = (entity) => getLabel(entity);
246
+ var setLabel2 = (entity, label) => setLabel(entity, label);
247
+ var getDescription2 = (entity) => getDescription(entity);
248
+ var setDescription2 = (entity, description) => setDescription(entity, description);
249
+ var toJSON = (entity) => objectToJSON(entity);
250
+ var sortByLabel2 = sortByLabel;
251
+ var sortByTypename2 = sortByTypename;
252
+ var sort2 = (...comparators) => sort(...comparators);
253
+ var VersionTypeId2 = VersionTypeId;
254
+ var isVersion2 = isVersion;
255
+ var version2 = (entity) => version(entity);
256
+
257
+ export {
258
+ Unknown3 as Unknown,
259
+ Source,
260
+ Target,
261
+ make,
262
+ isRelation,
263
+ isSnapshot,
264
+ getSourceDXN,
265
+ getTargetDXN,
266
+ getSource,
267
+ getTarget,
268
+ change2 as change,
269
+ getSnapshot2 as getSnapshot,
270
+ subscribe2 as subscribe,
271
+ getValue2 as getValue,
272
+ setValue2 as setValue,
273
+ getDXN2 as getDXN,
274
+ getTypeDXN2 as getTypeDXN,
275
+ getSchema2 as getSchema,
276
+ getTypename2 as getTypename,
277
+ getDatabase2 as getDatabase,
278
+ Meta,
279
+ getMeta,
280
+ getKeys2 as getKeys,
281
+ deleteKeys2 as deleteKeys,
282
+ addTag2 as addTag,
283
+ removeTag2 as removeTag,
284
+ isDeleted2 as isDeleted,
285
+ getLabel2 as getLabel,
286
+ setLabel2 as setLabel,
287
+ getDescription2 as getDescription,
288
+ setDescription2 as setDescription,
289
+ toJSON,
290
+ sortByLabel2 as sortByLabel,
291
+ sortByTypename2 as sortByTypename,
292
+ sort2 as sort,
293
+ VersionTypeId2 as VersionTypeId,
294
+ isVersion2 as isVersion,
295
+ version2 as version,
296
+ Relation_exports
297
+ };
298
+ //# sourceMappingURL=chunk-CIRHIEMW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Relation.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { raise } from '@dxos/debug';\nimport type { ForeignKey } from '@dxos/echo-protocol';\nimport { createJsonPath } from '@dxos/effect';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { DXN, type ObjectId } from '@dxos/keys';\nimport { assumeType } from '@dxos/util';\n\nimport type * as Database from './Database';\nimport * as Entity from './Entity';\nimport * as entityInternal from './internal/Entity';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport type * as Type from './Type';\n\nexport type Endpoints<Source, Target> = {\n [Source]: Source;\n [Target]: Target;\n};\n\n/**\n * Base type for all ECHO relations.\n * @private\n */\ninterface BaseRelation<Source, Target>\n extends internal.AnyEntity, Endpoints<Source, Target>, Entity.OfKind<internal.EntityKind.Relation> {}\n\n/**\n * Relation with no known properties beyond id, kind, source, and target.\n * Use this when the relation's schema/properties are not known.\n *\n * NOTE: This is a TypeScript type only, not a schema.\n * To validate that a value is an ECHO relation, use `Relation.isRelation`.\n */\nexport interface Unknown extends BaseRelation<Obj.Unknown, Obj.Unknown> {}\n\n/**\n * Runtime Effect schema for any ECHO relation.\n * Use for validation, parsing, or as a reference target for collections.\n * A relation has `id`, source, and target fields plus any additional properties.\n *\n * NOTE: `Schema.is(Type.Relation)` does STRUCTURAL validation only (checks for `id` field).\n * Use `Relation.isRelation()` for proper ECHO instance type guards that check the KindId brand.\n *\n * @example\n * ```ts\n * // Structural type guard (accepts any object with id field)\n * if (Schema.is(Type.Relation)(unknownValue)) { ... }\n *\n * // ECHO instance type guard (checks KindId brand)\n * if (Relation.isRelation(unknownValue)) { ... }\n * ```\n */\n// TODO(dmaretskyi): Change ObjModule.Any to ObjModule.Unknown to have stricter types.\nexport const Unknown: Type.Relation<Unknown, Obj.Any, Obj.Any> = Schema.Struct({\n id: Schema.String,\n}).pipe(\n Schema.extend(Schema.Record({ key: Schema.String, value: Schema.Unknown })),\n // TODO(dmaretskyi): Clean this up.\n // NOTE: The EchoRelationSchema annotation is required for Ref.Ref(Relation.Unknown) to work.\n // The typename/version/source/target only satisfy ECHO schema machinery for reference targets.\n internal.EchoRelationSchema({\n typename: 'org.dxos.schema.any-relation',\n version: '0.0.0',\n source: Obj.Unknown,\n target: Obj.Unknown,\n }),\n (schema) =>\n Object.assign(schema, {\n [internal.SchemaKindId]: (schema as any)[internal.SchemaKindId],\n }) as unknown as Type.Relation<Unknown, Obj.Any, Obj.Any>,\n);\n\n/**\n * Relation type with specific source and target types.\n */\nexport type OfShape<Source extends Obj.Unknown, Target extends Obj.Unknown, Props> = BaseRelation<Source, Target> &\n Props;\n\n/**\n * Base type for snapshot relations (has SnapshotKindId instead of KindId).\n */\ninterface BaseRelationSnapshot<Source, Target> extends internal.AnyEntity, Endpoints<Source, Target> {\n readonly [Entity.SnapshotKindId]: internal.EntityKind.Relation;\n readonly id: ObjectId;\n}\n\n/**\n * JSON-encoded properties for relations.\n */\nexport interface BaseRelationJson {\n id: string;\n [internal.ATTR_RELATION_SOURCE]: string;\n [internal.ATTR_RELATION_TARGET]: string;\n}\n\n/**\n * Immutable snapshot of an ECHO relation.\n * Branded with SnapshotKindId (not KindId).\n * Property values are frozen at the time the snapshot was created.\n * Returned by getSnapshot() and hooks.\n */\nexport type Snapshot<T extends Unknown = Unknown> = Omit<T, Entity.KindId> &\n BaseRelationSnapshot<Obj.Unknown, Obj.Unknown>;\n\nexport const Source: unique symbol = entityInternal.RelationSourceId as any;\nexport type Source = typeof Source;\n\nexport const Target: unique symbol = entityInternal.RelationTargetId as any;\nexport type Target = typeof Target;\n\n/**\n * Get relation source type.\n */\nexport type SourceOf<A> = A extends Endpoints<infer S, infer _T> ? S : never;\n\n/**\n * Get relation target type.\n */\nexport type TargetOf<A> = A extends Endpoints<infer _S, infer T> ? T : never;\n\n/**\n * Internal props type for relation instance creation.\n */\ntype MakePropsInternal<T extends Unknown> = {\n id?: ObjectId;\n [Meta]?: internal.ObjectMeta;\n [Source]: T[Source];\n [Target]: T[Target];\n} & Entity.Properties<T>;\n\n/**\n * Props type for relation creation with a given schema.\n * Takes a schema type (created with Type.Relation) and extracts the props type.\n */\nexport type MakeProps<S extends Type.AnyRelation> = MakePropsInternal<Schema.Schema.Type<S>>;\n\n/**\n * Creates new relation.\n * @param schema - Relation schema.\n * @param props - Relation properties. Endpoints are passed as [Relation.Source] and [Relation.Target] keys.\n * @param meta - Relation metadata. (deprecated; use [Obj.Meta] instead)\n * @returns\n */\n// NOTE: Writing the definition this way (with generic over schema) makes typescript perfer to infer the type from the first param (this schema) rather than the second param (the props).\n// TODO(dmaretskyi): Move meta into props.\nexport const make = <S extends Type.AnyRelation>(\n schema: S,\n props: NoInfer<MakeProps<S>>,\n): Schema.Schema.Type<S> & Entity.OfKind<typeof Entity.Kind.Relation> => {\n assertArgument(\n internal.getTypeAnnotation(schema)?.kind === internal.EntityKind.Relation,\n 'schema',\n 'Expected a relation schema',\n );\n assertArgument(props[internal.ParentId] === undefined, 'props', 'Parent is not allowed for relations');\n\n let meta: internal.ObjectMeta | undefined = undefined;\n\n if (props[internal.MetaId] != null) {\n meta = props[internal.MetaId] as any;\n delete props[internal.MetaId];\n }\n\n const sourceDXN = internal.getObjectDXN(props[Source]) ?? raise(new Error('Unresolved relation source'));\n const targetDXN = internal.getObjectDXN(props[Target]) ?? raise(new Error('Unresolved relation target'));\n\n (props as any)[internal.RelationSourceDXNId] = sourceDXN;\n (props as any)[internal.RelationTargetDXNId] = targetDXN;\n\n return internal.makeObject<Schema.Schema.Type<S>>(schema, props as any, meta);\n};\n\n/**\n * Type guard for relations.\n * Returns true for both reactive relations and relation snapshots.\n */\nexport const isRelation = (value: unknown): value is Unknown => {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (internal.ATTR_RELATION_SOURCE in value || internal.ATTR_RELATION_TARGET in value) {\n return true;\n }\n\n // Check for reactive relation (KindId) or snapshot (SnapshotKindId).\n const kind = (value as any)[Entity.KindId] ?? (value as any)[Entity.SnapshotKindId];\n return kind === internal.EntityKind.Relation;\n};\n\nexport const isSnapshot = (value: unknown): value is Snapshot => {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n return (value as any)[Entity.SnapshotKindId] === internal.EntityKind.Relation;\n};\n\n/**\n * @returns Relation source DXN.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getSourceDXN = (value: Unknown | Snapshot): DXN => {\n assertArgument(isRelation(value), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(value);\n const dxn = (value as internal.InternalObjectProps)[internal.RelationSourceDXNId];\n invariant(dxn instanceof DXN);\n return dxn;\n};\n\n/**\n * @returns Relation target DXN.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getTargetDXN = (value: Unknown | Snapshot): DXN => {\n assertArgument(isRelation(value), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(value);\n const dxn = (value as internal.InternalObjectProps)[internal.RelationTargetDXNId];\n invariant(dxn instanceof DXN);\n return dxn;\n};\n\n/**\n * @returns Relation source.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getSource = <T extends Unknown | Snapshot>(relation: T): SourceOf<T> => {\n assertArgument(isRelation(relation), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(relation);\n const obj = (relation as internal.InternalObjectProps)[internal.RelationSourceId];\n invariant(obj !== undefined, `Invalid source: ${relation.id}`);\n return obj as SourceOf<T>;\n};\n\n/**\n * @returns Relation target.\n * Accepts both reactive relations and snapshots.\n * @throws If the object is not a relation.\n */\nexport const getTarget = <T extends Unknown | Snapshot>(relation: T): TargetOf<T> => {\n assertArgument(isRelation(relation), 'Expected a relation');\n assumeType<internal.InternalObjectProps>(relation);\n const obj = (relation as internal.InternalObjectProps)[internal.RelationTargetId];\n invariant(obj !== undefined, `Invalid target: ${relation.id}`);\n return obj as TargetOf<T>;\n};\n\n//\n// Change\n//\n\n/**\n * Makes all properties mutable recursively.\n * Used to provide a mutable view of a relation within `Relation.change`.\n */\nexport type Mutable<T> = internal.Mutable<T>;\n\n/**\n * Perform mutations on an echo relation within a controlled context.\n *\n * All mutations within the callback are batched and trigger a single notification\n * when the callback completes. Direct mutations outside of `Relation.change` will throw\n * an error for echo relations.\n *\n * @param relation - The echo relation to mutate. Use `Obj.change` for objects.\n * @param callback - The callback that performs mutations on the relation.\n *\n * @example\n * ```ts\n * const worksFor = Relation.make(EmployedBy, {\n * [Relation.Source]: person,\n * [Relation.Target]: company,\n * role: 'Engineer',\n * });\n *\n * // Mutate within Relation.change\n * Relation.change(worksFor, (r) => {\n * r.role = 'Senior Engineer';\n * });\n * ```\n *\n * Note: Only accepts relations. Use `Obj.change` for objects.\n */\nexport const change = <T extends Unknown>(relation: T, callback: internal.ChangeCallback<T>): void => {\n internal.change(relation, callback);\n};\n\n//\n// Snapshot\n//\n\n/**\n * Returns an immutable snapshot of a relation.\n * The snapshot is branded with SnapshotKindId instead of KindId,\n * making it distinguishable from the reactive relation at the type level.\n */\nexport const getSnapshot: <T extends Unknown>(rel: T) => Snapshot<T> = internal.getSnapshot as any;\n\n//\n// Subscribe\n//\n\n/**\n * Subscribe to relation updates.\n * The callback is called synchronously when the relation is modified.\n * Only accepts reactive relations (not snapshots).\n * @returns Unsubscribe function.\n */\nexport const subscribe = (rel: Unknown, callback: () => void): (() => void) => {\n return internal.subscribe(rel, callback);\n};\n\n//\n// Property Access\n//\n\n/**\n * Get a deeply nested property from a relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getValue = (rel: Unknown | Snapshot, path: readonly (string | number)[]): any => {\n return internal.getValue(rel, createJsonPath(path));\n};\n\n/**\n * Set a deeply nested property on a relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const setValue: (rel: Mutable<Unknown>, path: readonly (string | number)[], value: any) => void =\n internal.setValue as any;\n\n//\n// Type\n//\n\n/**\n * Get the DXN of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getDXN = (entity: Unknown | Snapshot): DXN => internal.getDXN(entity);\n\n/**\n * @returns The DXN of the relation's type.\n */\nexport const getTypeDXN = internal.getTypeDXN;\n\n/**\n * Get the schema of the relation.\n * Returns the branded ECHO schema used to create the relation.\n */\nexport const getSchema: (rel: unknown | undefined) => Type.AnyEntity | undefined = internal.getSchema as any;\n\n/**\n * @returns The typename of the relation's type.\n * Accepts both reactive relations and snapshots.\n */\nexport const getTypename = (entity: Unknown | Snapshot): string | undefined => internal.getTypename(entity);\n\n//\n// Database\n//\n\n/**\n * Get the database the relation belongs to.\n * Accepts both reactive relations and snapshots.\n */\nexport const getDatabase = (entity: Unknown | Snapshot): Database.Database | undefined => internal.getDatabase(entity);\n\n//\n// Meta\n//\n\n/**\n * Property that accesses metadata for an entity.\n *\n * Alias for `Entity.Meta`.\n */\nexport const Meta = internal.MetaId;\n\n/**\n * Deeply read-only version of ObjectMeta.\n */\nexport type ReadonlyMeta = internal.ReadonlyMeta;\n\n/**\n * Mutable meta type returned by `Relation.getMeta` inside a `Relation.change` callback.\n */\nexport type Meta = internal.Meta;\n\n/**\n * Get the metadata for a relation.\n * Returns mutable meta when passed a mutable relation (inside `Relation.change` callback).\n * Returns read-only meta when passed a regular relation or snapshot.\n */\n// TODO(wittjosiah): When passed a Snapshot, should return a snapshot of meta, not the live meta proxy.\nexport function getMeta(entity: Mutable<Unknown>): Meta;\nexport function getMeta(entity: Unknown | Snapshot): ReadonlyMeta;\nexport function getMeta(entity: Unknown | Snapshot | Mutable<Unknown>): Meta | ReadonlyMeta {\n return internal.getMetaChecked(entity);\n}\n\n/**\n * @returns Foreign keys for the relation from the specified source.\n * Accepts both reactive relations and snapshots.\n */\nexport const getKeys = (entity: Unknown | Snapshot, source: string): ForeignKey[] => internal.getKeys(entity, source);\n\n/**\n * Delete all keys from the relation for the specified source.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const deleteKeys = (entity: Mutable<Unknown>, source: string): void => internal.deleteKeys(entity, source);\n\n/**\n * Add a tag to the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const addTag = (entity: Mutable<Unknown>, tag: string): void => internal.addTag(entity, tag);\n\n/**\n * Remove a tag from the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const removeTag = (entity: Mutable<Unknown>, tag: string): void => internal.removeTag(entity, tag);\n\n/**\n * Check if the relation is deleted.\n * Accepts both reactive relations and snapshots.\n */\nexport const isDeleted = (entity: Unknown | Snapshot): boolean => internal.isDeleted(entity);\n\n//\n// Annotations\n//\n\n/**\n * Get the label of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getLabel = (entity: Unknown | Snapshot): string | undefined => internal.getLabel(entity);\n\n/**\n * Set the label of the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const setLabel = (entity: Mutable<Unknown>, label: string): void => internal.setLabel(entity, label);\n\n/**\n * Get the description of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const getDescription = (entity: Unknown | Snapshot): string | undefined => internal.getDescription(entity);\n\n/**\n * Set the description of the relation.\n * Must be called within a `Relation.change` callback.\n *\n * NOTE: TypeScript's structural typing allows readonly objects to be passed to `Mutable<T>`\n * parameters, so there is no compile-time error. Enforcement is runtime-only.\n */\nexport const setDescription = (entity: Mutable<Unknown>, description: string): void =>\n internal.setDescription(entity, description);\n\n//\n// JSON\n//\n\n/**\n * JSON representation of a relation.\n */\nexport type JSON = internal.ObjectJSON;\n\n/**\n * Converts relation to its JSON representation.\n * Accepts both reactive relations and snapshots.\n */\nexport const toJSON = (entity: Unknown | Snapshot): JSON => internal.objectToJSON(entity);\n\n//\n// Sorting\n//\n\n/**\n * Comparator function type for sorting relations.\n * Accepts both reactive relations and snapshots.\n */\nexport type Comparator = internal.Comparator<Unknown | Snapshot>;\n\nexport const sortByLabel: Comparator = internal.sortByLabel as Comparator;\nexport const sortByTypename: Comparator = internal.sortByTypename as Comparator;\nexport const sort = (...comparators: Comparator[]): Comparator => internal.sort(...comparators) as Comparator;\n\n//\n// Version\n//\n\nexport const VersionTypeId = internal.VersionTypeId;\nexport const isVersion = internal.isVersion;\n\n/**\n * Represent relation version.\n */\nexport type Version = internal.EntityVersion;\n\n/**\n * Returns the version of the relation.\n * Accepts both reactive relations and snapshots.\n */\nexport const version = (entity: Unknown | Snapshot): Version => internal.version(entity);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;iBAAAA;EAAA,qBAAAC;EAAA,cAAAC;EAAA,cAAAC;EAAA,kBAAAC;EAAA,cAAAC;EAAA,mBAAAC;EAAA,sBAAAC;EAAA,eAAAC;EAAA,gBAAAC;EAAA;mBAAAC;EAAA,mBAAAC;EAAA;;;;oBAAAC;EAAA,mBAAAC;EAAA,gBAAAC;EAAA,iBAAAC;EAAA;;mBAAAC;EAAA;mBAAAC;EAAA,sBAAAC;EAAA,gBAAAC;EAAA,gBAAAC;EAAA,YAAAC;EAAA,mBAAAC;EAAA,sBAAAC;EAAA,iBAAAC;EAAA;iBAAAC;;AAMA,YAAYC,YAAY;AAExB,SAASC,aAAa;AAEtB,SAASC,sBAAsB;AAC/B,SAASC,gBAAgBC,iBAAiB;AAC1C,SAASC,WAA0B;AACnC,SAASC,kBAAkB;;AAgDpB,IAAMC,WAA2DC,cAAO;EAC7EC,IAAWC;AACb,CAAA,EAAGC;EACMC,cAAcC,cAAO;IAAEC,KAAYJ;IAAQK,OAAcR;EAAQ,CAAA,CAAA;;;;EAI/DS,mBAAmB;IAC1BC,UAAU;IACVC,SAAS;IACTC,QAAYZ;IACZa,QAAYb;EACd,CAAA;EACA,CAACc,WACCC,OAAOC,OAAOF,QAAQ;IACpB,CAAUG,YAAY,GAAIH,OAAwBG,YAAY;EAChE,CAAA;AAAA;AAmCG,IAAMC,SAAuCC;AAG7C,IAAMC,SAAuCC;AAsC7C,IAAMC,OAAO,CAClBR,QACAS,UAAAA;AAEAC,iBACWC,kBAAkBX,MAAAA,GAASY,SAAkBC,WAAWC,UACjE,UACA,4BAAA;AAEFJ,iBAAeD,MAAeM,QAAQ,MAAMC,QAAW,SAAS,qCAAA;AAEhE,MAAIC,OAAwCD;AAE5C,MAAIP,MAAeS,MAAM,KAAK,MAAM;AAClCD,WAAOR,MAAeS,MAAM;AAC5B,WAAOT,MAAeS,MAAM;EAC9B;AAEA,QAAMC,YAAqBC,aAAaX,MAAML,MAAAA,CAAO,KAAKiB,MAAM,IAAIC,MAAM,4BAAA,CAAA;AAC1E,QAAMC,YAAqBH,aAAaX,MAAMH,MAAAA,CAAO,KAAKe,MAAM,IAAIC,MAAM,4BAAA,CAAA;AAEzEb,QAAuBe,mBAAmB,IAAIL;AAC9CV,QAAuBgB,mBAAmB,IAAIF;AAE/C,SAAgBG,WAAkC1B,QAAQS,OAAcQ,IAAAA;AAC1E;AAMO,IAAMU,aAAa,CAACjC,UAAAA;AACzB,MAAI,OAAOA,UAAU,YAAYA,UAAU,MAAM;AAC/C,WAAO;EACT;AACA,MAAakC,wBAAwBlC,SAAkBmC,wBAAwBnC,OAAO;AACpF,WAAO;EACT;AAGA,QAAMkB,OAAQlB,MAAqBoC,MAAM,KAAMpC,MAAqBqC,cAAc;AAClF,SAAOnB,SAAkBC,WAAWC;AACtC;AAEO,IAAMkB,aAAa,CAACtC,UAAAA;AACzB,MAAI,OAAOA,UAAU,YAAYA,UAAU,MAAM;AAC/C,WAAO;EACT;AACA,SAAQA,MAAqBqC,cAAc,MAAelB,WAAWC;AACvE;AAOO,IAAMmB,eAAe,CAACvC,UAAAA;AAC3BgB,iBAAeiB,WAAWjC,KAAAA,GAAQ,qBAAA;AAClCwC,aAAyCxC,KAAAA;AACzC,QAAMyC,MAAOzC,MAAgD8B,mBAAmB;AAChFY,YAAUD,eAAeE,KAAAA,QAAAA;;;;;;;;;AACzB,SAAOF;AACT;AAOO,IAAMG,eAAe,CAAC5C,UAAAA;AAC3BgB,iBAAeiB,WAAWjC,KAAAA,GAAQ,qBAAA;AAClCwC,aAAyCxC,KAAAA;AACzC,QAAMyC,MAAOzC,MAAgD+B,mBAAmB;AAChFW,YAAUD,eAAeE,KAAAA,QAAAA;;;;;;;;;AACzB,SAAOF;AACT;AAOO,IAAMI,YAAY,CAA+BC,aAAAA;AACtD9B,iBAAeiB,WAAWa,QAAAA,GAAW,qBAAA;AACrCN,aAAyCM,QAAAA;AACzC,QAAMC,MAAOD,SAAmDnC,gBAAgB;AAChF+B,YAAUK,QAAQzB,QAAW,mBAAmBwB,SAASpD,EAAE,IAAE;;;;;;;;;AAC7D,SAAOqD;AACT;AAOO,IAAMC,YAAY,CAA+BF,aAAAA;AACtD9B,iBAAeiB,WAAWa,QAAAA,GAAW,qBAAA;AACrCN,aAAyCM,QAAAA;AACzC,QAAMC,MAAOD,SAAmDjC,gBAAgB;AAChF6B,YAAUK,QAAQzB,QAAW,mBAAmBwB,SAASpD,EAAE,IAAE;;;;;;;;;AAC7D,SAAOqD;AACT;AAsCO,IAAME,UAAS,CAAoBH,UAAaI,aAAAA;AACrDC,EAASF,OAAOH,UAAUI,QAAAA;AAC5B;AAWO,IAAME,eAAmEA;AAYzE,IAAMC,aAAY,CAACC,KAAcJ,aAAAA;AACtC,SAAgBG,UAAUC,KAAKJ,QAAAA;AACjC;AAUO,IAAMK,YAAW,CAACD,KAAyBE,SAAAA;AAChD,SAAgBD,SAASD,KAAKG,eAAeD,IAAAA,CAAAA;AAC/C;AASO,IAAME,YACFA;AAUJ,IAAMC,UAAS,CAACC,WAA6CD,OAAOC,MAAAA;AAKpE,IAAMC,cAAsBA;AAM5B,IAAMC,aAA+EA;AAMrF,IAAMC,eAAc,CAACH,WAA4DG,YAAYH,MAAAA;AAU7F,IAAMI,eAAc,CAACJ,WAAuEI,YAAYJ,MAAAA;AAWxG,IAAMK,OAAgBzC;AAoBtB,SAAS0C,QAAQN,QAA6C;AACnE,SAAgBO,eAAeP,MAAAA;AACjC;AAMO,IAAMQ,WAAU,CAACR,QAA4BxD,WAA0CgE,QAAQR,QAAQxD,MAAAA;AASvG,IAAMiE,cAAa,CAACT,QAA0BxD,WAAkCiE,WAAWT,QAAQxD,MAAAA;AASnG,IAAMkE,UAAS,CAACV,QAA0BW,QAA+BD,OAAOV,QAAQW,GAAAA;AASxF,IAAMC,aAAY,CAACZ,QAA0BW,QAA+BC,UAAUZ,QAAQW,GAAAA;AAM9F,IAAME,aAAY,CAACb,WAAiDa,UAAUb,MAAAA;AAU9E,IAAMc,YAAW,CAACd,WAA4Dc,SAASd,MAAAA;AASvF,IAAMe,YAAW,CAACf,QAA0BgB,UAAiCD,SAASf,QAAQgB,KAAAA;AAM9F,IAAMC,kBAAiB,CAACjB,WAA4DiB,eAAejB,MAAAA;AASnG,IAAMkB,kBAAiB,CAAClB,QAA0BmB,gBAC9CD,eAAelB,QAAQmB,WAAAA;AAe3B,IAAMC,SAAS,CAACpB,WAA8CqB,aAAarB,MAAAA;AAY3E,IAAMsB,eAAmCA;AACzC,IAAMC,kBAAsCA;AAC5C,IAAMC,QAAO,IAAIC,gBAAmDD,KAAI,GAAIC,WAAAA;AAM5E,IAAMC,iBAAyBA;AAC/B,IAAMC,aAAqBA;AAW3B,IAAMpF,WAAU,CAACyD,WAAiDzD,QAAQyD,MAAAA;",
6
+ "names": ["Unknown", "VersionTypeId", "addTag", "change", "deleteKeys", "getDXN", "getDatabase", "getDescription", "getKeys", "getLabel", "getSchema", "getSnapshot", "getTypeDXN", "getTypename", "getValue", "isDeleted", "isVersion", "removeTag", "setDescription", "setLabel", "setValue", "sort", "sortByLabel", "sortByTypename", "subscribe", "version", "Schema", "raise", "createJsonPath", "assertArgument", "invariant", "DXN", "assumeType", "Unknown", "Struct", "id", "String", "pipe", "extend", "Record", "key", "value", "EchoRelationSchema", "typename", "version", "source", "target", "schema", "Object", "assign", "SchemaKindId", "Source", "RelationSourceId", "Target", "RelationTargetId", "make", "props", "assertArgument", "getTypeAnnotation", "kind", "EntityKind", "Relation", "ParentId", "undefined", "meta", "MetaId", "sourceDXN", "getObjectDXN", "raise", "Error", "targetDXN", "RelationSourceDXNId", "RelationTargetDXNId", "makeObject", "isRelation", "ATTR_RELATION_SOURCE", "ATTR_RELATION_TARGET", "KindId", "SnapshotKindId", "isSnapshot", "getSourceDXN", "assumeType", "dxn", "invariant", "DXN", "getTargetDXN", "getSource", "relation", "obj", "getTarget", "change", "callback", "internal", "getSnapshot", "subscribe", "rel", "getValue", "path", "createJsonPath", "setValue", "getDXN", "entity", "getTypeDXN", "getSchema", "getTypename", "getDatabase", "Meta", "getMeta", "getMetaChecked", "getKeys", "deleteKeys", "addTag", "tag", "removeTag", "isDeleted", "getLabel", "setLabel", "label", "getDescription", "setDescription", "description", "toJSON", "objectToJSON", "sortByLabel", "sortByTypename", "sort", "comparators", "VersionTypeId", "isVersion"]
7
+ }
@@ -0,0 +1,102 @@
1
+ import {
2
+ object
3
+ } from "./chunk-RMLF7JOZ.mjs";
4
+ import {
5
+ getKeys,
6
+ make
7
+ } from "./chunk-NQRLRYJM.mjs";
8
+ import {
9
+ FormInputAnnotation,
10
+ SystemTypeAnnotation
11
+ } from "./chunk-SEMVAGBM.mjs";
12
+ import {
13
+ __export
14
+ } from "./chunk-J5LGTIGS.mjs";
15
+
16
+ // src/Feed.ts
17
+ var Feed_exports = {};
18
+ __export(Feed_exports, {
19
+ DXN_KEY: () => DXN_KEY,
20
+ Feed: () => Feed,
21
+ Service: () => Service,
22
+ append: () => append,
23
+ cursor: () => cursor,
24
+ getQueueDxn: () => getQueueDxn,
25
+ make: () => make2,
26
+ next: () => next,
27
+ nextOption: () => nextOption,
28
+ notAvailable: () => notAvailable,
29
+ query: () => query,
30
+ remove: () => remove,
31
+ runQuery: () => runQuery,
32
+ setRetention: () => setRetention
33
+ });
34
+ import * as Context from "effect/Context";
35
+ import * as Effect from "effect/Effect";
36
+ import * as Layer from "effect/Layer";
37
+ import * as Schema from "effect/Schema";
38
+ import { DXN } from "@dxos/keys";
39
+ var Feed = Schema.Struct({
40
+ /** User-facing display name. */
41
+ name: Schema.String.pipe(Schema.optional),
42
+ /** Identifier for the feed's kind (e.g., plugin id). */
43
+ kind: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional)
44
+ }).pipe(object({
45
+ typename: "org.dxos.type.feed",
46
+ version: "0.1.0"
47
+ }), SystemTypeAnnotation.set(true));
48
+ var DXN_KEY = "org.dxos.key.feed";
49
+ var make2 = (props = {}) => make(Feed, props);
50
+ var getQueueDxn = (feed) => {
51
+ const keys = getKeys(feed, DXN_KEY);
52
+ return keys.length === 0 ? void 0 : DXN.parse(keys[0].id);
53
+ };
54
+ var Service = class extends Context.Tag("@dxos/echo/Feed/Service")() {
55
+ };
56
+ var notAvailable = Layer.succeed(Service, {
57
+ append: () => {
58
+ throw new Error("Feed.Service not available");
59
+ },
60
+ remove: () => {
61
+ throw new Error("Feed.Service not available");
62
+ },
63
+ query: () => {
64
+ throw new Error("Feed.Service not available");
65
+ }
66
+ });
67
+ var append = (feed, items) => Effect.gen(function* () {
68
+ const service = yield* Service;
69
+ yield* Effect.promise(() => service.append(feed, items));
70
+ });
71
+ var remove = (feed, items) => Effect.gen(function* () {
72
+ const service = yield* Service;
73
+ const ids = items.map((item) => item.id);
74
+ yield* Effect.promise(() => service.remove(feed, ids));
75
+ });
76
+ var query = (feed, queryOrFilter) => Service.pipe(Effect.map((service) => service.query(feed, queryOrFilter)));
77
+ var runQuery = (feed, queryOrFilter) => query(feed, queryOrFilter).pipe(Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())));
78
+ var cursor = (_feed) => Effect.succeed({
79
+ _tag: "Cursor"
80
+ });
81
+ var next = (_cursor) => Effect.die("Feed.next is not yet implemented");
82
+ var nextOption = (_cursor) => Effect.die("Feed.nextOption is not yet implemented");
83
+ var setRetention = (_feed, _options) => Effect.void;
84
+
85
+ export {
86
+ Feed,
87
+ DXN_KEY,
88
+ make2 as make,
89
+ getQueueDxn,
90
+ Service,
91
+ notAvailable,
92
+ append,
93
+ remove,
94
+ query,
95
+ runQuery,
96
+ cursor,
97
+ next,
98
+ nextOption,
99
+ setRetention,
100
+ Feed_exports
101
+ };
102
+ //# sourceMappingURL=chunk-DYDJBZEG.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Feed.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport type * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nimport type * as Entity from './Entity';\nimport type * as Filter from './Filter';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport type * as Query from './Query';\nimport type * as QueryResult from './QueryResult';\nimport * as Type from './Type';\n\n/**\n * Runtime schema for a Feed object.\n *\n * @example\n * ```ts\n * const feed = Obj.make(Feed.Feed, { name: 'notifications', kind: 'org.dxos.plugin.notifications.v1' });\n * ```\n */\nexport const Feed = Schema.Struct({\n /** User-facing display name. */\n name: Schema.String.pipe(Schema.optional),\n /** Identifier for the feed's kind (e.g., plugin id). */\n kind: Schema.String.pipe(internal.FormInputAnnotation.set(false), Schema.optional),\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.feed',\n version: '0.1.0',\n }),\n internal.SystemTypeAnnotation.set(true),\n);\n\n/**\n * TypeScript instance type for a Feed object.\n */\nexport interface Feed extends Schema.Schema.Type<typeof Feed> {}\n\n//\n// Types\n//\n\n/**\n * Meta key source for storing the backing DXN bound to a feed object.\n */\n// TODO(dmaretskyi): Enforce that Feed ObjectId = feed storage ID. And remove this key.\nexport const DXN_KEY = 'org.dxos.key.feed';\n\n/**\n * Opaque cursor for iterating over feed items.\n */\n// TODO(dmaretskyi): T needs to be referenced in the type structure for typescript to respect it during inference and type-checking.\nexport interface Cursor<T = Obj.Snapshot> {\n readonly _tag: 'Cursor';\n}\n\n/**\n * Retention options for a feed.\n */\nexport interface RetentionOptions {\n /** Retain items after this cursor position. */\n // TODO(wittjosiah): Use FeedCursor from @dxos/feed?\n cursor?: string;\n}\n\n//\n// Factory\n//\n\n/**\n * Creates a new feed object.\n *\n * @example\n * ```ts\n * const feed = Feed.make({ name: 'notifications', kind: 'org.dxos.plugin.notifications.v1' });\n * ```\n */\n// TODO(wittjosiah): How to control the feed namespace (data/trace)? Why do feeds have namespaces?\nexport const make = (props: Obj.MakeProps<typeof Feed> = {}): Feed => Obj.make(Feed, props);\n\n/**\n * Reads the queue DXN from feed metadata.\n *\n * @deprecated\n */\n// TODO(wittjosiah): Align backing feed dxn's with object DXN.\nexport const getQueueDxn = (feed: Feed): DXN | undefined => {\n const keys = Obj.getKeys(feed, DXN_KEY);\n return keys.length === 0 ? undefined : DXN.parse(keys[0].id);\n};\n\n//\n// Service\n//\n\n/**\n * Effect service for feed operations.\n * Provides the bridge to the underlying storage implementation.\n * Must be provided by the application layer (e.g., echo-db).\n */\nexport class Service extends Context.Tag('@dxos/echo/Feed/Service')<\n Service,\n {\n /**\n * Appends items to a feed.\n */\n append(feed: Feed, items: Entity.Unknown[]): Promise<void>;\n\n /**\n * Removes items from a feed by ID.\n */\n // TODO(dmaretskyi): Change type to ObjectId.\n remove(feed: Feed, ids: string[]): Promise<void>;\n\n /**\n * Queries items in a feed.\n */\n query: {\n <Q extends Query.Any>(feed: Feed, query: Q): QueryResult.QueryResult<Query.Type<Q>>;\n <F extends Filter.Any>(feed: Feed, filter: F): QueryResult.QueryResult<Filter.Type<F>>;\n };\n }\n>() {}\n\n/**\n * Layer that provides a Feed service that throws when accessed.\n * Useful as a default layer when no feed service is available.\n */\nexport const notAvailable: Layer.Layer<Service> = Layer.succeed(Service, {\n append: () => {\n throw new Error('Feed.Service not available');\n },\n remove: () => {\n throw new Error('Feed.Service not available');\n },\n query: () => {\n throw new Error('Feed.Service not available');\n },\n} as Context.Tag.Service<Service>);\n\n//\n// Operations\n//\n\n/**\n * Appends items to a feed.\n *\n * @example\n * ```ts\n * yield* Feed.append(feed, [Obj.make(Notification, { title: 'Hello' })]);\n * ```\n */\nexport const append = (feed: Feed, items: Entity.Unknown[]): Effect.Effect<void, never, Service> =>\n Effect.gen(function* () {\n const service = yield* Service;\n yield* Effect.promise(() => service.append(feed, items));\n });\n\n/**\n * Removes items from a feed.\n *\n * @example\n * ```ts\n * yield* Feed.remove(feed, [item]);\n * ```\n */\n// TODO(dmaretskyi): Should we allow snapshots here? - what does it mean to remove a snapshot?\nexport const remove = (feed: Feed, items: (Entity.Unknown | Obj.Snapshot)[]): Effect.Effect<void, never, Service> =>\n Effect.gen(function* () {\n const service = yield* Service;\n const ids = items.map((item) => item.id);\n yield* Effect.promise(() => service.remove(feed, ids));\n });\n\n/**\n * Creates a reactive query over items in a feed.\n *\n * @example\n * ```ts\n * const result = yield* Feed.query(feed, Filter.type(Person));\n * ```\n */\n// TODO(dmaretskyi): Suport chained queries:\n// const result = yield* feed.pipe(Feed.query(Filter.type(Person))); result.subscribe(...)\n// const objects = yield* feed.pipe(Feed.query(Filter.type(Person))).run;\n// const object = yield* feed.pipe(Feed.query(Filter.type(Person))).first;\n// ... unify for Database and schema queries.\nexport const query: {\n <Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;\n <F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;\n} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>\n Service.pipe(Effect.map((service) => service.query(feed, queryOrFilter as any) as QueryResult.QueryResult<any>));\n\n/**\n * Executes a feed query once and returns the results.\n *\n * @example\n * ```ts\n * const items = yield* Feed.runQuery(feed, Filter.type(Person));\n * ```\n */\nexport const runQuery: {\n <Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;\n <F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;\n} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>\n query(feed, queryOrFilter as any).pipe(Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())));\n\n/**\n * Creates a cursor for iterating over feed items.\n * Currently stubbed — cursor operations are not yet implemented.\n *\n * @example\n * ```ts\n * const cursor = yield* Feed.cursor<Person>(feed);\n * const item = yield* Feed.next(cursor);\n * ```\n */\n// TODO(wittjosiah): Implement cursor operations. Use Effect streams?\nexport const cursor = <T = Obj.Snapshot>(_feed: Feed): Effect.Effect<Cursor<T>, never, Service> =>\n Effect.succeed({ _tag: 'Cursor' } as Cursor<T>);\n\n/**\n * Returns the next item from a feed cursor.\n * Currently stubbed — cursor operations are not yet implemented.\n */\nexport const next = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<T, never, Service> =>\n Effect.die('Feed.next is not yet implemented');\n\n/**\n * Returns the next item from a feed cursor as an Option.\n * Currently stubbed — cursor operations are not yet implemented.\n */\nexport const nextOption = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<Option.Option<T>, never, Service> =>\n Effect.die('Feed.nextOption is not yet implemented');\n\n/**\n * Sets the local retention policy for a feed.\n * Currently stubbed — queues do not yet support retention.\n *\n * @example\n * ```ts\n * yield* Feed.setRetention(feed, { count: 1000 });\n * ```\n */\n// TODO(feed): Implement when queue retention is supported.\nexport const setRetention = (_feed: Feed, _options: RetentionOptions): Effect.Effect<void, never, Service> =>\n Effect.void;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;;;;;;;;cAAAA;EAAA;;;;;;;;AAMA,YAAYC,aAAa;AACzB,YAAYC,YAAY;AACxB,YAAYC,WAAW;AAEvB,YAAYC,YAAY;AAExB,SAASC,WAAW;AAkBb,IAAMC,OAAcC,cAAO;;EAEhCC,MAAaC,cAAOC,KAAYC,eAAQ;;EAExCC,MAAaH,cAAOC,KAAcG,oBAAoBC,IAAI,KAAA,GAAeH,eAAQ;AACnF,CAAA,EAAGD,KACIK,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACSC,qBAAqBJ,IAAI,IAAA,CAAA;AAgB7B,IAAMK,UAAU;AAgChB,IAAMC,QAAO,CAACC,QAAoC,CAAC,MAAgBD,KAAKd,MAAMe,KAAAA;AAQ9E,IAAMC,cAAc,CAACC,SAAAA;AAC1B,QAAMC,OAAWC,QAAQF,MAAMJ,OAAAA;AAC/B,SAAOK,KAAKE,WAAW,IAAIC,SAAYC,IAAIC,MAAML,KAAK,CAAA,EAAGM,EAAE;AAC7D;AAWO,IAAMC,UAAN,cAA8BC,YAAI,yBAAA,EAAA,EAAA;AAsBpC;AAME,IAAMC,eAA2CC,cAAQH,SAAS;EACvEI,QAAQ,MAAA;AACN,UAAM,IAAIC,MAAM,4BAAA;EAClB;EACAC,QAAQ,MAAA;AACN,UAAM,IAAID,MAAM,4BAAA;EAClB;EACAE,OAAO,MAAA;AACL,UAAM,IAAIF,MAAM,4BAAA;EAClB;AACF,CAAA;AAcO,IAAMD,SAAS,CAACZ,MAAYgB,UAC1BC,WAAI,aAAA;AACT,QAAMC,UAAU,OAAOV;AACvB,SAAcW,eAAQ,MAAMD,QAAQN,OAAOZ,MAAMgB,KAAAA,CAAAA;AACnD,CAAA;AAWK,IAAMF,SAAS,CAACd,MAAYgB,UAC1BC,WAAI,aAAA;AACT,QAAMC,UAAU,OAAOV;AACvB,QAAMY,MAAMJ,MAAMK,IAAI,CAACC,SAASA,KAAKf,EAAE;AACvC,SAAcY,eAAQ,MAAMD,QAAQJ,OAAOd,MAAMoB,GAAAA,CAAAA;AACnD,CAAA;AAeK,IAAML,QAGT,CAACf,MAAYuB,kBACff,QAAQrB,KAAYkC,WAAI,CAACH,YAAYA,QAAQH,MAAMf,MAAMuB,aAAAA,CAAAA,CAAAA;AAUpD,IAAMC,WAGT,CAACxB,MAAYuB,kBACfR,MAAMf,MAAMuB,aAAAA,EAAsBpC,KAAYsC,eAAQ,CAACC,gBAAuBP,eAAQ,MAAMO,YAAYC,IAAG,CAAA,CAAA,CAAA;AAatG,IAAMC,SAAS,CAAmBC,UAChClB,eAAQ;EAAEmB,MAAM;AAAS,CAAA;AAM3B,IAAMC,OAAO,CAAmBC,YAC9BC,WAAI,kCAAA;AAMN,IAAMC,aAAa,CAAmBF,YACpCC,WAAI,wCAAA;AAYN,IAAME,eAAe,CAACN,OAAaO,aACjCC;",
6
+ "names": ["make", "Context", "Effect", "Layer", "Schema", "DXN", "Feed", "Struct", "name", "String", "pipe", "optional", "kind", "FormInputAnnotation", "set", "object", "typename", "version", "SystemTypeAnnotation", "DXN_KEY", "make", "props", "getQueueDxn", "feed", "keys", "getKeys", "length", "undefined", "DXN", "parse", "id", "Service", "Tag", "notAvailable", "succeed", "append", "Error", "remove", "query", "items", "gen", "service", "promise", "ids", "map", "item", "queryOrFilter", "runQuery", "flatMap", "queryResult", "run", "cursor", "_feed", "_tag", "next", "_cursor", "die", "nextOption", "setRetention", "_options", "void"]
7
+ }