@dxos/echo 0.8.4-main.406dc2a → 0.8.4-main.4a85c3132b

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 (554) 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 +56 -0
  5. package/dist/lib/neutral/Err.mjs +12 -0
  6. package/dist/lib/neutral/Feed.mjs +43 -0
  7. package/dist/lib/neutral/Filter.mjs +61 -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 +18 -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 +107 -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 +32 -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 +90 -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 +25 -0
  29. package/dist/lib/neutral/Tag.mjs.map +7 -0
  30. package/dist/lib/neutral/Type.mjs +34 -0
  31. package/dist/lib/neutral/Type.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-4KG6IGL4.mjs +67 -0
  33. package/dist/lib/neutral/chunk-4KG6IGL4.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-5ELDDYWE.mjs +130 -0
  35. package/dist/lib/neutral/chunk-5ELDDYWE.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-ALOGSVBP.mjs +299 -0
  37. package/dist/lib/neutral/chunk-ALOGSVBP.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  39. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-AQP4QKYP.mjs +283 -0
  41. package/dist/lib/neutral/chunk-AQP4QKYP.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-BRJSLACP.mjs +152 -0
  43. package/dist/lib/neutral/chunk-BRJSLACP.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-DZQSL6RW.mjs +73 -0
  45. package/dist/lib/neutral/chunk-DZQSL6RW.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs +327 -0
  47. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs +56 -0
  49. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-GFNCSK7F.mjs +101 -0
  51. package/dist/lib/neutral/chunk-GFNCSK7F.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-KGV3QIRX.mjs +313 -0
  55. package/dist/lib/neutral/chunk-KGV3QIRX.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-M2KVTHZM.mjs +402 -0
  57. package/dist/lib/neutral/chunk-M2KVTHZM.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-MXQJZCPY.mjs +51 -0
  59. package/dist/lib/neutral/chunk-MXQJZCPY.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-O3TZFQCT.mjs +27 -0
  61. package/dist/lib/neutral/chunk-O3TZFQCT.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  63. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-OVUBTQLT.mjs +45 -0
  65. package/dist/lib/neutral/chunk-OVUBTQLT.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-PP4DNUZU.mjs +3919 -0
  67. package/dist/lib/neutral/chunk-PP4DNUZU.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-QXF3LGN2.mjs +43 -0
  69. package/dist/lib/neutral/chunk-QXF3LGN2.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs +97 -0
  71. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-T6JEFNP6.mjs +7 -0
  73. package/dist/lib/neutral/chunk-T6JEFNP6.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs +121 -0
  75. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs +42 -0
  77. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs +298 -0
  79. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs.map +7 -0
  80. package/dist/lib/neutral/index.mjs +94 -0
  81. package/dist/lib/neutral/index.mjs.map +7 -0
  82. package/dist/lib/{node-esm → neutral}/internal/index.mjs +253 -121
  83. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  84. package/dist/lib/neutral/meta.json +1 -0
  85. package/dist/lib/neutral/testing/index.mjs +369 -0
  86. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  87. package/dist/types/src/Annotation.d.ts +24 -0
  88. package/dist/types/src/Annotation.d.ts.map +1 -0
  89. package/dist/types/src/Collection.d.ts +16 -0
  90. package/dist/types/src/Collection.d.ts.map +1 -0
  91. package/dist/types/src/Database.d.ts +189 -0
  92. package/dist/types/src/Database.d.ts.map +1 -0
  93. package/dist/types/src/Dataset.d.ts +18 -0
  94. package/dist/types/src/Dataset.d.ts.map +1 -0
  95. package/dist/types/src/Entity.d.ts +168 -0
  96. package/dist/types/src/Entity.d.ts.map +1 -0
  97. package/dist/types/src/Entity.test.d.ts +2 -0
  98. package/dist/types/src/Entity.test.d.ts.map +1 -0
  99. package/dist/types/src/Err.d.ts +107 -0
  100. package/dist/types/src/Err.d.ts.map +1 -0
  101. package/dist/types/src/Feed.d.ts +165 -0
  102. package/dist/types/src/Feed.d.ts.map +1 -0
  103. package/dist/types/src/Filter.d.ts +120 -0
  104. package/dist/types/src/Filter.d.ts.map +1 -0
  105. package/dist/types/src/Format.d.ts +4 -0
  106. package/dist/types/src/Format.d.ts.map +1 -0
  107. package/dist/types/src/Hypergraph.d.ts +60 -0
  108. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  109. package/dist/types/src/JsonSchema.d.ts +16 -0
  110. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  111. package/dist/types/src/Key.d.ts +1 -0
  112. package/dist/types/src/Key.d.ts.map +1 -1
  113. package/dist/types/src/Obj.d.ts +417 -101
  114. package/dist/types/src/Obj.d.ts.map +1 -1
  115. package/dist/types/src/Obj.test.d.ts +2 -0
  116. package/dist/types/src/Obj.test.d.ts.map +1 -0
  117. package/dist/types/src/Order.d.ts +16 -0
  118. package/dist/types/src/Order.d.ts.map +1 -0
  119. package/dist/types/src/Query.d.ts +202 -0
  120. package/dist/types/src/Query.d.ts.map +1 -0
  121. package/dist/types/src/Query.test.d.ts +2 -0
  122. package/dist/types/src/Query.test.d.ts.map +1 -0
  123. package/dist/types/src/QueryResult.d.ts +80 -0
  124. package/dist/types/src/QueryResult.d.ts.map +1 -0
  125. package/dist/types/src/Ref.d.ts +61 -11
  126. package/dist/types/src/Ref.d.ts.map +1 -1
  127. package/dist/types/src/Relation.d.ts +287 -21
  128. package/dist/types/src/Relation.d.ts.map +1 -1
  129. package/dist/types/src/Relation.test.d.ts +2 -0
  130. package/dist/types/src/Relation.test.d.ts.map +1 -0
  131. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  132. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  133. package/dist/types/src/Tag.d.ts +18 -0
  134. package/dist/types/src/Tag.d.ts.map +1 -0
  135. package/dist/types/src/Type.d.ts +120 -97
  136. package/dist/types/src/Type.d.ts.map +1 -1
  137. package/dist/types/src/Type.test.d.ts +2 -0
  138. package/dist/types/src/Type.test.d.ts.map +1 -0
  139. package/dist/types/src/View.d.ts +68 -0
  140. package/dist/types/src/View.d.ts.map +1 -0
  141. package/dist/types/src/hierarchy.test.d.ts +2 -0
  142. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  143. package/dist/types/src/index.d.ts +19 -5
  144. package/dist/types/src/index.d.ts.map +1 -1
  145. package/dist/types/src/internal/annotations/annotations.d.ts +209 -0
  146. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  147. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  148. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  149. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  150. package/dist/types/src/internal/annotations/util.d.ts +39 -0
  151. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  152. package/dist/types/src/internal/api/annotations.d.ts +23 -0
  153. package/dist/types/src/internal/api/annotations.d.ts.map +1 -0
  154. package/dist/types/src/internal/api/entity.d.ts +13 -0
  155. package/dist/types/src/internal/api/entity.d.ts.map +1 -0
  156. package/dist/types/src/internal/api/index.d.ts +15 -0
  157. package/dist/types/src/internal/api/index.d.ts.map +1 -0
  158. package/dist/types/src/internal/api/meta.d.ts +42 -0
  159. package/dist/types/src/internal/api/meta.d.ts.map +1 -0
  160. package/dist/types/src/internal/api/sorting.d.ts +24 -0
  161. package/dist/types/src/internal/api/sorting.d.ts.map +1 -0
  162. package/dist/types/src/internal/api/version.d.ts +42 -0
  163. package/dist/types/src/internal/api/version.d.ts.map +1 -0
  164. package/dist/types/src/internal/entities/entity.d.ts +20 -0
  165. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  166. package/dist/types/src/internal/entities/index.d.ts +6 -0
  167. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  168. package/dist/types/src/internal/entities/model.d.ts +79 -0
  169. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  170. package/dist/types/src/internal/entities/object.d.ts +18 -0
  171. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  172. package/dist/types/src/internal/entities/relation.d.ts +62 -0
  173. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  174. package/dist/types/src/internal/entities/util.d.ts +2 -0
  175. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  176. package/dist/types/src/internal/formats/format.d.ts +4 -2
  177. package/dist/types/src/internal/formats/format.d.ts.map +1 -1
  178. package/dist/types/src/internal/formats/select.d.ts +6 -4
  179. package/dist/types/src/internal/formats/select.d.ts.map +1 -1
  180. package/dist/types/src/internal/formats/string.d.ts +4 -0
  181. package/dist/types/src/internal/formats/string.d.ts.map +1 -1
  182. package/dist/types/src/internal/formats/types.d.ts +13 -9
  183. package/dist/types/src/internal/formats/types.d.ts.map +1 -1
  184. package/dist/types/src/internal/index.d.ts +7 -10
  185. package/dist/types/src/internal/index.d.ts.map +1 -1
  186. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  187. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  188. package/dist/types/src/internal/json-schema/index.d.ts +2 -0
  189. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -1
  190. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -1
  191. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +130 -29
  192. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  193. package/dist/types/src/internal/{json → json-schema}/json-schema.d.ts +4 -2
  194. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  195. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  196. package/dist/types/src/internal/object/clone.d.ts +8 -0
  197. package/dist/types/src/internal/object/clone.d.ts.map +1 -0
  198. package/dist/types/src/internal/object/common.d.ts.map +1 -1
  199. package/dist/types/src/internal/object/{create.d.ts → create-object.d.ts} +10 -11
  200. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  201. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  202. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  203. package/dist/types/src/internal/object/deleted.d.ts +2 -2
  204. package/dist/types/src/internal/object/deleted.d.ts.map +1 -1
  205. package/dist/types/src/internal/object/ids.d.ts.map +1 -1
  206. package/dist/types/src/internal/object/index.d.ts +6 -11
  207. package/dist/types/src/internal/object/index.d.ts.map +1 -1
  208. package/dist/types/src/internal/object/json-serializer.d.ts +14 -9
  209. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  210. package/dist/types/src/internal/object/schema-validator.d.ts +1 -14
  211. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -1
  212. package/dist/types/src/internal/object/set-value.d.ts +7 -0
  213. package/dist/types/src/internal/object/set-value.d.ts.map +1 -0
  214. package/dist/types/src/internal/object/set-value.test.d.ts +2 -0
  215. package/dist/types/src/internal/object/set-value.test.d.ts.map +1 -0
  216. package/dist/types/src/internal/object/snapshot.d.ts +6 -0
  217. package/dist/types/src/internal/object/snapshot.d.ts.map +1 -0
  218. package/dist/types/src/internal/object/typed-object.d.ts +8 -14
  219. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -1
  220. package/dist/types/src/internal/proxy/change-context.d.ts +55 -0
  221. package/dist/types/src/internal/proxy/change-context.d.ts.map +1 -0
  222. package/dist/types/src/internal/proxy/change.test.d.ts +2 -0
  223. package/dist/types/src/internal/proxy/change.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/proxy/define-hidden-property.d.ts +5 -0
  225. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +1 -0
  226. package/dist/types/src/internal/proxy/errors.d.ts +19 -0
  227. package/dist/types/src/internal/proxy/errors.d.ts.map +1 -0
  228. package/dist/types/src/internal/proxy/event-batch.d.ts +10 -0
  229. package/dist/types/src/internal/proxy/event-batch.d.ts.map +1 -0
  230. package/dist/types/src/internal/proxy/index.d.ts +14 -0
  231. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  232. package/dist/types/src/internal/proxy/json-serializer.d.ts +6 -0
  233. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +1 -0
  234. package/dist/types/src/internal/proxy/make-object.d.ts +14 -0
  235. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  236. package/dist/types/src/internal/proxy/ownership.d.ts +57 -0
  237. package/dist/types/src/internal/proxy/ownership.d.ts.map +1 -0
  238. package/dist/types/src/internal/proxy/proxy-types.d.ts +18 -0
  239. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +1 -0
  240. package/dist/types/src/internal/proxy/proxy-utils.d.ts +47 -0
  241. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +1 -0
  242. package/dist/types/src/internal/proxy/reactive-array.d.ts +8 -0
  243. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +1 -0
  244. package/dist/types/src/internal/proxy/reactive.d.ts +39 -0
  245. package/dist/types/src/internal/proxy/reactive.d.ts.map +1 -0
  246. package/dist/types/src/internal/proxy/schema-validator.d.ts +15 -0
  247. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +1 -0
  248. package/dist/types/src/internal/proxy/symbols.d.ts +3 -0
  249. package/dist/types/src/internal/proxy/symbols.d.ts.map +1 -0
  250. package/dist/types/src/internal/proxy/typed-handler.d.ts +16 -12
  251. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  252. package/dist/types/src/internal/ref/ref-array.d.ts +4 -4
  253. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -1
  254. package/dist/types/src/internal/ref/ref.d.ts +43 -18
  255. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  256. package/dist/types/src/internal/schema/compose.d.ts +7 -0
  257. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  258. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  259. package/dist/types/src/internal/schema/echo-schema.d.ts +25 -12
  260. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  261. package/dist/types/src/internal/schema/index.d.ts +1 -4
  262. package/dist/types/src/internal/schema/index.d.ts.map +1 -1
  263. package/dist/types/src/internal/schema/persistent-schema.d.ts +20 -0
  264. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  265. package/dist/types/src/internal/types/base.d.ts +27 -0
  266. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  267. package/dist/types/src/internal/types/entity.d.ts +37 -0
  268. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  269. package/dist/types/src/internal/types/index.d.ts +5 -2
  270. package/dist/types/src/internal/types/index.d.ts.map +1 -1
  271. package/dist/types/src/internal/{object → types}/meta.d.ts +16 -14
  272. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  273. package/dist/types/src/internal/types/typename.d.ts +21 -0
  274. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  275. package/dist/types/src/internal/types/version.d.ts +15 -0
  276. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  277. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  278. package/dist/types/src/testing/index.d.ts +3 -3
  279. package/dist/types/src/testing/index.d.ts.map +1 -1
  280. package/dist/types/src/testing/test-data.d.ts +18 -0
  281. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  282. package/dist/types/src/testing/test-schema.d.ts +304 -0
  283. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  284. package/dist/types/src/testing/util.d.ts +21 -0
  285. package/dist/types/src/testing/util.d.ts.map +1 -0
  286. package/dist/types/tsconfig.tsbuildinfo +1 -1
  287. package/package.json +106 -65
  288. package/src/Annotation.ts +46 -0
  289. package/src/Collection.ts +30 -0
  290. package/src/Database.ts +315 -0
  291. package/src/Dataset.ts +24 -0
  292. package/src/Entity.test.ts +22 -0
  293. package/src/Entity.ts +234 -0
  294. package/src/Err.ts +38 -0
  295. package/src/Feed.ts +254 -0
  296. package/src/Filter.ts +389 -0
  297. package/src/Format.ts +9 -0
  298. package/src/Hypergraph.ts +74 -0
  299. package/src/JsonSchema.ts +24 -0
  300. package/src/Key.ts +3 -0
  301. package/src/Obj.test.ts +447 -0
  302. package/src/Obj.ts +580 -267
  303. package/src/Order.ts +44 -0
  304. package/src/Query.test.ts +632 -0
  305. package/src/Query.ts +520 -0
  306. package/src/QueryResult.ts +106 -0
  307. package/src/Ref.ts +77 -9
  308. package/src/Relation.test.ts +88 -0
  309. package/src/Relation.ts +440 -58
  310. package/src/SchemaRegistry.ts +106 -0
  311. package/src/{query/tag.ts → Tag.ts} +10 -8
  312. package/src/Type.test.ts +52 -0
  313. package/src/Type.ts +162 -151
  314. package/src/View.ts +100 -0
  315. package/src/hierarchy.test.ts +33 -0
  316. package/src/index.ts +20 -6
  317. package/src/internal/README.md +102 -0
  318. package/src/internal/{ast → annotations}/annotations.test.ts +18 -20
  319. package/src/internal/annotations/annotations.ts +526 -0
  320. package/src/internal/annotations/index.ts +6 -0
  321. package/src/internal/annotations/util.ts +85 -0
  322. package/src/internal/api/annotations.ts +60 -0
  323. package/src/internal/api/entity.ts +29 -0
  324. package/src/internal/api/index.ts +19 -0
  325. package/src/internal/api/meta.ts +88 -0
  326. package/src/internal/api/sorting.ts +53 -0
  327. package/src/internal/api/version.ts +96 -0
  328. package/src/internal/entities/entity.ts +128 -0
  329. package/src/internal/entities/index.ts +9 -0
  330. package/src/internal/entities/model.ts +138 -0
  331. package/src/internal/entities/object.ts +58 -0
  332. package/src/internal/entities/relation.ts +171 -0
  333. package/src/internal/entities/util.ts +33 -0
  334. package/src/internal/formats/date.test.ts +1 -1
  335. package/src/internal/formats/date.ts +5 -5
  336. package/src/internal/formats/format.test.ts +6 -6
  337. package/src/internal/formats/format.ts +8 -6
  338. package/src/internal/formats/number.ts +5 -5
  339. package/src/internal/formats/object.ts +4 -4
  340. package/src/internal/formats/select.ts +6 -4
  341. package/src/internal/formats/string.ts +14 -9
  342. package/src/internal/formats/types.ts +53 -42
  343. package/src/internal/index.ts +30 -13
  344. package/src/internal/{json → json-schema}/annotations.ts +1 -1
  345. package/src/internal/json-schema/index.ts +2 -0
  346. package/src/internal/json-schema/json-schema-normalize.ts +4 -2
  347. package/src/internal/json-schema/json-schema-type.ts +35 -35
  348. package/src/internal/{json → json-schema}/json-schema.test.ts +73 -69
  349. package/src/internal/{json → json-schema}/json-schema.ts +30 -15
  350. package/src/internal/object/clone.ts +48 -0
  351. package/src/internal/object/common.ts +3 -4
  352. package/src/internal/object/{create.test.ts → create-object.test.ts} +31 -33
  353. package/src/internal/object/{create.ts → create-object.ts} +36 -37
  354. package/src/internal/object/deleted.ts +6 -6
  355. package/src/internal/object/ids.ts +1 -1
  356. package/src/internal/object/index.ts +6 -11
  357. package/src/internal/object/inspect.ts +5 -7
  358. package/src/internal/object/json-serializer.test.ts +59 -37
  359. package/src/internal/object/json-serializer.ts +87 -108
  360. package/src/internal/object/schema-validator.test.ts +3 -7
  361. package/src/internal/object/schema-validator.ts +2 -237
  362. package/src/internal/object/set-value.test.ts +281 -0
  363. package/src/internal/object/set-value.ts +165 -0
  364. package/src/internal/object/snapshot.ts +96 -0
  365. package/src/internal/object/typed-object.test.ts +11 -11
  366. package/src/internal/object/typed-object.ts +8 -66
  367. package/src/internal/proxy/change-context.ts +138 -0
  368. package/src/internal/proxy/change.test.ts +519 -0
  369. package/src/internal/proxy/define-hidden-property.ts +14 -0
  370. package/src/internal/proxy/errors.ts +42 -0
  371. package/src/internal/proxy/event-batch.ts +44 -0
  372. package/src/internal/proxy/handler.test.ts +51 -91
  373. package/src/internal/proxy/index.ts +17 -0
  374. package/src/internal/proxy/json-serializer.ts +87 -0
  375. package/src/internal/proxy/make-object.ts +106 -0
  376. package/src/internal/proxy/ownership.ts +253 -0
  377. package/src/internal/proxy/proxy-types.ts +23 -0
  378. package/src/internal/proxy/proxy-utils.ts +150 -0
  379. package/src/internal/proxy/reactive-array.ts +71 -0
  380. package/src/internal/proxy/reactive.ts +69 -0
  381. package/src/internal/proxy/schema-validator.ts +244 -0
  382. package/src/internal/proxy/schema.test.ts +27 -18
  383. package/src/internal/proxy/symbols.ts +7 -0
  384. package/src/internal/proxy/typed-handler.test.ts +260 -48
  385. package/src/internal/proxy/typed-handler.ts +283 -61
  386. package/src/internal/proxy/typed-object.test.ts +54 -38
  387. package/src/internal/ref/ref-array.ts +4 -4
  388. package/src/internal/ref/ref.test.ts +10 -9
  389. package/src/internal/ref/ref.ts +107 -56
  390. package/src/internal/{projection → schema}/compose.test.ts +8 -9
  391. package/src/internal/{projection → schema}/compose.ts +13 -8
  392. package/src/internal/schema/echo-schema.ts +74 -33
  393. package/src/internal/schema/index.ts +1 -4
  394. package/src/internal/schema/manipulation.ts +1 -1
  395. package/src/internal/schema/persistent-schema.ts +33 -0
  396. package/src/internal/types/base.ts +43 -0
  397. package/src/internal/types/entity.ts +54 -0
  398. package/src/internal/types/index.ts +5 -2
  399. package/src/internal/types/meta.ts +68 -0
  400. package/src/internal/types/typename.ts +55 -0
  401. package/src/internal/types/version.ts +19 -0
  402. package/src/testing/api.test.ts +126 -0
  403. package/src/testing/index.ts +3 -3
  404. package/src/testing/test-data.ts +130 -0
  405. package/src/testing/test-schema.ts +240 -0
  406. package/src/testing/util.ts +85 -0
  407. package/dist/lib/browser/chunk-HKFCK2GL.mjs +0 -175
  408. package/dist/lib/browser/chunk-HKFCK2GL.mjs.map +0 -7
  409. package/dist/lib/browser/chunk-MAAYELT7.mjs +0 -830
  410. package/dist/lib/browser/chunk-MAAYELT7.mjs.map +0 -7
  411. package/dist/lib/browser/chunk-MB6MMNFP.mjs +0 -3857
  412. package/dist/lib/browser/chunk-MB6MMNFP.mjs.map +0 -7
  413. package/dist/lib/browser/index.mjs +0 -35
  414. package/dist/lib/browser/internal/index.mjs +0 -332
  415. package/dist/lib/browser/meta.json +0 -1
  416. package/dist/lib/browser/query/index.mjs +0 -15
  417. package/dist/lib/browser/testing/index.mjs +0 -298
  418. package/dist/lib/browser/testing/index.mjs.map +0 -7
  419. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs +0 -830
  420. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs.map +0 -7
  421. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs +0 -175
  422. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs.map +0 -7
  423. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs +0 -3857
  424. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs.map +0 -7
  425. package/dist/lib/node-esm/index.mjs +0 -35
  426. package/dist/lib/node-esm/meta.json +0 -1
  427. package/dist/lib/node-esm/query/index.mjs +0 -15
  428. package/dist/lib/node-esm/testing/index.mjs +0 -298
  429. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  430. package/dist/types/src/errors.d.ts +0 -72
  431. package/dist/types/src/errors.d.ts.map +0 -1
  432. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  433. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  434. package/dist/types/src/internal/ast/annotations.d.ts +0 -125
  435. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  436. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  437. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  438. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  439. package/dist/types/src/internal/ast/index.d.ts +0 -5
  440. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  441. package/dist/types/src/internal/ast/types.d.ts +0 -6
  442. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  443. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  444. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  445. package/dist/types/src/internal/json/index.d.ts +0 -2
  446. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  447. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  448. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  449. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  450. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  451. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  452. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  453. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  454. package/dist/types/src/internal/object/entity.d.ts +0 -33
  455. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  456. package/dist/types/src/internal/object/expando.d.ts +0 -14
  457. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  458. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  459. package/dist/types/src/internal/object/model.d.ts +0 -117
  460. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  461. package/dist/types/src/internal/object/relation.d.ts +0 -17
  462. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  463. package/dist/types/src/internal/object/typename.d.ts +0 -15
  464. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  465. package/dist/types/src/internal/object/version.d.ts +0 -14
  466. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  467. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  468. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  469. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  470. package/dist/types/src/internal/projection/index.d.ts +0 -2
  471. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  472. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  473. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  474. package/dist/types/src/internal/query/index.d.ts +0 -2
  475. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  476. package/dist/types/src/internal/query/query.d.ts +0 -17
  477. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  478. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  479. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  480. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  481. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  482. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  483. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  484. package/dist/types/src/internal/testing/index.d.ts +0 -3
  485. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  486. package/dist/types/src/internal/testing/types.d.ts +0 -455
  487. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  488. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  489. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  490. package/dist/types/src/internal/types/types.d.ts +0 -79
  491. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  492. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  493. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  494. package/dist/types/src/internal/types/util.d.ts +0 -5
  495. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  496. package/dist/types/src/query/index.d.ts +0 -3
  497. package/dist/types/src/query/index.d.ts.map +0 -1
  498. package/dist/types/src/query/query.d.ts +0 -248
  499. package/dist/types/src/query/query.d.ts.map +0 -1
  500. package/dist/types/src/query/query.test.d.ts +0 -2
  501. package/dist/types/src/query/query.test.d.ts.map +0 -1
  502. package/dist/types/src/query/tag.d.ts +0 -17
  503. package/dist/types/src/query/tag.d.ts.map +0 -1
  504. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  505. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  506. package/dist/types/src/testing/types.d.ts +0 -113
  507. package/dist/types/src/testing/types.d.ts.map +0 -1
  508. package/src/errors.ts +0 -18
  509. package/src/internal/ast/annotation-helper.ts +0 -22
  510. package/src/internal/ast/annotations.ts +0 -219
  511. package/src/internal/ast/entity-kind.ts +0 -15
  512. package/src/internal/ast/index.ts +0 -8
  513. package/src/internal/ast/types.ts +0 -17
  514. package/src/internal/json/index.ts +0 -5
  515. package/src/internal/object/accessors.ts +0 -153
  516. package/src/internal/object/entity.ts +0 -248
  517. package/src/internal/object/expando.ts +0 -21
  518. package/src/internal/object/meta.ts +0 -61
  519. package/src/internal/object/model.ts +0 -170
  520. package/src/internal/object/relation.ts +0 -24
  521. package/src/internal/object/typename.ts +0 -61
  522. package/src/internal/object/version.ts +0 -22
  523. package/src/internal/projection/index.ts +0 -5
  524. package/src/internal/proxy/reactive-object.ts +0 -108
  525. package/src/internal/query/index.ts +0 -5
  526. package/src/internal/query/query.ts +0 -23
  527. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  528. package/src/internal/schema/snapshot.ts +0 -25
  529. package/src/internal/schema/stored-schema.ts +0 -26
  530. package/src/internal/testing/index.ts +0 -6
  531. package/src/internal/testing/types.ts +0 -211
  532. package/src/internal/testing/utils.ts +0 -54
  533. package/src/internal/types/types.test.ts +0 -48
  534. package/src/internal/types/types.ts +0 -176
  535. package/src/internal/types/util.ts +0 -9
  536. package/src/query/index.ts +0 -6
  537. package/src/query/query.test.ts +0 -401
  538. package/src/query/query.ts +0 -789
  539. package/src/test/api.test.ts +0 -180
  540. package/src/testing/echo-schema.ts +0 -39
  541. package/src/testing/types.ts +0 -91
  542. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  543. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  544. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  545. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  546. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Feed.mjs.map} +0 -0
  547. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Filter.mjs.map} +0 -0
  548. /package/dist/types/src/internal/{ast → annotations}/annotations.test.d.ts +0 -0
  549. /package/dist/types/src/internal/{json → json-schema}/annotations.d.ts +0 -0
  550. /package/dist/types/src/internal/{json → json-schema}/effect-schema.test.d.ts +0 -0
  551. /package/dist/types/src/internal/{json → json-schema}/json-schema.test.d.ts +0 -0
  552. /package/dist/types/src/internal/{projection → schema}/compose.test.d.ts +0 -0
  553. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  554. /package/src/internal/{json → json-schema}/effect-schema.test.ts +0 -0
@@ -1,211 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import * as Schema from 'effect/Schema';
6
-
7
- import { EchoObject, EchoRelation, Expando, TypedObject } from '../object';
8
- import { Ref, type Ref$ } from '../ref';
9
-
10
- // TODO(burdon): These are non-canonical test types, so we really shouldn't export and use in other classes (compare with @dxos/sdk/testing).
11
- export namespace Testing {
12
- //
13
- // Primitives
14
- //
15
-
16
- const Circle = Schema.Struct({ type: Schema.Literal('circle'), radius: Schema.Number });
17
- const Square = Schema.Struct({ type: Schema.Literal('square'), side: Schema.Number });
18
- const Shape = Schema.Union(Circle, Square);
19
-
20
- //
21
- // Simple types
22
- //
23
-
24
- const TestNestedSchema = Schema.mutable(Schema.Struct({ field: Schema.String }));
25
- export type TestNestedSchema = Schema.Schema.Type<typeof TestNestedSchema>;
26
- export const TestNestedType = TestNestedSchema.pipe(
27
- EchoObject({ typename: 'example.com/type/TestNested', version: '0.1.0' }),
28
- );
29
-
30
- //
31
- // Complex types
32
- // TODO(burdon): Change to Type.Obj.
33
- //
34
-
35
- export class EmptySchemaType extends TypedObject({
36
- typename: 'example.com/type/Empty',
37
- version: '0.1.0',
38
- })({}) {}
39
-
40
- const fields = {
41
- string: Schema.String,
42
- number: Schema.Number,
43
- nullableShapeArray: Schema.mutable(Schema.Array(Schema.Union(Shape, Schema.Null))),
44
- boolean: Schema.Boolean,
45
- null: Schema.Null,
46
- undefined: Schema.Undefined,
47
- stringArray: Schema.mutable(Schema.Array(Schema.String)),
48
- twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),
49
- object: TestNestedSchema,
50
- objectArray: Schema.mutable(Schema.Array(TestNestedSchema)),
51
- nested: Schema.optional(Ref(TestNestedType)),
52
- other: Schema.Any,
53
- };
54
-
55
- export const TestSchema = Schema.mutable(Schema.partial(Schema.Struct(fields)));
56
- export type TestSchema = Schema.Schema.Type<typeof TestSchema>;
57
-
58
- export class TestSchemaType extends TypedObject({
59
- typename: 'example.com/type/Test',
60
- version: '0.1.0',
61
- })(fields, { partial: true }) {} // TODO(burdon): Partial?
62
-
63
- // TODO(burdon): Why do we use need this rather then TestSchemaType?
64
- export const TestType = TestSchema.pipe(
65
- EchoObject({
66
- typename: 'example.com/type/Test',
67
- version: '0.1.0',
68
- }),
69
- );
70
-
71
- export class TestClass {
72
- field = 'value';
73
- toJSON() {
74
- return { field: this.field };
75
- }
76
- }
77
-
78
- // TODO(dmaretskyi): Another top-level Schema.mutable call as a workaround for the regression in the last minor.
79
- export const TestSchemaWithClass = Schema.mutable(
80
- Schema.extend(
81
- TestSchema,
82
- Schema.mutable(
83
- Schema.Struct({
84
- classInstance: Schema.optional(Schema.instanceOf(TestClass)),
85
- }),
86
- ),
87
- ),
88
- );
89
-
90
- export type TestSchemaWithClass = Schema.Schema.Type<typeof TestSchemaWithClass>;
91
-
92
- export class Contact extends TypedObject({
93
- typename: 'example.com/type/Contact',
94
- version: '0.1.0',
95
- })(
96
- {
97
- name: Schema.String,
98
- username: Schema.String,
99
- email: Schema.String,
100
- phoneNumbers: Schema.optional(Schema.Array(Schema.Struct({ label: Schema.String, number: Schema.String }))),
101
- tasks: Schema.suspend((): Schema.mutable<Schema.Array$<Ref$<Task>>> => Schema.mutable(Schema.Array(Ref(Task)))),
102
- address: Schema.Struct({
103
- city: Schema.optional(Schema.String),
104
- state: Schema.optional(Schema.String),
105
- zip: Schema.optional(Schema.String),
106
- coordinates: Schema.Struct({
107
- lat: Schema.optional(Schema.Number),
108
- lng: Schema.optional(Schema.Number),
109
- }),
110
- }),
111
- },
112
- { partial: true },
113
- ) {}
114
-
115
- export class Task extends TypedObject({
116
- typename: 'example.com/type/Task',
117
- version: '0.1.0',
118
- })(
119
- {
120
- title: Schema.optional(Schema.String),
121
- completed: Schema.optional(Schema.Boolean),
122
- assignee: Schema.optional(Ref(Contact)),
123
- previous: Schema.optional(Schema.suspend((): Ref$<Task> => Ref(Task))),
124
- subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend((): Ref$<Task> => Ref(Task))))),
125
- description: Schema.optional(Schema.String),
126
- },
127
- { partial: true },
128
- ) {}
129
-
130
- // TOOD(burdon): Ref$ breaks if using new syntax (since ID is not declared).
131
-
132
- // export const Task = Schema.Struct({
133
- // title: Schema.String,
134
- // completed: Schema.Boolean,
135
- // assignee: Schema.optional(Ref(Schema.suspend((): Ref$<Contact> => Ref(Contact)))),
136
- // previous: Schema.optional(Ref(Schema.suspend((): Ref$<Task> => Ref(Task)))),
137
- // subTasks: Schema.optional(Schema.Array(Ref(Schema.suspend((): Ref$<Task> => Ref(Task))))),
138
- // description: Schema.optional(Schema.String),
139
- // }).pipe(
140
- // EchoObject({
141
- // typename: 'example.com/type/Task',
142
- // version: '0.1.0',
143
- // }),
144
- // );
145
-
146
- // export type Task = Schema.Schema.Type<typeof Task>;
147
-
148
- // export const Contact = Schema.Struct({
149
- // name: Schema.String,
150
- // username: Schema.String,
151
- // email: Schema.String,
152
- // // TOOD(burdon): Should model via relations?
153
- // // tasks: Schema.mutable(Schema.Array(Ref(Task))),
154
- // address: Schema.Struct({
155
- // city: Schema.optional(Schema.String),
156
- // state: Schema.optional(Schema.String),
157
- // zip: Schema.optional(Schema.String),
158
- // coordinates: Schema.Struct({
159
- // lat: Schema.optional(Schema.Number),
160
- // lng: Schema.optional(Schema.Number),
161
- // }),
162
- // }),
163
- // }).pipe(
164
- // EchoObject({
165
- // typename: 'example.com/type/Contact',
166
- // version: '0.1.0',
167
- // }),
168
- // );
169
-
170
- // export type Contact = Schema.Schema.Type<typeof Contact>;
171
-
172
- export enum RecordType {
173
- UNDEFINED = 0,
174
- PERSONAL = 1,
175
- WORK = 2,
176
- }
177
-
178
- export class Container extends TypedObject({
179
- typename: 'example.com/type/Container',
180
- version: '0.1.0',
181
- })(
182
- {
183
- objects: Schema.mutable(Schema.Array(Ref(Expando))),
184
- records: Schema.mutable(
185
- Schema.Array(
186
- Schema.partial(
187
- Schema.Struct({
188
- title: Schema.String,
189
- description: Schema.String,
190
- contacts: Schema.mutable(Schema.Array(Ref(Contact))),
191
- type: Schema.Enums(RecordType),
192
- }),
193
- ),
194
- ),
195
- ),
196
- },
197
- { partial: true },
198
- ) {}
199
-
200
- export const HasManager = Schema.Struct({
201
- since: Schema.optional(Schema.String),
202
- }).pipe(
203
- EchoRelation({
204
- typename: 'example.com/type/HasManager',
205
- version: '0.1.0',
206
- source: Contact,
207
- target: Contact,
208
- }),
209
- );
210
- export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}
211
- }
@@ -1,54 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { effect } from '@preact/signals-core';
6
- import type * as SchemaAST from 'effect/SchemaAST';
7
-
8
- import { registerSignalsRuntime } from '@dxos/echo-signals';
9
- import { deepMapValues } from '@dxos/util';
10
-
11
- registerSignalsRuntime();
12
-
13
- // TODO(burdon): Move to util.
14
- export const updateCounter = (touch: () => void) => {
15
- let updateCount = -1;
16
- const unsubscribe = effect(() => {
17
- touch();
18
- updateCount++;
19
- });
20
-
21
- return {
22
- // https://github.com/tc39/proposal-explicit-resource-management
23
- [Symbol.dispose]: unsubscribe,
24
- get count() {
25
- return updateCount;
26
- },
27
- };
28
- };
29
-
30
- /**
31
- * Converts AST to a format that can be compared with test matchers.
32
- */
33
- export const prepareAstForCompare = (obj: SchemaAST.AST): any =>
34
- deepMapValues(obj, (value: any, recurse, key) => {
35
- if (typeof value === 'function') {
36
- return null;
37
- }
38
-
39
- if (value instanceof RegExp) {
40
- return value;
41
- }
42
-
43
- // Convert symbols to strings.
44
- if (typeof value === 'object') {
45
- const clone = { ...value };
46
- for (const sym of Object.getOwnPropertySymbols(clone as any)) {
47
- clone[sym.toString()] = clone[sym];
48
- delete clone[sym];
49
- }
50
- return recurse(clone);
51
- }
52
-
53
- return recurse(value);
54
- });
@@ -1,48 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { describe, test } from 'vitest';
6
-
7
- import { type JsonPath } from '@dxos/effect';
8
-
9
- import { type BaseObject, getValue, setValue } from './types';
10
-
11
- describe('Types', () => {
12
- test('checks sanity', async ({ expect }) => {
13
- const obj: BaseObject = {};
14
- expect(obj).to.exist;
15
- });
16
- });
17
-
18
- describe('get/set deep', () => {
19
- test('get/set operations', ({ expect }) => {
20
- const obj = {
21
- name: 'test',
22
- items: ['a', 'b', 'c'],
23
- nested: {
24
- prop: 'value',
25
- arr: [1, 2, 3],
26
- },
27
- };
28
-
29
- // Basic property access.
30
- expect(getValue(obj, 'name' as JsonPath)).toBe('test');
31
-
32
- // Array index access.
33
- expect(getValue(obj, 'items[1]' as JsonPath)).toBe('b');
34
-
35
- // Nested property access.
36
- expect(getValue(obj, 'nested.prop' as JsonPath)).toBe('value');
37
-
38
- // Nested array access.
39
- expect(getValue(obj, 'nested.arr[2]' as JsonPath)).toBe(3);
40
-
41
- // Setting values.
42
- const updated1 = setValue(obj, 'items[1]' as JsonPath, 'x');
43
- expect(updated1.items[1]).toBe('x');
44
-
45
- const updated2 = setValue(obj, 'nested.arr[0]' as JsonPath, 99);
46
- expect(updated2.nested.arr[0]).toBe(99);
47
- });
48
- });
@@ -1,176 +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
-
8
- import { Reference } from '@dxos/echo-protocol';
9
- import { type JsonPath, splitJsonPath } from '@dxos/effect';
10
- import { DXN, type ObjectId } from '@dxos/keys';
11
- import { getDeep, setDeep } from '@dxos/util';
12
-
13
- import { getSchemaDXN } from '../ast';
14
- import { type EntityKindId, type ObjectMeta, getType, getTypename } from '../object';
15
- import { ATTR_META } from '../object/model';
16
-
17
- /**
18
- * Base type for all data objects (reactive, ECHO, and other raw objects).
19
- * NOTE: This describes the base type for all database objects.
20
- * It is stricter than `T extends {}` or `T extends object`.
21
- */
22
- // TODO(dmaretskyi): Rename AnyProperties.
23
- // TODO(dmaretskyi): Prefer `Record<string, unknown>` over `any`.
24
- /**
25
- * @deprecated use Obj.Any
26
- */
27
- export type BaseObject = Record<string, any>;
28
-
29
- /**
30
- * Marker interface for object with an `id`.
31
- */
32
- export interface HasId {
33
- readonly id: ObjectId;
34
- }
35
-
36
- // TODO(dmaretskyi): Remove; this type effectively disables type safety due to `any`.
37
- export type WithId<T extends BaseObject = BaseObject> = T & HasId;
38
-
39
- export type ExcludeId<T extends BaseObject> = Omit<T, 'id'>;
40
-
41
- /**
42
- * Properties that are required for object creation.
43
- */
44
- // TODO(dmaretskyi): Rename `MakeProps`?
45
- export type CreationProps<T extends BaseObject> = Omit<T, 'id' | typeof EntityKindId>;
46
-
47
- export type PropertyKey<T extends BaseObject> = Extract<keyof ExcludeId<T>, string>;
48
-
49
- // TODO(dmaretskyi): Remove. This should be using the symbol type.
50
- export type WithMeta = { [ATTR_META]?: ObjectMeta };
51
-
52
- /**
53
- * The raw object should not include the ECHO id, but may include metadata.
54
- */
55
- export const RawObject = <S extends Schema.Schema.AnyNoContext>(
56
- schema: S,
57
- ): Schema.Schema<ExcludeId<Schema.Schema.Type<S>> & WithMeta, Schema.Schema.Encoded<S>> => {
58
- return Schema.make(SchemaAST.omit(schema.ast, ['id']));
59
- };
60
-
61
- //
62
- // Utils
63
- //
64
-
65
- /**
66
- * Utility to split meta property from raw object.
67
- * @deprecated Bad API.
68
- */
69
- export const splitMeta = <T>(object: T & WithMeta): { object: T; meta?: ObjectMeta } => {
70
- const meta = object[ATTR_META];
71
- delete object[ATTR_META];
72
- return { meta, object };
73
- };
74
-
75
- // TODO(burdon): Move to `@dxos/util`.
76
- export const getValue = <T extends object>(obj: T, path: JsonPath): any => {
77
- return getDeep(
78
- obj,
79
- splitJsonPath(path).map((p) => p.replace(/[[\]]/g, '')),
80
- );
81
- };
82
-
83
- // TODO(burdon): Move to `@dxos/util`.
84
- export const setValue = <T extends object>(obj: T, path: JsonPath, value: any): T => {
85
- return setDeep(
86
- obj,
87
- splitJsonPath(path).map((p) => p.replace(/[[\]]/g, '')),
88
- value,
89
- );
90
- };
91
-
92
- /**
93
- * Returns a reference that will be used to point to a schema.
94
- * @deprecated Use {@link getSchemaDXN} instead.
95
- */
96
- export const getTypeReference = (schema: Schema.Schema.All | undefined): Reference | undefined => {
97
- if (!schema) {
98
- return undefined;
99
- }
100
-
101
- const schemaDXN = getSchemaDXN(schema);
102
- if (!schemaDXN) {
103
- return undefined;
104
- }
105
- return Reference.fromDXN(schemaDXN);
106
- };
107
-
108
- /**
109
- * Returns a reference that will be used to point to a schema.
110
- * @throws If it is not possible to reference this schema.
111
- *
112
- * @deprecated Use {@link getSchemaDXN} instead.
113
- */
114
- export const requireTypeReference = (schema: Schema.Schema.AnyNoContext): Reference => {
115
- const typeReference = getTypeReference(schema);
116
- if (typeReference == null) {
117
- // TODO(burdon): Catalog user-facing errors (this is too verbose).
118
- throw new Error('Schema must be defined via TypedObject.');
119
- }
120
-
121
- return typeReference;
122
- };
123
-
124
- // TODO(burdon): Can we use `Schema.is`?
125
- /**
126
- * Checks if the object is an instance of the schema.
127
- * Only typename is compared, the schema version is ignored.
128
- *
129
- * The following cases are considered to mean that the object is an instance of the schema:
130
- * - Object was created with this exact schema.
131
- * - Object was created with a different version of this schema.
132
- * - Object was created with a different schema (maybe dynamic) that has the same typename.
133
- */
134
- export const isInstanceOf = <Schema extends Schema.Schema.AnyNoContext>(
135
- schema: Schema,
136
- object: any,
137
- ): object is Schema.Schema.Type<Schema> => {
138
- if (object == null) {
139
- return false;
140
- }
141
-
142
- const schemaDXN = getSchemaDXN(schema);
143
- if (!schemaDXN) {
144
- throw new Error('Schema must have an object annotation.');
145
- }
146
-
147
- const type = getType(object);
148
- if (type && DXN.equals(type, schemaDXN)) {
149
- return true;
150
- }
151
-
152
- const typename = getTypename(object);
153
- if (!typename) {
154
- return false;
155
- }
156
-
157
- const typeDXN = schemaDXN.asTypeDXN();
158
- if (!typeDXN) {
159
- return false;
160
- }
161
-
162
- return typeDXN.type === typename;
163
- };
164
-
165
- /**
166
- * Object that has an associated typename.
167
- * The typename is retrievable using {@link getTypename}.
168
- * The object can be used with {@link isInstanceOf} to check if it is an instance of a schema.
169
- */
170
- export type HasTypename = {};
171
-
172
- /**
173
- * Canonical type for all ECHO objects.
174
- */
175
- // TODO(burdon): Reconcile with Obj.Any, Relation.Any.
176
- export interface AnyEchoObject extends HasId, HasTypename {}
@@ -1,9 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type BaseObject } from './types';
6
-
7
- export type ToMutable<T> = T extends BaseObject
8
- ? { -readonly [K in keyof T]: T[K] extends readonly (infer U)[] ? U[] : T[K] }
9
- : T;
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- export * from './query';
6
- export * as Tag from './tag';