@dxos/echo 0.8.4-main.937b3ca → 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 (668) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/{browser → neutral}/Annotation.mjs +9 -5
  3. package/dist/lib/neutral/Database.mjs +47 -0
  4. package/dist/lib/{browser → neutral}/Entity.mjs +19 -12
  5. package/dist/lib/{browser → neutral}/Err.mjs +4 -3
  6. package/dist/lib/neutral/Extension.mjs +18 -0
  7. package/dist/lib/neutral/Feed.mjs +48 -0
  8. package/dist/lib/neutral/Filter.mjs +72 -0
  9. package/dist/lib/{browser → neutral}/Format.mjs +4 -5
  10. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  11. package/dist/lib/{browser → neutral}/Key.mjs +2 -3
  12. package/dist/lib/{node-esm → neutral}/Obj.mjs +39 -17
  13. package/dist/lib/{browser → neutral}/Order.mjs +2 -3
  14. package/dist/lib/neutral/Query.mjs +38 -0
  15. package/dist/lib/neutral/QueryResult.mjs +2 -0
  16. package/dist/lib/neutral/Ref.mjs +24 -0
  17. package/dist/lib/{browser → neutral}/Relation.mjs +22 -13
  18. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  19. package/dist/lib/neutral/Tag.mjs +29 -0
  20. package/dist/lib/neutral/Type.mjs +37 -0
  21. package/dist/lib/{browser/chunk-XDIUHAAX.mjs → neutral/chunk-46QNGNTY.mjs} +9 -5
  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/{node-esm/chunk-YOLH5KS4.mjs → neutral/chunk-6URFBQJH.mjs} +104 -26
  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/{browser/chunk-INHXFXY5.mjs → neutral/chunk-ANHVGJI4.mjs} +2 -3
  30. package/dist/lib/{node-esm/chunk-AJEMYSIR.mjs.map → neutral/chunk-ANHVGJI4.mjs.map} +1 -1
  31. package/dist/lib/{browser/chunk-ZHXZGIXD.mjs → neutral/chunk-BNCCGLJN.mjs} +1 -3
  32. package/dist/lib/{node-esm/chunk-MOLNWFNL.mjs.map → neutral/chunk-BNCCGLJN.mjs.map} +2 -2
  33. package/dist/lib/{browser/chunk-FRDT7RA4.mjs → neutral/chunk-DQYLD2RB.mjs} +15 -16
  34. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +7 -0
  35. package/dist/lib/{node-esm/chunk-ZBB67AKD.mjs → neutral/chunk-E5PBQJWV.mjs} +9 -6
  36. package/dist/lib/neutral/chunk-E5PBQJWV.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-EBVB5NOH.mjs +133 -0
  38. package/dist/lib/neutral/chunk-EBVB5NOH.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-FNEFSO2C.mjs +787 -0
  40. package/dist/lib/neutral/chunk-FNEFSO2C.mjs.map +7 -0
  41. package/dist/lib/{browser/chunk-BJPE6CIC.mjs → neutral/chunk-FW7UJX25.mjs} +1708 -2721
  42. package/dist/lib/neutral/chunk-FW7UJX25.mjs.map +7 -0
  43. package/dist/lib/{browser/chunk-PQZW3S6L.mjs → neutral/chunk-GZQTCRJB.mjs} +3 -4
  44. package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +7 -0
  45. package/dist/lib/neutral/chunk-HBJ7JT5A.mjs +120 -0
  46. package/dist/lib/neutral/chunk-HBJ7JT5A.mjs.map +7 -0
  47. package/dist/lib/{browser/chunk-CGS2ULMK.mjs → neutral/chunk-J5LGTIGS.mjs} +1 -2
  48. package/dist/lib/{browser/chunk-U2J7TA7K.mjs → neutral/chunk-OLFCVPOO.mjs} +6 -7
  49. package/dist/lib/neutral/chunk-OLFCVPOO.mjs.map +7 -0
  50. package/dist/lib/{browser/chunk-IXVWLTG7.mjs → neutral/chunk-OMUPQMLR.mjs} +1 -3
  51. package/dist/lib/{browser/chunk-IXVWLTG7.mjs.map → neutral/chunk-OMUPQMLR.mjs.map} +1 -1
  52. package/dist/lib/neutral/chunk-QWAOTFCY.mjs +396 -0
  53. package/dist/lib/neutral/chunk-QWAOTFCY.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-R72KFH2X.mjs +34 -0
  55. package/dist/lib/neutral/chunk-R72KFH2X.mjs.map +7 -0
  56. package/dist/lib/{browser/chunk-ZAGAOZVY.mjs → neutral/chunk-T2JOLN37.mjs} +73 -7
  57. package/dist/lib/neutral/chunk-T2JOLN37.mjs.map +7 -0
  58. package/dist/lib/{browser/chunk-YKTSSMDS.mjs → neutral/chunk-TBKX6JQO.mjs} +4 -6
  59. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +7 -0
  60. package/dist/lib/{browser/chunk-CJ5YELTO.mjs → neutral/chunk-UBEZSGXY.mjs} +15 -3
  61. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  62. package/dist/lib/{browser/chunk-JMKVF2YQ.mjs → neutral/chunk-UI6MWK5W.mjs} +3 -4
  63. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  64. package/dist/lib/{browser/chunk-KQQGVHFN.mjs → neutral/chunk-UPWIIW2V.mjs} +12 -58
  65. package/dist/lib/neutral/chunk-UPWIIW2V.mjs.map +7 -0
  66. package/dist/lib/{node-esm/chunk-ANLVLWME.mjs → neutral/chunk-WVLOCXB5.mjs} +33 -10
  67. package/dist/lib/neutral/chunk-WVLOCXB5.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +50 -0
  69. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +7 -0
  70. package/dist/lib/{browser/chunk-2SBB7OWV.mjs → neutral/chunk-YSLSJ7QS.mjs} +73 -25
  71. package/dist/lib/neutral/chunk-YSLSJ7QS.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-ZGVZNBBJ.mjs +415 -0
  73. package/dist/lib/neutral/chunk-ZGVZNBBJ.mjs.map +7 -0
  74. package/dist/lib/{node-esm/chunk-NBWL7UCZ.mjs → neutral/chunk-ZIXGDU6F.mjs} +9 -4
  75. package/dist/lib/neutral/chunk-ZIXGDU6F.mjs.map +7 -0
  76. package/dist/lib/neutral/index.mjs +101 -0
  77. package/dist/lib/{browser → neutral}/internal/index.mjs +57 -40
  78. package/dist/lib/neutral/meta.json +1 -0
  79. package/dist/lib/{node-esm → neutral}/testing/index.mjs +44 -37
  80. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  81. package/dist/types/src/Annotation.d.ts +23 -1
  82. package/dist/types/src/Annotation.d.ts.map +1 -1
  83. package/dist/types/src/Collection.d.ts +16 -0
  84. package/dist/types/src/Collection.d.ts.map +1 -0
  85. package/dist/types/src/Database.d.ts +86 -84
  86. package/dist/types/src/Database.d.ts.map +1 -1
  87. package/dist/types/src/Dataset.d.ts +19 -0
  88. package/dist/types/src/Dataset.d.ts.map +1 -0
  89. package/dist/types/src/Entity.d.ts +41 -15
  90. package/dist/types/src/Entity.d.ts.map +1 -1
  91. package/dist/types/src/Err.d.ts +43 -0
  92. package/dist/types/src/Err.d.ts.map +1 -1
  93. package/dist/types/src/Extension.d.ts +80 -0
  94. package/dist/types/src/Extension.d.ts.map +1 -0
  95. package/dist/types/src/Extension.test.d.ts +2 -0
  96. package/dist/types/src/Extension.test.d.ts.map +1 -0
  97. package/dist/types/src/Feed.d.ts +171 -0
  98. package/dist/types/src/Feed.d.ts.map +1 -0
  99. package/dist/types/src/Filter.d.ts +32 -5
  100. package/dist/types/src/Filter.d.ts.map +1 -1
  101. package/dist/types/src/Filter.test.d.ts +2 -0
  102. package/dist/types/src/Filter.test.d.ts.map +1 -0
  103. package/dist/types/src/Format.d.ts +3 -3
  104. package/dist/types/src/Format.d.ts.map +1 -1
  105. package/dist/types/src/Hypergraph.d.ts +8 -3
  106. package/dist/types/src/Hypergraph.d.ts.map +1 -1
  107. package/dist/types/src/JsonSchema.d.ts +11 -4
  108. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  109. package/dist/types/src/Obj.d.ts +174 -46
  110. package/dist/types/src/Obj.d.ts.map +1 -1
  111. package/dist/types/src/Order.d.ts.map +1 -1
  112. package/dist/types/src/Query.d.ts +109 -15
  113. package/dist/types/src/Query.d.ts.map +1 -1
  114. package/dist/types/src/Ref.d.ts +58 -10
  115. package/dist/types/src/Ref.d.ts.map +1 -1
  116. package/dist/types/src/Relation.d.ts +75 -29
  117. package/dist/types/src/Relation.d.ts.map +1 -1
  118. package/dist/types/src/SchemaRegistry.d.ts +4 -4
  119. package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
  120. package/dist/types/src/Tag.d.ts +4 -3
  121. package/dist/types/src/Tag.d.ts.map +1 -1
  122. package/dist/types/src/Type.d.ts +51 -180
  123. package/dist/types/src/Type.d.ts.map +1 -1
  124. package/dist/types/src/View.d.ts +68 -0
  125. package/dist/types/src/View.d.ts.map +1 -0
  126. package/dist/types/src/hierarchy.test.d.ts +2 -0
  127. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  128. package/dist/types/src/index.d.ts +5 -0
  129. package/dist/types/src/index.d.ts.map +1 -1
  130. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +69 -8
  131. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  132. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  133. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  134. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  135. package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
  136. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  137. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +13 -1
  138. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  139. package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
  140. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  141. package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
  142. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  143. package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
  144. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  145. package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
  146. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  147. package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
  148. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  149. package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
  150. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  151. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  152. package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
  153. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  154. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  155. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  156. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  157. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  158. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  159. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  160. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  161. package/dist/types/src/internal/{formats → Format}/select.d.ts +2 -2
  162. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  163. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  164. package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
  165. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  166. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  167. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  168. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  169. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  170. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  171. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
  172. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  173. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +2 -1
  174. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  175. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  176. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  177. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  178. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
  179. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  180. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  181. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  182. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  183. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  184. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  185. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  186. package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +13 -5
  187. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  188. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  189. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  190. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  191. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  192. package/dist/types/src/internal/{object → Obj}/set-value.d.ts +1 -1
  193. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  194. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  195. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  196. package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
  197. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  198. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  199. package/dist/types/src/internal/Query.d.ts +10 -0
  200. package/dist/types/src/internal/Query.d.ts.map +1 -0
  201. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  202. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
  203. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  204. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +18 -4
  205. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  206. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  207. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  208. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  209. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  210. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +8 -7
  211. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  212. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  213. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  214. package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
  215. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  216. package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
  217. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  218. package/dist/types/src/internal/{api → common/api}/meta.d.ts +2 -2
  219. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  220. package/dist/types/src/internal/common/index.d.ts +4 -0
  221. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  222. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  223. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  225. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  226. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  227. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  228. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  229. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  230. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  231. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  232. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  233. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  234. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  235. package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +1 -1
  236. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  237. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  238. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  239. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  240. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +2 -1
  241. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  242. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  243. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  244. package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
  245. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  246. package/dist/types/src/internal/{types → common/types}/entity.d.ts +2 -2
  247. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  248. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  249. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  250. package/dist/types/src/internal/{types → common/types}/meta.d.ts +7 -6
  251. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  252. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  253. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  254. package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
  255. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  256. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  257. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  258. package/dist/types/src/internal/index.d.ts +9 -10
  259. package/dist/types/src/internal/index.d.ts.map +1 -1
  260. package/dist/types/src/testing/test-data.d.ts.map +1 -1
  261. package/dist/types/src/testing/test-schema.d.ts +19 -18
  262. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  263. package/dist/types/tsconfig.tsbuildinfo +1 -1
  264. package/package.json +44 -113
  265. package/src/Annotation.ts +31 -1
  266. package/src/Collection.ts +37 -0
  267. package/src/Database.ts +167 -173
  268. package/src/Dataset.ts +26 -0
  269. package/src/Entity.ts +73 -54
  270. package/src/Err.ts +22 -0
  271. package/src/Extension.test.ts +235 -0
  272. package/src/Extension.ts +122 -0
  273. package/src/Feed.ts +283 -0
  274. package/src/Filter.test.ts +90 -0
  275. package/src/Filter.ts +81 -7
  276. package/src/Format.ts +3 -3
  277. package/src/Hypergraph.ts +9 -4
  278. package/src/JsonSchema.ts +14 -4
  279. package/src/Obj.test.ts +166 -13
  280. package/src/Obj.ts +407 -145
  281. package/src/Order.ts +3 -1
  282. package/src/Query.test.ts +339 -15
  283. package/src/Query.ts +275 -24
  284. package/src/Ref.ts +64 -11
  285. package/src/Relation.test.ts +8 -2
  286. package/src/Relation.ts +167 -133
  287. package/src/SchemaRegistry.ts +5 -4
  288. package/src/Tag.ts +6 -5
  289. package/src/Type.test.ts +10 -10
  290. package/src/Type.ts +70 -303
  291. package/src/View.ts +107 -0
  292. package/src/hierarchy.test.ts +33 -0
  293. package/src/index.ts +5 -0
  294. package/src/internal/{annotations → Annotation}/annotations.test.ts +56 -7
  295. package/src/internal/{annotations → Annotation}/annotations.ts +134 -16
  296. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  297. package/src/internal/{api → Annotation}/sorting.ts +2 -4
  298. package/src/internal/{annotations → Annotation}/util.ts +14 -1
  299. package/src/internal/{api/entity.ts → Entity/api.ts} +3 -2
  300. package/src/internal/{entities → Entity}/entity.ts +6 -4
  301. package/src/internal/{entities → Entity}/index.ts +2 -0
  302. package/src/internal/{entities → Entity}/model.ts +17 -42
  303. package/src/internal/{entities → Entity}/object.ts +3 -6
  304. package/src/internal/{entities → Entity}/relation.ts +20 -39
  305. package/src/internal/{api → Entity}/version.ts +2 -2
  306. package/src/internal/{formats → Format}/date.test.ts +1 -2
  307. package/src/internal/{formats → Format}/format.test.ts +2 -3
  308. package/src/internal/{formats → Format}/select.ts +1 -1
  309. package/src/internal/{formats → Format}/types.ts +3 -3
  310. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  311. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  312. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +33 -34
  313. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -49
  314. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +16 -11
  315. package/src/internal/{object → Obj}/clone.ts +3 -3
  316. package/src/internal/{object → Obj}/common.ts +2 -2
  317. package/src/internal/{object → Obj}/create-object.test.ts +5 -7
  318. package/src/internal/{object → Obj}/create-object.ts +5 -6
  319. package/src/internal/{object → Obj}/deleted.ts +2 -2
  320. package/src/internal/{object → Obj}/inspect.ts +2 -2
  321. package/src/internal/{object → Obj}/json-serializer.test.ts +31 -8
  322. package/src/internal/{object → Obj}/json-serializer.ts +58 -24
  323. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  324. package/src/internal/{object → Obj}/schema-validator.ts +1 -1
  325. package/src/internal/{object → Obj}/set-value.test.ts +33 -33
  326. package/src/internal/{object → Obj}/set-value.ts +2 -2
  327. package/src/internal/Obj/snapshot.ts +105 -0
  328. package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
  329. package/src/internal/{object → Obj}/typed-object.ts +4 -4
  330. package/src/internal/Query.ts +134 -0
  331. package/src/internal/{ref → Ref}/ref-array.ts +1 -2
  332. package/src/internal/{ref → Ref}/ref.test.ts +5 -6
  333. package/src/internal/{ref → Ref}/ref.ts +29 -5
  334. package/src/internal/{schema → Type}/compose.test.ts +5 -6
  335. package/src/internal/{schema → Type}/compose.ts +14 -9
  336. package/src/internal/{schema → Type}/echo-schema.ts +11 -11
  337. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  338. package/src/internal/{schema → Type}/persistent-schema.ts +10 -4
  339. package/src/internal/{README.md → common/README.md} +1 -1
  340. package/src/internal/{api → common/api}/index.ts +0 -4
  341. package/src/internal/{api → common/api}/meta.ts +3 -3
  342. package/src/internal/common/index.ts +7 -0
  343. package/src/internal/{proxy → common/proxy}/change.test.ts +65 -65
  344. package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
  345. package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
  346. package/src/internal/{proxy → common/proxy}/make-object.ts +13 -4
  347. package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
  348. package/src/internal/{proxy → common/proxy}/reactive.ts +1 -2
  349. package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
  350. package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +14 -19
  351. package/src/internal/{proxy → common/proxy}/typed-handler.ts +11 -6
  352. package/src/internal/{proxy → common/proxy}/typed-object.test.ts +15 -16
  353. package/src/internal/{types → common/types}/base.ts +1 -1
  354. package/src/internal/{types → common/types}/entity.ts +2 -2
  355. package/src/internal/{types → common/types}/index.ts +1 -0
  356. package/src/internal/{types → common/types}/meta.ts +15 -14
  357. package/src/internal/common/types/model-symbols.ts +69 -0
  358. package/src/internal/{types → common/types}/typename.ts +10 -0
  359. package/src/internal/{types → common/types}/version.ts +2 -3
  360. package/src/internal/index.ts +9 -31
  361. package/src/testing/api.test.ts +4 -5
  362. package/src/testing/test-data.ts +0 -1
  363. package/src/testing/test-schema.ts +20 -18
  364. package/dist/lib/browser/Database.mjs +0 -18
  365. package/dist/lib/browser/Filter.mjs +0 -62
  366. package/dist/lib/browser/JsonSchema.mjs +0 -20
  367. package/dist/lib/browser/Obj.mjs +0 -91
  368. package/dist/lib/browser/Query.mjs +0 -27
  369. package/dist/lib/browser/QueryResult.mjs +0 -3
  370. package/dist/lib/browser/Ref.mjs +0 -23
  371. package/dist/lib/browser/SchemaRegistry.mjs +0 -3
  372. package/dist/lib/browser/Tag.mjs +0 -26
  373. package/dist/lib/browser/Type.mjs +0 -48
  374. package/dist/lib/browser/chunk-22JMFST2.mjs +0 -24
  375. package/dist/lib/browser/chunk-22JMFST2.mjs.map +0 -7
  376. package/dist/lib/browser/chunk-2SBB7OWV.mjs.map +0 -7
  377. package/dist/lib/browser/chunk-6L5HHUVU.mjs +0 -158
  378. package/dist/lib/browser/chunk-6L5HHUVU.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-7STIBCP7.mjs +0 -133
  380. package/dist/lib/browser/chunk-7STIBCP7.mjs.map +0 -7
  381. package/dist/lib/browser/chunk-BJPE6CIC.mjs.map +0 -7
  382. package/dist/lib/browser/chunk-CJ5YELTO.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-FPOISFQK.mjs +0 -40
  384. package/dist/lib/browser/chunk-FPOISFQK.mjs.map +0 -7
  385. package/dist/lib/browser/chunk-FRDT7RA4.mjs.map +0 -7
  386. package/dist/lib/browser/chunk-INHXFXY5.mjs.map +0 -7
  387. package/dist/lib/browser/chunk-JMKVF2YQ.mjs.map +0 -7
  388. package/dist/lib/browser/chunk-KQQGVHFN.mjs.map +0 -7
  389. package/dist/lib/browser/chunk-MYCCGG2T.mjs +0 -15
  390. package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +0 -7
  391. package/dist/lib/browser/chunk-NOPVNWPT.mjs +0 -204
  392. package/dist/lib/browser/chunk-NOPVNWPT.mjs.map +0 -7
  393. package/dist/lib/browser/chunk-PQZW3S6L.mjs.map +0 -7
  394. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs +0 -283
  395. package/dist/lib/browser/chunk-RK4Z4JUZ.mjs.map +0 -7
  396. package/dist/lib/browser/chunk-U2J7TA7K.mjs.map +0 -7
  397. package/dist/lib/browser/chunk-W5D2GWAW.mjs +0 -98
  398. package/dist/lib/browser/chunk-W5D2GWAW.mjs.map +0 -7
  399. package/dist/lib/browser/chunk-XDIUHAAX.mjs.map +0 -7
  400. package/dist/lib/browser/chunk-YKTSSMDS.mjs.map +0 -7
  401. package/dist/lib/browser/chunk-ZAGAOZVY.mjs.map +0 -7
  402. package/dist/lib/browser/chunk-ZHXZGIXD.mjs.map +0 -7
  403. package/dist/lib/browser/index.mjs +0 -85
  404. package/dist/lib/browser/meta.json +0 -1
  405. package/dist/lib/browser/testing/index.mjs +0 -367
  406. package/dist/lib/browser/testing/index.mjs.map +0 -7
  407. package/dist/lib/node-esm/Annotation.mjs +0 -33
  408. package/dist/lib/node-esm/Annotation.mjs.map +0 -7
  409. package/dist/lib/node-esm/Database.mjs +0 -18
  410. package/dist/lib/node-esm/Database.mjs.map +0 -7
  411. package/dist/lib/node-esm/Entity.mjs +0 -52
  412. package/dist/lib/node-esm/Entity.mjs.map +0 -7
  413. package/dist/lib/node-esm/Err.mjs +0 -11
  414. package/dist/lib/node-esm/Err.mjs.map +0 -7
  415. package/dist/lib/node-esm/Filter.mjs +0 -62
  416. package/dist/lib/node-esm/Format.mjs +0 -67
  417. package/dist/lib/node-esm/JsonSchema.mjs +0 -20
  418. package/dist/lib/node-esm/JsonSchema.mjs.map +0 -7
  419. package/dist/lib/node-esm/Key.mjs +0 -13
  420. package/dist/lib/node-esm/Key.mjs.map +0 -7
  421. package/dist/lib/node-esm/Obj.mjs.map +0 -7
  422. package/dist/lib/node-esm/Order.mjs +0 -13
  423. package/dist/lib/node-esm/Order.mjs.map +0 -7
  424. package/dist/lib/node-esm/Query.mjs +0 -27
  425. package/dist/lib/node-esm/Query.mjs.map +0 -7
  426. package/dist/lib/node-esm/QueryResult.mjs +0 -3
  427. package/dist/lib/node-esm/QueryResult.mjs.map +0 -7
  428. package/dist/lib/node-esm/Ref.mjs +0 -23
  429. package/dist/lib/node-esm/Ref.mjs.map +0 -7
  430. package/dist/lib/node-esm/Relation.mjs +0 -85
  431. package/dist/lib/node-esm/Relation.mjs.map +0 -7
  432. package/dist/lib/node-esm/SchemaRegistry.mjs +0 -3
  433. package/dist/lib/node-esm/SchemaRegistry.mjs.map +0 -7
  434. package/dist/lib/node-esm/Tag.mjs +0 -26
  435. package/dist/lib/node-esm/Tag.mjs.map +0 -7
  436. package/dist/lib/node-esm/Type.mjs +0 -48
  437. package/dist/lib/node-esm/Type.mjs.map +0 -7
  438. package/dist/lib/node-esm/chunk-4PNXQA64.mjs +0 -250
  439. package/dist/lib/node-esm/chunk-4PNXQA64.mjs.map +0 -7
  440. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs +0 -158
  441. package/dist/lib/node-esm/chunk-5OBN7GZW.mjs.map +0 -7
  442. package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +0 -22
  443. package/dist/lib/node-esm/chunk-ANLVLWME.mjs.map +0 -7
  444. package/dist/lib/node-esm/chunk-DMR7OAFK.mjs +0 -57
  445. package/dist/lib/node-esm/chunk-DMR7OAFK.mjs.map +0 -7
  446. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs +0 -133
  447. package/dist/lib/node-esm/chunk-FWTSPIFF.mjs.map +0 -7
  448. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  449. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  450. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs +0 -204
  451. package/dist/lib/node-esm/chunk-ILMLLM4R.mjs.map +0 -7
  452. package/dist/lib/node-esm/chunk-K37NA7PO.mjs +0 -43
  453. package/dist/lib/node-esm/chunk-K37NA7PO.mjs.map +0 -7
  454. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs +0 -3847
  455. package/dist/lib/node-esm/chunk-LT3H4JOX.mjs.map +0 -7
  456. package/dist/lib/node-esm/chunk-MOLNWFNL.mjs +0 -9
  457. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +0 -15
  458. package/dist/lib/node-esm/chunk-MOWUEW5P.mjs.map +0 -7
  459. package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs.map +0 -7
  460. package/dist/lib/node-esm/chunk-NRN3ZW2T.mjs +0 -143
  461. package/dist/lib/node-esm/chunk-NRN3ZW2T.mjs.map +0 -7
  462. package/dist/lib/node-esm/chunk-QLI2EIJ2.mjs +0 -41
  463. package/dist/lib/node-esm/chunk-QLI2EIJ2.mjs.map +0 -7
  464. package/dist/lib/node-esm/chunk-QYR67VBV.mjs +0 -288
  465. package/dist/lib/node-esm/chunk-QYR67VBV.mjs.map +0 -7
  466. package/dist/lib/node-esm/chunk-UKGVOINP.mjs +0 -9
  467. package/dist/lib/node-esm/chunk-UKGVOINP.mjs.map +0 -7
  468. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs +0 -403
  469. package/dist/lib/node-esm/chunk-W6QIEBTQ.mjs.map +0 -7
  470. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs +0 -69
  471. package/dist/lib/node-esm/chunk-XHJRMQZD.mjs.map +0 -7
  472. package/dist/lib/node-esm/chunk-Y75VU7LB.mjs +0 -74
  473. package/dist/lib/node-esm/chunk-Y75VU7LB.mjs.map +0 -7
  474. package/dist/lib/node-esm/chunk-YOLH5KS4.mjs.map +0 -7
  475. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs +0 -39
  476. package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs.map +0 -7
  477. package/dist/lib/node-esm/chunk-ZBB67AKD.mjs.map +0 -7
  478. package/dist/lib/node-esm/index.mjs +0 -85
  479. package/dist/lib/node-esm/index.mjs.map +0 -7
  480. package/dist/lib/node-esm/internal/index.mjs +0 -457
  481. package/dist/lib/node-esm/internal/index.mjs.map +0 -7
  482. package/dist/lib/node-esm/meta.json +0 -1
  483. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  484. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  485. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  486. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  487. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  488. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  489. package/dist/types/src/internal/api/annotations.d.ts +0 -23
  490. package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
  491. package/dist/types/src/internal/api/entity.d.ts.map +0 -1
  492. package/dist/types/src/internal/api/index.d.ts.map +0 -1
  493. package/dist/types/src/internal/api/meta.d.ts.map +0 -1
  494. package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
  495. package/dist/types/src/internal/api/version.d.ts.map +0 -1
  496. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  497. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  498. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  499. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  500. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  501. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  502. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  503. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  504. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  505. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  506. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  507. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  508. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  509. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  510. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  511. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  512. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  513. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  514. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  515. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  516. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  517. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  518. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  519. package/dist/types/src/internal/object/clone.d.ts.map +0 -1
  520. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  521. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  522. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  523. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  524. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  525. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  526. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  527. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  528. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  529. package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
  530. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  531. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  532. package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
  533. package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
  534. package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
  535. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  536. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  537. package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
  538. package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
  539. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
  540. package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
  541. package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
  542. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  543. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  544. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
  545. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  546. package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
  547. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
  548. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
  549. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
  550. package/dist/types/src/internal/proxy/reactive.d.ts.map +0 -1
  551. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
  552. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  553. package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
  554. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  555. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  556. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  557. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  558. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  559. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  560. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  561. package/dist/types/src/internal/schema/compose.d.ts +0 -6
  562. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  563. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  564. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  565. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  566. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  567. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  568. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  569. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  570. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  571. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  572. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  573. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  574. package/src/internal/api/annotations.ts +0 -60
  575. package/src/internal/object/snapshot.ts +0 -70
  576. /package/dist/lib/{browser → neutral}/Annotation.mjs.map +0 -0
  577. /package/dist/lib/{browser → neutral}/Database.mjs.map +0 -0
  578. /package/dist/lib/{browser → neutral}/Entity.mjs.map +0 -0
  579. /package/dist/lib/{browser → neutral}/Err.mjs.map +0 -0
  580. /package/dist/lib/{browser/Filter.mjs.map → neutral/Extension.mjs.map} +0 -0
  581. /package/dist/lib/{browser/Format.mjs.map → neutral/Feed.mjs.map} +0 -0
  582. /package/dist/lib/{node-esm → neutral}/Filter.mjs.map +0 -0
  583. /package/dist/lib/{node-esm → neutral}/Format.mjs.map +0 -0
  584. /package/dist/lib/{browser → neutral}/JsonSchema.mjs.map +0 -0
  585. /package/dist/lib/{browser → neutral}/Key.mjs.map +0 -0
  586. /package/dist/lib/{browser → neutral}/Obj.mjs.map +0 -0
  587. /package/dist/lib/{browser → neutral}/Order.mjs.map +0 -0
  588. /package/dist/lib/{browser → neutral}/Query.mjs.map +0 -0
  589. /package/dist/lib/{browser → neutral}/QueryResult.mjs.map +0 -0
  590. /package/dist/lib/{browser → neutral}/Ref.mjs.map +0 -0
  591. /package/dist/lib/{browser → neutral}/Relation.mjs.map +0 -0
  592. /package/dist/lib/{browser → neutral}/SchemaRegistry.mjs.map +0 -0
  593. /package/dist/lib/{browser → neutral}/Tag.mjs.map +0 -0
  594. /package/dist/lib/{browser → neutral}/Type.mjs.map +0 -0
  595. /package/dist/lib/{browser/chunk-CGS2ULMK.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  596. /package/dist/lib/{browser → neutral}/index.mjs.map +0 -0
  597. /package/dist/lib/{browser → neutral}/internal/index.mjs.map +0 -0
  598. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  599. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  600. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  601. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  602. /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
  603. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  604. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  605. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  606. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  607. /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
  608. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  609. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  610. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  611. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  612. /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
  613. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  614. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  615. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  616. /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
  617. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  618. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  619. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  620. /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
  621. /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
  622. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  623. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  624. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  625. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  626. /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
  627. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  628. /package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +0 -0
  629. /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
  630. /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
  631. /package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +0 -0
  632. /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
  633. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  634. /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
  635. /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
  636. /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
  637. /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
  638. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
  639. /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
  640. /package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +0 -0
  641. /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
  642. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  643. /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
  644. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  645. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  646. /package/src/internal/{entities → Entity}/util.ts +0 -0
  647. /package/src/internal/{formats → Format}/date.ts +0 -0
  648. /package/src/internal/{formats → Format}/format.ts +0 -0
  649. /package/src/internal/{formats → Format}/index.ts +0 -0
  650. /package/src/internal/{formats → Format}/number.ts +0 -0
  651. /package/src/internal/{formats → Format}/object.ts +0 -0
  652. /package/src/internal/{formats → Format}/string.ts +0 -0
  653. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  654. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  655. /package/src/internal/{object → Obj}/ids.ts +0 -0
  656. /package/src/internal/{object → Obj}/index.ts +0 -0
  657. /package/src/internal/{ref → Ref}/index.ts +0 -0
  658. /package/src/internal/{schema → Type}/index.ts +0 -0
  659. /package/src/internal/{proxy → common/proxy}/change-context.ts +0 -0
  660. /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
  661. /package/src/internal/{proxy → common/proxy}/errors.ts +0 -0
  662. /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
  663. /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
  664. /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
  665. /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
  666. /package/src/internal/{proxy → common/proxy}/reactive-array.ts +0 -0
  667. /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
  668. /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/Ref/ref.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Equal from 'effect/Equal';\nimport * as Hash from 'effect/Hash';\nimport * as Option from 'effect/Option';\nimport * as ParseResult from 'effect/ParseResult';\nimport * as Pipeable from 'effect/Pipeable';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\nimport type * as Types from 'effect/Types';\n\nimport { Event } from '@dxos/async';\nimport { type CustomInspectFunction, inspectCustom } from '@dxos/debug';\nimport { EncodedReference } from '@dxos/echo-protocol';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { DXN, ObjectId } from '@dxos/keys';\n\nimport * as Database from '../../Database';\nimport { ReferenceAnnotationId, getSchemaDXN, getTypeAnnotation, getTypeIdentifierAnnotation } from '../Annotation';\nimport type { AnyEntity, AnyProperties } from '../common/types';\nimport { type JsonSchemaType } from '../JsonSchema';\n\n/**\n * The `$id` and `$ref` fields for an ECHO reference schema.\n */\nexport const JSON_SCHEMA_ECHO_REF_ID = '/schemas/echo/ref';\n\nexport const getSchemaReference = (property: JsonSchemaType): { typename: string } | undefined => {\n const { $id, reference: { schema: { $ref } = {} } = {} } = property;\n if ($id === JSON_SCHEMA_ECHO_REF_ID && $ref) {\n return { typename: DXN.parse($ref).typename };\n }\n};\n\nexport const createSchemaReference = (typename: string): Types.DeepMutable<JsonSchemaType> => {\n return {\n $id: JSON_SCHEMA_ECHO_REF_ID,\n reference: {\n schema: {\n $ref: DXN.fromTypename(typename).toString(),\n },\n },\n };\n};\n\n/**\n * Runtime type-info for a reference extracted from effect AST.\n */\nexport type RefereneAST = {\n /**\n * Typename of linked schema.\n */\n typename: string;\n\n /**\n * Version of linked schema.\n */\n version: string;\n};\n\nexport const getReferenceAst = (ast: SchemaAST.AST): RefereneAST | undefined => {\n if (ast._tag !== 'Declaration' || !ast.annotations[ReferenceAnnotationId]) {\n return undefined;\n }\n return {\n typename: (ast.annotations[ReferenceAnnotationId] as any).typename,\n version: (ast.annotations[ReferenceAnnotationId] as any).version,\n };\n};\n\nexport const RefTypeId: unique symbol = Symbol('@dxos/echo/internal/Ref');\n\n/**\n * Reference Schema.\n */\nexport interface RefSchema<T extends AnyEntity> extends Schema.SchemaClass<Ref<T>, EncodedReference> {}\n\n/**\n * Type of the `Ref` function and extra methods attached to it.\n */\nexport interface RefFn {\n <S extends Schema.Schema.Any>(schema: S): RefSchema<Schema.Schema.Type<S>>;\n\n /**\n * @returns True if the object is a reference.\n */\n isRef: (obj: unknown) => obj is Ref<any>;\n\n /**\n * @returns True if the reference points to the given object id.\n */\n hasObjectId: (id: ObjectId) => (ref: Ref<any>) => boolean;\n\n /**\n * @returns True if the schema is a reference schema.\n */\n isRefSchema: (schema: Schema.Schema<any, any>) => schema is RefSchema<any>;\n\n /**\n * @returns True if the schema AST is a reference schema.\n */\n isRefSchemaAST: (ast: SchemaAST.AST) => boolean;\n\n /**\n * Constructs a reference that points to the given object.\n */\n // TODO(burdon): Narrow to Obj.Unknown?\n make: <T extends AnyEntity>(object: T) => Ref<T>;\n\n /**\n * Constructs a reference that points to the object specified by the provided DXN.\n */\n fromDXN: (dxn: DXN) => Ref<any>;\n}\n\n/**\n * Schema builder for references.\n */\nexport const Ref: RefFn = <S extends Schema.Schema.Any>(schema: S): RefSchema<Schema.Schema.Type<S>> => {\n assertArgument(Schema.isSchema(schema), 'schema', 'Must call with an instance of effect-schema');\n const annotation = getTypeAnnotation(schema);\n if (annotation == null) {\n throw new Error('Reference target must be an ECHO schema.');\n }\n\n return createEchoReferenceSchema(getTypeIdentifierAnnotation(schema), annotation.typename, annotation.version);\n};\n\n/**\n * Represents materialized reference to a target.\n * This is the data type for the fields marked as ref.\n */\nexport interface Ref<T> extends Pipeable.Pipeable {\n /**\n * Target object DXN.\n */\n get dxn(): DXN;\n\n /**\n * Returns true if the reference has a target available (inlined or resolver set).\n */\n get isAvailable(): boolean;\n\n /**\n * @returns The reference target.\n * May return `undefined` if the object is not loaded in the working set.\n * Accessing this property, even if it returns `undefined` will trigger the object to be loaded to the working set.\n */\n get target(): T | undefined;\n\n /**\n * @returns Promise that will resolves with the target object.\n * Will load the object from disk if it is not present in the working set.\n * @throws If the object is not available locally.\n */\n load(): Promise<T>;\n\n /**\n * @returns Promise that will resolves with the target object or undefined if the object is not loaded locally.\n */\n\n tryLoad(): Promise<T | undefined>;\n\n /**\n * Do not inline the target object in the reference.\n * Makes .target unavailable unless the reference is connected to a database context.\n *\n * When serialized with toJSON, the difference is between:\n * `{ \"/\": \"dxn:...\" }`\n * and\n * `{ \"/\": \"dxn:...\", \"target\": { ... } }`\n *\n * Clones the reference object.\n */\n noInline(): Ref<T>;\n\n /**\n * Serializes the reference to a JSON object.\n * The serialization format is compatible with the IPLD-style encoded references.\n * When a reference has a saved target (i.e. the target or object holding the reference is not in the database),\n * the target is included in the serialized object.\n *\n * Examples:\n * `{ \"/\": \"dxn:...\" }`\n * `{ \"/\": \"dxn:...\", \"target\": { ... } }`\n */\n encode(): EncodedReference;\n\n [RefTypeId]: {\n _T: T;\n };\n}\n\nexport declare namespace Ref {\n /**\n * Target of the reference.\n */\n export type Target<R> = R extends Ref<infer U> ? U : never;\n}\n\nRef.isRef = (obj: any): obj is Ref<any> => {\n return obj && typeof obj === 'object' && RefTypeId in obj;\n};\n\nRef.hasObjectId = (id: ObjectId) => (ref: Ref<any>) => ref.dxn.isLocalObjectId() && ref.dxn.parts[1] === id;\n\nRef.isRefSchema = (schema: Schema.Schema<any, any>): schema is RefSchema<any> => {\n return Ref.isRefSchemaAST(schema.ast);\n};\n\nRef.isRefSchemaAST = (ast: SchemaAST.AST): boolean => {\n return SchemaAST.getAnnotation(ast, ReferenceAnnotationId).pipe(Option.isSome);\n};\n\nRef.make = <T extends AnyProperties>(obj: T): Ref<T> => {\n if (typeof obj !== 'object' || obj === null) {\n throw new TypeError('Expected: ECHO object.');\n }\n\n // TODO(dmaretskyi): Extract to `getObjectDXN` function.\n const id = obj.id;\n invariant(ObjectId.isValid(id), 'Invalid object ID');\n const dxn = DXN.fromLocalObjectId(id);\n return new RefImpl(dxn, obj);\n};\n\nRef.fromDXN = (dxn: DXN): Ref<any> => {\n assertArgument(dxn instanceof DXN, 'dxn', 'Expected DXN');\n return new RefImpl(dxn);\n};\n\n/**\n * `reference` field on the schema object.\n */\nexport type JsonSchemaReferenceInfo = {\n schema: { $ref: string };\n schemaVersion?: string;\n};\n\n/**\n * @internal\n */\n// TODO(burdon): Move to json schema and make private?\nexport const createEchoReferenceSchema = (\n echoId: string | undefined,\n typename: string | undefined,\n version: string | undefined,\n): Schema.SchemaClass<Ref<any>, EncodedReference> => {\n if (!echoId && !typename) {\n throw new TypeError('Either echoId or typename must be provided.');\n }\n\n const referenceInfo: JsonSchemaReferenceInfo = {\n schema: {\n // TODO(dmaretskyi): Include version?\n $ref: echoId ?? DXN.fromTypename(typename!).toString(),\n },\n schemaVersion: version,\n };\n\n // TODO(dmaretskyi): Add name and description.\n const refSchema = Schema.declare<Ref<any>, EncodedReference, []>(\n [],\n {\n encode: () => {\n return (value) =>\n Effect.gen(function* () {\n if (Ref.isRef(value)) {\n return EncodedReference.fromDXN((value as Ref<any>).dxn);\n } else if (EncodedReference.isEncodedReference(value)) {\n return value;\n }\n throw new Error('Invalid reference');\n });\n },\n decode: () => {\n return (value) =>\n Effect.gen(function* () {\n const dbService = yield* Effect.serviceOption(Database.Service);\n\n // TODO(dmaretskyi): This branch seems to be taken by Schema.is\n if (Ref.isRef(value)) {\n if (Option.isSome(dbService)) {\n return dbService.value.db.makeRef(value.dxn);\n } else {\n return value;\n }\n }\n\n if (!EncodedReference.isEncodedReference(value)) {\n return yield* Effect.fail(new ParseResult.Unexpected(value, 'reference'));\n }\n if (Option.isSome(dbService)) {\n return dbService.value.db.makeRef(EncodedReference.toDXN(value));\n } else {\n return Ref.fromDXN(EncodedReference.toDXN(value));\n }\n });\n },\n },\n {\n jsonSchema: {\n // TODO(dmaretskyi): We should remove `$id` and keep `$ref` with a fully qualified name.\n $id: JSON_SCHEMA_ECHO_REF_ID,\n $ref: JSON_SCHEMA_ECHO_REF_ID,\n reference: referenceInfo,\n },\n [ReferenceAnnotationId]: {\n typename: typename ?? '',\n version,\n },\n },\n );\n\n return refSchema;\n};\n\nconst getSchemaExpectedName = (ast: SchemaAST.Annotated): string | undefined => {\n return SchemaAST.getIdentifierAnnotation(ast).pipe(\n Option.orElse(() => SchemaAST.getTitleAnnotation(ast)),\n Option.orElse(() => SchemaAST.getDescriptionAnnotation(ast)),\n Option.getOrElse(() => undefined),\n );\n};\n\nexport interface RefResolver {\n /**\n * Resolve ref synchronously from the objects in the working set.\n *\n * @param dxn\n * @param load If true the resolver should attempt to load the object from disk.\n * @param onLoad Callback to call when the object is loaded.\n */\n resolveSync(dxn: DXN, load: boolean, onLoad?: () => void): AnyProperties | undefined;\n\n /**\n * Resolver ref asynchronously.\n */\n resolve(dxn: DXN): Promise<AnyProperties | undefined>;\n\n // TODO(dmaretskyi): Combine with `resolve`.\n resolveSchema(dxn: DXN): Promise<Schema.Schema.AnyNoContext | undefined>;\n}\n\nexport class RefImpl<T> implements Ref<T> {\n #dxn: DXN;\n #resolver?: RefResolver = undefined;\n #resolved = new Event<void>();\n\n /**\n * Target is set when the reference is created from a specific object.\n * In this case, the target might not be in the database.\n */\n #target: T | undefined = undefined;\n\n /**\n * Callback to issue a reactive notification when object is resolved.\n */\n #resolverCallback = () => {\n this.#resolved.emit();\n };\n\n constructor(dxn: DXN, target?: T) {\n this.#dxn = dxn;\n this.#target = target;\n }\n\n /**\n * @inheritdoc\n */\n get dxn(): DXN {\n return this.#dxn;\n }\n\n /**\n * @inheritdoc\n */\n get isAvailable(): boolean {\n return this.#target !== undefined || this.#resolver !== undefined;\n }\n\n /**\n * @inheritdoc\n */\n get target(): T | undefined {\n if (this.#target) {\n return this.#target;\n }\n\n invariant(this.#resolver, 'Resolver is not set');\n return this.#resolver.resolveSync(this.#dxn, true, this.#resolverCallback) as T | undefined;\n }\n\n /**\n * @inheritdoc\n */\n async load(): Promise<T> {\n if (this.#target) {\n return this.#target;\n }\n invariant(this.#resolver, 'Resolver is not set');\n const obj = await this.#resolver.resolve(this.#dxn);\n if (obj == null) {\n throw new Error('Object not found');\n }\n return obj as T;\n }\n\n /**\n * @inheritdoc\n */\n async tryLoad(): Promise<T | undefined> {\n if (this.#target) {\n return this.#target;\n }\n invariant(this.#resolver, 'Resolver is not set');\n return (await this.#resolver.resolve(this.#dxn)) as T | undefined;\n }\n\n /**\n * Do not inline the target object in the reference.\n * Makes .target unavailable unless the reference is connected to a database context.\n * Clones the reference object.\n */\n noInline(): RefImpl<T> {\n const ref = new RefImpl<T>(this.#dxn, undefined);\n ref.#resolver = this.#resolver;\n return ref;\n }\n\n encode(): EncodedReference {\n return {\n '/': this.#dxn.toString(),\n ...(this.#target ? { target: this.#target } : {}),\n };\n }\n\n /**\n * Serializes the reference to a JSON object.\n * The serialization format is compatible with the IPLD-style encoded references.\n * When a reference has a saved target (i.e. the target or object holding the reference is not in the database),\n * the target is included in the serialized object.\n */\n toJSON(): EncodedReference {\n return this.encode();\n }\n\n toString(): string {\n if (this.#target) {\n return `Ref(${this.#target.toString()})`;\n }\n\n return `Ref(${this.#dxn.toString()})`;\n }\n\n [inspectCustom]: CustomInspectFunction = (depth, options, inspect) => {\n return this.toString();\n };\n\n [RefTypeId] = refVariance;\n\n /**\n * Effect Hash trait. Required for MutableHashMap-based caches (e.g., Atom.family)\n * to deduplicate Ref instances that point to the same object.\n * ECHO proxies return new RefImpl instances on every property access,\n * so without this, each access would create a separate cache entry.\n */\n [Hash.symbol](): number {\n return Hash.hash(this.#dxn.toString());\n }\n\n /** Effect Equal trait. See {@link Hash.symbol} for rationale. */\n [Equal.symbol](that: Equal.Equal): boolean {\n return that instanceof RefImpl && this.#dxn.toString() === that.dxn.toString();\n }\n\n /**\n * Internal method to set the resolver.\n *\n * @internal\n */\n _setResolver(resolver: RefResolver): void {\n this.#resolver = resolver;\n }\n\n /**\n * @internal\n */\n _getSavedTarget(): T | undefined {\n return this.#target;\n }\n\n pipe() {\n // eslint-disable-next-line prefer-rest-params\n return Pipeable.pipeArguments(this, arguments);\n }\n}\n\n/**\n * Internal API for setting the reference resolver.\n */\nexport const setRefResolver = (ref: Ref<any>, resolver: RefResolver) => {\n invariant(ref instanceof RefImpl, 'Ref is not an instance of RefImpl');\n ref._setResolver(resolver);\n};\n\n/**\n * Internal API for getting the saved target on a reference.\n */\nexport const getRefSavedTarget = (ref: Ref<any>): AnyProperties | undefined => {\n invariant(ref instanceof RefImpl, 'Ref is not an instance of RefImpl');\n return ref._getSavedTarget();\n};\n\n// Used to validate reference target type.\nconst refVariance: Ref<any>[typeof RefTypeId] = {\n _T: null as any,\n};\n\nexport const refFromEncodedReference = (encodedReference: EncodedReference, resolver?: RefResolver): Ref<any> => {\n const dxn = DXN.parse(encodedReference['/']);\n const ref = new RefImpl(dxn);\n\n // TODO(dmaretskyi): Handle inline target in the encoded reference.\n\n if (resolver) {\n setRefResolver(ref, resolver);\n }\n return ref;\n};\n\nexport class StaticRefResolver implements RefResolver {\n public objects = new Map<ObjectId, AnyProperties>();\n public schemas = new Map<DXN.String, Schema.Schema.AnyNoContext>();\n\n addObject(obj: AnyProperties): this {\n this.objects.set(obj.id, obj);\n return this;\n }\n\n addSchema(schema: Schema.Schema.AnyNoContext): this {\n const dxn = getSchemaDXN(schema);\n invariant(dxn, 'Schema has no DXN');\n this.schemas.set(dxn.toString(), schema);\n return this;\n }\n\n resolveSync(dxn: DXN, _load: boolean, _onLoad?: () => void): AnyProperties | undefined {\n const id = dxn?.asEchoDXN()?.echoId;\n if (id == null) {\n return undefined;\n }\n\n return this.objects.get(id);\n }\n\n async resolve(dxn: DXN): Promise<AnyProperties | undefined> {\n const id = dxn?.asEchoDXN()?.echoId;\n if (id == null) {\n return undefined;\n }\n\n return this.objects.get(id);\n }\n\n async resolveSchema(dxn: DXN): Promise<Schema.Schema.AnyNoContext | undefined> {\n return this.schemas.get(dxn.toString());\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Equal", "Hash", "Option", "ParseResult", "Pipeable", "Schema", "SchemaAST", "Event", "inspectCustom", "EncodedReference", "assertArgument", "invariant", "DXN", "ObjectId", "JSON_SCHEMA_ECHO_REF_ID", "getSchemaReference", "property", "$id", "reference", "schema", "$ref", "typename", "DXN", "parse", "createSchemaReference", "fromTypename", "toString", "getReferenceAst", "ast", "_tag", "annotations", "ReferenceAnnotationId", "undefined", "version", "RefTypeId", "Symbol", "Ref", "assertArgument", "isSchema", "annotation", "getTypeAnnotation", "Error", "createEchoReferenceSchema", "getTypeIdentifierAnnotation", "isRef", "obj", "hasObjectId", "id", "ref", "dxn", "isLocalObjectId", "parts", "isRefSchema", "isRefSchemaAST", "getAnnotation", "pipe", "isSome", "make", "TypeError", "invariant", "ObjectId", "isValid", "fromLocalObjectId", "RefImpl", "fromDXN", "echoId", "referenceInfo", "schemaVersion", "refSchema", "declare", "encode", "value", "gen", "EncodedReference", "isEncodedReference", "decode", "dbService", "serviceOption", "Service", "db", "makeRef", "fail", "Unexpected", "toDXN", "jsonSchema", "RefImpl", "undefined", "Event", "emit", "dxn", "target", "isAvailable", "invariant", "resolveSync", "load", "obj", "resolve", "Error", "tryLoad", "noInline", "ref", "encode", "toString", "toJSON", "inspectCustom", "depth", "options", "inspect", "RefTypeId", "refVariance", "symbol", "hash", "that", "_setResolver", "resolver", "_getSavedTarget", "pipe", "pipeArguments", "arguments", "setRefResolver", "getRefSavedTarget", "_T", "refFromEncodedReference", "encodedReference", "DXN", "parse", "StaticRefResolver", "objects", "Map", "schemas", "addObject", "set", "id", "addSchema", "schema", "getSchemaDXN", "_load", "_onLoad", "asEchoDXN", "echoId", "get", "resolveSchema"]
7
+ }
@@ -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,20 +1,25 @@
1
- import "@dxos/node-std/globals";
2
1
  import {
3
2
  isRef
4
- } from "./chunk-XDIUHAAX.mjs";
3
+ } from "./chunk-46QNGNTY.mjs";
4
+ import {
5
+ getDXN,
6
+ prettyFilter
7
+ } from "./chunk-FW7UJX25.mjs";
5
8
  import {
6
9
  getTypeDXNFromSpecifier
7
- } from "./chunk-RK4Z4JUZ.mjs";
10
+ } from "./chunk-6URFBQJH.mjs";
8
11
  import {
9
12
  __export
10
- } from "./chunk-CGS2ULMK.mjs";
13
+ } from "./chunk-J5LGTIGS.mjs";
11
14
 
12
15
  // src/Filter.ts
13
16
  var Filter_exports = {};
14
17
  __export(Filter_exports, {
15
18
  and: () => and,
16
19
  between: () => between,
20
+ childOf: () => childOf,
17
21
  contains: () => contains,
22
+ created: () => created,
18
23
  eq: () => eq,
19
24
  everything: () => everything,
20
25
  foreignKeys: () => foreignKeys,
@@ -30,20 +35,23 @@ __export(Filter_exports, {
30
35
  not: () => not,
31
36
  nothing: () => nothing,
32
37
  or: () => or,
38
+ pretty: () => pretty,
33
39
  props: () => props,
34
40
  tag: () => tag,
35
41
  text: () => text,
36
42
  type: () => type,
37
43
  typeDXN: () => typeDXN,
38
- typename: () => typename
44
+ typename: () => typename,
45
+ updated: () => updated
39
46
  });
40
47
  import * as Match from "effect/Match";
41
48
  import * as Schema from "effect/Schema";
49
+ import * as SchemaAST from "effect/SchemaAST";
42
50
  import { assertArgument } from "@dxos/invariant";
43
51
  import { DXN, ObjectId } from "@dxos/keys";
44
52
  var FilterClass = class _FilterClass {
45
53
  ast;
46
- static variance = {};
54
+ static "variance" = {};
47
55
  constructor(ast) {
48
56
  this.ast = ast;
49
57
  }
@@ -85,6 +93,17 @@ var id = (...ids) => {
85
93
  });
86
94
  };
87
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
+ }
88
107
  const dxn = getTypeDXNFromSpecifier(schema);
89
108
  return new FilterClass({
90
109
  type: "object",
@@ -200,6 +219,48 @@ var between = (from, to) => {
200
219
  to
201
220
  });
202
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
+ };
203
264
  var not = (filter) => {
204
265
  return new FilterClass({
205
266
  type: "not",
@@ -257,6 +318,7 @@ var processPredicate = (predicate) => {
257
318
  Match.orElse((value2) => eq(value2).ast)
258
319
  );
259
320
  };
321
+ var pretty = (filter) => prettyFilter(filter.ast);
260
322
 
261
323
  export {
262
324
  is,
@@ -280,9 +342,13 @@ export {
280
342
  in$,
281
343
  contains,
282
344
  between,
345
+ updated,
346
+ created,
347
+ childOf,
283
348
  not,
284
349
  and,
285
350
  or,
351
+ pretty,
286
352
  Filter_exports
287
353
  };
288
- //# sourceMappingURL=chunk-ZAGAOZVY.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,6 +1,4 @@
1
- import "@dxos/node-std/globals";
2
-
3
- // src/internal/types/entity.ts
1
+ // src/internal/common/types/entity.ts
4
2
  import * as Schema from "effect/Schema";
5
3
  var KindId = "~@dxos/echo/Kind";
6
4
  var SchemaKindId = "~@dxos/echo/SchemaKind";
@@ -11,10 +9,10 @@ var EntityKind = /* @__PURE__ */ (function(EntityKind2) {
11
9
  return EntityKind2;
12
10
  })({});
13
11
  var EntityKindSchema = Schema.Enums(EntityKind);
14
- var ANY_OBJECT_TYPENAME = "dxos.org/schema/AnyObject";
12
+ var ANY_OBJECT_TYPENAME = "org.dxos.schema.anyObject";
15
13
  var ANY_OBJECT_VERSION = "0.0.0";
16
14
 
17
- // src/internal/annotations/util.ts
15
+ // src/internal/Annotation/util.ts
18
16
  import * as SchemaAST from "effect/SchemaAST";
19
17
  import { assertArgument } from "@dxos/invariant";
20
18
  import { DXN } from "@dxos/keys";
@@ -66,4 +64,4 @@ export {
66
64
  unwrapOptional,
67
65
  makeTypeJsonSchemaAnnotation
68
66
  };
69
- //# sourceMappingURL=chunk-YKTSSMDS.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
+ }
@@ -1,11 +1,11 @@
1
- import "@dxos/node-std/globals";
2
1
  import {
3
2
  __export
4
- } from "./chunk-CGS2ULMK.mjs";
3
+ } from "./chunk-J5LGTIGS.mjs";
5
4
 
6
5
  // src/Err.ts
7
6
  var Err_exports = {};
8
7
  __export(Err_exports, {
8
+ GetReactiveError: () => GetReactiveError,
9
9
  ObjectNotFoundError: () => ObjectNotFoundError,
10
10
  SchemaNotFoundError: () => SchemaNotFoundError
11
11
  });
@@ -30,10 +30,22 @@ var ObjectNotFoundError = class extends BaseError.extend("ObjectNotFoundError",
30
30
  });
31
31
  }
32
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
+ };
33
44
 
34
45
  export {
35
46
  SchemaNotFoundError,
36
47
  ObjectNotFoundError,
48
+ GetReactiveError,
37
49
  Err_exports
38
50
  };
39
- //# sourceMappingURL=chunk-CJ5YELTO.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
+ }
@@ -1,7 +1,6 @@
1
- import "@dxos/node-std/globals";
2
1
  import {
3
2
  __export
4
- } from "./chunk-CGS2ULMK.mjs";
3
+ } from "./chunk-J5LGTIGS.mjs";
5
4
 
6
5
  // src/Order.ts
7
6
  var Order_exports = {};
@@ -12,7 +11,7 @@ __export(Order_exports, {
12
11
  });
13
12
  var OrderClass = class _OrderClass {
14
13
  ast;
15
- static variance = {};
14
+ static "variance" = {};
16
15
  static is(value) {
17
16
  return typeof value === "object" && value !== null && "~Order" in value;
18
17
  }
@@ -40,4 +39,4 @@ export {
40
39
  rank,
41
40
  Order_exports
42
41
  };
43
- //# sourceMappingURL=chunk-JMKVF2YQ.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
+ }
@@ -1,39 +1,29 @@
1
- import "@dxos/node-std/globals";
2
1
  import {
3
2
  EchoObjectSchema,
4
3
  EchoRelationSchema,
5
4
  EchoSchema,
6
5
  PersistentSchema,
7
- Ref,
8
- isMutable,
9
- toEffectSchema,
10
- toJsonSchema
11
- } from "./chunk-BJPE6CIC.mjs";
6
+ isMutable
7
+ } from "./chunk-FW7UJX25.mjs";
12
8
  import {
13
9
  getSchemaDXN,
14
10
  getSchemaTypename,
15
11
  getSchemaVersion,
16
12
  getTypeAnnotation
17
- } from "./chunk-RK4Z4JUZ.mjs";
13
+ } from "./chunk-6URFBQJH.mjs";
18
14
  import {
19
- ANY_OBJECT_TYPENAME,
20
- ANY_OBJECT_VERSION,
21
15
  EntityKind,
22
16
  SchemaKindId
23
- } from "./chunk-YKTSSMDS.mjs";
17
+ } from "./chunk-TBKX6JQO.mjs";
24
18
  import {
25
19
  __export
26
- } from "./chunk-CGS2ULMK.mjs";
20
+ } from "./chunk-J5LGTIGS.mjs";
27
21
 
28
22
  // src/Type.ts
29
23
  var Type_exports = {};
30
24
  __export(Type_exports, {
31
- Entity: () => Entity,
32
- Obj: () => Obj,
33
25
  PersistentType: () => PersistentType,
34
- Ref: () => Ref2,
35
- Relation: () => Relation,
36
- RuntimeType: () => EchoSchema,
26
+ RuntimeType: () => RuntimeType,
37
27
  getDXN: () => getDXN,
38
28
  getMeta: () => getMeta,
39
29
  getTypename: () => getTypename,
@@ -42,52 +32,20 @@ __export(Type_exports, {
42
32
  isObjectSchema: () => isObjectSchema,
43
33
  isRelationSchema: () => isRelationSchema,
44
34
  object: () => object,
45
- relation: () => relation,
46
- toEffectSchema: () => toEffectSchema,
47
- toJsonSchema: () => toJsonSchema
35
+ relation: () => relation
48
36
  });
49
- import * as Schema from "effect/Schema";
50
37
  import { invariant } from "@dxos/invariant";
51
38
  var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
52
- var ObjSchema = Schema.Struct({
53
- id: Schema.String
54
- }).pipe(Schema.extend(Schema.Record({
55
- key: Schema.String,
56
- value: Schema.Unknown
57
- })), EchoObjectSchema({
58
- typename: ANY_OBJECT_TYPENAME,
59
- version: ANY_OBJECT_VERSION
60
- }));
61
- var Obj = Object.assign(ObjSchema, {
62
- [SchemaKindId]: ObjSchema[SchemaKindId]
63
- });
39
+ var RuntimeType = EchoSchema;
64
40
  var object = EchoObjectSchema;
65
41
  var PersistentType = PersistentSchema;
66
- var RelationSchema = Schema.Struct({
67
- id: Schema.String
68
- }).pipe(Schema.extend(Schema.Record({
69
- key: Schema.String,
70
- value: Schema.Unknown
71
- })), EchoRelationSchema({
72
- typename: "dxos.org/schema/AnyRelation",
73
- version: "0.0.0",
74
- source: ObjSchema,
75
- target: ObjSchema
76
- }));
77
- var Relation = Object.assign(RelationSchema, {
78
- [SchemaKindId]: RelationSchema[SchemaKindId]
79
- });
80
42
  var relation = EchoRelationSchema;
81
- (function(Entity2) {
82
- Entity2.Any = Schema.Union(Obj, Relation);
83
- })(Entity || (Entity = {}));
84
43
  var isObjectSchema = (schema) => {
85
44
  return schema[SchemaKindId] === EntityKind.Object;
86
45
  };
87
46
  var isRelationSchema = (schema) => {
88
47
  return schema[SchemaKindId] === EntityKind.Relation;
89
48
  };
90
- var Ref2 = Ref;
91
49
  var getDXN = (schema) => {
92
50
  return getSchemaDXN(schema);
93
51
  };
@@ -95,7 +53,7 @@ var getTypename = (schema) => {
95
53
  const typename = getSchemaTypename(schema);
96
54
  invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
97
55
  F: __dxlog_file,
98
- L: 463,
56
+ L: 230,
99
57
  S: void 0,
100
58
  A: [
101
59
  "typeof typename === 'string' && !typename.startsWith('dxn:')",
@@ -108,7 +66,7 @@ var getVersion = (schema) => {
108
66
  const version = getSchemaVersion(schema);
109
67
  invariant(typeof version === "string" && version.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
110
68
  F: __dxlog_file,
111
- L: 473,
69
+ L: 240,
112
70
  S: void 0,
113
71
  A: [
114
72
  "typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
@@ -121,23 +79,19 @@ var isMutable2 = isMutable;
121
79
  var getMeta = (schema) => {
122
80
  return getTypeAnnotation(schema);
123
81
  };
124
- var Entity;
125
82
 
126
83
  export {
127
- Obj,
84
+ RuntimeType,
128
85
  object,
129
86
  PersistentType,
130
- Relation,
131
87
  relation,
132
88
  isObjectSchema,
133
89
  isRelationSchema,
134
- Ref2 as Ref,
135
90
  getDXN,
136
91
  getTypename,
137
92
  getVersion,
138
93
  isMutable2 as isMutable,
139
94
  getMeta,
140
- Entity,
141
95
  Type_exports
142
96
  };
143
- //# sourceMappingURL=chunk-KQQGVHFN.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
+ }