@dxos/echo 0.8.4-main.7ace549 → 0.8.4-main.8360d9e660

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 (591) hide show
  1. package/README.md +3 -4
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/neutral/Entity.mjs +59 -0
  5. package/dist/lib/neutral/Err.mjs +12 -0
  6. package/dist/lib/neutral/Feed.mjs +47 -0
  7. package/dist/lib/neutral/Feed.mjs.map +7 -0
  8. package/dist/lib/neutral/Filter.mjs +64 -0
  9. package/dist/lib/neutral/Filter.mjs.map +7 -0
  10. package/dist/lib/neutral/Format.mjs +66 -0
  11. package/dist/lib/neutral/Format.mjs.map +7 -0
  12. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  13. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  14. package/dist/lib/neutral/Key.mjs +12 -0
  15. package/dist/lib/neutral/Key.mjs.map +7 -0
  16. package/dist/lib/neutral/Obj.mjs +110 -0
  17. package/dist/lib/neutral/Obj.mjs.map +7 -0
  18. package/dist/lib/neutral/Order.mjs +12 -0
  19. package/dist/lib/neutral/Order.mjs.map +7 -0
  20. package/dist/lib/neutral/Query.mjs +36 -0
  21. package/dist/lib/neutral/Query.mjs.map +7 -0
  22. package/dist/lib/neutral/QueryResult.mjs +2 -0
  23. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  24. package/dist/lib/neutral/Ref.mjs +24 -0
  25. package/dist/lib/neutral/Ref.mjs.map +7 -0
  26. package/dist/lib/neutral/Relation.mjs +93 -0
  27. package/dist/lib/neutral/Relation.mjs.map +7 -0
  28. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  29. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  30. package/dist/lib/neutral/Tag.mjs +28 -0
  31. package/dist/lib/neutral/Tag.mjs.map +7 -0
  32. package/dist/lib/neutral/Type.mjs +37 -0
  33. package/dist/lib/neutral/Type.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-43Y5DOS6.mjs +396 -0
  35. package/dist/lib/neutral/chunk-43Y5DOS6.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-4JRI2ZJI.mjs +313 -0
  37. package/dist/lib/neutral/chunk-4JRI2ZJI.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-6DNYDXCV.mjs +159 -0
  39. package/dist/lib/neutral/chunk-6DNYDXCV.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-6GPU7XC3.mjs +283 -0
  41. package/dist/lib/neutral/chunk-6GPU7XC3.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-6K2MVI2O.mjs +56 -0
  43. package/dist/lib/neutral/chunk-6K2MVI2O.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-7VNVH63N.mjs +106 -0
  45. package/dist/lib/neutral/chunk-7VNVH63N.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  47. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-B5OXLWZL.mjs +402 -0
  49. package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +7 -0
  51. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-BOZZPUXE.mjs +787 -0
  53. package/dist/lib/neutral/chunk-BOZZPUXE.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-C4JZK4J7.mjs +2712 -0
  55. package/dist/lib/neutral/chunk-C4JZK4J7.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-FXEG7EOK.mjs +45 -0
  57. package/dist/lib/neutral/chunk-FXEG7EOK.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-FZO7LQO7.mjs +73 -0
  59. package/dist/lib/neutral/chunk-FZO7LQO7.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  61. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-NEGC54NE.mjs +130 -0
  63. package/dist/lib/neutral/chunk-NEGC54NE.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-NXMFBIT5.mjs +299 -0
  65. package/dist/lib/neutral/chunk-NXMFBIT5.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-OENWMTE6.mjs +45 -0
  67. package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  69. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-ROAGDPV7.mjs +121 -0
  71. package/dist/lib/neutral/chunk-ROAGDPV7.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-SEMVAGBM.mjs +355 -0
  73. package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-UBEZSGXY.mjs +51 -0
  75. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-UI6MWK5W.mjs +42 -0
  77. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-UTBRYVQC.mjs +27 -0
  79. package/dist/lib/neutral/chunk-UTBRYVQC.mjs.map +7 -0
  80. package/dist/lib/neutral/chunk-W47JKR3X.mjs +298 -0
  81. package/dist/lib/neutral/chunk-W47JKR3X.mjs.map +7 -0
  82. package/dist/lib/neutral/chunk-WYOKA6AE.mjs +67 -0
  83. package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
  84. package/dist/lib/neutral/chunk-YMNSMKKW.mjs +97 -0
  85. package/dist/lib/neutral/chunk-YMNSMKKW.mjs.map +7 -0
  86. package/dist/lib/neutral/chunk-YWXWXIE5.mjs +34 -0
  87. package/dist/lib/neutral/chunk-YWXWXIE5.mjs.map +7 -0
  88. package/dist/lib/neutral/index.mjs +97 -0
  89. package/dist/lib/neutral/index.mjs.map +7 -0
  90. package/dist/lib/{node-esm → neutral}/internal/index.mjs +257 -123
  91. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  92. package/dist/lib/neutral/meta.json +1 -0
  93. package/dist/lib/{browser → neutral}/testing/index.mjs +97 -52
  94. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  95. package/dist/types/src/Annotation.d.ts +23 -1
  96. package/dist/types/src/Annotation.d.ts.map +1 -1
  97. package/dist/types/src/Collection.d.ts +16 -0
  98. package/dist/types/src/Collection.d.ts.map +1 -0
  99. package/dist/types/src/Database.d.ts +139 -87
  100. package/dist/types/src/Database.d.ts.map +1 -1
  101. package/dist/types/src/Dataset.d.ts +18 -0
  102. package/dist/types/src/Dataset.d.ts.map +1 -0
  103. package/dist/types/src/Entity.d.ts +141 -9
  104. package/dist/types/src/Entity.d.ts.map +1 -1
  105. package/dist/types/src/Entity.test.d.ts +2 -0
  106. package/dist/types/src/Entity.test.d.ts.map +1 -0
  107. package/dist/types/src/Err.d.ts +107 -0
  108. package/dist/types/src/Err.d.ts.map +1 -0
  109. package/dist/types/src/Feed.d.ts +165 -0
  110. package/dist/types/src/Feed.d.ts.map +1 -0
  111. package/dist/types/src/Filter.d.ts +120 -0
  112. package/dist/types/src/Filter.d.ts.map +1 -0
  113. package/dist/types/src/Format.d.ts +3 -3
  114. package/dist/types/src/Format.d.ts.map +1 -1
  115. package/dist/types/src/Hypergraph.d.ts +65 -0
  116. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  117. package/dist/types/src/JsonSchema.d.ts +11 -4
  118. package/dist/types/src/JsonSchema.d.ts.map +1 -1
  119. package/dist/types/src/Obj.d.ts +392 -85
  120. package/dist/types/src/Obj.d.ts.map +1 -1
  121. package/dist/types/src/Obj.test.d.ts +2 -0
  122. package/dist/types/src/Obj.test.d.ts.map +1 -0
  123. package/dist/types/src/Order.d.ts +16 -0
  124. package/dist/types/src/Order.d.ts.map +1 -0
  125. package/dist/types/src/Query.d.ts +202 -0
  126. package/dist/types/src/Query.d.ts.map +1 -0
  127. package/dist/types/src/Query.test.d.ts +2 -0
  128. package/dist/types/src/Query.test.d.ts.map +1 -0
  129. package/dist/types/src/QueryResult.d.ts +80 -0
  130. package/dist/types/src/QueryResult.d.ts.map +1 -0
  131. package/dist/types/src/Ref.d.ts +61 -11
  132. package/dist/types/src/Ref.d.ts.map +1 -1
  133. package/dist/types/src/Relation.d.ts +282 -18
  134. package/dist/types/src/Relation.d.ts.map +1 -1
  135. package/dist/types/src/Relation.test.d.ts +2 -0
  136. package/dist/types/src/Relation.test.d.ts.map +1 -0
  137. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  138. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  139. package/dist/types/src/Tag.d.ts +8 -7
  140. package/dist/types/src/Tag.d.ts.map +1 -1
  141. package/dist/types/src/Type.d.ts +124 -90
  142. package/dist/types/src/Type.d.ts.map +1 -1
  143. package/dist/types/src/Type.test.d.ts +2 -0
  144. package/dist/types/src/Type.test.d.ts.map +1 -0
  145. package/dist/types/src/View.d.ts +68 -0
  146. package/dist/types/src/View.d.ts.map +1 -0
  147. package/dist/types/src/hierarchy.test.d.ts +2 -0
  148. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  149. package/dist/types/src/index.d.ts +12 -2
  150. package/dist/types/src/index.d.ts.map +1 -1
  151. package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +83 -27
  152. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  153. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  154. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  155. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  156. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  157. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  158. package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +14 -1
  159. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  160. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  161. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  162. package/dist/types/src/internal/Entity/entity.d.ts +20 -0
  163. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  164. package/dist/types/src/internal/Entity/index.d.ts +8 -0
  165. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  166. package/dist/types/src/internal/{entities → Entity}/model.d.ts +14 -29
  167. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  168. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  169. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  170. package/dist/types/src/internal/Entity/relation.d.ts +35 -0
  171. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  172. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  173. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  174. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  175. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  176. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  177. package/dist/types/src/internal/{formats → Format}/format.d.ts +4 -4
  178. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  179. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  180. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  181. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  182. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  183. package/dist/types/src/internal/{formats → Format}/select.d.ts +6 -4
  184. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  185. package/dist/types/src/internal/{formats → Format}/string.d.ts +4 -0
  186. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  187. package/dist/types/src/internal/{formats → Format}/types.d.ts +7 -3
  188. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  189. package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
  190. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  191. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  192. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  193. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  194. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
  195. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  196. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +2 -1
  197. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  198. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  199. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  200. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  201. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  202. package/dist/types/src/internal/{object → Obj}/create-object.d.ts +3 -3
  203. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  204. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  205. package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
  206. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  207. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  208. package/dist/types/src/internal/{object → Obj}/index.d.ts +3 -0
  209. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  210. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  211. package/dist/types/src/internal/Obj/json-serializer.d.ts +44 -0
  212. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  213. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  214. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  215. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  216. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  217. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  218. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  219. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  220. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  221. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  222. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  223. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  224. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  225. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  226. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  227. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +4 -4
  228. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  229. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +31 -9
  230. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  231. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  232. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  233. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  234. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  235. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +20 -7
  236. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  237. package/dist/types/src/internal/Type/index.d.ts +4 -0
  238. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  239. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  240. package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
  241. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  242. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  243. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  244. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  245. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  246. package/dist/types/src/internal/common/index.d.ts +4 -0
  247. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  248. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  249. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  250. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  251. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  252. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  253. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  254. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  255. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  256. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  257. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  258. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  259. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  260. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  261. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  262. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  263. package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +2 -4
  264. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  265. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  266. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  267. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  268. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  269. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  270. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  271. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  272. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  273. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  274. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  275. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  276. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  277. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  278. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  279. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +16 -12
  280. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  281. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  282. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  283. package/dist/types/src/internal/{types → common/types}/base.d.ts +6 -16
  284. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  285. package/dist/types/src/internal/common/types/entity.d.ts +37 -0
  286. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  287. package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
  288. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  289. package/dist/types/src/internal/{types → common/types}/meta.d.ts +8 -15
  290. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  291. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  292. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  293. package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
  294. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  295. package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
  296. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  297. package/dist/types/src/internal/index.d.ts +9 -10
  298. package/dist/types/src/internal/index.d.ts.map +1 -1
  299. package/dist/types/src/testing/test-schema.d.ts +146 -179
  300. package/dist/types/src/testing/test-schema.d.ts.map +1 -1
  301. package/dist/types/src/testing/util.d.ts +6 -1
  302. package/dist/types/src/testing/util.d.ts.map +1 -1
  303. package/dist/types/tsconfig.tsbuildinfo +1 -1
  304. package/package.json +94 -61
  305. package/src/Annotation.ts +36 -5
  306. package/src/Collection.ts +37 -0
  307. package/src/Database.ts +250 -122
  308. package/src/Dataset.ts +26 -0
  309. package/src/Entity.test.ts +22 -0
  310. package/src/Entity.ts +197 -11
  311. package/src/Err.ts +40 -0
  312. package/src/Feed.ts +262 -0
  313. package/src/Filter.ts +391 -0
  314. package/src/Format.ts +3 -5
  315. package/src/Hypergraph.ts +79 -0
  316. package/src/JsonSchema.ts +14 -4
  317. package/src/Obj.test.ts +447 -0
  318. package/src/Obj.ts +528 -295
  319. package/src/Order.ts +46 -0
  320. package/src/Query.test.ts +632 -0
  321. package/src/Query.ts +522 -0
  322. package/src/QueryResult.ts +106 -0
  323. package/src/Ref.ts +79 -9
  324. package/src/Relation.test.ts +88 -0
  325. package/src/Relation.ts +439 -68
  326. package/src/SchemaRegistry.ts +106 -0
  327. package/src/Tag.ts +7 -6
  328. package/src/Type.test.ts +52 -0
  329. package/src/Type.ts +167 -166
  330. package/src/View.ts +107 -0
  331. package/src/hierarchy.test.ts +33 -0
  332. package/src/index.ts +13 -5
  333. package/src/internal/{annotations → Annotation}/annotations.test.ts +12 -12
  334. package/src/internal/{annotations → Annotation}/annotations.ts +172 -64
  335. package/src/internal/{annotations → Annotation}/index.ts +1 -0
  336. package/src/internal/Annotation/sorting.ts +52 -0
  337. package/src/internal/{annotations → Annotation}/util.ts +16 -1
  338. package/src/internal/Entity/api.ts +31 -0
  339. package/src/internal/{entities → Entity}/entity.ts +39 -20
  340. package/src/internal/{entities → Entity}/index.ts +3 -1
  341. package/src/internal/{entities → Entity}/model.ts +29 -49
  342. package/src/internal/{entities → Entity}/object.ts +23 -10
  343. package/src/internal/{entities → Entity}/relation.ts +42 -43
  344. package/src/internal/Entity/version.ts +97 -0
  345. package/src/internal/{formats → Format}/date.test.ts +1 -1
  346. package/src/internal/{formats → Format}/format.test.ts +2 -2
  347. package/src/internal/{formats → Format}/format.ts +7 -8
  348. package/src/internal/{formats → Format}/object.ts +2 -2
  349. package/src/internal/{formats → Format}/select.ts +6 -4
  350. package/src/internal/{formats → Format}/string.ts +5 -0
  351. package/src/internal/{formats → Format}/types.ts +12 -6
  352. package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
  353. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  354. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +34 -35
  355. package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +67 -65
  356. package/src/internal/{json-schema → JsonSchema}/json-schema.ts +18 -12
  357. package/src/internal/Obj/clone.ts +48 -0
  358. package/src/internal/{object → Obj}/common.ts +2 -2
  359. package/src/internal/{object → Obj}/create-object.test.ts +4 -4
  360. package/src/internal/{object → Obj}/create-object.ts +6 -6
  361. package/src/internal/{object → Obj}/deleted.ts +2 -2
  362. package/src/internal/{object → Obj}/index.ts +3 -0
  363. package/src/internal/{object → Obj}/inspect.ts +4 -4
  364. package/src/internal/{object → Obj}/json-serializer.test.ts +33 -6
  365. package/src/internal/{object → Obj}/json-serializer.ts +69 -84
  366. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  367. package/src/internal/Obj/schema-validator.ts +6 -0
  368. package/src/internal/Obj/set-value.test.ts +281 -0
  369. package/src/internal/Obj/set-value.ts +165 -0
  370. package/src/internal/Obj/snapshot.ts +105 -0
  371. package/src/internal/{object → Obj}/typed-object.test.ts +12 -12
  372. package/src/internal/Obj/typed-object.ts +30 -0
  373. package/src/internal/{ref → Ref}/ref-array.ts +4 -4
  374. package/src/internal/{ref → Ref}/ref.test.ts +5 -5
  375. package/src/internal/{ref → Ref}/ref.ts +90 -43
  376. package/src/internal/{schema → Type}/compose.test.ts +6 -6
  377. package/src/internal/{schema → Type}/compose.ts +14 -10
  378. package/src/internal/{schema → Type}/echo-schema.ts +55 -16
  379. package/src/internal/{schema → Type}/index.ts +0 -2
  380. package/src/internal/{schema → Type}/manipulation.ts +1 -1
  381. package/src/internal/Type/persistent-schema.ts +33 -0
  382. package/src/internal/{README.md → common/README.md} +36 -17
  383. package/src/internal/common/api/index.ts +15 -0
  384. package/src/internal/common/api/meta.ts +88 -0
  385. package/src/internal/common/index.ts +7 -0
  386. package/src/internal/common/proxy/change-context.ts +138 -0
  387. package/src/internal/common/proxy/change.test.ts +519 -0
  388. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  389. package/src/internal/common/proxy/errors.ts +42 -0
  390. package/src/internal/common/proxy/event-batch.ts +44 -0
  391. package/src/internal/{proxy → common/proxy}/handler.test.ts +32 -82
  392. package/src/internal/common/proxy/index.ts +17 -0
  393. package/src/internal/common/proxy/json-serializer.ts +90 -0
  394. package/src/internal/common/proxy/make-object.ts +106 -0
  395. package/src/internal/common/proxy/ownership.ts +253 -0
  396. package/src/internal/common/proxy/proxy-types.ts +23 -0
  397. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  398. package/src/internal/common/proxy/reactive-array.ts +71 -0
  399. package/src/internal/common/proxy/reactive.ts +69 -0
  400. package/src/internal/{object → common/proxy}/schema-validator.ts +3 -1
  401. package/src/internal/{proxy → common/proxy}/schema.test.ts +29 -21
  402. package/src/internal/common/proxy/symbols.ts +7 -0
  403. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  404. package/src/internal/common/proxy/typed-handler.ts +449 -0
  405. package/src/internal/common/proxy/typed-object.test.ts +116 -0
  406. package/src/internal/{types → common/types}/base.ts +7 -22
  407. package/src/internal/common/types/entity.ts +54 -0
  408. package/src/internal/{types → common/types}/index.ts +1 -0
  409. package/src/internal/{types → common/types}/meta.ts +17 -25
  410. package/src/internal/common/types/model-symbols.ts +69 -0
  411. package/src/internal/{types → common/types}/typename.ts +10 -0
  412. package/src/internal/{types → common/types}/version.ts +2 -3
  413. package/src/internal/index.ts +9 -31
  414. package/src/testing/api.test.ts +32 -6
  415. package/src/testing/test-schema.ts +68 -41
  416. package/src/testing/util.ts +22 -15
  417. package/dist/lib/browser/chunk-7GH6RXJ3.mjs +0 -3683
  418. package/dist/lib/browser/chunk-7GH6RXJ3.mjs.map +0 -7
  419. package/dist/lib/browser/chunk-E4UTVJNF.mjs +0 -1111
  420. package/dist/lib/browser/chunk-E4UTVJNF.mjs.map +0 -7
  421. package/dist/lib/browser/index.mjs +0 -45
  422. package/dist/lib/browser/internal/index.mjs +0 -336
  423. package/dist/lib/browser/meta.json +0 -1
  424. package/dist/lib/browser/testing/index.mjs.map +0 -7
  425. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs +0 -1111
  426. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs.map +0 -7
  427. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs +0 -3683
  428. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs.map +0 -7
  429. package/dist/lib/node-esm/index.mjs +0 -45
  430. package/dist/lib/node-esm/meta.json +0 -1
  431. package/dist/lib/node-esm/testing/index.mjs +0 -328
  432. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  433. package/dist/types/src/errors.d.ts +0 -68
  434. package/dist/types/src/errors.d.ts.map +0 -1
  435. package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
  436. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
  437. package/dist/types/src/internal/annotations/index.d.ts +0 -3
  438. package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
  439. package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
  440. package/dist/types/src/internal/entities/entity.d.ts +0 -10
  441. package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
  442. package/dist/types/src/internal/entities/expando.d.ts +0 -16
  443. package/dist/types/src/internal/entities/expando.d.ts.map +0 -1
  444. package/dist/types/src/internal/entities/index.d.ts +0 -6
  445. package/dist/types/src/internal/entities/index.d.ts.map +0 -1
  446. package/dist/types/src/internal/entities/model.d.ts.map +0 -1
  447. package/dist/types/src/internal/entities/object.d.ts +0 -11
  448. package/dist/types/src/internal/entities/object.d.ts.map +0 -1
  449. package/dist/types/src/internal/entities/relation.d.ts +0 -55
  450. package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
  451. package/dist/types/src/internal/entities/util.d.ts.map +0 -1
  452. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  453. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  454. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  455. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  456. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  457. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  458. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  459. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  460. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  461. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  462. package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
  463. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
  464. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  465. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  466. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  467. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
  468. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
  469. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  470. package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
  471. package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
  472. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  473. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  474. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  475. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  476. package/dist/types/src/internal/object/json-serializer.d.ts +0 -31
  477. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  478. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  479. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  480. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  481. package/dist/types/src/internal/object/typed-object.d.ts +0 -31
  482. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  483. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  484. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  485. package/dist/types/src/internal/proxy/index.d.ts +0 -3
  486. package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
  487. package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
  488. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  489. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  490. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  491. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  492. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  493. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  494. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  495. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  496. package/dist/types/src/internal/schema/compose.d.ts +0 -6
  497. package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
  498. package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
  499. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  500. package/dist/types/src/internal/schema/index.d.ts +0 -6
  501. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  502. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  503. package/dist/types/src/internal/schema/persistent-schema.d.ts +0 -18
  504. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
  505. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  506. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  507. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  508. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  509. package/dist/types/src/internal/types/base.d.ts.map +0 -1
  510. package/dist/types/src/internal/types/entity.d.ts +0 -12
  511. package/dist/types/src/internal/types/entity.d.ts.map +0 -1
  512. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  513. package/dist/types/src/internal/types/meta.d.ts.map +0 -1
  514. package/dist/types/src/internal/types/typename.d.ts.map +0 -1
  515. package/dist/types/src/internal/types/version.d.ts.map +0 -1
  516. package/dist/types/src/query/filter.d.ts +0 -167
  517. package/dist/types/src/query/filter.d.ts.map +0 -1
  518. package/dist/types/src/query/index.d.ts +0 -5
  519. package/dist/types/src/query/index.d.ts.map +0 -1
  520. package/dist/types/src/query/order.d.ts +0 -12
  521. package/dist/types/src/query/order.d.ts.map +0 -1
  522. package/dist/types/src/query/query.d.ts +0 -112
  523. package/dist/types/src/query/query.d.ts.map +0 -1
  524. package/dist/types/src/query/query.test.d.ts +0 -2
  525. package/dist/types/src/query/query.test.d.ts.map +0 -1
  526. package/dist/types/src/query/testing.d.ts +0 -51
  527. package/dist/types/src/query/testing.d.ts.map +0 -1
  528. package/dist/types/src/query/types.d.ts +0 -17
  529. package/dist/types/src/query/types.d.ts.map +0 -1
  530. package/dist/types/src/query/util.d.ts +0 -8
  531. package/dist/types/src/query/util.d.ts.map +0 -1
  532. package/src/errors.ts +0 -18
  533. package/src/internal/entities/expando.ts +0 -23
  534. package/src/internal/object/typed-object.ts +0 -94
  535. package/src/internal/proxy/index.ts +0 -6
  536. package/src/internal/proxy/make-object.ts +0 -113
  537. package/src/internal/proxy/typed-handler.test.ts +0 -102
  538. package/src/internal/proxy/typed-handler.ts +0 -233
  539. package/src/internal/proxy/typed-object.test.ts +0 -105
  540. package/src/internal/schema/persistent-schema.ts +0 -28
  541. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  542. package/src/internal/schema/snapshot.ts +0 -25
  543. package/src/internal/types/entity.ts +0 -23
  544. package/src/query/filter.ts +0 -455
  545. package/src/query/index.ts +0 -9
  546. package/src/query/order.ts +0 -34
  547. package/src/query/query.test.ts +0 -334
  548. package/src/query/query.ts +0 -303
  549. package/src/query/testing.ts +0 -64
  550. package/src/query/types.ts +0 -23
  551. package/src/query/util.ts +0 -25
  552. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  553. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  554. /package/dist/lib/{node-esm/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  555. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Err.mjs.map} +0 -0
  556. /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
  557. /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
  558. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  559. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  560. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  561. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  562. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  563. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  564. /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
  565. /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
  566. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  567. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
  568. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  569. /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
  570. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  571. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  572. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  573. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  574. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  575. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  576. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  577. /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
  578. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  579. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  580. /package/dist/types/src/internal/{object → common/proxy}/schema-validator.d.ts +0 -0
  581. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  582. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  583. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  584. /package/src/internal/{entities → Entity}/util.ts +0 -0
  585. /package/src/internal/{formats → Format}/date.ts +0 -0
  586. /package/src/internal/{formats → Format}/index.ts +0 -0
  587. /package/src/internal/{formats → Format}/number.ts +0 -0
  588. /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
  589. /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
  590. /package/src/internal/{object → Obj}/ids.ts +0 -0
  591. /package/src/internal/{ref → Ref}/index.ts +0 -0
@@ -9,16 +9,31 @@ import * as SchemaAST from 'effect/SchemaAST';
9
9
  import { assertArgument } from '@dxos/invariant';
10
10
  import { DXN } from '@dxos/keys';
11
11
 
12
- import { EntityKind } from '../types';
12
+ import { EntityKind } from '../common/types';
13
13
 
14
14
  export interface AnnotationHelper<T> {
15
+ /**
16
+ * Get the annotation value from the schema.
17
+ */
15
18
  get: (schema: Schema.Schema.Any) => Option.Option<T>;
19
+ /**
20
+ * Get the annotation value from the AST.
21
+ */
22
+ getFromAst: (ast: SchemaAST.AST) => Option.Option<T>;
23
+ /**
24
+ * Set the annotation value on the schema.
25
+ */
16
26
  set: (value: T) => <S extends Schema.Schema.Any>(schema: S) => S;
17
27
  }
18
28
 
29
+ /**
30
+ * Note: only for system annotations.
31
+ */
32
+ // TODO(dmaretskyi): Rename to createSystemAnnotationHelper.
19
33
  export const createAnnotationHelper = <T>(id: symbol): AnnotationHelper<T> => {
20
34
  return {
21
35
  get: (schema) => SchemaAST.getAnnotation(schema.ast, id),
36
+ getFromAst: (ast) => SchemaAST.getAnnotation(ast, id),
22
37
  set:
23
38
  (value) =>
24
39
  <S extends Schema.Schema.Any>(schema: S) =>
@@ -0,0 +1,31 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { invariant } from '@dxos/invariant';
6
+ import { type DXN } from '@dxos/keys';
7
+ import { assumeType } from '@dxos/util';
8
+
9
+ import type { AnyEntity } from '../common/types';
10
+
11
+ import { type InternalObjectProps, ObjectDatabaseId } from './model';
12
+ import { getObjectDXN } from './util';
13
+
14
+ /**
15
+ * Get the DXN of an entity.
16
+ * Accepts both reactive entities and snapshots.
17
+ */
18
+ export const getDXN = (entity: AnyEntity): DXN => {
19
+ const dxn = getObjectDXN(entity);
20
+ invariant(dxn != null, 'Invalid entity.');
21
+ return dxn;
22
+ };
23
+
24
+ /**
25
+ * Get the database the entity belongs to.
26
+ * Accepts both reactive entities and snapshots.
27
+ */
28
+ export const getDatabase = (entity: AnyEntity): any | undefined => {
29
+ assumeType<InternalObjectProps>(entity);
30
+ return entity[ObjectDatabaseId];
31
+ };
@@ -8,34 +8,45 @@ import type * as Types from 'effect/Types';
8
8
 
9
9
  import { type ToMutable } from '@dxos/util';
10
10
 
11
- import { type TypeMeta } from '../annotations';
12
- import { type HasId } from '../types';
11
+ import { type TypeMeta } from '../Annotation';
12
+ import { type AnyEntity, type EntityKind, SchemaKindId } from '../common/types';
13
13
 
14
14
  // TODO(burdon): Define Schema type for `typename` and use consistently for all DXN-like properties.
15
15
 
16
16
  // type RequiredKeys<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? never : K }[keyof T];
17
- export type EchoTypeSchemaProps<T, ExtraFields = {}> = Types.Simplify<HasId & ToMutable<T> & ExtraFields>;
17
+ export type EchoTypeSchemaProps<T, ExtraFields = {}> = Types.Simplify<AnyEntity & ToMutable<T> & ExtraFields>;
18
18
 
19
19
  // TODO(burdon): Rename EchoEntitySchema.
20
- export interface EchoTypeSchema<Self extends Schema.Schema.Any, ExtraFields = {}>
21
- extends TypeMeta,
20
+ export interface EchoTypeSchema<
21
+ Self extends Schema.Schema.Any,
22
+ ExtraFields = {},
23
+ K extends EntityKind = EntityKind,
24
+ Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
25
+ >
26
+ extends
27
+ TypeMeta,
22
28
  Schema.AnnotableClass<
23
- EchoTypeSchema<Self, ExtraFields>,
29
+ EchoTypeSchema<Self, ExtraFields, K, Fields>,
24
30
  EchoTypeSchemaProps<Schema.Schema.Type<Self>, ExtraFields>,
25
31
  EchoTypeSchemaProps<Schema.Schema.Encoded<Self>, ExtraFields>,
26
32
  Schema.Schema.Context<Self>
27
33
  > {
28
- // make(
29
- // props: RequiredKeys<Schema.TypeLiteral.Constructor<Fields, []>> extends never
30
- // ? void | Simplify<Schema.TypeLiteral.Constructor<Fields, []>>
31
- // : Simplify<Schema.TypeLiteral.Constructor<Fields, []>>,
32
- // options?: MakeOptions,
33
- // ): Simplify<Schema.TypeLiteral.Type<Fields, []>>;
34
+ /**
35
+ * Schema kind key that marks this as an ECHO schema and indicates its kind.
36
+ * Makes EchoTypeSchema satisfy the Type.AnyObj or Type.Relation.Any type.
37
+ */
38
+ readonly [SchemaKindId]: K;
39
+
40
+ /**
41
+ * The fields defined in the original struct schema.
42
+ * Allows accessing field definitions for introspection.
43
+ */
44
+ readonly fields: Fields;
34
45
 
35
46
  instanceOf(value: unknown): boolean;
36
47
  }
37
48
 
38
- // type MakeOptions =
49
+ // type MakeProps =
39
50
  // | boolean
40
51
  // | {
41
52
  // readonly disableValidation?: boolean;
@@ -63,18 +74,24 @@ export interface EchoTypeSchema<Self extends Schema.Schema.Any, ExtraFields = {}
63
74
  // return out;
64
75
  // };
65
76
 
66
- // const _getDisableValidationMakeOption = (options: MakeOptions | undefined): boolean =>
77
+ // const _getDisableValidationMakeOption = (options: MakeProps | undefined): boolean =>
67
78
  // Predicate.isBoolean(options) ? options : options?.disableValidation ?? false;
68
79
 
69
80
  /**
70
81
  * @internal
71
82
  */
72
- export const makeEchoTypeSchema = <Self extends Schema.Schema.Any>(
73
- // fields: Fields,
83
+ export const makeEchoTypeSchema = <
84
+ Self extends Schema.Schema.Any,
85
+ K extends EntityKind = EntityKind,
86
+ // TODO(wittjosiah): Can this be inferred from the schema?
87
+ Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
88
+ >(
89
+ fields: Fields,
74
90
  ast: SchemaAST.AST,
75
91
  typename: string,
76
92
  version: string,
77
- ): EchoTypeSchema<Self> => {
93
+ kind: K,
94
+ ): EchoTypeSchema<Self, {}, K, Fields> => {
78
95
  return class EchoObjectSchemaClass extends Schema.make<
79
96
  EchoTypeSchemaProps<Schema.Schema.Type<Self>>,
80
97
  EchoTypeSchemaProps<Schema.Schema.Encoded<Self>>,
@@ -82,19 +99,21 @@ export const makeEchoTypeSchema = <Self extends Schema.Schema.Any>(
82
99
  >(ast) {
83
100
  static readonly typename = typename;
84
101
  static readonly version = version;
102
+ static readonly [SchemaKindId] = kind;
103
+ static readonly fields = fields;
85
104
 
86
105
  static override annotations(
87
106
  annotations: Schema.Annotations.GenericSchema<EchoTypeSchemaProps<Schema.Schema.Type<Self>>>,
88
- ): EchoTypeSchema<Self> {
107
+ ): EchoTypeSchema<Self, {}, K, Fields> {
89
108
  const schema = Schema.make<EchoTypeSchemaProps<Schema.Schema.Type<Self>>>(ast).annotations(annotations);
90
- return makeEchoTypeSchema<Self>(/* fields, */ schema.ast, typename, version);
109
+ return makeEchoTypeSchema<Self, K, Fields>(fields, schema.ast, typename, version, kind);
91
110
  }
92
111
 
93
112
  // static make(
94
113
  // props: RequiredKeys<Schema.TypeLiteral.Constructor<Fields, []>> extends never
95
114
  // ? void | Simplify<Schema.TypeLiteral.Constructor<Fields, []>>
96
115
  // : Simplify<Schema.TypeLiteral.Constructor<Fields, []>>,
97
- // options?: MakeOptions,
116
+ // options?: MakeProps,
98
117
  // ): Simplify<Schema.TypeLiteral.Type<Fields, []>> {
99
118
  // const propsWithDefaults: any = _lazilyMergeDefaults(fields, { ...(props as any) });
100
119
  // return _getDisableValidationMakeOption(options)
@@ -2,8 +2,10 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- export * from './expando';
5
+ export * from './api';
6
+ export * from './entity';
6
7
  export * from './model'; // TODO(burdon): Rename.
7
8
  export * from './object';
8
9
  export * from './relation';
9
10
  export * from './util';
11
+ export * from './version';
@@ -9,75 +9,49 @@ import { invariant } from '@dxos/invariant';
9
9
  import { DXN, ObjectId } from '@dxos/keys';
10
10
  import { assumeType } from '@dxos/util';
11
11
 
12
+ import type * as Database from '../../Database';
12
13
  import {
13
14
  type ATTR_META,
15
+ type ATTR_PARENT,
14
16
  type ATTR_TYPE,
17
+ ATTR_DELETED,
18
+ ATTR_RELATION_SOURCE,
19
+ ATTR_RELATION_TARGET,
20
+ ATTR_SELF_DXN,
15
21
  EntityKind,
16
22
  KindId,
17
23
  type MetaId,
24
+ ObjectDatabaseId,
25
+ ObjectDeletedId,
18
26
  type ObjectMeta,
19
- type SchemaId,
20
- TypeId,
21
- type Version,
22
- } from '../types';
23
-
24
- import {
25
- type ATTR_RELATION_SOURCE,
26
- type ATTR_RELATION_TARGET,
27
+ ObjectVersionId,
28
+ type ParentId,
27
29
  RelationSourceDXNId,
28
30
  RelationSourceId,
29
31
  RelationTargetDXNId,
30
32
  RelationTargetId,
31
- } from './relation';
32
-
33
- //
34
- // Defines the internal model of the echo object.
35
- //
36
-
37
- /**
38
- * Property name for self DXN when object is serialized to JSON.
39
- */
40
- export const ATTR_SELF_DXN = '@dxn';
41
-
42
- /**
43
- * DXN to the object itself.
44
- */
45
- export const SelfDXNId = Symbol.for('@dxos/echo/DXN');
46
-
47
- /**
48
- * Property name for deleted when object is serialized to JSON.
49
- */
50
- export const ATTR_DELETED = '@deleted';
51
-
52
- /**
53
- * Deletion marker.
54
- */
55
- export const ObjectDeletedId = Symbol.for('@dxos/echo/Deleted');
33
+ type SchemaId,
34
+ SelfDXNId,
35
+ TypeId,
36
+ type Version,
37
+ } from '../common/types';
56
38
 
57
- /**
58
- * Object version accessor symbol.
59
- */
60
- export const ObjectVersionId: unique symbol = Symbol.for('@dxos/echo/Version');
39
+ export { ATTR_DELETED, ATTR_SELF_DXN, ObjectDatabaseId, ObjectDeletedId, ObjectVersionId, SelfDXNId };
61
40
 
62
41
  /**
63
42
  * Internal runtime representation of an object.
64
43
  * The fields are accessed through getter functions.
65
44
  */
45
+ // NOTE: Each symbol has a jsdoc describing its purpose.
66
46
  export interface InternalObjectProps {
67
- id: ObjectId;
68
-
69
- // Echo supports untyped objects O_O.
70
- readonly [TypeId]?: DXN;
71
-
72
- //
73
- readonly [SelfDXNId]?: DXN;
74
-
75
- /**
76
- * Returns the schema for the object.
77
- */
78
- readonly [SchemaId]?: Schema.Schema.AnyNoContext;
47
+ readonly id: ObjectId;
48
+ readonly [SelfDXNId]: DXN;
79
49
  readonly [KindId]: EntityKind;
50
+ readonly [SchemaId]: Schema.Schema.AnyNoContext;
51
+ readonly [TypeId]: DXN;
80
52
  readonly [MetaId]?: ObjectMeta;
53
+ [ParentId]?: InternalObjectProps;
54
+ readonly [ObjectDatabaseId]?: Database.Database;
81
55
  readonly [ObjectDeletedId]?: boolean;
82
56
  readonly [ObjectVersionId]?: Version;
83
57
  readonly [RelationSourceDXNId]?: DXN;
@@ -101,10 +75,16 @@ export interface ObjectJSON {
101
75
  id: string;
102
76
  [ATTR_TYPE]: DXN.String;
103
77
  [ATTR_SELF_DXN]?: DXN.String;
78
+ [ATTR_PARENT]?: string; // Encoded reference
104
79
  [ATTR_DELETED]?: boolean;
105
80
  [ATTR_META]?: ObjectMetaJSON;
106
81
  [ATTR_RELATION_SOURCE]?: DXN.String;
107
82
  [ATTR_RELATION_TARGET]?: DXN.String;
83
+
84
+ /**
85
+ * Application-specific properties.
86
+ */
87
+ [key: string]: unknown;
108
88
  }
109
89
 
110
90
  /**
@@ -7,27 +7,40 @@ import * as SchemaAST from 'effect/SchemaAST';
7
7
 
8
8
  import { invariant } from '@dxos/invariant';
9
9
 
10
- import { type TypeAnnotation, TypeAnnotationId, type TypeMeta, makeTypeJsonSchemaAnnotation } from '../annotations';
11
- import { EntityKind } from '../types';
10
+ import { type TypeAnnotation, TypeAnnotationId, type TypeMeta, makeTypeJsonSchemaAnnotation } from '../Annotation';
11
+ import { EntityKind } from '../common/types';
12
12
 
13
13
  import { type EchoTypeSchema, makeEchoTypeSchema } from './entity';
14
14
 
15
+ /**
16
+ * Object schema type with kind marker.
17
+ */
18
+ export type EchoObjectSchema<
19
+ Self extends Schema.Schema.Any,
20
+ Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
21
+ > = EchoTypeSchema<Self, {}, EntityKind.Object, Fields>;
22
+
15
23
  /**
16
24
  * Schema for Obj entity types.
17
25
  * Pipeable function to add ECHO object annotations to a schema.
18
26
  */
19
27
  export const EchoObjectSchema: {
20
- // TODO(burdon): Tighten Self type to Schema.TypeLiteral or Schema.Struct to facilitate definition of `make` method.
21
- // (meta: TypeMeta): <Self extends Schema.Struct<Fields>, Fields extends Schema.Struct.Fields>(self: Self) => EchoObjectSchema<Self, Fields>;
22
- (meta: TypeMeta): <Self extends Schema.Schema.Any>(self: Self) => EchoTypeSchema<Self>;
28
+ (
29
+ meta: TypeMeta,
30
+ ): <Self extends Schema.Schema.Any, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>(
31
+ self: Self & { fields?: Fields },
32
+ ) => EchoObjectSchema<Self, Fields>;
23
33
  } = ({ typename, version }) => {
24
- return <Self extends Schema.Schema.Any>(self: Self): EchoTypeSchema<Self> => {
34
+ return <Self extends Schema.Schema.Any, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>(
35
+ self: Self & { fields?: Fields },
36
+ ): EchoObjectSchema<Self, Fields> => {
25
37
  invariant(typeof TypeAnnotationId === 'symbol', 'Sanity.');
26
38
  invariant(SchemaAST.isTypeLiteral(self.ast), 'Schema must be a TypeLiteral.');
27
39
 
28
- // TODO(dmaretskyi): Does `Schema.mutable` work for deep mutability here?
29
- // TODO(dmaretskyi): Do not do mutable here.
30
- const schemaWithId = Schema.extend(Schema.mutable(self), Schema.Struct({ id: Schema.String }));
40
+ // Extract fields from the schema if available (Struct schemas have .fields).
41
+ const fields = ((self as any).fields ?? {}) as Fields;
42
+
43
+ const schemaWithId = Schema.extend(self, Schema.Struct({ id: Schema.String }));
31
44
  const ast = SchemaAST.annotations(schemaWithId.ast, {
32
45
  // TODO(dmaretskyi): `extend` kills the annotations.
33
46
  ...self.ast.annotations,
@@ -40,6 +53,6 @@ export const EchoObjectSchema: {
40
53
  }),
41
54
  });
42
55
 
43
- return makeEchoTypeSchema<Self>(/* self.fields, */ ast, typename, version);
56
+ return makeEchoTypeSchema<Self, EntityKind.Object, Fields>(fields, ast, typename, version, EntityKind.Object);
44
57
  };
45
58
  };
@@ -17,45 +17,28 @@ import {
17
17
  getSchemaTypename,
18
18
  getTypeIdentifierAnnotation,
19
19
  makeTypeJsonSchemaAnnotation,
20
- } from '../annotations';
21
- import { EntityKind } from '../types';
20
+ } from '../Annotation';
21
+ import {
22
+ ATTR_RELATION_SOURCE,
23
+ ATTR_RELATION_TARGET,
24
+ EntityKind,
25
+ RelationSourceDXNId,
26
+ RelationSourceId,
27
+ RelationTargetDXNId,
28
+ RelationTargetId,
29
+ } from '../common/types';
30
+
31
+ export {
32
+ ATTR_RELATION_SOURCE,
33
+ ATTR_RELATION_TARGET,
34
+ RelationSourceDXNId,
35
+ RelationSourceId,
36
+ RelationTargetDXNId,
37
+ RelationTargetId,
38
+ };
22
39
 
23
40
  import { type EchoTypeSchema, makeEchoTypeSchema } from './entity';
24
41
 
25
- /**
26
- * Property name for relation source when object is serialized to JSON.
27
- */
28
- export const ATTR_RELATION_SOURCE = '@relationSource';
29
-
30
- /**
31
- * Used to access relation source ref on live ECHO objects.
32
- * Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
33
- */
34
- export const RelationSourceId: unique symbol = Symbol.for('@dxos/echo/RelationSource');
35
-
36
- /**
37
- * Used to access relation source ref on live ECHO objects.
38
- * Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
39
- */
40
- export const RelationSourceDXNId: unique symbol = Symbol.for('@dxos/echo/RelationSourceDXN');
41
-
42
- /**
43
- * Property name for relation target when object is serialized to JSON.
44
- */
45
- export const ATTR_RELATION_TARGET = '@relationTarget';
46
-
47
- /**
48
- * Used to access relation target ref on live ECHO objects.
49
- * Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
50
- */
51
- export const RelationTargetId: unique symbol = Symbol.for('@dxos/echo/RelationTarget');
52
-
53
- /**
54
- * Used to access relation target ref on live ECHO objects.
55
- * Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
56
- */
57
- export const RelationTargetDXNId: unique symbol = Symbol.for('@dxos/echo/RelationTargetDXN');
58
-
59
42
  /**
60
43
  * Source and target props on relations.
61
44
  */
@@ -83,6 +66,21 @@ export type EchoRelationSchemaOptions<
83
66
  target: TTarget;
84
67
  };
85
68
 
69
+ /**
70
+ * Relation schema type with kind marker.
71
+ */
72
+ export type EchoRelationSchema<
73
+ Self extends Schema.Schema.Any,
74
+ Source extends Schema.Schema.AnyNoContext,
75
+ Target extends Schema.Schema.AnyNoContext,
76
+ Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
77
+ > = EchoTypeSchema<
78
+ Self,
79
+ RelationSourceTargetRefs<Schema.Schema.Type<Source>, Schema.Schema.Type<Target>>,
80
+ EntityKind.Relation,
81
+ Fields
82
+ >;
83
+
86
84
  /**
87
85
  * Schema for Relation entity types.
88
86
  */
@@ -106,14 +104,15 @@ export const EchoRelationSchema = <
106
104
  raise(new Error('Target schema must be an echo object schema.'));
107
105
  }
108
106
 
109
- return <Self extends Schema.Schema.Any>(
110
- self: Self,
111
- ): EchoTypeSchema<Self, RelationSourceTargetRefs<Schema.Schema.Type<Source>, Schema.Schema.Type<Target>>> => {
107
+ return <Self extends Schema.Schema.Any, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>(
108
+ self: Self & { fields?: Fields },
109
+ ): EchoRelationSchema<Self, Source, Target, Fields> => {
112
110
  invariant(SchemaAST.isTypeLiteral(self.ast), 'Schema must be a TypeLiteral.');
113
111
 
114
- // TODO(dmaretskyi): Does `Schema.mutable` work for deep mutability here?
115
- // TODO(dmaretskyi): Do not do mutable here.
116
- const schemaWithId = Schema.extend(Schema.mutable(self), Schema.Struct({ id: Schema.String }));
112
+ // Extract fields from the schema if available (Struct schemas have .fields).
113
+ const fields = ((self as any).fields ?? {}) as Fields;
114
+
115
+ const schemaWithId = Schema.extend(self, Schema.Struct({ id: Schema.String }));
117
116
  const ast = SchemaAST.annotations(schemaWithId.ast, {
118
117
  // TODO(dmaretskyi): `extend` kills the annotations.
119
118
  ...self.ast.annotations,
@@ -135,7 +134,7 @@ export const EchoRelationSchema = <
135
134
  }),
136
135
  });
137
136
 
138
- return makeEchoTypeSchema<Self>(/* self.fields, */ ast, typename, version);
137
+ return makeEchoTypeSchema<Self, EntityKind.Relation, Fields>(fields, ast, typename, version, EntityKind.Relation);
139
138
  };
140
139
  };
141
140
 
@@ -0,0 +1,97 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { assertArgument } from '@dxos/invariant';
6
+
7
+ import { type AnyEntity, VersionTypeId } from '../common/types';
8
+
9
+ import { ObjectVersionId } from './model';
10
+
11
+ /**
12
+ * Represent entity version.
13
+ * May be backed by Automerge.
14
+ * Entities with no history are not versioned.
15
+ * Named EntityVersion to avoid conflict with types/version.ts.
16
+ */
17
+ export interface EntityVersion {
18
+ [VersionTypeId]: {};
19
+
20
+ /**
21
+ * Whether the entity is versioned.
22
+ */
23
+ versioned: boolean;
24
+
25
+ /**
26
+ * Automerge heads.
27
+ */
28
+ automergeHeads?: string[];
29
+ }
30
+
31
+ const unversioned: EntityVersion = {
32
+ [VersionTypeId]: {},
33
+ versioned: false,
34
+ };
35
+
36
+ /**
37
+ * Checks that `obj` is a version object.
38
+ */
39
+ export const isVersion = (entity: unknown): entity is EntityVersion => {
40
+ return entity != null && typeof entity === 'object' && VersionTypeId in entity;
41
+ };
42
+
43
+ /**
44
+ * Returns the version of an entity.
45
+ * Accepts both reactive entities and snapshots.
46
+ */
47
+ export const version = (entity: AnyEntity): EntityVersion => {
48
+ const ver = (entity as any)[ObjectVersionId];
49
+ if (ver === undefined) {
50
+ return unversioned;
51
+ }
52
+ return ver;
53
+ };
54
+
55
+ /**
56
+ * Checks that `version` is a valid version object.
57
+ */
58
+ export const versionValid = (ver: EntityVersion): boolean => {
59
+ assertArgument(isVersion(ver), 'version', 'Invalid version object');
60
+ return !!ver.versioned;
61
+ };
62
+
63
+ export type VersionCompareResult = 'unversioned' | 'equal' | 'different';
64
+
65
+ /**
66
+ * Compares two versions.
67
+ * @param version1
68
+ * @param version2
69
+ * @returns 'unversioned' if either entity is unversioned, 'equal' if the versions are equal, 'different' if the versions are different.
70
+ */
71
+ export const compareVersions = (version1: EntityVersion, version2: EntityVersion): VersionCompareResult => {
72
+ assertArgument(isVersion(version1), 'version1', 'Invalid version object');
73
+ assertArgument(isVersion(version2), 'version2', 'Invalid version object');
74
+
75
+ if (!versionValid(version1) || !versionValid(version2)) {
76
+ return 'unversioned';
77
+ }
78
+
79
+ if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
80
+ return 'different';
81
+ }
82
+ if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
83
+ return 'different';
84
+ }
85
+
86
+ return 'equal';
87
+ };
88
+
89
+ export const encodeVersion = (ver: EntityVersion): string => {
90
+ return JSON.stringify(ver);
91
+ };
92
+
93
+ export const decodeVersion = (ver: string): EntityVersion => {
94
+ const parsed = JSON.parse(ver);
95
+ parsed[VersionTypeId] = {};
96
+ return parsed;
97
+ };
@@ -7,7 +7,7 @@ import { describe, expect, test } from 'vitest';
7
7
 
8
8
  import { log } from '@dxos/log';
9
9
 
10
- import { toJsonSchema } from '../json-schema';
10
+ import { toJsonSchema } from '../JsonSchema';
11
11
 
12
12
  import {
13
13
  DateOnly,
@@ -5,7 +5,7 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
  import { describe, test } from 'vitest';
7
7
 
8
- import { toJsonSchema } from '../json-schema';
8
+ import { toJsonSchema } from '../JsonSchema';
9
9
 
10
10
  import { Format } from './format';
11
11
  import { TypeEnum, TypeFormat, getTypeEnum } from './types';
@@ -20,7 +20,7 @@ describe('formats', () => {
20
20
  birthday: Schema.optional(Format.Date),
21
21
  started: Schema.optional(Format.DateTime),
22
22
  active: Schema.optional(Schema.Boolean),
23
- }).pipe(Schema.mutable);
23
+ });
24
24
 
25
25
  type TestType = Schema.Schema.Type<typeof TestSchema>;
26
26
 
@@ -10,11 +10,10 @@ import * as DateUtil from './date';
10
10
  import * as NumberUtil from './number';
11
11
  import * as ObjectUtil from './object';
12
12
  import * as StringUtil from './string';
13
- import { TypeFormat as TypeFormatEnum } from './types';
13
+ import { TypeFormat as TypeFormat$ } from './types';
14
14
 
15
- // TODO(burdon): Consider factoring out to separate `@dxos/json-schema`
16
15
  // TODO(burdon): Media encoding.
17
- // - https://json-schema.org/understanding-json-schema/reference/non_json_data
16
+ // - https://json-schema.org/understanding-json-schema/reference/non_json_data
18
17
 
19
18
  /**
20
19
  * Formats.
@@ -23,9 +22,9 @@ import { TypeFormat as TypeFormatEnum } from './types';
23
22
  */
24
23
  // TODO(burdon): Add fields for `examples`, `message`, etc.
25
24
  export namespace Format {
26
- export import TypeFormat = TypeFormatEnum;
25
+ export import TypeFormat = TypeFormat$;
27
26
 
28
- // Strings
27
+ // String
29
28
  export const DXN = Keys.DXN.Schema;
30
29
  export const Email = StringUtil.Email;
31
30
  export const Formula = StringUtil.Formula;
@@ -44,12 +43,12 @@ export namespace Format {
44
43
  export const Timestamp = NumberUtil.Timestamp;
45
44
 
46
45
  // Dates and times
47
- export const DateTime = DateUtil.DateTime;
48
46
  export const Date = DateUtil.DateOnly;
49
- export const Time = DateUtil.TimeOnly;
47
+ export const DateTime = DateUtil.DateTime;
50
48
  export const Duration = DateUtil.Duration;
49
+ export const Time = DateUtil.TimeOnly;
51
50
 
52
51
  // Objects
53
52
  export const GeoPoint = ObjectUtil.GeoPoint;
54
- export type GeoPoint = ObjectUtil.GeoPoint;
53
+ export type GeoPoint = ObjectUtil.GeoPoint; // TODO(burdon): Export types.
55
54
  }
@@ -21,8 +21,8 @@ import { FormatAnnotation, TypeFormat } from './types';
21
21
  * Note: optional third element for altitude.
22
22
  */
23
23
  export const GeoPoint = Schema.Tuple(
24
- Schema.Number.pipe(Schema.annotations({ title: 'Longitude' }), Schema.clamp(-180, 180), Schema.multipleOf(0.00001)),
25
- Schema.Number.pipe(Schema.annotations({ title: 'Latitude' }), Schema.clamp(-90, 90), Schema.multipleOf(0.00001)),
24
+ Schema.Number.pipe(Schema.annotations({ title: 'Longitude' }), Schema.clamp(-180, 180), Schema.multipleOf(0.000001)),
25
+ Schema.Number.pipe(Schema.annotations({ title: 'Latitude' }), Schema.clamp(-90, 90), Schema.multipleOf(0.000001)),
26
26
  Schema.optionalElement(Schema.Number).annotations({
27
27
  title: 'Height ASL (m)',
28
28
  }),