@dxos/echo 0.8.4-main.9735255 → 0.8.4-main.9be5663bfe

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 (542) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/neutral/Annotation.mjs +8 -3
  3. package/dist/lib/neutral/Database.mjs +36 -6
  4. package/dist/lib/neutral/Entity.mjs +18 -10
  5. package/dist/lib/neutral/Err.mjs +3 -1
  6. package/dist/lib/neutral/Extension.mjs +18 -0
  7. package/dist/lib/neutral/Extension.mjs.map +7 -0
  8. package/dist/lib/neutral/Feed.mjs +48 -0
  9. package/dist/lib/neutral/Feed.mjs.map +7 -0
  10. package/dist/lib/neutral/Filter.mjs +21 -10
  11. package/dist/lib/neutral/Format.mjs +3 -3
  12. package/dist/lib/neutral/JsonSchema.mjs +9 -9
  13. package/dist/lib/neutral/Obj.mjs +38 -15
  14. package/dist/lib/neutral/Order.mjs +1 -1
  15. package/dist/lib/neutral/Query.mjs +21 -9
  16. package/dist/lib/neutral/Ref.mjs +9 -7
  17. package/dist/lib/neutral/Relation.mjs +21 -11
  18. package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
  19. package/dist/lib/neutral/Tag.mjs +14 -10
  20. package/dist/lib/neutral/Type.mjs +13 -23
  21. package/dist/lib/neutral/{chunk-HMOXCO27.mjs → chunk-46QNGNTY.mjs} +8 -3
  22. package/dist/lib/neutral/chunk-46QNGNTY.mjs.map +7 -0
  23. package/dist/lib/neutral/chunk-5VKHCUDA.mjs +299 -0
  24. package/dist/lib/neutral/chunk-5VKHCUDA.mjs.map +7 -0
  25. package/dist/lib/neutral/{chunk-CUDIBUM4.mjs → chunk-6URFBQJH.mjs} +104 -25
  26. package/dist/lib/neutral/chunk-6URFBQJH.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-7SQD3FRZ.mjs +159 -0
  28. package/dist/lib/neutral/chunk-7SQD3FRZ.mjs.map +7 -0
  29. package/dist/lib/neutral/{chunk-4L6DOFXP.mjs → chunk-BNCCGLJN.mjs} +1 -1
  30. package/dist/lib/neutral/{chunk-4L6DOFXP.mjs.map → chunk-BNCCGLJN.mjs.map} +1 -1
  31. package/dist/lib/neutral/{chunk-62DWJ6CE.mjs → chunk-DQYLD2RB.mjs} +14 -14
  32. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +7 -0
  33. package/dist/lib/neutral/{chunk-3ZEAZF7T.mjs → chunk-E5PBQJWV.mjs} +8 -4
  34. package/dist/lib/neutral/chunk-E5PBQJWV.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-EBVB5NOH.mjs +133 -0
  36. package/dist/lib/neutral/chunk-EBVB5NOH.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-FNEFSO2C.mjs +787 -0
  38. package/dist/lib/neutral/chunk-FNEFSO2C.mjs.map +7 -0
  39. package/dist/lib/neutral/{chunk-SU2LVM7J.mjs → chunk-FW7UJX25.mjs} +1701 -2713
  40. package/dist/lib/neutral/chunk-FW7UJX25.mjs.map +7 -0
  41. package/dist/lib/neutral/{chunk-4TT624YA.mjs → chunk-GZQTCRJB.mjs} +2 -2
  42. package/dist/lib/neutral/{chunk-4TT624YA.mjs.map → chunk-GZQTCRJB.mjs.map} +1 -1
  43. package/dist/lib/neutral/chunk-HBJ7JT5A.mjs +120 -0
  44. package/dist/lib/neutral/chunk-HBJ7JT5A.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-IP2GHXWA.mjs → chunk-OLFCVPOO.mjs} +5 -5
  46. package/dist/lib/neutral/chunk-OLFCVPOO.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-QWAOTFCY.mjs +396 -0
  48. package/dist/lib/neutral/chunk-QWAOTFCY.mjs.map +7 -0
  49. package/dist/lib/neutral/chunk-R72KFH2X.mjs +34 -0
  50. package/dist/lib/neutral/chunk-R72KFH2X.mjs.map +7 -0
  51. package/dist/lib/neutral/{chunk-VB5HVDCA.mjs → chunk-T2JOLN37.mjs} +72 -5
  52. package/dist/lib/neutral/chunk-T2JOLN37.mjs.map +7 -0
  53. package/dist/lib/neutral/{chunk-YQYMWZAD.mjs → chunk-TBKX6JQO.mjs} +4 -4
  54. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +7 -0
  55. package/dist/lib/neutral/{chunk-RPB6V4BE.mjs → chunk-UBEZSGXY.mjs} +14 -1
  56. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  57. package/dist/lib/neutral/{chunk-ROKO4RKJ.mjs → chunk-UI6MWK5W.mjs} +2 -2
  58. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  59. package/dist/lib/neutral/{chunk-XMIDBDE6.mjs → chunk-UPWIIW2V.mjs} +11 -56
  60. package/dist/lib/neutral/chunk-UPWIIW2V.mjs.map +7 -0
  61. package/dist/lib/neutral/{chunk-6QPSGMEF.mjs → chunk-WVLOCXB5.mjs} +32 -8
  62. package/dist/lib/neutral/chunk-WVLOCXB5.mjs.map +7 -0
  63. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +50 -0
  64. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +7 -0
  65. package/dist/lib/neutral/{chunk-VR4A4WGG.mjs → chunk-YSLSJ7QS.mjs} +72 -23
  66. package/dist/lib/neutral/chunk-YSLSJ7QS.mjs.map +7 -0
  67. package/dist/lib/neutral/chunk-ZGVZNBBJ.mjs +415 -0
  68. package/dist/lib/neutral/chunk-ZGVZNBBJ.mjs.map +7 -0
  69. package/dist/lib/neutral/{chunk-NWUO5FKZ.mjs → chunk-ZIXGDU6F.mjs} +8 -2
  70. package/dist/lib/neutral/chunk-ZIXGDU6F.mjs.map +7 -0
  71. package/dist/lib/neutral/index.mjs +43 -26
  72. package/dist/lib/neutral/internal/index.mjs +56 -38
  73. package/dist/lib/neutral/meta.json +1 -1
  74. package/dist/lib/neutral/testing/index.mjs +42 -34
  75. package/dist/lib/neutral/testing/index.mjs.map +3 -3
  76. package/dist/types/src/Annotation.d.ts +23 -1
  77. package/dist/types/src/Annotation.d.ts.map +1 -1
  78. package/dist/types/src/Collection.d.ts +16 -0
  79. package/dist/types/src/Collection.d.ts.map +1 -0
  80. package/dist/types/src/Database.d.ts +86 -84
  81. package/dist/types/src/Database.d.ts.map +1 -1
  82. package/dist/types/src/Dataset.d.ts +19 -0
  83. package/dist/types/src/Dataset.d.ts.map +1 -0
  84. package/dist/types/src/Entity.d.ts +41 -15
  85. package/dist/types/src/Entity.d.ts.map +1 -1
  86. package/dist/types/src/Err.d.ts +43 -0
  87. package/dist/types/src/Err.d.ts.map +1 -1
  88. package/dist/types/src/Extension.d.ts +80 -0
  89. package/dist/types/src/Extension.d.ts.map +1 -0
  90. package/dist/types/src/Extension.test.d.ts +2 -0
  91. package/dist/types/src/Extension.test.d.ts.map +1 -0
  92. package/dist/types/src/Feed.d.ts +171 -0
  93. package/dist/types/src/Feed.d.ts.map +1 -0
  94. package/dist/types/src/Filter.d.ts +32 -5
  95. package/dist/types/src/Filter.d.ts.map +1 -1
  96. package/dist/types/src/Filter.test.d.ts +2 -0
  97. package/dist/types/src/Filter.test.d.ts.map +1 -0
  98. package/dist/types/src/Format.d.ts +3 -3
  99. package/dist/types/src/Format.d.ts.map +1 -1
  100. package/dist/types/src/Hypergraph.d.ts +8 -3
  101. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  102. package/dist/types/src/JsonSchema.d.ts +11 -4
  103. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  104. package/dist/types/src/Obj.d.ts +172 -44
  105. package/dist/types/src/Obj.d.ts.map +1 -1
  106. package/dist/types/src/Order.d.ts.map +1 -1
  107. package/dist/types/src/Query.d.ts +109 -15
  108. package/dist/types/src/Query.d.ts.map +1 -1
  109. package/dist/types/src/Ref.d.ts +58 -10
  110. package/dist/types/src/Ref.d.ts.map +1 -1
  111. package/dist/types/src/Relation.d.ts +74 -28
  112. package/dist/types/src/Relation.d.ts.map +1 -1
  113. package/dist/types/src/SchemaRegistry.d.ts +4 -4
  114. package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
  115. package/dist/types/src/Tag.d.ts +4 -3
  116. package/dist/types/src/Tag.d.ts.map +1 -1
  117. package/dist/types/src/Type.d.ts +51 -180
  118. package/dist/types/src/Type.d.ts.map +1 -1
  119. package/dist/types/src/View.d.ts +68 -0
  120. package/dist/types/src/View.d.ts.map +1 -0
  121. package/dist/types/src/hierarchy.test.d.ts +2 -0
  122. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  123. package/dist/types/src/index.d.ts +5 -0
  124. package/dist/types/src/index.d.ts.map +1 -1
  125. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +69 -8
  126. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  127. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  128. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  129. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  130. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  131. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  132. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +13 -1
  133. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  134. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  135. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  136. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
  137. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  138. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  139. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  140. package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
  141. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  142. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  143. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  144. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  145. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  146. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  147. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  148. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  149. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  150. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  151. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  152. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  153. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  154. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  155. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  156. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  157. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  158. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  159. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  160. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  161. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  162. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  163. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  164. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  165. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +19 -19
  166. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  167. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  168. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  169. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  170. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  171. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  172. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  173. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  174. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  175. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  176. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  177. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  178. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  179. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +13 -5
  180. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  181. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  182. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  183. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  184. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  185. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +1 -1
  186. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  187. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  188. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  189. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
  190. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  191. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  192. package/dist/types/src/internal/Query.d.ts +10 -0
  193. package/dist/types/src/internal/Query.d.ts.map +1 -0
  194. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  195. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  196. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  197. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +16 -3
  198. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  199. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  200. package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
  201. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  202. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  203. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +8 -7
  204. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  205. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  206. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  207. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  208. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  209. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  210. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  211. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  212. package/dist/types/src/internal/common/index.d.ts +4 -0
  213. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  214. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  215. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  216. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  217. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  218. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  219. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  220. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  221. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  222. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  223. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  224. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  225. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  226. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  227. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +1 -1
  228. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  229. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  230. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  231. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  232. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +2 -1
  233. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  234. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  235. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  236. package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
  237. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  238. package/dist/types/src/internal/{types → common/types}/entity.d.ts +2 -2
  239. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  240. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  241. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  242. package/dist/types/src/internal/{types → common/types}/meta.d.ts +2 -1
  243. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  244. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  245. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  246. package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
  247. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  248. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  249. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  250. package/dist/types/src/internal/index.d.ts +9 -10
  251. package/dist/types/src/internal/index.d.ts.map +1 -1
  252. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  253. package/dist/types/src/testing/test-schema.d.ts +19 -18
  254. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  255. package/dist/types/tsconfig.tsbuildinfo +1 -1
  256. package/package.json +24 -14
  257. package/src/Annotation.ts +31 -1
  258. package/src/Collection.ts +37 -0
  259. package/src/Database.ts +167 -173
  260. package/src/Dataset.ts +26 -0
  261. package/src/Entity.ts +73 -54
  262. package/src/Err.ts +22 -0
  263. package/src/Extension.test.ts +235 -0
  264. package/src/Extension.ts +122 -0
  265. package/src/Feed.ts +283 -0
  266. package/src/Filter.test.ts +90 -0
  267. package/src/Filter.ts +81 -7
  268. package/src/Format.ts +3 -3
  269. package/src/Hypergraph.ts +9 -4
  270. package/src/JsonSchema.ts +14 -4
  271. package/src/Obj.test.ts +166 -13
  272. package/src/Obj.ts +404 -142
  273. package/src/Order.ts +3 -1
  274. package/src/Query.test.ts +339 -15
  275. package/src/Query.ts +275 -24
  276. package/src/Ref.ts +64 -11
  277. package/src/Relation.test.ts +8 -2
  278. package/src/Relation.ts +165 -131
  279. package/src/SchemaRegistry.ts +5 -4
  280. package/src/Tag.ts +6 -5
  281. package/src/Type.test.ts +10 -10
  282. package/src/Type.ts +70 -303
  283. package/src/View.ts +107 -0
  284. package/src/hierarchy.test.ts +33 -0
  285. package/src/index.ts +5 -0
  286. package/src/internal/{annotations → Annotation}/annotations.test.ts +56 -7
  287. package/src/internal/{annotations → Annotation}/annotations.ts +134 -16
  288. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  289. package/src/internal/{api → Annotation}/sorting.ts +2 -4
  290. package/src/internal/{annotations → Annotation}/util.ts +14 -1
  291. package/src/internal/{api/entity.ts → Entity/api.ts} +3 -2
  292. package/src/internal/{entities → Entity}/entity.ts +6 -4
  293. package/src/internal/{entities → Entity}/index.ts +2 -0
  294. package/src/internal/{entities → Entity}/model.ts +17 -42
  295. package/src/internal/{entities → Entity}/object.ts +2 -3
  296. package/src/internal/{entities → Entity}/relation.ts +19 -36
  297. package/src/internal/{api → Entity}/version.ts +2 -2
  298. package/src/internal/{formats → Format}/date.test.ts +1 -2
  299. package/src/internal/{formats → Format}/format.test.ts +1 -2
  300. package/src/internal/{formats → Format}/types.ts +3 -3
  301. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  302. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
  303. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -49
  304. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +6 -5
  305. package/src/internal/{object → Obj}/clone.ts +3 -3
  306. package/src/internal/{object → Obj}/common.ts +2 -2
  307. package/src/internal/{object → Obj}/create-object.test.ts +5 -7
  308. package/src/internal/{object → Obj}/create-object.ts +5 -6
  309. package/src/internal/{object → Obj}/deleted.ts +2 -2
  310. package/src/internal/{object → Obj}/inspect.ts +2 -2
  311. package/src/internal/{object → Obj}/json-serializer.test.ts +31 -9
  312. package/src/internal/{object → Obj}/json-serializer.ts +58 -24
  313. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  314. package/src/internal/{object → Obj}/set-value.test.ts +24 -24
  315. package/src/internal/{object → Obj}/set-value.ts +2 -2
  316. package/src/internal/Obj/snapshot.ts +105 -0
  317. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  318. package/src/internal/{object → Obj}/typed-object.ts +4 -4
  319. package/src/internal/Query.ts +134 -0
  320. package/src/internal/{ref → Ref}/ref-array.ts +1 -2
  321. package/src/internal/{ref → Ref}/ref.test.ts +4 -5
  322. package/src/internal/{ref → Ref}/ref.ts +27 -4
  323. package/src/internal/{schema → Type}/compose.test.ts +5 -6
  324. package/src/internal/{schema → Type}/compose.ts +1 -1
  325. package/src/internal/{schema → Type}/echo-schema.ts +11 -11
  326. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  327. package/src/internal/{schema → Type}/persistent-schema.ts +10 -4
  328. package/src/internal/{README.md → common/README.md} +1 -1
  329. package/src/internal/{api → common/api}/index.ts +0 -4
  330. package/src/internal/common/index.ts +7 -0
  331. package/src/internal/{proxy → common/proxy}/change.test.ts +65 -65
  332. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
  333. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  334. package/src/internal/{proxy → common/proxy}/make-object.ts +13 -4
  335. package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
  336. package/src/internal/{proxy → common/proxy}/reactive.ts +1 -2
  337. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  338. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -7
  339. package/src/internal/{proxy → common/proxy}/typed-handler.ts +11 -6
  340. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +4 -5
  341. package/src/internal/{types → common/types}/base.ts +1 -1
  342. package/src/internal/{types → common/types}/entity.ts +2 -2
  343. package/src/internal/{types → common/types}/index.ts +1 -0
  344. package/src/internal/{types → common/types}/meta.ts +3 -1
  345. package/src/internal/common/types/model-symbols.ts +69 -0
  346. package/src/internal/{types → common/types}/typename.ts +10 -0
  347. package/src/internal/{types → common/types}/version.ts +2 -3
  348. package/src/internal/index.ts +9 -31
  349. package/src/testing/api.test.ts +4 -5
  350. package/src/testing/test-data.ts +0 -1
  351. package/src/testing/test-schema.ts +20 -18
  352. package/dist/lib/neutral/chunk-2MTHJ5UW.mjs +0 -203
  353. package/dist/lib/neutral/chunk-2MTHJ5UW.mjs.map +0 -7
  354. package/dist/lib/neutral/chunk-3ZEAZF7T.mjs.map +0 -7
  355. package/dist/lib/neutral/chunk-62DWJ6CE.mjs.map +0 -7
  356. package/dist/lib/neutral/chunk-6QPSGMEF.mjs.map +0 -7
  357. package/dist/lib/neutral/chunk-CUDIBUM4.mjs.map +0 -7
  358. package/dist/lib/neutral/chunk-HMOXCO27.mjs.map +0 -7
  359. package/dist/lib/neutral/chunk-IP2GHXWA.mjs.map +0 -7
  360. package/dist/lib/neutral/chunk-KRHDMXSU.mjs +0 -132
  361. package/dist/lib/neutral/chunk-KRHDMXSU.mjs.map +0 -7
  362. package/dist/lib/neutral/chunk-NWUO5FKZ.mjs.map +0 -7
  363. package/dist/lib/neutral/chunk-ROKO4RKJ.mjs.map +0 -7
  364. package/dist/lib/neutral/chunk-RPB6V4BE.mjs.map +0 -7
  365. package/dist/lib/neutral/chunk-SU2LVM7J.mjs.map +0 -7
  366. package/dist/lib/neutral/chunk-VB5HVDCA.mjs.map +0 -7
  367. package/dist/lib/neutral/chunk-VR4A4WGG.mjs.map +0 -7
  368. package/dist/lib/neutral/chunk-X2MPMYYN.mjs +0 -13
  369. package/dist/lib/neutral/chunk-X2MPMYYN.mjs.map +0 -7
  370. package/dist/lib/neutral/chunk-XK5OUUBY.mjs +0 -157
  371. package/dist/lib/neutral/chunk-XK5OUUBY.mjs.map +0 -7
  372. package/dist/lib/neutral/chunk-XMIDBDE6.mjs.map +0 -7
  373. package/dist/lib/neutral/chunk-YQYMWZAD.mjs.map +0 -7
  374. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  375. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  376. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  377. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  378. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  379. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  380. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  381. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  382. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  383. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  384. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  385. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  386. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  387. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  388. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  389. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  390. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  391. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  392. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  393. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  394. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  395. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  396. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  397. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  398. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  399. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  400. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  401. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  402. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  403. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  404. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  405. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  406. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  407. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  408. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  409. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  410. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  411. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  412. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  413. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  414. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  415. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  416. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  417. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  418. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  419. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  420. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  421. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  422. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  423. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  424. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  425. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  426. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  427. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  428. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  429. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  430. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  431. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  432. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  433. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  434. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  435. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  436. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  437. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  438. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  439. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  440. package/dist/types/src/internal/proxy/reactive.d.ts.map +0 -1
  441. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  442. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  443. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  444. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  445. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  446. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  447. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  448. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  449. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  450. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  451. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  452. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  453. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  454. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  455. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  456. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  457. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  458. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  459. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  460. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  461. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  462. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  463. package/src/internal/api/annotations.ts +0 -60
  464. package/src/internal/object/snapshot.ts +0 -70
  465. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  466. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  467. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  468. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  469. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  470. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  471. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  472. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  473. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  474. /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
  475. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  476. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  477. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  478. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  479. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +0 -0
  480. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  481. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  482. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  483. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  484. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  485. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  486. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  487. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  488. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  489. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  490. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  491. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  492. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  493. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  494. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  495. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  496. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  497. /package/dist/types/src/internal/{api → common/api}/meta.d.ts +0 -0
  498. /package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +0 -0
  499. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  500. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  501. /package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +0 -0
  502. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  503. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  504. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  505. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  506. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  507. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  508. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  509. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  510. /package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +0 -0
  511. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  512. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  513. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  514. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  515. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  516. /package/src/internal/{entities → Entity}/util.ts +0 -0
  517. /package/src/internal/{formats → Format}/date.ts +0 -0
  518. /package/src/internal/{formats → Format}/format.ts +0 -0
  519. /package/src/internal/{formats → Format}/index.ts +0 -0
  520. /package/src/internal/{formats → Format}/number.ts +0 -0
  521. /package/src/internal/{formats → Format}/object.ts +0 -0
  522. /package/src/internal/{formats → Format}/select.ts +0 -0
  523. /package/src/internal/{formats → Format}/string.ts +0 -0
  524. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  525. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  526. /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
  527. /package/src/internal/{object → Obj}/ids.ts +0 -0
  528. /package/src/internal/{object → Obj}/index.ts +0 -0
  529. /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
  530. /package/src/internal/{ref → Ref}/index.ts +0 -0
  531. /package/src/internal/{schema → Type}/index.ts +0 -0
  532. /package/src/internal/{api → common/api}/meta.ts +0 -0
  533. /package/src/internal/{proxy → common/proxy}/change-context.ts +0 -0
  534. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  535. /package/src/internal/{proxy → common/proxy}/errors.ts +0 -0
  536. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  537. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  538. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  539. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  540. /package/src/internal/{proxy → common/proxy}/reactive-array.ts +0 -0
  541. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  542. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
@@ -0,0 +1,34 @@
1
+ import {
2
+ Ref
3
+ } from "./chunk-QWAOTFCY.mjs";
4
+
5
+ // src/internal/Ref/ref-array.ts
6
+ import { isNonNullable } from "@dxos/util";
7
+ var RefArray = Object.freeze({
8
+ /**
9
+ * @returns all resolved targets.
10
+ */
11
+ targets: (refs) => {
12
+ return refs.map((ref) => ref.target).filter(isNonNullable);
13
+ },
14
+ /**
15
+ * Load all referenced objects.
16
+ */
17
+ loadAll: (refs) => {
18
+ return Promise.all(refs.map((ref) => ref.load()));
19
+ },
20
+ /**
21
+ * Removes the ref with the given id.
22
+ */
23
+ removeById: (refs, id) => {
24
+ const index = refs.findIndex(Ref.hasObjectId(id));
25
+ if (index >= 0) {
26
+ refs.splice(index, 1);
27
+ }
28
+ }
29
+ });
30
+
31
+ export {
32
+ RefArray
33
+ };
34
+ //# sourceMappingURL=chunk-R72KFH2X.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/Ref/ref-array.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ObjectId } from '@dxos/keys';\nimport { isNonNullable } from '@dxos/util';\n\nimport { type AnyEntity } from '../common/types';\nimport { Ref } from './ref';\n\n/**\n * Helper functions for working with arrays of refs.\n */\nexport const RefArray = Object.freeze({\n /**\n * @returns all resolved targets.\n */\n targets: <T extends AnyEntity>(refs: readonly Ref<T>[]): T[] => {\n return refs.map((ref) => ref.target).filter(isNonNullable);\n },\n\n /**\n * Load all referenced objects.\n */\n loadAll: <T extends AnyEntity>(refs: readonly Ref<T>[]): Promise<T[]> => {\n return Promise.all(refs.map((ref) => ref.load()));\n },\n\n /**\n * Removes the ref with the given id.\n */\n removeById: (refs: Ref<AnyEntity>[], id: ObjectId) => {\n const index = refs.findIndex(Ref.hasObjectId(id));\n if (index >= 0) {\n refs.splice(index, 1);\n }\n },\n});\n"],
5
+ "mappings": ";;;;;AAKA,SAASA,qBAAqB;AAQvB,IAAMC,WAAWC,OAAOC,OAAO;;;;EAIpCC,SAAS,CAAsBC,SAAAA;AAC7B,WAAOA,KAAKC,IAAI,CAACC,QAAQA,IAAIC,MAAM,EAAEC,OAAOC,aAAAA;EAC9C;;;;EAKAC,SAAS,CAAsBN,SAAAA;AAC7B,WAAOO,QAAQC,IAAIR,KAAKC,IAAI,CAACC,QAAQA,IAAIO,KAAI,CAAA,CAAA;EAC/C;;;;EAKAC,YAAY,CAACV,MAAwBW,OAAAA;AACnC,UAAMC,QAAQZ,KAAKa,UAAUC,IAAIC,YAAYJ,EAAAA,CAAAA;AAC7C,QAAIC,SAAS,GAAG;AACdZ,WAAKgB,OAAOJ,OAAO,CAAA;IACrB;EACF;AACF,CAAA;",
6
+ "names": ["isNonNullable", "RefArray", "Object", "freeze", "targets", "refs", "map", "ref", "target", "filter", "isNonNullable", "loadAll", "Promise", "all", "load", "removeById", "id", "index", "findIndex", "Ref", "hasObjectId", "splice"]
7
+ }
@@ -1,9 +1,13 @@
1
1
  import {
2
2
  isRef
3
- } from "./chunk-HMOXCO27.mjs";
3
+ } from "./chunk-46QNGNTY.mjs";
4
+ import {
5
+ getDXN,
6
+ prettyFilter
7
+ } from "./chunk-FW7UJX25.mjs";
4
8
  import {
5
9
  getTypeDXNFromSpecifier
6
- } from "./chunk-CUDIBUM4.mjs";
10
+ } from "./chunk-6URFBQJH.mjs";
7
11
  import {
8
12
  __export
9
13
  } from "./chunk-J5LGTIGS.mjs";
@@ -13,7 +17,9 @@ var Filter_exports = {};
13
17
  __export(Filter_exports, {
14
18
  and: () => and,
15
19
  between: () => between,
20
+ childOf: () => childOf,
16
21
  contains: () => contains,
22
+ created: () => created,
17
23
  eq: () => eq,
18
24
  everything: () => everything,
19
25
  foreignKeys: () => foreignKeys,
@@ -29,20 +35,23 @@ __export(Filter_exports, {
29
35
  not: () => not,
30
36
  nothing: () => nothing,
31
37
  or: () => or,
38
+ pretty: () => pretty,
32
39
  props: () => props,
33
40
  tag: () => tag,
34
41
  text: () => text,
35
42
  type: () => type,
36
43
  typeDXN: () => typeDXN,
37
- typename: () => typename
44
+ typename: () => typename,
45
+ updated: () => updated
38
46
  });
39
47
  import * as Match from "effect/Match";
40
48
  import * as Schema from "effect/Schema";
49
+ import * as SchemaAST from "effect/SchemaAST";
41
50
  import { assertArgument } from "@dxos/invariant";
42
51
  import { DXN, ObjectId } from "@dxos/keys";
43
52
  var FilterClass = class _FilterClass {
44
53
  ast;
45
- static variance = {};
54
+ static "variance" = {};
46
55
  constructor(ast) {
47
56
  this.ast = ast;
48
57
  }
@@ -84,6 +93,17 @@ var id = (...ids) => {
84
93
  });
85
94
  };
86
95
  var type = (schema, props2) => {
96
+ if (Schema.isSchema(schema) && SchemaAST.isUnion(schema.ast)) {
97
+ const typenames = schema.ast.types.map((type2) => getTypeDXNFromSpecifier(Schema.make(type2)));
98
+ return new FilterClass({
99
+ type: "or",
100
+ filters: typenames.map((typename2) => ({
101
+ type: "object",
102
+ typename: typename2.toString(),
103
+ props: {}
104
+ }))
105
+ });
106
+ }
87
107
  const dxn = getTypeDXNFromSpecifier(schema);
88
108
  return new FilterClass({
89
109
  type: "object",
@@ -199,6 +219,48 @@ var between = (from, to) => {
199
219
  to
200
220
  });
201
221
  };
222
+ var _toUnixMs = (date) => typeof date === "number" ? date : date.getTime();
223
+ var _timeRangeFilter = (field, range) => {
224
+ const filters = [];
225
+ if (range.after != null) {
226
+ filters.push(new FilterClass({
227
+ type: "timestamp",
228
+ field,
229
+ operator: "gte",
230
+ value: _toUnixMs(range.after)
231
+ }));
232
+ }
233
+ if (range.before != null) {
234
+ filters.push(new FilterClass({
235
+ type: "timestamp",
236
+ field,
237
+ operator: "lte",
238
+ value: _toUnixMs(range.before)
239
+ }));
240
+ }
241
+ if (filters.length === 0) {
242
+ return everything();
243
+ }
244
+ return filters.length === 1 ? filters[0] : and(...filters);
245
+ };
246
+ var updated = (range) => _timeRangeFilter("updatedAt", range);
247
+ var created = (range) => _timeRangeFilter("createdAt", range);
248
+ var childOf = (parents, options) => {
249
+ const items = Array.isArray(parents) ? parents : [
250
+ parents
251
+ ];
252
+ const dxns = items.map((item) => {
253
+ if (item instanceof DXN) {
254
+ return item.toString();
255
+ }
256
+ return getDXN(item).toString();
257
+ });
258
+ return new FilterClass({
259
+ type: "child-of",
260
+ parents: dxns,
261
+ transitive: options?.transitive ?? true
262
+ });
263
+ };
202
264
  var not = (filter) => {
203
265
  return new FilterClass({
204
266
  type: "not",
@@ -256,6 +318,7 @@ var processPredicate = (predicate) => {
256
318
  Match.orElse((value2) => eq(value2).ast)
257
319
  );
258
320
  };
321
+ var pretty = (filter) => prettyFilter(filter.ast);
259
322
 
260
323
  export {
261
324
  is,
@@ -279,9 +342,13 @@ export {
279
342
  in$,
280
343
  contains,
281
344
  between,
345
+ updated,
346
+ created,
347
+ childOf,
282
348
  not,
283
349
  and,
284
350
  or,
351
+ pretty,
285
352
  Filter_exports
286
353
  };
287
- //# sourceMappingURL=chunk-VB5HVDCA.mjs.map
354
+ //# sourceMappingURL=chunk-T2JOLN37.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Filter.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Match from 'effect/Match';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\nimport type * as Types from 'effect/Types';\n\nimport { type ForeignKey, type QueryAST } from '@dxos/echo-protocol';\nimport { assertArgument } from '@dxos/invariant';\nimport { DXN, ObjectId } from '@dxos/keys';\n\nimport type * as Entity from './Entity';\nimport * as internal from './internal';\nimport * as Ref from './Ref';\n\nexport interface Filter<T> {\n // TODO(dmaretskyi): See new effect-schema approach to variance.\n '~Filter': { value: Types.Covariant<T> };\n\n ast: QueryAST.Filter;\n}\n\nexport type Props<T> = {\n // Predicate or a value as a shorthand for `eq`.\n [K in keyof T & string]?: Filter<T[K]> | T[K];\n};\n\nexport type Any = Filter<any>;\n\nexport type Type<F extends Any> = F extends Filter<infer T> ? T : never;\n\nclass FilterClass implements Any {\n private static 'variance': Any['~Filter'] = {} as Any['~Filter'];\n\n constructor(public readonly ast: QueryAST.Filter) {}\n\n '~Filter' = FilterClass.variance;\n}\n\nexport const is = (value: unknown): value is Any => {\n return typeof value === 'object' && value !== null && '~Filter' in value;\n};\n\n/** Construct a filter from an ast. */\nexport const fromAst = (ast: QueryAST.Filter): Any => {\n return new FilterClass(ast);\n};\n\n/**\n * Filter that matches all objects.\n */\n// TODO(dmaretskyi): `Entity.Any` would be more type-safe, but causes annoying errors in existing code\nexport const everything = (): FilterClass => {\n return new FilterClass({\n type: 'object',\n typename: null,\n props: {},\n });\n};\n\n/**\n * Filter that matches no objects.\n */\nexport const nothing = (): FilterClass => {\n return new FilterClass({\n type: 'not',\n filter: {\n type: 'object',\n typename: null,\n props: {},\n },\n });\n};\n\n/*\n * Filter by ObjectId.\n */\nexport const id = (...ids: ObjectId[]): Any => {\n assertArgument(\n ids.every((id) => ObjectId.isValid(id)),\n 'ids',\n 'ids must be valid',\n );\n\n if (ids.length === 0) {\n return nothing();\n }\n\n return new FilterClass({\n type: 'object',\n typename: null,\n id: ids,\n props: {},\n });\n};\n\n/**\n * Filter by type.\n */\nexport const type = <S extends Schema.Schema.All>(\n schema: S | string,\n props?: Props<Schema.Schema.Type<S>>,\n): Filter<Schema.Schema.Type<S>> => {\n if (Schema.isSchema(schema) && SchemaAST.isUnion(schema.ast)) {\n const typenames = schema.ast.types.map((type) => internal.getTypeDXNFromSpecifier(Schema.make(type)));\n return new FilterClass({\n type: 'or',\n filters: typenames.map((typename) => ({\n type: 'object',\n typename: typename.toString(),\n props: {},\n })),\n });\n }\n\n const dxn = internal.getTypeDXNFromSpecifier(schema);\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n ...propsFilterToAst(props ?? {}),\n });\n};\n\n/**\n * Filter by non-qualified typename.\n */\nexport const typename = (typename: string): Any => {\n assertArgument(!typename.startsWith('dxn:'), 'typename', 'Typename must no be qualified');\n return new FilterClass({\n type: 'object',\n typename: DXN.fromTypename(typename).toString(),\n props: {},\n });\n};\n\n/**\n * Filter by fully qualified type DXN.\n */\nexport const typeDXN = (dxn: DXN): Any => {\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n });\n};\n\n/**\n * Filter by tag.\n */\nexport const tag = (tag: string): Any => {\n return new FilterClass({\n type: 'tag',\n tag,\n });\n};\n\n/**\n * Filter by properties.\n */\nexport const props = <T>(props: Props<T>): Filter<T> => {\n return new FilterClass({\n type: 'object',\n typename: null,\n ...propsFilterToAst(props),\n });\n};\n\nexport type TextSearchOptions = {\n // TODO(dmaretskyi): Hybrid search.\n type?: 'full-text' | 'vector';\n};\n\n/**\n * Full-text or vector search.\n */\nexport const text = (\n // TODO(dmaretskyi): Consider passing a vector here, but really the embedding should be done on the query-executor side.\n text: string,\n options?: TextSearchOptions,\n): Any => {\n return new FilterClass({\n type: 'text-search',\n text,\n searchKind: options?.type,\n });\n};\n\n/**\n * Filter by foreign keys.\n */\nexport const foreignKeys = <S extends Schema.Schema.All>(\n schema: S | string,\n keys: ForeignKey[],\n): Filter<Schema.Schema.Type<S>> => {\n const dxn = internal.getTypeDXNFromSpecifier(schema);\n return new FilterClass({\n type: 'object',\n typename: dxn.toString(),\n props: {},\n foreignKeys: keys,\n });\n};\n\n/**\n * Predicate for property to be equal to the provided value.\n */\nexport const eq = <T>(value: T): Filter<T | undefined> => {\n if (!Ref.isRef(value) && typeof value === 'object' && value !== null) {\n throw new TypeError('Cannot use object as a value for eq filter');\n }\n\n return new FilterClass({\n type: 'compare',\n operator: 'eq',\n value: Ref.isRef(value) ? value.noInline().encode() : value,\n });\n};\n\n/**\n * Predicate for property to be not equal to the provided value.\n */\nexport const neq = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'neq',\n value,\n });\n};\n\n/**\n * Predicate for property to be greater than the provided value.\n */\nexport const gt = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'gt',\n value,\n });\n};\n\n/**\n * Predicate for property to be greater than or equal to the provided value.\n */\nexport const gte = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'gte',\n value,\n });\n};\n\n/**\n * Predicate for property to be less than the provided value.\n */\nexport const lt = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'lt',\n value,\n });\n};\n\n/**\n * Predicate for property to be less than or equal to the provided value.\n */\nexport const lte = <T>(value: T): Filter<T | undefined> => {\n return new FilterClass({\n type: 'compare',\n operator: 'lte',\n value,\n });\n};\n\n/**\n * Predicate for property to be in the provided array.\n * @param values - Values to check against.\n */\nconst in$ = <T>(...values: T[]): Filter<T> => {\n return new FilterClass({\n type: 'in',\n values,\n });\n};\nexport { in$ as in };\n\n/**\n * Predicate for an array property to contain the provided value.\n * @param value - Value to check against.\n */\nexport const contains = <T>(value: T): Filter<readonly T[] | undefined> => {\n return new FilterClass({\n type: 'contains',\n value,\n });\n};\n\n/**\n * Predicate for property to be in the provided range.\n * @param from - Start of the range (inclusive).\n * @param to - End of the range (exclusive).\n */\nexport const between = <T>(from: T, to: T): Filter<T> => {\n return new FilterClass({\n type: 'range',\n from,\n to,\n });\n};\n\ntype TimeRange = { after?: Date | number; before?: Date | number };\n\nconst _toUnixMs = (date: Date | number): number => (typeof date === 'number' ? date : date.getTime());\n\nconst _timeRangeFilter = (field: 'updatedAt' | 'createdAt', range: TimeRange): Any => {\n const filters: Any[] = [];\n if (range.after != null) {\n filters.push(new FilterClass({ type: 'timestamp', field, operator: 'gte', value: _toUnixMs(range.after) }));\n }\n if (range.before != null) {\n filters.push(new FilterClass({ type: 'timestamp', field, operator: 'lte', value: _toUnixMs(range.before) }));\n }\n if (filters.length === 0) {\n return everything();\n }\n return filters.length === 1 ? filters[0] : and(...filters);\n};\n\n/**\n * Filter objects by updatedAt timestamp.\n */\nexport const updated = (range: TimeRange): Any => _timeRangeFilter('updatedAt', range);\n\n/**\n * Filter objects by createdAt timestamp.\n */\nexport const created = (range: TimeRange): Any => _timeRangeFilter('createdAt', range);\n\nexport type ChildOfOptions = {\n /** Whether to match transitively (grandchildren, etc.). Defaults to true. */\n transitive?: boolean;\n};\n\n/**\n * Filter objects that are children of the specified parent(s).\n * Accepts ECHO objects, DXN values, or arrays of either.\n * With transitive=true (default), also matches grandchildren and beyond.\n */\nexport const childOf = (parents: Entity.Unknown | DXN | (Entity.Unknown | DXN)[], options?: ChildOfOptions): Any => {\n const items = Array.isArray(parents) ? parents : [parents];\n const dxns = items.map((item) => {\n if (item instanceof DXN) {\n return item.toString();\n }\n return internal.getDXN(item).toString();\n });\n return new FilterClass({\n type: 'child-of',\n parents: dxns,\n transitive: options?.transitive ?? true,\n });\n};\n\n/**\n * Negate the filter.\n */\nexport const not = <F extends Any>(filter: F): Filter<Type<F>> => {\n return new FilterClass({\n type: 'not',\n filter: filter.ast,\n });\n};\n\n/**\n * Combine filters with a logical AND.\n */\nexport const and = <Filters extends readonly Any[]>(...filters: Filters): Filter<Type<Filters[number]>> => {\n return new FilterClass({\n type: 'and',\n filters: filters.map((f) => f.ast),\n });\n};\n\n/**\n * Combine filters with a logical OR.\n */\nexport const or = <Filters extends readonly Any[]>(...filters: Filters): Filter<Type<Filters[number]>> => {\n return new FilterClass({\n type: 'or',\n filters: filters.map((f) => f.ast),\n });\n};\n\n// TODO(dmaretskyi): Add `Filter.match` to support pattern matching on string props.\n\nconst propsFilterToAst = (predicates: Props<any>): Pick<QueryAST.FilterObject, 'id' | 'props'> => {\n let idFilter: readonly ObjectId[] | undefined;\n if ('id' in predicates) {\n assertArgument(\n typeof predicates.id === 'string' || Array.isArray(predicates.id),\n 'predicates.id',\n 'invalid id filter',\n );\n idFilter = typeof predicates.id === 'string' ? [predicates.id] : predicates.id;\n Schema.Array(ObjectId).pipe(Schema.validateSync)(idFilter);\n }\n\n return {\n id: idFilter,\n props: Object.fromEntries(\n Object.entries(predicates)\n .filter(([prop, _value]) => prop !== 'id')\n .map(([prop, predicate]) => [prop, processPredicate(predicate)]),\n ) as Record<string, QueryAST.Filter>,\n };\n};\n\nconst processPredicate = (predicate: any): QueryAST.Filter => {\n return Match.value(predicate).pipe(\n Match.withReturnType<QueryAST.Filter>(),\n Match.when(is, (predicate) => predicate.ast),\n // TODO(wittjosiah): Add support for array predicates.\n Match.when(Array.isArray, (_predicate) => {\n throw new Error('Array predicates are not yet supported.');\n }),\n Match.when(\n (predicate: any) => !Ref.isRef(predicate) && typeof predicate === 'object' && predicate !== null,\n (predicate) => {\n const nestedProps = Object.fromEntries(\n Object.entries(predicate).map(([key, value]) => [key, processPredicate(value)]),\n );\n\n return {\n type: 'object',\n typename: null,\n props: nestedProps,\n };\n },\n ),\n Match.orElse((value) => eq(value).ast),\n );\n};\n\n/**\n * Returns a human-readable string representation of a Filter AST.\n */\nexport const pretty = (filter: Any): string => internal.prettyFilter(filter.ast);\n"],
5
+ "mappings": "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",
6
+ "names": ["Match", "Schema", "SchemaAST", "assertArgument", "DXN", "ObjectId", "FilterClass", "ast", "variance", "is", "value", "fromAst", "everything", "type", "typename", "props", "nothing", "filter", "id", "ids", "assertArgument", "every", "ObjectId", "isValid", "length", "schema", "isSchema", "isUnion", "typenames", "types", "map", "getTypeDXNFromSpecifier", "make", "filters", "toString", "dxn", "propsFilterToAst", "startsWith", "DXN", "fromTypename", "typeDXN", "tag", "text", "options", "searchKind", "foreignKeys", "keys", "eq", "isRef", "TypeError", "operator", "noInline", "encode", "neq", "gt", "gte", "lt", "lte", "in$", "values", "contains", "value", "FilterClass", "type", "between", "from", "to", "_toUnixMs", "date", "getTime", "_timeRangeFilter", "field", "range", "filters", "after", "push", "operator", "before", "length", "everything", "and", "updated", "created", "childOf", "parents", "options", "items", "Array", "isArray", "dxns", "map", "item", "DXN", "toString", "getDXN", "transitive", "not", "filter", "ast", "f", "or", "propsFilterToAst", "predicates", "idFilter", "assertArgument", "id", "Schema", "ObjectId", "pipe", "validateSync", "props", "Object", "fromEntries", "entries", "prop", "_value", "predicate", "processPredicate", "withReturnType", "when", "is", "_predicate", "Error", "isRef", "nestedProps", "key", "typename", "orElse", "eq", "pretty", "prettyFilter"]
7
+ }
@@ -1,4 +1,4 @@
1
- // src/internal/types/entity.ts
1
+ // src/internal/common/types/entity.ts
2
2
  import * as Schema from "effect/Schema";
3
3
  var KindId = "~@dxos/echo/Kind";
4
4
  var SchemaKindId = "~@dxos/echo/SchemaKind";
@@ -9,10 +9,10 @@ var EntityKind = /* @__PURE__ */ (function(EntityKind2) {
9
9
  return EntityKind2;
10
10
  })({});
11
11
  var EntityKindSchema = Schema.Enums(EntityKind);
12
- var ANY_OBJECT_TYPENAME = "dxos.org/schema/AnyObject";
12
+ var ANY_OBJECT_TYPENAME = "org.dxos.schema.anyObject";
13
13
  var ANY_OBJECT_VERSION = "0.0.0";
14
14
 
15
- // src/internal/annotations/util.ts
15
+ // src/internal/Annotation/util.ts
16
16
  import * as SchemaAST from "effect/SchemaAST";
17
17
  import { assertArgument } from "@dxos/invariant";
18
18
  import { DXN } from "@dxos/keys";
@@ -64,4 +64,4 @@ export {
64
64
  unwrapOptional,
65
65
  makeTypeJsonSchemaAnnotation
66
66
  };
67
- //# sourceMappingURL=chunk-YQYMWZAD.mjs.map
67
+ //# sourceMappingURL=chunk-TBKX6JQO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/common/types/entity.ts", "../../../src/internal/Annotation/util.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\n// NOTE: String literals are used instead of unique symbols for both KindId and SchemaKindId.\n// Unique symbols cause TS4023 \"cannot be named\" errors when external packages\n// try to export types that reference this key (e.g., `export const Graph = ...`).\n// TypeScript cannot emit declaration files that reference unique symbols from\n// external modules. Using a string literal allows the type to be inlined in\n// declaration files, making the API portable across package boundaries.\n\n/**\n * String key used to identify the kind of an entity instance (object or relation).\n */\nexport const KindId = '~@dxos/echo/Kind' as const;\nexport type KindId = typeof KindId;\n\n/**\n * String key used to identify the kind of a schema (object schema or relation schema).\n * Parallels KindId which identifies instance kinds.\n */\nexport const SchemaKindId = '~@dxos/echo/SchemaKind' as const;\nexport type SchemaKindId = typeof SchemaKindId;\n\n/**\n * String key used to brand snapshot types.\n * Snapshots have SnapshotKindId instead of KindId, making them\n * distinguishable from reactive objects at the type level.\n */\nexport const SnapshotKindId = '~@dxos/echo/SnapshotKind' as const;\nexport type SnapshotKindId = typeof SnapshotKindId;\n\n/**\n * Kinds of entities stored in ECHO: objects and relations.\n */\nexport enum EntityKind {\n Object = 'object',\n Relation = 'relation',\n}\n\nexport const EntityKindSchema = Schema.Enums(EntityKind);\n\n/**\n * Typename for generic object references (Type.Obj / Ref.Ref(Obj.Unknown)).\n * Used when referencing any object without a specific schema.\n */\nexport const ANY_OBJECT_TYPENAME = 'org.dxos.schema.anyObject';\n\n/**\n * Version for generic object references.\n */\nexport const ANY_OBJECT_VERSION = '0.0.0';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport type * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { assertArgument } from '@dxos/invariant';\nimport { DXN } from '@dxos/keys';\n\nimport { EntityKind } from '../common/types';\n\nexport interface AnnotationHelper<T> {\n /**\n * Get the annotation value from the schema.\n */\n get: (schema: Schema.Schema.Any) => Option.Option<T>;\n /**\n * Get the annotation value from the AST.\n */\n getFromAst: (ast: SchemaAST.AST) => Option.Option<T>;\n /**\n * Set the annotation value on the schema.\n */\n set: (value: T) => <S extends Schema.Schema.Any>(schema: S) => S;\n}\n\n/**\n * Note: only for system annotations.\n */\n// TODO(dmaretskyi): Rename to createSystemAnnotationHelper.\nexport const createAnnotationHelper = <T>(id: symbol): AnnotationHelper<T> => {\n return {\n get: (schema) => SchemaAST.getAnnotation(schema.ast, id),\n getFromAst: (ast) => SchemaAST.getAnnotation(ast, id),\n set:\n (value) =>\n <S extends Schema.Schema.Any>(schema: S) =>\n schema.annotations({ [id]: value }) as S,\n };\n};\n\n/**\n * If property is optional returns the nested property, otherwise returns the property.\n */\n// TODO(wittjosiah): Is there a way to do this as a generic?\nexport const unwrapOptional = (property: SchemaAST.PropertySignature) => {\n if (!property.isOptional || !SchemaAST.isUnion(property.type)) {\n return property;\n }\n\n return property.type.types[0];\n};\n\n/**\n * @see JSONSchemaAnnotationId\n * @returns JSON-schema annotation so that the schema can be serialized with correct parameters.\n */\n// TODO(burdon): Required type.\nexport const makeTypeJsonSchemaAnnotation = (options: {\n identifier?: string;\n kind: EntityKind;\n typename: string;\n version: string;\n relationSource?: string;\n relationTarget?: string;\n}) => {\n assertArgument(!!options.relationSource === (options.kind === EntityKind.Relation), 'relationSource');\n assertArgument(!!options.relationTarget === (options.kind === EntityKind.Relation), 'relationTarget');\n\n const obj = {\n // TODO(dmaretskyi): Should this include the version?\n $id: options.identifier ?? DXN.fromTypename(options.typename).toString(),\n entityKind: options.kind,\n version: options.version,\n typename: options.typename,\n } as any;\n if (options.kind === EntityKind.Relation) {\n obj.relationSource = { $ref: options.relationSource };\n obj.relationTarget = { $ref: options.relationTarget };\n }\n\n return obj;\n};\n"],
5
+ "mappings": ";AAIA,YAAYA,YAAY;AAYjB,IAAMC,SAAS;AAOf,IAAMC,eAAe;AAQrB,IAAMC,iBAAiB;AAMvB,IAAKC,aAAAA,0BAAAA,aAAAA;;;SAAAA;;AAKL,IAAMC,mBAA0BC,aAAMF,UAAAA;AAMtC,IAAMG,sBAAsB;AAK5B,IAAMC,qBAAqB;;;AC/ClC,YAAYC,eAAe;AAE3B,SAASC,sBAAsB;AAC/B,SAASC,WAAW;AAuBb,IAAMC,yBAAyB,CAAIC,OAAAA;AACxC,SAAO;IACLC,KAAK,CAACC,WAAqBC,wBAAcD,OAAOE,KAAKJ,EAAAA;IACrDK,YAAY,CAACD,QAAkBD,wBAAcC,KAAKJ,EAAAA;IAClDM,KACE,CAACC,UACD,CAA8BL,WAC5BA,OAAOM,YAAY;MAAE,CAACR,EAAAA,GAAKO;IAAM,CAAA;EACvC;AACF;AAMO,IAAME,iBAAiB,CAACC,aAAAA;AAC7B,MAAI,CAACA,SAASC,cAAc,CAAWC,kBAAQF,SAASG,IAAI,GAAG;AAC7D,WAAOH;EACT;AAEA,SAAOA,SAASG,KAAKC,MAAM,CAAA;AAC7B;AAOO,IAAMC,+BAA+B,CAACC,YAAAA;AAQ3CC,iBAAe,CAAC,CAACD,QAAQE,oBAAoBF,QAAQG,SAASC,WAAWC,WAAW,gBAAA;AACpFJ,iBAAe,CAAC,CAACD,QAAQM,oBAAoBN,QAAQG,SAASC,WAAWC,WAAW,gBAAA;AAEpF,QAAME,MAAM;;IAEVC,KAAKR,QAAQS,cAAcC,IAAIC,aAAaX,QAAQY,QAAQ,EAAEC,SAAQ;IACtEC,YAAYd,QAAQG;IACpBY,SAASf,QAAQe;IACjBH,UAAUZ,QAAQY;EACpB;AACA,MAAIZ,QAAQG,SAASC,WAAWC,UAAU;AACxCE,QAAIL,iBAAiB;MAAEc,MAAMhB,QAAQE;IAAe;AACpDK,QAAID,iBAAiB;MAAEU,MAAMhB,QAAQM;IAAe;EACtD;AAEA,SAAOC;AACT;",
6
+ "names": ["Schema", "KindId", "SchemaKindId", "SnapshotKindId", "EntityKind", "EntityKindSchema", "Enums", "ANY_OBJECT_TYPENAME", "ANY_OBJECT_VERSION", "SchemaAST", "assertArgument", "DXN", "createAnnotationHelper", "id", "get", "schema", "getAnnotation", "ast", "getFromAst", "set", "value", "annotations", "unwrapOptional", "property", "isOptional", "isUnion", "type", "types", "makeTypeJsonSchemaAnnotation", "options", "assertArgument", "relationSource", "kind", "EntityKind", "Relation", "relationTarget", "obj", "$id", "identifier", "DXN", "fromTypename", "typename", "toString", "entityKind", "version", "$ref"]
7
+ }
@@ -5,6 +5,7 @@ import {
5
5
  // src/Err.ts
6
6
  var Err_exports = {};
7
7
  __export(Err_exports, {
8
+ GetReactiveError: () => GetReactiveError,
8
9
  ObjectNotFoundError: () => ObjectNotFoundError,
9
10
  SchemaNotFoundError: () => SchemaNotFoundError
10
11
  });
@@ -29,10 +30,22 @@ var ObjectNotFoundError = class extends BaseError.extend("ObjectNotFoundError",
29
30
  });
30
31
  }
31
32
  };
33
+ var GetReactiveError = class extends BaseError.extend("GetReactiveError", "Failed to get reactive object from snapshot") {
34
+ constructor(options) {
35
+ super({
36
+ context: {
37
+ reason: options.reason,
38
+ snapshotId: options.snapshotId
39
+ },
40
+ ...options
41
+ });
42
+ }
43
+ };
32
44
 
33
45
  export {
34
46
  SchemaNotFoundError,
35
47
  ObjectNotFoundError,
48
+ GetReactiveError,
36
49
  Err_exports
37
50
  };
38
- //# sourceMappingURL=chunk-RPB6V4BE.mjs.map
51
+ //# sourceMappingURL=chunk-UBEZSGXY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Err.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { BaseError, type BaseErrorOptions } from '@dxos/errors';\nimport { type DXN } from '@dxos/keys';\n\nexport class SchemaNotFoundError extends BaseError.extend('SchemaNotFoundError', 'Schema not found') {\n constructor(schema: string, options?: BaseErrorOptions) {\n super({ context: { schema }, ...options });\n }\n}\n\nexport class ObjectNotFoundError extends BaseError.extend('ObjectNotFoundError', 'Object not found') {\n constructor(dxn: DXN, options?: BaseErrorOptions) {\n super({ context: { dxn }, ...options });\n }\n}\n\n/**\n * Reason why getting a reactive object from a snapshot failed.\n * - `no-database`: The snapshot is not associated with a database.\n * - `object-not-found`: The object was removed or does not exist in the database.\n */\nexport type GetReactiveErrorReason = 'no-database' | 'object-not-found';\n\n/**\n * Error thrown when a reactive object cannot be resolved from a snapshot.\n * Extends `BaseError` with a `reason` and optional `snapshotId` in its context.\n */\nexport class GetReactiveError extends BaseError.extend(\n 'GetReactiveError',\n 'Failed to get reactive object from snapshot',\n) {\n constructor(options: { reason: GetReactiveErrorReason; snapshotId?: string } & BaseErrorOptions) {\n super({ context: { reason: options.reason, snapshotId: options.snapshotId }, ...options });\n }\n}\n"],
5
+ "mappings": ";;;;;AAAA;;;;;;AAMA,SAASA,iBAAwC;AAG1C,IAAMC,sBAAN,cAAkCC,UAAUC,OAAO,uBAAuB,kBAAA,EAAA;EAC/E,YAAYC,QAAgBC,SAA4B;AACtD,UAAM;MAAEC,SAAS;QAAEF;MAAO;MAAG,GAAGC;IAAQ,CAAA;EAC1C;AACF;AAEO,IAAME,sBAAN,cAAkCL,UAAUC,OAAO,uBAAuB,kBAAA,EAAA;EAC/E,YAAYK,KAAUH,SAA4B;AAChD,UAAM;MAAEC,SAAS;QAAEE;MAAI;MAAG,GAAGH;IAAQ,CAAA;EACvC;AACF;AAaO,IAAMI,mBAAN,cAA+BP,UAAUC,OAC9C,oBACA,6CAAA,EAAA;EAEA,YAAYE,SAAqF;AAC/F,UAAM;MAAEC,SAAS;QAAEI,QAAQL,QAAQK;QAAQC,YAAYN,QAAQM;MAAW;MAAG,GAAGN;IAAQ,CAAA;EAC1F;AACF;",
6
+ "names": ["BaseError", "SchemaNotFoundError", "BaseError", "extend", "schema", "options", "context", "ObjectNotFoundError", "dxn", "GetReactiveError", "reason", "snapshotId"]
7
+ }
@@ -11,7 +11,7 @@ __export(Order_exports, {
11
11
  });
12
12
  var OrderClass = class _OrderClass {
13
13
  ast;
14
- static variance = {};
14
+ static "variance" = {};
15
15
  static is(value) {
16
16
  return typeof value === "object" && value !== null && "~Order" in value;
17
17
  }
@@ -39,4 +39,4 @@ export {
39
39
  rank,
40
40
  Order_exports
41
41
  };
42
- //# sourceMappingURL=chunk-ROKO4RKJ.mjs.map
42
+ //# sourceMappingURL=chunk-UI6MWK5W.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Order.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type QueryAST } from '@dxos/echo-protocol';\n\nexport interface Order<T> {\n // TODO(dmaretskyi): See new effect-schema approach to variance.\n '~Order': { value: T };\n\n ast: QueryAST.Order;\n}\n\nexport type Any = Order<any>;\n\nclass OrderClass implements Order<any> {\n private static 'variance': Order<any>['~Order'] = {} as Order<any>['~Order'];\n\n static is(value: unknown): value is Order<any> {\n return typeof value === 'object' && value !== null && '~Order' in value;\n }\n\n constructor(public readonly ast: QueryAST.Order) {}\n\n '~Order' = OrderClass.variance;\n}\n\nexport const natural: Order<any> = new OrderClass({ kind: 'natural' });\nexport const property = <T>(property: keyof T & string, direction: QueryAST.OrderDirection): Order<T> =>\n new OrderClass({\n kind: 'property',\n property,\n direction,\n });\n\n/**\n * Order by relevance rank (for FTS/vector search results).\n * Higher rank = better match. Default direction is 'desc' (best matches first).\n */\nexport const rank = <T>(direction: QueryAST.OrderDirection = 'desc'): Order<T> =>\n new OrderClass({\n kind: 'rank',\n direction,\n });\n"],
5
+ "mappings": ";;;;;AAAA;;;;;;AAiBA,IAAMA,aAAN,MAAMA,YAAAA;;EACJ,OAAe,aAAmC,CAAC;EAEnD,OAAOC,GAAGC,OAAqC;AAC7C,WAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,YAAYA;EACpE;EAEA,YAA4BC,KAAqB;SAArBA,MAAAA;EAAsB;EAElD,WAAWH,YAAWI;AACxB;AAEO,IAAMC,UAAsB,IAAIL,WAAW;EAAEM,MAAM;AAAU,CAAA;AAC7D,IAAMC,WAAW,CAAIA,WAA4BC,cACtD,IAAIR,WAAW;EACbM,MAAM;EACNC,UAAAA;EACAC;AACF,CAAA;AAMK,IAAMC,OAAO,CAAID,YAAqC,WAC3D,IAAIR,WAAW;EACbM,MAAM;EACNE;AACF,CAAA;",
6
+ "names": ["OrderClass", "is", "value", "ast", "variance", "natural", "kind", "property", "direction", "rank"]
7
+ }
@@ -3,23 +3,18 @@ import {
3
3
  EchoRelationSchema,
4
4
  EchoSchema,
5
5
  PersistentSchema,
6
- Ref,
7
- isMutable,
8
- toEffectSchema,
9
- toJsonSchema
10
- } from "./chunk-SU2LVM7J.mjs";
6
+ isMutable
7
+ } from "./chunk-FW7UJX25.mjs";
11
8
  import {
12
9
  getSchemaDXN,
13
10
  getSchemaTypename,
14
11
  getSchemaVersion,
15
12
  getTypeAnnotation
16
- } from "./chunk-CUDIBUM4.mjs";
13
+ } from "./chunk-6URFBQJH.mjs";
17
14
  import {
18
- ANY_OBJECT_TYPENAME,
19
- ANY_OBJECT_VERSION,
20
15
  EntityKind,
21
16
  SchemaKindId
22
- } from "./chunk-YQYMWZAD.mjs";
17
+ } from "./chunk-TBKX6JQO.mjs";
23
18
  import {
24
19
  __export
25
20
  } from "./chunk-J5LGTIGS.mjs";
@@ -27,12 +22,8 @@ import {
27
22
  // src/Type.ts
28
23
  var Type_exports = {};
29
24
  __export(Type_exports, {
30
- Entity: () => Entity,
31
- Obj: () => Obj,
32
25
  PersistentType: () => PersistentType,
33
- Ref: () => Ref2,
34
- Relation: () => Relation,
35
- RuntimeType: () => EchoSchema,
26
+ RuntimeType: () => RuntimeType,
36
27
  getDXN: () => getDXN,
37
28
  getMeta: () => getMeta,
38
29
  getTypename: () => getTypename,
@@ -41,52 +32,20 @@ __export(Type_exports, {
41
32
  isObjectSchema: () => isObjectSchema,
42
33
  isRelationSchema: () => isRelationSchema,
43
34
  object: () => object,
44
- relation: () => relation,
45
- toEffectSchema: () => toEffectSchema,
46
- toJsonSchema: () => toJsonSchema
35
+ relation: () => relation
47
36
  });
48
- import * as Schema from "effect/Schema";
49
37
  import { invariant } from "@dxos/invariant";
50
38
  var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
51
- var ObjSchema = Schema.Struct({
52
- id: Schema.String
53
- }).pipe(Schema.extend(Schema.Record({
54
- key: Schema.String,
55
- value: Schema.Unknown
56
- })), EchoObjectSchema({
57
- typename: ANY_OBJECT_TYPENAME,
58
- version: ANY_OBJECT_VERSION
59
- }));
60
- var Obj = Object.assign(ObjSchema, {
61
- [SchemaKindId]: ObjSchema[SchemaKindId]
62
- });
39
+ var RuntimeType = EchoSchema;
63
40
  var object = EchoObjectSchema;
64
41
  var PersistentType = PersistentSchema;
65
- var RelationSchema = Schema.Struct({
66
- id: Schema.String
67
- }).pipe(Schema.extend(Schema.Record({
68
- key: Schema.String,
69
- value: Schema.Unknown
70
- })), EchoRelationSchema({
71
- typename: "dxos.org/schema/AnyRelation",
72
- version: "0.0.0",
73
- source: ObjSchema,
74
- target: ObjSchema
75
- }));
76
- var Relation = Object.assign(RelationSchema, {
77
- [SchemaKindId]: RelationSchema[SchemaKindId]
78
- });
79
42
  var relation = EchoRelationSchema;
80
- (function(Entity2) {
81
- Entity2.Any = Schema.Union(Obj, Relation);
82
- })(Entity || (Entity = {}));
83
43
  var isObjectSchema = (schema) => {
84
44
  return schema[SchemaKindId] === EntityKind.Object;
85
45
  };
86
46
  var isRelationSchema = (schema) => {
87
47
  return schema[SchemaKindId] === EntityKind.Relation;
88
48
  };
89
- var Ref2 = Ref;
90
49
  var getDXN = (schema) => {
91
50
  return getSchemaDXN(schema);
92
51
  };
@@ -94,7 +53,7 @@ var getTypename = (schema) => {
94
53
  const typename = getSchemaTypename(schema);
95
54
  invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
96
55
  F: __dxlog_file,
97
- L: 463,
56
+ L: 230,
98
57
  S: void 0,
99
58
  A: [
100
59
  "typeof typename === 'string' && !typename.startsWith('dxn:')",
@@ -107,7 +66,7 @@ var getVersion = (schema) => {
107
66
  const version = getSchemaVersion(schema);
108
67
  invariant(typeof version === "string" && version.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
109
68
  F: __dxlog_file,
110
- L: 473,
69
+ L: 240,
111
70
  S: void 0,
112
71
  A: [
113
72
  "typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
@@ -120,23 +79,19 @@ var isMutable2 = isMutable;
120
79
  var getMeta = (schema) => {
121
80
  return getTypeAnnotation(schema);
122
81
  };
123
- var Entity;
124
82
 
125
83
  export {
126
- Obj,
84
+ RuntimeType,
127
85
  object,
128
86
  PersistentType,
129
- Relation,
130
87
  relation,
131
88
  isObjectSchema,
132
89
  isRelationSchema,
133
- Ref2 as Ref,
134
90
  getDXN,
135
91
  getTypename,
136
92
  getVersion,
137
93
  isMutable2 as isMutable,
138
94
  getMeta,
139
- Entity,
140
95
  Type_exports
141
96
  };
142
- //# sourceMappingURL=chunk-XMIDBDE6.mjs.map
97
+ //# sourceMappingURL=chunk-UPWIIW2V.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Type.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Schema from 'effect/Schema';\n\nimport { type EncodedReference } from '@dxos/echo-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { type DXN } from '@dxos/keys';\nimport { type ToMutable } from '@dxos/util';\n\nimport type * as Entity from './Entity';\nimport * as internal from './internal';\nimport * as typeInternal from './internal/Type';\nimport type * as ObjModule from './Obj';\nimport type * as RelationModule from './Relation';\n\n/**\n * Dynamic type that can be constructed, mutated, and persisted in the ECHO database.\n */\nexport const RuntimeType = typeInternal.EchoSchema;\n\n/**\n * Dynamic type that can be constructed, mutated, and persisted in the ECHO database.\n */\nexport type RuntimeType = typeInternal.EchoSchema;\n\n//\n// Internal types (not exported)\n//\n\n/**\n * Type that marks a schema as an ECHO schema.\n * The value indicates the entity kind (Object or Relation).\n */\ntype EchoSchemaKind<K extends internal.EntityKind = internal.EntityKind> = {\n readonly [internal.SchemaKindId]: K;\n};\n\n//\n// Obj - Runtime schema for any ECHO object\n//\n\n/**\n * TypeScript type for an ECHO object schema.\n * `T` is the instance type produced by the schema.\n * `Fields` is the optional struct fields type for introspection.\n *\n * @example\n * ```ts\n * const PersonSchema: Type.Obj<Person> = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.object({ typename: 'Person', version: '0.1.0' }));\n *\n * // Access fields for introspection:\n * Object.keys(PersonSchema.fields); // ['name']\n * ```\n */\nexport interface Obj<T, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>\n extends\n internal.TypeMeta,\n EchoSchemaKind<internal.EntityKind.Object>,\n Schema.AnnotableClass<\n Obj<T, Fields>,\n Entity.OfKind<typeof Entity.Kind.Object> & T,\n Schema.Simplify<ObjModule.BaseObjJson & ToMutable<T>>,\n never\n > {\n /**\n * The fields defined in the original struct schema.\n * Allows accessing field definitions for introspection.\n */\n readonly fields: Fields;\n}\n\n/**\n * Structural base type for any ECHO object schema.\n * Accepts both static schemas (created with Type.object()) and EchoSchema.\n * NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.\n * Use Type.isObjectSchema() for runtime type guards.\n */\ntype ObjectSchemaBase = Schema.Schema.AnyNoContext & {\n readonly typename: string;\n readonly version: string;\n};\n\n/**\n * Type that represents any ECHO object schema.\n * Accepts both static schemas (Type.object()) and mutable schemas (EchoSchema).\n */\nexport type AnyObj = ObjectSchemaBase;\n\n/**\n * Factory function to create an ECHO object schema.\n * Adds object metadata annotations to an Effect schema.\n *\n * @example\n * ```ts\n * const Person = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.object({ typename: 'com.example.type.person', version: '0.1.0' }));\n * ```\n */\nexport const object: {\n (opts: internal.TypeMeta): <Self extends Schema.Schema.Any>(self: Self) => Obj<Schema.Schema.Type<Self>>;\n} = internal.EchoObjectSchema as any;\n\n//\n// PersistentType (Schema stored in database)\n//\n\nexport const PersistentType: Obj<typeInternal.PersistentSchema> = typeInternal.PersistentSchema as any;\n\nexport interface PersistentType extends Schema.Schema.Type<typeof PersistentType> {}\n\n/**\n * TypeScript type for an ECHO relation schema.\n * `T` is the instance type produced by the schema (excluding source/target).\n * `Source` and `Target` are the endpoint types.\n * `Fields` is the optional struct fields type for introspection.\n */\nexport interface Relation<T, Source, Target, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>\n extends\n internal.TypeMeta,\n EchoSchemaKind<internal.EntityKind.Relation>,\n Schema.AnnotableClass<\n Relation<T, Source, Target, Fields>,\n Entity.OfKind<typeof Entity.Kind.Relation> & RelationModule.Endpoints<Source, Target> & T,\n Schema.Simplify<RelationModule.BaseRelationJson & ToMutable<T>>,\n never\n > {\n /**\n * The fields defined in the original struct schema.\n * Allows accessing field definitions for introspection.\n */\n readonly fields: Fields;\n}\n\n/**\n * Structural base type for any ECHO relation schema.\n * Accepts static schemas (created with Type.relation()).\n * NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.\n * Use Type.isRelationSchema() for runtime type guards.\n */\ntype RelationSchemaBase = Schema.Schema.AnyNoContext & {\n readonly typename: string;\n readonly version: string;\n};\n\n/**\n * Type that represents any ECHO relation schema.\n * Accepts static schemas (Type.relation()).\n */\nexport type AnyRelation = RelationSchemaBase;\n\n/**\n * Factory function to create an ECHO relation schema.\n * Adds relation metadata annotations to an Effect schema.\n *\n * @example\n * ```ts\n * const WorksFor = Schema.Struct({\n * role: Schema.String,\n * }).pipe(Type.relation({\n * typename: 'com.example.type.works-for',\n * version: '0.1.0',\n * source: Person,\n * target: Company,\n * }));\n * ```\n */\nexport const relation: {\n <SourceSchema extends Schema.Schema.AnyNoContext, TargetSchema extends Schema.Schema.AnyNoContext>(\n opts: internal.EchoRelationSchemaOptions<SourceSchema, TargetSchema>,\n ): <Self extends Schema.Schema.Any>(\n self: Self,\n ) => Relation<Schema.Schema.Type<Self>, Schema.Schema.Type<SourceSchema>, Schema.Schema.Type<TargetSchema>>;\n} = internal.EchoRelationSchema as any;\n\n/**\n * Type alias for any ECHO entity schema (object or relation).\n * Use this in type annotations for schema parameters.\n */\nexport type AnyEntity = AnyObj | AnyRelation;\n\n/**\n * Type guard to check if a schema is an object schema.\n * NOTE: This checks SCHEMAS, not instances. Use Obj.isObject for instances.\n */\nexport const isObjectSchema = (schema: AnyEntity): schema is AnyObj => {\n return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Object;\n};\n\n/**\n * Type guard to check if a schema is a relation schema.\n * NOTE: This checks SCHEMAS, not instances. Use Relation.isRelation for instances.\n */\nexport const isRelationSchema = (schema: AnyEntity): schema is AnyRelation => {\n return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Relation;\n};\n\n/**\n * Type that represents any Ref schema (with unknown target type).\n * This is a schema type, not an instance type.\n */\nexport type AnyRef = Schema.Schema<internal.Ref<any>, EncodedReference>;\n\n//\n// Schema utility functions\n//\n\n/**\n * Gets the full DXN of the schema.\n * Will include the version if it's a `type` DXN.\n * @example \"dxn:com.example.type.person:0.1.0\"\n * @example \"dxn:echo:SSSSSSSSSS:XXXXXXXXXXXXX\"\n */\nexport const getDXN = (schema: AnyEntity): DXN | undefined => {\n return internal.getSchemaDXN(schema);\n};\n\n/**\n * @param schema - Schema to get the typename from.\n * @returns The typename of the schema. Example: `com.example.type.person`.\n */\nexport const getTypename = (schema: AnyEntity): string => {\n const typename = internal.getSchemaTypename(schema);\n invariant(typeof typename === 'string' && !typename.startsWith('dxn:'), 'Invalid typename');\n return typename;\n};\n\n/**\n * Gets the version of the schema.\n * @example 0.1.0\n */\nexport const getVersion = (schema: AnyEntity): string => {\n const version = internal.getSchemaVersion(schema);\n invariant(typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/), 'Invalid version');\n return version;\n};\n\n/**\n * @returns True if the schema is mutable.\n */\nexport const isMutable = typeInternal.isMutable;\n\n/**\n * ECHO type metadata.\n */\nexport type Meta = internal.TypeAnnotation;\n\n/**\n * Gets the meta data of the schema.\n */\nexport const getMeta = (schema: AnyEntity): Meta | undefined => {\n return internal.getTypeAnnotation(schema);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;mBAAAA;EAAA;;;;;AASA,SAASC,iBAAiB;;AAanB,IAAMC,cAA2BC;AAmFjC,IAAMC,SAEAC;AAMN,IAAMC,iBAAkEC;AA4DxE,IAAMC,WAMAC;AAYN,IAAMC,iBAAiB,CAACC,WAAAA;AAC7B,SAAQA,OAAwBC,YAAY,MAAeC,WAAWC;AACxE;AAMO,IAAMC,mBAAmB,CAACJ,WAAAA;AAC/B,SAAQA,OAAwBC,YAAY,MAAeC,WAAWG;AACxE;AAkBO,IAAMC,SAAS,CAACN,WAAAA;AACrB,SAAgBO,aAAaP,MAAAA;AAC/B;AAMO,IAAMQ,cAAc,CAACR,WAAAA;AAC1B,QAAMS,WAAoBC,kBAAkBV,MAAAA;AAC5CW,YAAU,OAAOF,aAAa,YAAY,CAACA,SAASG,WAAW,MAAA,GAAS,oBAAA;;;;;;;;;AACxE,SAAOH;AACT;AAMO,IAAMI,aAAa,CAACb,WAAAA;AACzB,QAAMc,UAAmBC,iBAAiBf,MAAAA;AAC1CW,YAAU,OAAOG,YAAY,YAAYA,QAAQE,MAAM,iBAAA,GAAoB,mBAAA;;;;;;;;;AAC3E,SAAOF;AACT;AAKO,IAAMG,aAAyBA;AAU/B,IAAMC,UAAU,CAAClB,WAAAA;AACtB,SAAgBmB,kBAAkBnB,MAAAA;AACpC;",
6
+ "names": ["isMutable", "invariant", "RuntimeType", "EchoSchema", "object", "EchoObjectSchema", "PersistentType", "PersistentSchema", "relation", "EchoRelationSchema", "isObjectSchema", "schema", "SchemaKindId", "EntityKind", "Object", "isRelationSchema", "Relation", "getDXN", "getSchemaDXN", "getTypename", "typename", "getSchemaTypename", "invariant", "startsWith", "getVersion", "version", "getSchemaVersion", "match", "isMutable", "getMeta", "getTypeAnnotation"]
7
+ }
@@ -1,28 +1,29 @@
1
1
  import {
2
+ MetaId,
2
3
  addTag,
3
4
  change,
4
5
  getDXN,
5
6
  getDatabase,
6
- getDescription,
7
7
  getKeys,
8
- getLabel,
9
8
  getMetaChecked,
10
9
  isDeleted,
11
10
  objectToJSON,
12
11
  removeTag,
13
12
  subscribe
14
- } from "./chunk-SU2LVM7J.mjs";
13
+ } from "./chunk-FW7UJX25.mjs";
15
14
  import {
15
+ getDescription,
16
16
  getEntityKind,
17
+ getLabel,
17
18
  getTypeDXN,
18
19
  getTypename
19
- } from "./chunk-CUDIBUM4.mjs";
20
+ } from "./chunk-6URFBQJH.mjs";
20
21
  import {
21
22
  EntityKind,
22
23
  EntityKindSchema,
23
24
  KindId,
24
25
  SnapshotKindId
25
- } from "./chunk-YQYMWZAD.mjs";
26
+ } from "./chunk-TBKX6JQO.mjs";
26
27
  import {
27
28
  __export
28
29
  } from "./chunk-J5LGTIGS.mjs";
@@ -31,9 +32,10 @@ import {
31
32
  var Entity_exports = {};
32
33
  __export(Entity_exports, {
33
34
  Kind: () => Kind,
34
- KindId: () => KindId,
35
+ KindId: () => KindId2,
35
36
  KindSchema: () => KindSchema,
36
- SnapshotKindId: () => SnapshotKindId,
37
+ Meta: () => Meta,
38
+ SnapshotKindId: () => SnapshotKindId2,
37
39
  addTag: () => addTag2,
38
40
  change: () => change2,
39
41
  getDXN: () => getDXN2,
@@ -46,13 +48,30 @@ __export(Entity_exports, {
46
48
  getTypeDXN: () => getTypeDXN2,
47
49
  getTypename: () => getTypename2,
48
50
  isDeleted: () => isDeleted2,
51
+ isEntity: () => isEntity,
52
+ isSnapshot: () => isSnapshot,
49
53
  removeTag: () => removeTag2,
50
54
  subscribe: () => subscribe2,
51
55
  toJSON: () => toJSON
52
56
  });
57
+ var KindId2 = KindId;
58
+ var SnapshotKindId2 = SnapshotKindId;
53
59
  var Kind = EntityKind;
54
60
  var KindSchema = EntityKindSchema;
61
+ var isEntity = (value) => {
62
+ if (typeof value !== "object" || value === null) {
63
+ return false;
64
+ }
65
+ return value[KindId2] !== void 0;
66
+ };
67
+ var isSnapshot = (value) => {
68
+ if (typeof value !== "object" || value === null) {
69
+ return false;
70
+ }
71
+ return value[SnapshotKindId2] !== void 0;
72
+ };
55
73
  var getKind = getEntityKind;
74
+ var Meta = MetaId;
56
75
  var getDXN2 = (entity) => getDXN(entity);
57
76
  var getTypeDXN2 = getTypeDXN;
58
77
  var getTypename2 = (entity) => getTypename(entity);
@@ -75,9 +94,14 @@ var addTag2 = (entity, tag) => addTag(entity, tag);
75
94
  var removeTag2 = (entity, tag) => removeTag(entity, tag);
76
95
 
77
96
  export {
97
+ KindId2 as KindId,
98
+ SnapshotKindId2 as SnapshotKindId,
78
99
  Kind,
79
100
  KindSchema,
101
+ isEntity,
102
+ isSnapshot,
80
103
  getKind,
104
+ Meta,
81
105
  getDXN2 as getDXN,
82
106
  getTypeDXN2 as getTypeDXN,
83
107
  getTypename2 as getTypename,
@@ -94,4 +118,4 @@ export {
94
118
  removeTag2 as removeTag,
95
119
  Entity_exports
96
120
  };
97
- //# sourceMappingURL=chunk-6QPSGMEF.mjs.map
121
+ //# sourceMappingURL=chunk-WVLOCXB5.mjs.map