@dxos/echo 0.8.4-main.c4373fc → 0.8.4-main.d05673bc65

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 (659) hide show
  1. package/README.md +3 -4
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/neutral/Entity.mjs +59 -0
  5. package/dist/lib/neutral/Err.mjs +12 -0
  6. package/dist/lib/neutral/Feed.mjs +46 -0
  7. package/dist/lib/neutral/Filter.mjs +64 -0
  8. package/dist/lib/neutral/Format.mjs +66 -0
  9. package/dist/lib/neutral/Format.mjs.map +7 -0
  10. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  11. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  12. package/dist/lib/neutral/Key.mjs +12 -0
  13. package/dist/lib/neutral/Key.mjs.map +7 -0
  14. package/dist/lib/neutral/Obj.mjs +110 -0
  15. package/dist/lib/neutral/Obj.mjs.map +7 -0
  16. package/dist/lib/neutral/Order.mjs +12 -0
  17. package/dist/lib/neutral/Order.mjs.map +7 -0
  18. package/dist/lib/neutral/Query.mjs +35 -0
  19. package/dist/lib/neutral/Query.mjs.map +7 -0
  20. package/dist/lib/neutral/QueryResult.mjs +2 -0
  21. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  22. package/dist/lib/neutral/Ref.mjs +24 -0
  23. package/dist/lib/neutral/Ref.mjs.map +7 -0
  24. package/dist/lib/neutral/Relation.mjs +93 -0
  25. package/dist/lib/neutral/Relation.mjs.map +7 -0
  26. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  27. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  28. package/dist/lib/neutral/Tag.mjs +28 -0
  29. package/dist/lib/neutral/Tag.mjs.map +7 -0
  30. package/dist/lib/neutral/Type.mjs +37 -0
  31. package/dist/lib/neutral/Type.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-43Y5DOS6.mjs +396 -0
  33. package/dist/lib/neutral/chunk-43Y5DOS6.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-724GQYEN.mjs +56 -0
  35. package/dist/lib/neutral/chunk-724GQYEN.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  37. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-B5OXLWZL.mjs +402 -0
  39. package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +7 -0
  41. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-BOZZPUXE.mjs +787 -0
  43. package/dist/lib/neutral/chunk-BOZZPUXE.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-CIRHIEMW.mjs +298 -0
  45. package/dist/lib/neutral/chunk-CIRHIEMW.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-DYDJBZEG.mjs +102 -0
  47. package/dist/lib/neutral/chunk-DYDJBZEG.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-FXEG7EOK.mjs +45 -0
  49. package/dist/lib/neutral/chunk-FXEG7EOK.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-FZO7LQO7.mjs +73 -0
  51. package/dist/lib/neutral/chunk-FZO7LQO7.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  53. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-KTAWP7GI.mjs +283 -0
  55. package/dist/lib/neutral/chunk-KTAWP7GI.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-NEGC54NE.mjs +130 -0
  57. package/dist/lib/neutral/chunk-NEGC54NE.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-NQRLRYJM.mjs +313 -0
  59. package/dist/lib/neutral/chunk-NQRLRYJM.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-NXMFBIT5.mjs +299 -0
  61. package/dist/lib/neutral/chunk-NXMFBIT5.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-OENWMTE6.mjs +45 -0
  63. package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  65. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-RMLF7JOZ.mjs +97 -0
  67. package/dist/lib/neutral/chunk-RMLF7JOZ.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-SEMVAGBM.mjs +355 -0
  69. package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-TQQZLKB7.mjs +2712 -0
  71. package/dist/lib/neutral/chunk-TQQZLKB7.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-UBEZSGXY.mjs +51 -0
  73. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-UFDK26FO.mjs +121 -0
  75. package/dist/lib/neutral/chunk-UFDK26FO.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-UI6MWK5W.mjs +42 -0
  77. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-UTBRYVQC.mjs +27 -0
  79. package/dist/lib/neutral/chunk-UTBRYVQC.mjs.map +7 -0
  80. package/dist/lib/neutral/chunk-VA2F47ZC.mjs +152 -0
  81. package/dist/lib/neutral/chunk-VA2F47ZC.mjs.map +7 -0
  82. package/dist/lib/neutral/chunk-WYOKA6AE.mjs +67 -0
  83. package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
  84. package/dist/lib/neutral/chunk-YWXWXIE5.mjs +34 -0
  85. package/dist/lib/neutral/chunk-YWXWXIE5.mjs.map +7 -0
  86. package/dist/lib/neutral/index.mjs +97 -0
  87. package/dist/lib/neutral/index.mjs.map +7 -0
  88. package/dist/lib/{node-esm → neutral}/internal/index.mjs +292 -148
  89. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  90. package/dist/lib/neutral/meta.json +1 -0
  91. package/dist/lib/neutral/testing/index.mjs +373 -0
  92. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  93. package/dist/types/src/Annotation.d.ts +24 -0
  94. package/dist/types/src/Annotation.d.ts.map +1 -0
  95. package/dist/types/src/Collection.d.ts +16 -0
  96. package/dist/types/src/Collection.d.ts.map +1 -0
  97. package/dist/types/src/Database.d.ts +189 -0
  98. package/dist/types/src/Database.d.ts.map +1 -0
  99. package/dist/types/src/Dataset.d.ts +18 -0
  100. package/dist/types/src/Dataset.d.ts.map +1 -0
  101. package/dist/types/src/Entity.d.ts +168 -0
  102. package/dist/types/src/Entity.d.ts.map +1 -0
  103. package/dist/types/src/Entity.test.d.ts +2 -0
  104. package/dist/types/src/Entity.test.d.ts.map +1 -0
  105. package/dist/types/src/Err.d.ts +107 -0
  106. package/dist/types/src/Err.d.ts.map +1 -0
  107. package/dist/types/src/Feed.d.ts +165 -0
  108. package/dist/types/src/Feed.d.ts.map +1 -0
  109. package/dist/types/src/Filter.d.ts +120 -0
  110. package/dist/types/src/Filter.d.ts.map +1 -0
  111. package/dist/types/src/Format.d.ts +4 -0
  112. package/dist/types/src/Format.d.ts.map +1 -0
  113. package/dist/types/src/Hypergraph.d.ts +65 -0
  114. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  115. package/dist/types/src/JsonSchema.d.ts +16 -0
  116. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  117. package/dist/types/src/Key.d.ts +1 -0
  118. package/dist/types/src/Key.d.ts.map +1 -1
  119. package/dist/types/src/Obj.d.ts +425 -95
  120. package/dist/types/src/Obj.d.ts.map +1 -1
  121. package/dist/types/src/Obj.test.d.ts +2 -0
  122. package/dist/types/src/Obj.test.d.ts.map +1 -0
  123. package/dist/types/src/Order.d.ts +16 -0
  124. package/dist/types/src/Order.d.ts.map +1 -0
  125. package/dist/types/src/Query.d.ts +202 -0
  126. package/dist/types/src/Query.d.ts.map +1 -0
  127. package/dist/types/src/Query.test.d.ts +2 -0
  128. package/dist/types/src/Query.test.d.ts.map +1 -0
  129. package/dist/types/src/QueryResult.d.ts +80 -0
  130. package/dist/types/src/QueryResult.d.ts.map +1 -0
  131. package/dist/types/src/Ref.d.ts +61 -11
  132. package/dist/types/src/Ref.d.ts.map +1 -1
  133. package/dist/types/src/Relation.d.ts +288 -21
  134. package/dist/types/src/Relation.d.ts.map +1 -1
  135. package/dist/types/src/Relation.test.d.ts +2 -0
  136. package/dist/types/src/Relation.test.d.ts.map +1 -0
  137. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  138. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  139. package/dist/types/src/Tag.d.ts +18 -0
  140. package/dist/types/src/Tag.d.ts.map +1 -0
  141. package/dist/types/src/Type.d.ts +123 -99
  142. package/dist/types/src/Type.d.ts.map +1 -1
  143. package/dist/types/src/Type.test.d.ts +2 -0
  144. package/dist/types/src/Type.test.d.ts.map +1 -0
  145. package/dist/types/src/View.d.ts +68 -0
  146. package/dist/types/src/View.d.ts.map +1 -0
  147. package/dist/types/src/hierarchy.test.d.ts +2 -0
  148. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  149. package/dist/types/src/index.d.ts +19 -5
  150. package/dist/types/src/index.d.ts.map +1 -1
  151. package/dist/types/src/internal/Annotation/annotations.d.ts +230 -0
  152. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  153. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  154. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  155. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  156. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  157. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  158. package/dist/types/src/internal/Annotation/util.d.ts +39 -0
  159. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  160. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  161. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  162. package/dist/types/src/internal/Entity/entity.d.ts +20 -0
  163. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  164. package/dist/types/src/internal/Entity/index.d.ts +8 -0
  165. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  166. package/dist/types/src/internal/Entity/model.d.ts +55 -0
  167. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  168. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  169. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  170. package/dist/types/src/internal/Entity/relation.d.ts +35 -0
  171. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  172. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  173. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  174. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  175. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  176. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  177. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  178. package/dist/types/src/internal/{formats → Format}/format.d.ts +4 -2
  179. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  180. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  181. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  182. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  183. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  184. package/dist/types/src/internal/{formats → Format}/select.d.ts +6 -4
  185. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  186. package/dist/types/src/internal/{formats → Format}/string.d.ts +4 -0
  187. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  188. package/dist/types/src/internal/{formats → Format}/types.d.ts +14 -10
  189. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  190. package/dist/types/src/internal/{json → JsonSchema}/annotations.d.ts +1 -1
  191. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  192. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  193. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  194. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  195. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  196. package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
  197. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  198. package/dist/types/src/internal/{json → JsonSchema}/json-schema.d.ts +4 -6
  199. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  200. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  201. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  202. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  203. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  204. package/dist/types/src/internal/{object/create.d.ts → Obj/create-object.d.ts} +10 -11
  205. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  206. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  207. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  208. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  209. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  210. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  211. package/dist/types/src/internal/Obj/index.d.ts +11 -0
  212. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  213. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  214. package/dist/types/src/internal/Obj/json-serializer.d.ts +44 -0
  215. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  216. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  217. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  218. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  219. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  220. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  221. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  222. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  223. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  225. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  226. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  227. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  228. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  229. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  230. package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +4 -4
  231. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  232. package/dist/types/src/internal/{ref → Ref}/ref.d.ts +44 -19
  233. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  234. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  235. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  236. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  237. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  238. package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +27 -14
  239. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  240. package/dist/types/src/internal/Type/index.d.ts +4 -0
  241. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  242. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  243. package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
  244. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  245. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  246. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  247. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  248. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  249. package/dist/types/src/internal/common/index.d.ts +4 -0
  250. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  251. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  252. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  253. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  254. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  255. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  256. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  257. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  258. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  259. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  260. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  261. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  262. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  263. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  264. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  265. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  266. package/dist/types/src/internal/common/proxy/make-object.d.ts +14 -0
  267. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  268. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  269. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  270. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  271. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  272. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  273. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  274. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  275. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  276. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  277. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  278. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  279. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  280. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  281. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  282. package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +16 -12
  283. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  284. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  285. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  286. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  287. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  288. package/dist/types/src/internal/common/types/entity.d.ts +37 -0
  289. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  290. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  291. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  292. package/dist/types/src/internal/{object → common/types}/meta.d.ts +18 -16
  293. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  294. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  295. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  296. package/dist/types/src/internal/common/types/typename.d.ts +21 -0
  297. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  298. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  299. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  300. package/dist/types/src/internal/index.d.ts +9 -14
  301. package/dist/types/src/internal/index.d.ts.map +1 -1
  302. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  303. package/dist/types/src/testing/index.d.ts +3 -3
  304. package/dist/types/src/testing/index.d.ts.map +1 -1
  305. package/dist/types/src/testing/test-data.d.ts +18 -0
  306. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  307. package/dist/types/src/testing/test-schema.d.ts +304 -0
  308. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  309. package/dist/types/src/testing/util.d.ts +21 -0
  310. package/dist/types/src/testing/util.d.ts.map +1 -0
  311. package/dist/types/tsconfig.tsbuildinfo +1 -1
  312. package/package.json +106 -65
  313. package/src/Annotation.ts +48 -0
  314. package/src/Collection.ts +32 -0
  315. package/src/Database.ts +317 -0
  316. package/src/Dataset.ts +26 -0
  317. package/src/Entity.test.ts +22 -0
  318. package/src/Entity.ts +237 -0
  319. package/src/Err.ts +40 -0
  320. package/src/Feed.ts +257 -0
  321. package/src/Filter.ts +391 -0
  322. package/src/Format.ts +9 -0
  323. package/src/Hypergraph.ts +79 -0
  324. package/src/JsonSchema.ts +26 -0
  325. package/src/Key.ts +3 -0
  326. package/src/Obj.test.ts +447 -0
  327. package/src/Obj.ts +595 -249
  328. package/src/Order.ts +46 -0
  329. package/src/Query.test.ts +632 -0
  330. package/src/Query.ts +522 -0
  331. package/src/QueryResult.ts +106 -0
  332. package/src/Ref.ts +79 -9
  333. package/src/Relation.test.ts +88 -0
  334. package/src/Relation.ts +443 -58
  335. package/src/SchemaRegistry.ts +106 -0
  336. package/src/Tag.ts +41 -0
  337. package/src/Type.test.ts +52 -0
  338. package/src/Type.ts +167 -153
  339. package/src/View.ts +102 -0
  340. package/src/hierarchy.test.ts +33 -0
  341. package/src/index.ts +20 -6
  342. package/src/internal/{ast → Annotation}/annotations.test.ts +20 -22
  343. package/src/internal/Annotation/annotations.ts +571 -0
  344. package/src/internal/Annotation/index.ts +7 -0
  345. package/src/internal/Annotation/sorting.ts +52 -0
  346. package/src/internal/Annotation/util.ts +85 -0
  347. package/src/internal/Entity/api.ts +31 -0
  348. package/src/internal/Entity/entity.ts +128 -0
  349. package/src/internal/Entity/index.ts +11 -0
  350. package/src/internal/Entity/model.ts +109 -0
  351. package/src/internal/Entity/object.ts +58 -0
  352. package/src/internal/Entity/relation.ts +154 -0
  353. package/src/internal/Entity/util.ts +33 -0
  354. package/src/internal/Entity/version.ts +97 -0
  355. package/src/internal/{formats → Format}/date.test.ts +1 -1
  356. package/src/internal/{formats → Format}/date.ts +5 -5
  357. package/src/internal/{formats → Format}/format.test.ts +6 -6
  358. package/src/internal/{formats → Format}/format.ts +8 -6
  359. package/src/internal/{formats → Format}/number.ts +5 -5
  360. package/src/internal/{formats → Format}/object.ts +4 -4
  361. package/src/internal/{formats → Format}/select.ts +6 -4
  362. package/src/internal/{formats → Format}/string.ts +14 -9
  363. package/src/internal/{formats → Format}/types.ts +54 -43
  364. package/src/internal/{json → JsonSchema}/annotations.ts +3 -3
  365. package/src/internal/{json-schema → JsonSchema}/index.ts +2 -0
  366. package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
  367. package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +36 -36
  368. package/src/internal/{json → JsonSchema}/json-schema.test.ts +243 -108
  369. package/src/internal/{json → JsonSchema}/json-schema.ts +79 -93
  370. package/src/internal/Obj/clone.ts +48 -0
  371. package/src/internal/{object → Obj}/common.ts +3 -4
  372. package/src/internal/{object/create.test.ts → Obj/create-object.test.ts} +31 -33
  373. package/src/internal/{object/create.ts → Obj/create-object.ts} +36 -37
  374. package/src/internal/Obj/deleted.ts +19 -0
  375. package/src/internal/{object → Obj}/ids.ts +1 -1
  376. package/src/internal/Obj/index.ts +14 -0
  377. package/src/internal/{object → Obj}/inspect.ts +5 -7
  378. package/src/internal/Obj/json-serializer.test.ts +121 -0
  379. package/src/internal/{object → Obj}/json-serializer.ts +99 -109
  380. package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
  381. package/src/internal/Obj/schema-validator.ts +6 -0
  382. package/src/internal/Obj/set-value.test.ts +281 -0
  383. package/src/internal/Obj/set-value.ts +165 -0
  384. package/src/internal/Obj/snapshot.ts +105 -0
  385. package/src/internal/{object → Obj}/typed-object.test.ts +12 -12
  386. package/src/internal/Obj/typed-object.ts +30 -0
  387. package/src/internal/{ref → Ref}/ref-array.ts +4 -4
  388. package/src/internal/{ref → Ref}/ref.test.ts +11 -10
  389. package/src/internal/{ref → Ref}/ref.ts +108 -57
  390. package/src/internal/{projection → Type}/compose.test.ts +8 -9
  391. package/src/internal/{projection → Type}/compose.ts +14 -9
  392. package/src/internal/{schema → Type}/echo-schema.ts +74 -33
  393. package/src/internal/Type/index.ts +7 -0
  394. package/src/internal/{schema → Type}/manipulation.ts +7 -1
  395. package/src/internal/Type/persistent-schema.ts +33 -0
  396. package/src/internal/common/README.md +102 -0
  397. package/src/internal/common/api/index.ts +15 -0
  398. package/src/internal/common/api/meta.ts +88 -0
  399. package/src/internal/{testing → common}/index.ts +2 -1
  400. package/src/internal/common/proxy/change-context.ts +138 -0
  401. package/src/internal/common/proxy/change.test.ts +519 -0
  402. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  403. package/src/internal/common/proxy/errors.ts +42 -0
  404. package/src/internal/common/proxy/event-batch.ts +44 -0
  405. package/src/internal/common/proxy/handler.test.ts +123 -0
  406. package/src/internal/common/proxy/index.ts +17 -0
  407. package/src/internal/common/proxy/json-serializer.ts +90 -0
  408. package/src/internal/common/proxy/make-object.ts +106 -0
  409. package/src/internal/common/proxy/ownership.ts +253 -0
  410. package/src/internal/common/proxy/proxy-types.ts +23 -0
  411. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  412. package/src/internal/common/proxy/reactive-array.ts +71 -0
  413. package/src/internal/common/proxy/reactive.ts +69 -0
  414. package/src/internal/{object → common/proxy}/schema-validator.ts +6 -3
  415. package/src/internal/{proxy → common/proxy}/schema.test.ts +31 -22
  416. package/src/internal/common/proxy/symbols.ts +7 -0
  417. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  418. package/src/internal/common/proxy/typed-handler.ts +449 -0
  419. package/src/internal/common/proxy/typed-object.test.ts +116 -0
  420. package/src/internal/common/types/base.ts +43 -0
  421. package/src/internal/common/types/entity.ts +54 -0
  422. package/src/internal/common/types/index.ts +10 -0
  423. package/src/internal/common/types/meta.ts +68 -0
  424. package/src/internal/common/types/model-symbols.ts +69 -0
  425. package/src/internal/common/types/typename.ts +55 -0
  426. package/src/internal/common/types/version.ts +19 -0
  427. package/src/internal/index.ts +11 -17
  428. package/src/testing/api.test.ts +126 -0
  429. package/src/testing/index.ts +3 -3
  430. package/src/testing/test-data.ts +130 -0
  431. package/src/testing/test-schema.ts +240 -0
  432. package/src/testing/util.ts +85 -0
  433. package/dist/lib/browser/chunk-MWLA34S5.mjs +0 -3843
  434. package/dist/lib/browser/chunk-MWLA34S5.mjs.map +0 -7
  435. package/dist/lib/browser/chunk-OAZJQHVO.mjs +0 -453
  436. package/dist/lib/browser/chunk-OAZJQHVO.mjs.map +0 -7
  437. package/dist/lib/browser/chunk-ORIE2FMS.mjs +0 -514
  438. package/dist/lib/browser/chunk-ORIE2FMS.mjs.map +0 -7
  439. package/dist/lib/browser/index.mjs +0 -43
  440. package/dist/lib/browser/internal/index.mjs +0 -326
  441. package/dist/lib/browser/meta.json +0 -1
  442. package/dist/lib/browser/query/index.mjs +0 -23
  443. package/dist/lib/browser/testing/index.mjs +0 -298
  444. package/dist/lib/browser/testing/index.mjs.map +0 -7
  445. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs +0 -453
  446. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs.map +0 -7
  447. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs +0 -514
  448. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs.map +0 -7
  449. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs +0 -3843
  450. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs.map +0 -7
  451. package/dist/lib/node-esm/index.mjs +0 -43
  452. package/dist/lib/node-esm/meta.json +0 -1
  453. package/dist/lib/node-esm/query/index.mjs +0 -23
  454. package/dist/lib/node-esm/testing/index.mjs +0 -298
  455. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  456. package/dist/types/src/errors.d.ts +0 -72
  457. package/dist/types/src/errors.d.ts.map +0 -1
  458. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  459. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  460. package/dist/types/src/internal/ast/annotations.d.ts +0 -119
  461. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  462. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  463. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  464. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  465. package/dist/types/src/internal/ast/index.d.ts +0 -5
  466. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  467. package/dist/types/src/internal/ast/types.d.ts +0 -6
  468. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  469. package/dist/types/src/internal/formats/date.d.ts.map +0 -1
  470. package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
  471. package/dist/types/src/internal/formats/format.d.ts.map +0 -1
  472. package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
  473. package/dist/types/src/internal/formats/index.d.ts.map +0 -1
  474. package/dist/types/src/internal/formats/number.d.ts.map +0 -1
  475. package/dist/types/src/internal/formats/object.d.ts.map +0 -1
  476. package/dist/types/src/internal/formats/select.d.ts.map +0 -1
  477. package/dist/types/src/internal/formats/string.d.ts.map +0 -1
  478. package/dist/types/src/internal/formats/types.d.ts.map +0 -1
  479. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  480. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  481. package/dist/types/src/internal/json/index.d.ts +0 -2
  482. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  483. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  484. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  485. package/dist/types/src/internal/json-schema/index.d.ts +0 -3
  486. package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
  487. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
  488. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
  489. package/dist/types/src/internal/object/accessors.d.ts +0 -29
  490. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  491. package/dist/types/src/internal/object/common.d.ts.map +0 -1
  492. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  493. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  494. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  495. package/dist/types/src/internal/object/deleted.d.ts +0 -6
  496. package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
  497. package/dist/types/src/internal/object/entity.d.ts +0 -22
  498. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  499. package/dist/types/src/internal/object/expando.d.ts +0 -14
  500. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  501. package/dist/types/src/internal/object/ids.d.ts.map +0 -1
  502. package/dist/types/src/internal/object/index.d.ts +0 -17
  503. package/dist/types/src/internal/object/index.d.ts.map +0 -1
  504. package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
  505. package/dist/types/src/internal/object/json-serializer.d.ts +0 -32
  506. package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
  507. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
  508. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  509. package/dist/types/src/internal/object/model.d.ts +0 -117
  510. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  511. package/dist/types/src/internal/object/relation.d.ts +0 -17
  512. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  513. package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
  514. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
  515. package/dist/types/src/internal/object/typed-object.d.ts +0 -31
  516. package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
  517. package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
  518. package/dist/types/src/internal/object/typed-relation.d.ts +0 -32
  519. package/dist/types/src/internal/object/typed-relation.d.ts.map +0 -1
  520. package/dist/types/src/internal/object/typename.d.ts +0 -15
  521. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  522. package/dist/types/src/internal/object/version.d.ts +0 -14
  523. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  524. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  525. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  526. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  527. package/dist/types/src/internal/projection/index.d.ts +0 -2
  528. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  529. package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
  530. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  531. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  532. package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
  533. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
  534. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
  535. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
  536. package/dist/types/src/internal/query/index.d.ts +0 -2
  537. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  538. package/dist/types/src/internal/query/query.d.ts +0 -17
  539. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  540. package/dist/types/src/internal/ref/index.d.ts.map +0 -1
  541. package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
  542. package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
  543. package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
  544. package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
  545. package/dist/types/src/internal/schema/index.d.ts +0 -7
  546. package/dist/types/src/internal/schema/index.d.ts.map +0 -1
  547. package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
  548. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  549. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  550. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  551. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  552. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  553. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  554. package/dist/types/src/internal/testing/index.d.ts +0 -3
  555. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  556. package/dist/types/src/internal/testing/types.d.ts +0 -455
  557. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  558. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  559. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  560. package/dist/types/src/internal/types/index.d.ts +0 -3
  561. package/dist/types/src/internal/types/index.d.ts.map +0 -1
  562. package/dist/types/src/internal/types/types.d.ts +0 -79
  563. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  564. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  565. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  566. package/dist/types/src/internal/types/util.d.ts +0 -5
  567. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  568. package/dist/types/src/query/index.d.ts +0 -3
  569. package/dist/types/src/query/index.d.ts.map +0 -1
  570. package/dist/types/src/query/query.d.ts +0 -247
  571. package/dist/types/src/query/query.d.ts.map +0 -1
  572. package/dist/types/src/query/query.test.d.ts +0 -2
  573. package/dist/types/src/query/query.test.d.ts.map +0 -1
  574. package/dist/types/src/query/tag.d.ts +0 -18
  575. package/dist/types/src/query/tag.d.ts.map +0 -1
  576. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  577. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  578. package/dist/types/src/testing/types.d.ts +0 -113
  579. package/dist/types/src/testing/types.d.ts.map +0 -1
  580. package/src/errors.ts +0 -18
  581. package/src/internal/ast/annotation-helper.ts +0 -22
  582. package/src/internal/ast/annotations.ts +0 -212
  583. package/src/internal/ast/entity-kind.ts +0 -15
  584. package/src/internal/ast/index.ts +0 -8
  585. package/src/internal/ast/types.ts +0 -17
  586. package/src/internal/json/index.ts +0 -5
  587. package/src/internal/object/accessors.ts +0 -115
  588. package/src/internal/object/deleted.ts +0 -19
  589. package/src/internal/object/entity.ts +0 -204
  590. package/src/internal/object/expando.ts +0 -21
  591. package/src/internal/object/index.ts +0 -20
  592. package/src/internal/object/json-serializer.test.ts +0 -99
  593. package/src/internal/object/meta.ts +0 -62
  594. package/src/internal/object/model.ts +0 -170
  595. package/src/internal/object/relation.ts +0 -24
  596. package/src/internal/object/typed-object.ts +0 -81
  597. package/src/internal/object/typed-relation.ts +0 -85
  598. package/src/internal/object/typename.ts +0 -61
  599. package/src/internal/object/version.ts +0 -22
  600. package/src/internal/projection/index.ts +0 -5
  601. package/src/internal/proxy/handler.test.ts +0 -163
  602. package/src/internal/proxy/reactive-object.ts +0 -108
  603. package/src/internal/proxy/typed-handler.test.ts +0 -102
  604. package/src/internal/proxy/typed-handler.ts +0 -228
  605. package/src/internal/proxy/typed-object.test.ts +0 -100
  606. package/src/internal/query/index.ts +0 -5
  607. package/src/internal/query/query.ts +0 -23
  608. package/src/internal/schema/index.ts +0 -10
  609. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  610. package/src/internal/schema/snapshot.ts +0 -25
  611. package/src/internal/schema/stored-schema.ts +0 -26
  612. package/src/internal/testing/types.ts +0 -211
  613. package/src/internal/testing/utils.ts +0 -54
  614. package/src/internal/types/index.ts +0 -6
  615. package/src/internal/types/types.test.ts +0 -48
  616. package/src/internal/types/types.ts +0 -176
  617. package/src/internal/types/util.ts +0 -9
  618. package/src/query/index.ts +0 -6
  619. package/src/query/query.test.ts +0 -362
  620. package/src/query/query.ts +0 -784
  621. package/src/query/tag.ts +0 -35
  622. package/src/test/api.test.ts +0 -180
  623. package/src/testing/echo-schema.ts +0 -39
  624. package/src/testing/types.ts +0 -91
  625. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  626. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  627. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  628. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  629. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Feed.mjs.map} +0 -0
  630. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Filter.mjs.map} +0 -0
  631. /package/dist/types/src/internal/{ast → Annotation}/annotations.test.d.ts +0 -0
  632. /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
  633. /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
  634. /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
  635. /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
  636. /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
  637. /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
  638. /package/dist/types/src/internal/{json → JsonSchema}/effect-schema.test.d.ts +0 -0
  639. /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
  640. /package/dist/types/src/internal/{json → JsonSchema}/json-schema.test.d.ts +0 -0
  641. /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
  642. /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
  643. /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
  644. /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
  645. /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
  646. /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
  647. /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
  648. /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
  649. /package/dist/types/src/internal/{projection → Type}/compose.test.d.ts +0 -0
  650. /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
  651. /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
  652. /package/dist/types/src/internal/{object → common/proxy}/schema-validator.d.ts +0 -0
  653. /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
  654. /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
  655. /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
  656. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  657. /package/src/internal/{formats → Format}/index.ts +0 -0
  658. /package/src/internal/{json → JsonSchema}/effect-schema.test.ts +0 -0
  659. /package/src/internal/{ref → Ref}/index.ts +0 -0
@@ -1,15 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- /**
8
- * Kinds of entities stored in ECHO: objects and relations.
9
- */
10
- export enum EntityKind {
11
- Object = 'object',
12
- Relation = 'relation',
13
- }
14
-
15
- export const EntityKindSchema = Schema.Enums(EntityKind);
@@ -1,8 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './annotations';
6
- export * from './annotation-helper';
7
- export * from './types';
8
- export * from './entity-kind';
@@ -1,17 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { PropertyMeta } from './annotations';
6
-
7
- /**
8
- * @internal
9
- */
10
- export const FIELD_PATH_ANNOTATION = 'path';
11
-
12
- /**
13
- * Sets the path for the field.
14
- * @param path Data source path in the json path format. This is the field path in the source object.
15
- */
16
- // TODO(burdon): Field, vs. path vs. property.
17
- export const FieldPath = (path: string) => PropertyMeta(FIELD_PATH_ANNOTATION, path);
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './json-schema';
@@ -1,115 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import * as Option from 'effect/Option';
6
- import * as Schema from 'effect/Schema';
7
-
8
- import { type JsonPath, getField } from '@dxos/effect';
9
- import { assertArgument, invariant } from '@dxos/invariant';
10
- import { DXN, ObjectId } from '@dxos/keys';
11
- import { assumeType } from '@dxos/util';
12
-
13
- import { LabelAnnotation } from '../ast';
14
-
15
- import { type InternalObjectProps, SchemaId, SelfDXNId } from './model';
16
-
17
- //
18
- // Accessors based on model.
19
- //
20
-
21
- /**
22
- * Returns a DXN for an object or schema.
23
- * @deprecated Use `Obj.getDXN`.
24
- */
25
- export const getObjectDXN = (object: any): DXN | undefined => {
26
- invariant(!Schema.isSchema(object), 'schema not allowed in this function');
27
- assertArgument(typeof object === 'object' && object != null, 'object', 'expected object');
28
- assumeType<InternalObjectProps>(object);
29
-
30
- if (object[SelfDXNId]) {
31
- invariant(object[SelfDXNId] instanceof DXN, 'Invalid object model: invalid self dxn');
32
- return object[SelfDXNId];
33
- }
34
-
35
- if (!ObjectId.isValid(object.id)) {
36
- throw new TypeError('Object id is not valid.');
37
- }
38
-
39
- return DXN.fromLocalObjectId(object.id);
40
- };
41
-
42
- /**
43
- * Returns the schema for the given object if one is defined.
44
- */
45
- // TODO(burdon): Reconcile with `getTypename`.
46
- // TODO(dmaretskyi): For echo objects, this always returns the root schema.
47
- export const getSchema = (obj: unknown | undefined): Schema.Schema.AnyNoContext | undefined => {
48
- if (obj) {
49
- return (obj as any)[SchemaId];
50
- }
51
- };
52
-
53
- /**
54
- * Internal use only.
55
- */
56
- export const setSchema = (obj: any, schema: Schema.Schema.AnyNoContext) => {
57
- Object.defineProperty(obj, SchemaId, {
58
- value: schema,
59
- writable: false,
60
- enumerable: false,
61
- configurable: false,
62
- });
63
- };
64
-
65
- /**
66
- * @deprecated Use {@link Obj.getLabel} instead.
67
- * Returns the label for a given object based on {@link LabelAnnotationId}.
68
- */
69
- export const getLabelForObject = (obj: unknown | undefined): string | undefined => {
70
- const schema = getSchema(obj);
71
- if (schema) {
72
- return getLabel(schema, obj);
73
- }
74
- };
75
-
76
- /**
77
- * Returns the label for a given object based on {@link LabelAnnotationId}.
78
- */
79
- // TODO(burdon): Convert to JsonPath?
80
- export const getLabel = <S extends Schema.Schema.Any>(schema: S, object: Schema.Schema.Type<S>): string | undefined => {
81
- const annotation = LabelAnnotation.get(schema).pipe(Option.getOrElse(() => ['name']));
82
- for (const accessor of annotation) {
83
- assertArgument(
84
- typeof accessor === 'string',
85
- 'accessor',
86
- 'Label annotation must be a string or an array of strings',
87
- );
88
- const value = getField(object, accessor as JsonPath);
89
- switch (typeof value) {
90
- case 'string':
91
- case 'number':
92
- case 'boolean':
93
- case 'bigint':
94
- case 'symbol':
95
- return value.toString();
96
- case 'undefined':
97
- case 'object':
98
- case 'function':
99
- continue;
100
- }
101
- }
102
-
103
- return undefined;
104
- };
105
-
106
- /**
107
- * Sets the label for a given object based on {@link LabelAnnotationId}.
108
- */
109
- export const setLabel = <S extends Schema.Schema.Any>(schema: S, object: Schema.Schema.Type<S>, label: string) => {
110
- const annotation = LabelAnnotation.get(schema).pipe(
111
- Option.map((field) => field[0]),
112
- Option.getOrElse(() => 'name'),
113
- );
114
- object[annotation] = label;
115
- };
@@ -1,19 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import type { BaseObject } from '../types';
6
-
7
- import { DeletedId } from './model';
8
-
9
- /**
10
- * @returns `true` if the object has been marked as deleted.
11
- */
12
- export const isDeleted = (obj: BaseObject): boolean => {
13
- if ((obj as any)[DeletedId] === undefined) {
14
- // TODO(dmaretskyi): Return to prior behavior of throwing.
15
- // throw new Error('Object does not support deletion marker');
16
- return false;
17
- }
18
- return (obj as any)[DeletedId] ?? false;
19
- };
@@ -1,204 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
- import * as SchemaAST from 'effect/SchemaAST';
7
- import type * as Types from 'effect/Types';
8
-
9
- import { raise } from '@dxos/debug';
10
- import { invariant } from '@dxos/invariant';
11
- import { DXN } from '@dxos/keys';
12
-
13
- import {
14
- EntityKind,
15
- type TypeAnnotation,
16
- TypeAnnotationId,
17
- type TypeMeta,
18
- getEntityKind,
19
- getSchemaTypename,
20
- getTypeIdentifierAnnotation,
21
- } from '../ast';
22
- import { type HasId, type ToMutable } from '../types';
23
-
24
- import { type RelationSourceTargetRefs } from './relation';
25
-
26
- // TODO(burdon): Define Schema type for `typename` and use consistently for all DXN-like properties.
27
-
28
- // type RequiredKeys<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? never : K }[keyof T];
29
- type EchoTypeSchemaProps<T, ExtraFields = {}> = Types.Simplify<HasId & ToMutable<T> & ExtraFields>;
30
-
31
- export interface EchoTypeSchema<Self extends Schema.Schema.Any, ExtraFields = {}>
32
- extends TypeMeta,
33
- Schema.AnnotableClass<
34
- EchoTypeSchema<Self, ExtraFields>,
35
- EchoTypeSchemaProps<Schema.Schema.Type<Self>, ExtraFields>,
36
- EchoTypeSchemaProps<Schema.Schema.Encoded<Self>, ExtraFields>,
37
- Schema.Schema.Context<Self>
38
- > {
39
- // make(
40
- // props: RequiredKeys<Schema.TypeLiteral.Constructor<Fields, []>> extends never
41
- // ? void | Simplify<Schema.TypeLiteral.Constructor<Fields, []>>
42
- // : Simplify<Schema.TypeLiteral.Constructor<Fields, []>>,
43
- // options?: MakeOptions,
44
- // ): Simplify<Schema.TypeLiteral.Type<Fields, []>>;
45
-
46
- instanceOf(value: unknown): boolean;
47
- }
48
-
49
- /**
50
- * Pipeable function to add ECHO object annotations to a schema.
51
- */
52
- // TODO(dmaretskyi): Rename EchoObjectSchema.
53
- export const EchoObject: {
54
- // TODO(burdon): Tighten Self type to Schema.TypeLiteral or Schema.Struct to facilitate definition of `make` method.
55
- // (meta: TypeMeta): <Self extends Schema.Struct<Fields>, Fields extends Schema.Struct.Fields>(self: Self) => EchoObjectSchema<Self, Fields>;
56
- (meta: TypeMeta): <Self extends Schema.Schema.Any>(self: Self) => EchoTypeSchema<Self>;
57
- } = ({ typename, version }) => {
58
- return <Self extends Schema.Schema.Any>(self: Self): EchoTypeSchema<Self> => {
59
- invariant(typeof TypeAnnotationId === 'symbol', 'Sanity.');
60
- invariant(SchemaAST.isTypeLiteral(self.ast), 'Schema must be a TypeLiteral.');
61
-
62
- // TODO(dmaretskyi): Does `Schema.mutable` work for deep mutability here?
63
- // TODO(dmaretskyi): Do not do mutable here.
64
- const schemaWithId = Schema.extend(Schema.mutable(self), Schema.Struct({ id: Schema.String }));
65
- const ast = SchemaAST.annotations(schemaWithId.ast, {
66
- // TODO(dmaretskyi): `extend` kills the annotations.
67
- ...self.ast.annotations,
68
- [TypeAnnotationId]: { kind: EntityKind.Object, typename, version } satisfies TypeAnnotation,
69
- // TODO(dmaretskyi): TypeIdentifierAnnotationId?
70
- });
71
-
72
- return makeEchoObjectSchema<Self>(/* self.fields, */ ast, typename, version);
73
- };
74
- };
75
-
76
- export type EchoRelationOptions<
77
- TSource extends Schema.Schema.AnyNoContext,
78
- TTarget extends Schema.Schema.AnyNoContext,
79
- > = TypeMeta & {
80
- source: TSource;
81
- target: TTarget;
82
- };
83
-
84
- // TODO(dmaretskyi): Rename EchoRelationSchema.
85
- export const EchoRelation = <Source extends Schema.Schema.AnyNoContext, Target extends Schema.Schema.AnyNoContext>(
86
- options: EchoRelationOptions<Source, Target>,
87
- ) => {
88
- const sourceDXN = getDXNForRelationSchemaRef(options.source);
89
- const targetDXN = getDXNForRelationSchemaRef(options.target);
90
- if (getEntityKind(options.source) !== EntityKind.Object) {
91
- raise(new Error('Source schema must be an echo object schema.'));
92
- }
93
- if (getEntityKind(options.target) !== EntityKind.Object) {
94
- raise(new Error('Target schema must be an echo object schema.'));
95
- }
96
-
97
- return <Self extends Schema.Schema.Any>(
98
- self: Self,
99
- ): EchoTypeSchema<Self, RelationSourceTargetRefs<Schema.Schema.Type<Source>, Schema.Schema.Type<Target>>> => {
100
- invariant(SchemaAST.isTypeLiteral(self.ast), 'Schema must be a TypeLiteral.');
101
-
102
- // TODO(dmaretskyi): Does `Schema.mutable` work for deep mutability here?
103
- // TODO(dmaretskyi): Do not do mutable here.
104
- const schemaWithId = Schema.extend(Schema.mutable(self), Schema.Struct({ id: Schema.String }));
105
- const ast = SchemaAST.annotations(schemaWithId.ast, {
106
- // TODO(dmaretskyi): `extend` kills the annotations.
107
- ...self.ast.annotations,
108
- [TypeAnnotationId]: {
109
- kind: EntityKind.Relation,
110
- typename: options.typename,
111
- version: options.version,
112
- sourceSchema: sourceDXN,
113
- targetSchema: targetDXN,
114
- } satisfies TypeAnnotation,
115
- // TODO(dmaretskyi): TypeIdentifierAnnotationId?
116
- });
117
-
118
- return makeEchoObjectSchema<Self>(/* self.fields, */ ast, options.typename, options.version);
119
- };
120
- };
121
-
122
- const getDXNForRelationSchemaRef = (schema: Schema.Schema.Any): string => {
123
- const identifier = getTypeIdentifierAnnotation(schema);
124
- if (identifier) {
125
- return identifier;
126
- }
127
-
128
- const typename = getSchemaTypename(schema);
129
- if (!typename) {
130
- throw new Error('Schema must have a typename');
131
- }
132
-
133
- return DXN.fromTypename(typename).toString();
134
- };
135
-
136
- // type MakeOptions =
137
- // | boolean
138
- // | {
139
- // readonly disableValidation?: boolean;
140
- // };
141
-
142
- // NOTE: Utils copied from Effect `Schema.ts`.
143
- // const _ownKeys = (o: object): Array<PropertyKey> =>
144
- // (Object.keys(o) as Array<PropertyKey>).concat(Object.getOwnPropertySymbols(o));
145
-
146
- // const _lazilyMergeDefaults = (
147
- // fields: Schema.Struct.Fields,
148
- // out: Record<PropertyKey, unknown>,
149
- // ): { [x: string | symbol]: unknown } => {
150
- // const ownKeys = _ownKeys(fields);
151
- // for (const key of ownKeys) {
152
- // const field = fields[key];
153
- // if (out[key] === undefined && Schema.isPropertySignature(field)) {
154
- // const ast = field.ast;
155
- // const defaultValue = ast._tag === 'PropertySignatureDeclaration' ? ast.defaultValue : ast.to.defaultValue;
156
- // if (defaultValue !== undefined) {
157
- // out[key] = defaultValue();
158
- // }
159
- // }
160
- // }
161
- // return out;
162
- // };
163
-
164
- // const _getDisableValidationMakeOption = (options: MakeOptions | undefined): boolean =>
165
- // Predicate.isBoolean(options) ? options : options?.disableValidation ?? false;
166
-
167
- const makeEchoObjectSchema = <Self extends Schema.Schema.Any>(
168
- // fields: Fields,
169
- ast: SchemaAST.AST,
170
- typename: string,
171
- version: string,
172
- ): EchoTypeSchema<Self> => {
173
- return class EchoObjectSchemaClass extends Schema.make<
174
- EchoTypeSchemaProps<Schema.Schema.Type<Self>>,
175
- EchoTypeSchemaProps<Schema.Schema.Encoded<Self>>,
176
- Schema.Schema.Context<Self>
177
- >(ast) {
178
- static readonly typename = typename;
179
- static readonly version = version;
180
-
181
- static override annotations(
182
- annotations: Schema.Annotations.GenericSchema<EchoTypeSchemaProps<Schema.Schema.Type<Self>>>,
183
- ): EchoTypeSchema<Self> {
184
- const schema = Schema.make<EchoTypeSchemaProps<Schema.Schema.Type<Self>>>(ast).annotations(annotations);
185
- return makeEchoObjectSchema<Self>(/* fields, */ schema.ast, typename, version);
186
- }
187
-
188
- // static make(
189
- // props: RequiredKeys<Schema.TypeLiteral.Constructor<Fields, []>> extends never
190
- // ? void | Simplify<Schema.TypeLiteral.Constructor<Fields, []>>
191
- // : Simplify<Schema.TypeLiteral.Constructor<Fields, []>>,
192
- // options?: MakeOptions,
193
- // ): Simplify<Schema.TypeLiteral.Type<Fields, []>> {
194
- // const propsWithDefaults: any = _lazilyMergeDefaults(fields, { ...(props as any) });
195
- // return _getDisableValidationMakeOption(options)
196
- // ? propsWithDefaults
197
- // : ParseResult.validateSync(this)(propsWithDefaults);
198
- // }
199
-
200
- static instanceOf(value: unknown): boolean {
201
- return Schema.is(this)(value);
202
- }
203
- };
204
- };
@@ -1,21 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { EchoObject } from './entity';
8
-
9
- export const EXPANDO_TYPENAME = 'dxos.org/type/Expando';
10
-
11
- const ExpandoSchema = Schema.Struct({}, { key: Schema.String, value: Schema.Any }).pipe(
12
- EchoObject({ typename: EXPANDO_TYPENAME, version: '0.1.0' }),
13
- );
14
-
15
- /**
16
- * Expando object is an object with an arbitrary set of properties.
17
- */
18
- // TODO(dmaretskyi): Can we consider expando a top-type, i.e. have a ref to expando potentially be a valid ref to any object?
19
- export interface Expando extends Schema.Schema.Type<typeof ExpandoSchema> {}
20
-
21
- export const Expando: Schema.Schema<Expando> = ExpandoSchema;
@@ -1,20 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './common';
6
- export * from './create';
7
- export * from './entity';
8
- export * from './expando';
9
- export * from './ids';
10
- export * from './json-serializer';
11
- export * from './meta';
12
- export type * from './relation';
13
- export * from './typed-object';
14
- export * from './typed-relation';
15
- export * from './typename';
16
- export * from './deleted';
17
- export * from './model';
18
- export * from './accessors';
19
- export * from './schema-validator';
20
- export * from './version';
@@ -1,99 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { describe, expect, test } from 'vitest';
6
-
7
- import { DXN } from '@dxos/keys';
8
-
9
- import { EntityKind, getSchemaDXN, getSchemaTypename } from '../ast';
10
- import { Ref, StaticRefResolver } from '../ref';
11
- import { Testing } from '../testing';
12
-
13
- import { getObjectDXN, getSchema } from './accessors';
14
- import { create } from './create';
15
- import { objectFromJSON, objectToJSON } from './json-serializer';
16
- import { getMeta } from './meta';
17
- import { ATTR_TYPE, EntityKindId, MetaId, RelationSourceId, RelationTargetId, TypeId } from './model';
18
- import { getType, getTypename } from './typename';
19
-
20
- describe('Object JSON serializer', () => {
21
- test('should serialize and deserialize object', async () => {
22
- const contact = create(Testing.Contact, {
23
- name: 'John Doe',
24
- });
25
- getMeta(contact).keys.push({ id: '12345', source: 'crm.example.com' });
26
-
27
- const task = create(Testing.Task, {
28
- title: 'Polish my shoes',
29
- assignee: Ref.make(contact),
30
- });
31
-
32
- const contactJson = objectToJSON(contact);
33
- const taskJson = objectToJSON(task);
34
-
35
- expect(contactJson.id).toBe(contact.id);
36
- expect(contactJson[ATTR_TYPE]).toEqual(getSchemaDXN(Testing.Contact)!.toString());
37
- expect(contactJson.name).toEqual('John Doe');
38
-
39
- expect(taskJson.id).toBe(task.id);
40
- expect(taskJson[ATTR_TYPE]).toEqual(getSchemaDXN(Testing.Task)!.toString());
41
- expect(taskJson.title).toEqual('Polish my shoes');
42
- expect(taskJson.assignee).toEqual({ '/': DXN.fromLocalObjectId(contact.id).toString() });
43
-
44
- const refResolver = new StaticRefResolver()
45
- .addSchema(Testing.Contact)
46
- .addSchema(Testing.Task)
47
- .addObject(contact)
48
- .addObject(task);
49
-
50
- const contactFromJson = (await objectFromJSON(contactJson, { refResolver })) as Testing.Contact;
51
- const taskFromJson = (await objectFromJSON(taskJson, { refResolver })) as Testing.Task;
52
-
53
- expect(contactFromJson.id).toBe(contact.id);
54
- expect(contactFromJson.name).toBe('John Doe');
55
- expect((contactFromJson as any)[TypeId]).toEqual(getSchemaDXN(Testing.Contact));
56
- expect((contactFromJson as any)[EntityKindId]).toBe(EntityKind.Object);
57
- expect((contactFromJson as any)[RelationSourceId]).toBeUndefined();
58
- expect((contactFromJson as any)[RelationTargetId]).toBeUndefined();
59
- expect((contactFromJson as any)[MetaId]).toEqual({
60
- keys: [
61
- {
62
- id: '12345',
63
- source: 'crm.example.com',
64
- },
65
- ],
66
- });
67
- expect(getType(contactFromJson)?.toString()).toBe(getSchemaDXN(Testing.Contact)!.toString());
68
- expect(getTypename(contactFromJson)).toBe(getSchemaTypename(Testing.Contact));
69
- expect(getObjectDXN(contactFromJson)?.toString()).toEqual(getObjectDXN(contact)?.toString());
70
- expect(getSchema(contactFromJson)).toEqual(Testing.Contact);
71
-
72
- expect(taskFromJson.id).toBe(task.id);
73
- expect(taskFromJson.title).toBe('Polish my shoes');
74
- expect(taskFromJson.assignee!.dxn).toEqual(DXN.fromLocalObjectId(contact.id));
75
- expect(taskFromJson.assignee!.target).toEqual(contact);
76
- expect(await taskFromJson.assignee!.load()).toEqual(contact);
77
- expect((taskFromJson as any)[TypeId]).toEqual(getSchemaDXN(Testing.Task));
78
- expect((taskFromJson as any)[EntityKindId]).toBe(EntityKind.Object);
79
- expect((taskFromJson as any)[RelationSourceId]).toBeUndefined();
80
- expect((taskFromJson as any)[RelationTargetId]).toBeUndefined();
81
- expect((taskFromJson as any)[MetaId]).toEqual({ keys: [] });
82
- expect(getSchema(taskFromJson)).toEqual(Testing.Task);
83
- });
84
-
85
- test('serialize with unresolved schema', async () => {
86
- const contact = create(Testing.Contact, {
87
- name: 'John Doe',
88
- });
89
- const contactJson = objectToJSON(contact);
90
- const contactFromJson: any = await objectFromJSON(contactJson);
91
-
92
- expect(contactFromJson.id).toBe(contact.id);
93
- expect(contactFromJson.name).toBe('John Doe');
94
- expect(getSchema(contactFromJson)).toBeUndefined();
95
- expect(getTypename(contactFromJson)).toEqual(getSchemaTypename(Testing.Contact));
96
- expect(getObjectDXN(contactFromJson)).toEqual(getObjectDXN(contact));
97
- expect(getType(contactFromJson)).toEqual(getSchemaDXN(Testing.Contact));
98
- });
99
- });
@@ -1,62 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { ForeignKey } from '@dxos/echo-protocol';
8
- import { invariant } from '@dxos/invariant';
9
- import { type Comparator, intersection } from '@dxos/util';
10
-
11
- import { type BaseObject } from '../types';
12
-
13
- import { MetaId } from './model';
14
-
15
- //
16
- // ObjectMeta
17
- //
18
-
19
- // TODO(dmaretskyi): Rename to ObjectMeta
20
- export const ObjectMetaSchema = Schema.mutable(
21
- Schema.Struct({
22
- keys: Schema.mutable(Schema.Array(ForeignKey)),
23
-
24
- /**
25
- * A set of tags.
26
- * Tags are arbitrary application-defined strings.
27
- * ECHO makes no assumptions about the tag structure.
28
- */
29
- // TODO(dmaretskyi): Has to be optional for compatibility with old data.
30
- // Defaulting to an empty array is possible but requires a bit more work.
31
- tags: Schema.optional(Schema.mutable(Schema.Array(Schema.String))),
32
- }),
33
- );
34
-
35
- export type ObjectMeta = Schema.Schema.Type<typeof ObjectMetaSchema>;
36
-
37
- export const foreignKey = (source: string, id: string): ForeignKey => ({ source, id });
38
- export const foreignKeyEquals = (a: ForeignKey, b: ForeignKey) => a.source === b.source && a.id === b.id;
39
-
40
- /**
41
- * Get metadata from object.
42
- * Only callable on the object root.
43
- * @deprecated Use {@link getMeta}.
44
- */
45
- // TODO(dmaretskyi): Remove.
46
- export const getObjectMeta = (obj: any): ObjectMeta => {
47
- return getMeta(obj);
48
- };
49
-
50
- /*
51
- * Get metadata from object.
52
- * Only callable on the object root.
53
- */
54
- export const getMeta = (obj: BaseObject): ObjectMeta => {
55
- const metadata = (obj as any)[MetaId];
56
- invariant(metadata, 'ObjectMeta not found.');
57
- return metadata;
58
- };
59
-
60
- // TODO(dmaretskyi): Move to echo-schema.
61
- export const compareForeignKeys: Comparator<BaseObject> = (a: BaseObject, b: BaseObject) =>
62
- intersection(getMeta(a).keys, getMeta(b).keys, foreignKeyEquals).length > 0;