@dxos/echo 0.8.4-main.72ec0f3 → 0.8.4-main.7ace549

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 (332) hide show
  1. package/dist/lib/browser/{chunk-BIDAASFK.mjs → chunk-7GH6RXJ3.mjs} +2246 -2290
  2. package/dist/lib/browser/chunk-7GH6RXJ3.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-E4UTVJNF.mjs +1111 -0
  4. package/dist/lib/browser/chunk-E4UTVJNF.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +18 -8
  6. package/dist/lib/browser/internal/index.mjs +45 -45
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/testing/index.mjs +252 -191
  9. package/dist/lib/browser/testing/index.mjs.map +4 -4
  10. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs +1111 -0
  11. package/dist/lib/node-esm/chunk-JE5RXM2I.mjs.map +7 -0
  12. package/dist/lib/node-esm/{chunk-3SVRRCUU.mjs → chunk-M4B6BMD2.mjs} +2246 -2290
  13. package/dist/lib/node-esm/chunk-M4B6BMD2.mjs.map +7 -0
  14. package/dist/lib/node-esm/index.mjs +18 -8
  15. package/dist/lib/node-esm/internal/index.mjs +45 -45
  16. package/dist/lib/node-esm/meta.json +1 -1
  17. package/dist/lib/node-esm/testing/index.mjs +252 -191
  18. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  19. package/dist/types/src/Annotation.d.ts +2 -0
  20. package/dist/types/src/Annotation.d.ts.map +1 -0
  21. package/dist/types/src/Database.d.ts +137 -0
  22. package/dist/types/src/Database.d.ts.map +1 -0
  23. package/dist/types/src/Entity.d.ts +36 -0
  24. package/dist/types/src/Entity.d.ts.map +1 -0
  25. package/dist/types/src/Format.d.ts +4 -0
  26. package/dist/types/src/Format.d.ts.map +1 -0
  27. package/dist/types/src/JsonSchema.d.ts +9 -0
  28. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  29. package/dist/types/src/Key.d.ts +1 -0
  30. package/dist/types/src/Key.d.ts.map +1 -1
  31. package/dist/types/src/Obj.d.ts +79 -70
  32. package/dist/types/src/Obj.d.ts.map +1 -1
  33. package/dist/types/src/Ref.d.ts +10 -10
  34. package/dist/types/src/Ref.d.ts.map +1 -1
  35. package/dist/types/src/Relation.d.ts +14 -11
  36. package/dist/types/src/Relation.d.ts.map +1 -1
  37. package/dist/types/src/Tag.d.ts +1 -1
  38. package/dist/types/src/Tag.d.ts.map +1 -1
  39. package/dist/types/src/Type.d.ts +39 -49
  40. package/dist/types/src/Type.d.ts.map +1 -1
  41. package/dist/types/src/index.d.ts +6 -3
  42. package/dist/types/src/index.d.ts.map +1 -1
  43. package/dist/types/src/internal/annotations/annotations.d.ts +174 -0
  44. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  45. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  46. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  47. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  48. package/dist/types/src/internal/annotations/util.d.ts +26 -0
  49. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  50. package/dist/types/src/internal/entities/entity.d.ts +10 -0
  51. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  52. package/dist/types/src/internal/{object → entities}/expando.d.ts +3 -1
  53. package/dist/types/src/internal/entities/expando.d.ts.map +1 -0
  54. package/dist/types/src/internal/entities/index.d.ts +6 -0
  55. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  56. package/dist/types/src/internal/entities/model.d.ts +70 -0
  57. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  58. package/dist/types/src/internal/entities/object.d.ts +11 -0
  59. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  60. package/dist/types/src/internal/entities/relation.d.ts +55 -0
  61. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  62. package/dist/types/src/internal/entities/util.d.ts +2 -0
  63. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  64. package/dist/types/src/internal/formats/format.d.ts +2 -0
  65. package/dist/types/src/internal/formats/format.d.ts.map +1 -1
  66. package/dist/types/src/internal/formats/types.d.ts +7 -7
  67. package/dist/types/src/internal/formats/types.d.ts.map +1 -1
  68. package/dist/types/src/internal/index.d.ts +6 -10
  69. package/dist/types/src/internal/index.d.ts.map +1 -1
  70. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  71. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  72. package/dist/types/src/internal/json-schema/index.d.ts +2 -0
  73. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -1
  74. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  75. package/dist/types/src/internal/{json → json-schema}/json-schema.d.ts +2 -1
  76. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  77. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  78. package/dist/types/src/internal/object/common.d.ts.map +1 -1
  79. package/dist/types/src/internal/object/{create.d.ts → create-object.d.ts} +8 -9
  80. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  81. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  82. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  83. package/dist/types/src/internal/object/deleted.d.ts +2 -2
  84. package/dist/types/src/internal/object/deleted.d.ts.map +1 -1
  85. package/dist/types/src/internal/object/ids.d.ts.map +1 -1
  86. package/dist/types/src/internal/object/index.d.ts +3 -11
  87. package/dist/types/src/internal/object/index.d.ts.map +1 -1
  88. package/dist/types/src/internal/object/json-serializer.d.ts +1 -2
  89. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  90. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -1
  91. package/dist/types/src/internal/object/typed-object.d.ts +1 -1
  92. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -1
  93. package/dist/types/src/internal/proxy/index.d.ts +3 -0
  94. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  95. package/dist/types/src/internal/proxy/make-object.d.ts +16 -0
  96. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  97. package/dist/types/src/internal/proxy/typed-handler.d.ts +1 -1
  98. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  99. package/dist/types/src/internal/ref/ref.d.ts +15 -12
  100. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  101. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  102. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  103. package/dist/types/src/internal/schema/echo-schema.d.ts +9 -9
  104. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  105. package/dist/types/src/internal/schema/index.d.ts +3 -4
  106. package/dist/types/src/internal/schema/index.d.ts.map +1 -1
  107. package/dist/types/src/internal/schema/persistent-schema.d.ts +18 -0
  108. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  109. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +1 -1
  110. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +1 -1
  111. package/dist/types/src/internal/types/base.d.ts +37 -0
  112. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  113. package/dist/types/src/internal/{ast/entity-kind.d.ts → types/entity.d.ts} +3 -1
  114. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  115. package/dist/types/src/internal/types/index.d.ts +5 -2
  116. package/dist/types/src/internal/types/index.d.ts.map +1 -1
  117. package/dist/types/src/internal/{object → types}/meta.d.ts +20 -11
  118. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  119. package/dist/types/src/internal/types/typename.d.ts +13 -0
  120. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  121. package/dist/types/src/internal/{object → types}/version.d.ts +3 -2
  122. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  123. package/dist/types/src/query/filter.d.ts +167 -0
  124. package/dist/types/src/query/filter.d.ts.map +1 -0
  125. package/dist/types/src/query/index.d.ts +3 -0
  126. package/dist/types/src/query/index.d.ts.map +1 -1
  127. package/dist/types/src/query/order.d.ts +12 -0
  128. package/dist/types/src/query/order.d.ts.map +1 -0
  129. package/dist/types/src/query/query.d.ts +9 -145
  130. package/dist/types/src/query/query.d.ts.map +1 -1
  131. package/dist/types/src/query/testing.d.ts +51 -0
  132. package/dist/types/src/query/testing.d.ts.map +1 -0
  133. package/dist/types/src/{internal/query/query.d.ts → query/types.d.ts} +1 -1
  134. package/dist/types/src/query/types.d.ts.map +1 -0
  135. package/dist/types/src/query/util.d.ts +8 -0
  136. package/dist/types/src/query/util.d.ts.map +1 -0
  137. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  138. package/dist/types/src/testing/index.d.ts +3 -3
  139. package/dist/types/src/testing/index.d.ts.map +1 -1
  140. package/dist/types/src/testing/test-data.d.ts +18 -0
  141. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  142. package/dist/types/src/testing/{types.d.ts → test-schema.d.ts} +166 -57
  143. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  144. package/dist/types/src/{internal/testing/utils.d.ts → testing/util.d.ts} +11 -5
  145. package/dist/types/src/testing/util.d.ts.map +1 -0
  146. package/dist/types/tsconfig.tsbuildinfo +1 -1
  147. package/package.json +46 -38
  148. package/src/Annotation.ts +17 -0
  149. package/src/Database.ts +189 -0
  150. package/src/Entity.ts +51 -0
  151. package/src/Format.ts +11 -0
  152. package/src/JsonSchema.ts +16 -0
  153. package/src/Key.ts +3 -0
  154. package/src/Obj.ts +248 -181
  155. package/src/Ref.ts +9 -9
  156. package/src/Relation.ts +58 -44
  157. package/src/Tag.ts +2 -1
  158. package/src/Type.ts +96 -83
  159. package/src/index.ts +9 -4
  160. package/src/internal/README.md +83 -0
  161. package/src/internal/{ast → annotations}/annotations.test.ts +13 -15
  162. package/src/internal/annotations/annotations.ts +463 -0
  163. package/src/internal/annotations/index.ts +6 -0
  164. package/src/internal/annotations/util.ts +70 -0
  165. package/src/internal/entities/entity.ts +109 -0
  166. package/src/internal/{object → entities}/expando.ts +7 -5
  167. package/src/internal/entities/index.ts +9 -0
  168. package/src/internal/{object → entities}/model.ts +49 -90
  169. package/src/internal/entities/object.ts +45 -0
  170. package/src/internal/entities/relation.ts +155 -0
  171. package/src/internal/entities/util.ts +33 -0
  172. package/src/internal/formats/date.test.ts +1 -1
  173. package/src/internal/formats/date.ts +5 -5
  174. package/src/internal/formats/format.test.ts +5 -5
  175. package/src/internal/formats/format.ts +3 -0
  176. package/src/internal/formats/number.ts +5 -5
  177. package/src/internal/formats/object.ts +2 -2
  178. package/src/internal/formats/string.ts +9 -9
  179. package/src/internal/formats/types.ts +44 -39
  180. package/src/internal/index.ts +29 -13
  181. package/src/internal/{json → json-schema}/annotations.ts +1 -1
  182. package/src/internal/json-schema/index.ts +2 -0
  183. package/src/internal/json-schema/json-schema-type.ts +4 -3
  184. package/src/internal/{json → json-schema}/json-schema.test.ts +48 -38
  185. package/src/internal/{json → json-schema}/json-schema.ts +16 -7
  186. package/src/internal/object/common.ts +3 -4
  187. package/src/internal/object/{create.test.ts → create-object.test.ts} +30 -32
  188. package/src/internal/object/{create.ts → create-object.ts} +33 -34
  189. package/src/internal/object/deleted.ts +6 -6
  190. package/src/internal/object/ids.ts +1 -1
  191. package/src/internal/object/index.ts +3 -11
  192. package/src/internal/object/inspect.ts +3 -5
  193. package/src/internal/object/json-serializer.test.ts +33 -38
  194. package/src/internal/object/json-serializer.ts +43 -38
  195. package/src/internal/object/schema-validator.ts +3 -2
  196. package/src/internal/object/typed-object.test.ts +1 -1
  197. package/src/internal/object/typed-object.ts +11 -5
  198. package/src/internal/proxy/handler.test.ts +30 -20
  199. package/src/internal/proxy/index.ts +6 -0
  200. package/src/internal/proxy/{reactive-object.ts → make-object.ts} +19 -14
  201. package/src/internal/proxy/schema.test.ts +5 -4
  202. package/src/internal/proxy/typed-handler.test.ts +28 -28
  203. package/src/internal/proxy/typed-handler.ts +8 -3
  204. package/src/internal/proxy/typed-object.test.ts +16 -11
  205. package/src/internal/ref/ref.test.ts +8 -7
  206. package/src/internal/ref/ref.ts +24 -20
  207. package/src/internal/{projection → schema}/compose.test.ts +5 -6
  208. package/src/internal/{projection → schema}/compose.ts +2 -1
  209. package/src/internal/schema/echo-schema.ts +30 -28
  210. package/src/internal/schema/index.ts +3 -4
  211. package/src/internal/schema/manipulation.ts +1 -1
  212. package/src/internal/schema/persistent-schema.ts +28 -0
  213. package/src/internal/schema/runtime-schema-registry.ts +4 -4
  214. package/src/internal/types/base.ts +58 -0
  215. package/src/internal/{ast/entity-kind.ts → types/entity.ts} +8 -0
  216. package/src/internal/types/index.ts +5 -2
  217. package/src/internal/{object → types}/meta.ts +32 -17
  218. package/src/internal/types/typename.ts +45 -0
  219. package/src/internal/types/version.ts +20 -0
  220. package/src/query/filter.ts +455 -0
  221. package/src/query/index.ts +4 -1
  222. package/src/query/order.ts +34 -0
  223. package/src/query/query.test.ts +48 -115
  224. package/src/query/query.ts +16 -502
  225. package/src/query/testing.ts +64 -0
  226. package/src/query/util.ts +25 -0
  227. package/src/testing/api.test.ts +100 -0
  228. package/src/testing/index.ts +3 -3
  229. package/src/testing/test-data.ts +130 -0
  230. package/src/testing/test-schema.ts +213 -0
  231. package/src/{internal/testing/utils.ts → testing/util.ts} +38 -14
  232. package/dist/lib/browser/chunk-BIDAASFK.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-ZDLCWGEW.mjs +0 -410
  234. package/dist/lib/browser/chunk-ZDLCWGEW.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-ZFRJKT4A.mjs +0 -585
  236. package/dist/lib/browser/chunk-ZFRJKT4A.mjs.map +0 -7
  237. package/dist/lib/browser/query/index.mjs +0 -13
  238. package/dist/lib/browser/query/index.mjs.map +0 -7
  239. package/dist/lib/node-esm/chunk-3SVRRCUU.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs +0 -585
  241. package/dist/lib/node-esm/chunk-CGDHRZWH.mjs.map +0 -7
  242. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs +0 -410
  243. package/dist/lib/node-esm/chunk-HWS6VBQC.mjs.map +0 -7
  244. package/dist/lib/node-esm/query/index.mjs +0 -13
  245. package/dist/lib/node-esm/query/index.mjs.map +0 -7
  246. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  247. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  248. package/dist/types/src/internal/ast/annotations.d.ts +0 -131
  249. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  250. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  251. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  252. package/dist/types/src/internal/ast/index.d.ts +0 -5
  253. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  254. package/dist/types/src/internal/ast/types.d.ts +0 -6
  255. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  256. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  257. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  258. package/dist/types/src/internal/json/index.d.ts +0 -2
  259. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  260. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  261. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  262. package/dist/types/src/internal/object/accessors.d.ts +0 -37
  263. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  264. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  265. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  266. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  267. package/dist/types/src/internal/object/entity.d.ts +0 -33
  268. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  269. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  270. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  271. package/dist/types/src/internal/object/model.d.ts +0 -117
  272. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  273. package/dist/types/src/internal/object/relation.d.ts +0 -17
  274. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  275. package/dist/types/src/internal/object/typename.d.ts +0 -15
  276. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  277. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  278. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  279. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  280. package/dist/types/src/internal/projection/index.d.ts +0 -2
  281. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  282. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  283. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  284. package/dist/types/src/internal/query/index.d.ts +0 -2
  285. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  286. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  287. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  288. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  289. package/dist/types/src/internal/testing/index.d.ts +0 -3
  290. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  291. package/dist/types/src/internal/testing/types.d.ts +0 -381
  292. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  293. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  294. package/dist/types/src/internal/types/types.d.ts +0 -79
  295. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  296. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  297. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  298. package/dist/types/src/internal/types/util.d.ts +0 -5
  299. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  300. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  301. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  302. package/dist/types/src/testing/types.d.ts.map +0 -1
  303. package/src/internal/ast/annotation-helper.ts +0 -22
  304. package/src/internal/ast/annotations.ts +0 -226
  305. package/src/internal/ast/index.ts +0 -8
  306. package/src/internal/ast/types.ts +0 -17
  307. package/src/internal/json/index.ts +0 -5
  308. package/src/internal/object/accessors.ts +0 -153
  309. package/src/internal/object/entity.ts +0 -248
  310. package/src/internal/object/relation.ts +0 -24
  311. package/src/internal/object/typename.ts +0 -61
  312. package/src/internal/object/version.ts +0 -22
  313. package/src/internal/projection/index.ts +0 -5
  314. package/src/internal/query/index.ts +0 -5
  315. package/src/internal/schema/stored-schema.ts +0 -26
  316. package/src/internal/testing/index.ts +0 -6
  317. package/src/internal/testing/types.ts +0 -144
  318. package/src/internal/types/types.test.ts +0 -48
  319. package/src/internal/types/types.ts +0 -176
  320. package/src/internal/types/util.ts +0 -9
  321. package/src/test/api.test.ts +0 -180
  322. package/src/testing/echo-schema.ts +0 -39
  323. package/src/testing/types.ts +0 -108
  324. /package/dist/types/src/internal/{ast → annotations}/annotations.test.d.ts +0 -0
  325. /package/dist/types/src/internal/{json → json-schema}/annotations.d.ts +0 -0
  326. /package/dist/types/src/internal/{json → json-schema}/effect-schema.test.d.ts +0 -0
  327. /package/dist/types/src/internal/{json → json-schema}/json-schema.test.d.ts +0 -0
  328. /package/dist/types/src/internal/{projection → schema}/compose.d.ts +0 -0
  329. /package/dist/types/src/internal/{projection → schema}/compose.test.d.ts +0 -0
  330. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  331. /package/src/internal/{json → json-schema}/effect-schema.test.ts +0 -0
  332. /package/src/{internal/query/query.ts → query/types.ts} +0 -0
@@ -1,96 +1,79 @@
1
1
  import "@dxos/node-std/globals";
2
2
  import {
3
+ Any,
4
+ Obj,
5
+ Ref,
6
+ Relation,
3
7
  Type_exports
4
- } from "../chunk-ZFRJKT4A.mjs";
5
- import "../chunk-ZDLCWGEW.mjs";
8
+ } from "../chunk-E4UTVJNF.mjs";
6
9
  import {
7
- EchoObject,
8
- EchoRelation,
9
10
  EchoSchema,
10
- Ref,
11
- StoredSchema,
12
- TypedObject,
11
+ PersistentSchema,
13
12
  getSchemaTypename,
14
- live,
13
+ makeObject,
15
14
  toJsonSchema
16
- } from "../chunk-BIDAASFK.mjs";
15
+ } from "../chunk-7GH6RXJ3.mjs";
16
+
17
+ // src/testing/test-data.ts
18
+ import { DatabaseDirectory, ObjectStructure } from "@dxos/echo-protocol";
19
+ import { DXN, ObjectId, PublicKey } from "@dxos/keys";
17
20
 
18
- // src/internal/testing/types.ts
21
+ // src/testing/test-schema.ts
19
22
  import * as Schema from "effect/Schema";
20
- (function(Testing3) {
21
- const Circle = Schema.Struct({
22
- type: Schema.Literal("circle"),
23
- radius: Schema.Number
24
- });
25
- const Square = Schema.Struct({
26
- type: Schema.Literal("square"),
27
- side: Schema.Number
28
- });
29
- const Shape = Schema.Union(Circle, Square);
30
- const TestNestedSchema = Schema.mutable(Schema.Struct({
23
+ (function(TestSchema2) {
24
+ const Nested = Schema.Struct({
31
25
  field: Schema.String
32
- }));
33
- Testing3.TestNestedType = TestNestedSchema.pipe(EchoObject({
34
- typename: "example.com/type/TestNested",
35
- version: "0.1.0"
36
- }));
37
- class EmptySchemaType extends TypedObject({
38
- typename: "example.com/type/Empty",
39
- version: "0.1.0"
40
- })({}) {
26
+ }).pipe(Schema.mutable);
27
+ class TestClass {
28
+ field = "value";
29
+ toJSON() {
30
+ return {
31
+ field: this.field
32
+ };
33
+ }
41
34
  }
42
- Testing3.EmptySchemaType = EmptySchemaType;
43
- const fields = {
35
+ TestSchema2.TestClass = TestClass;
36
+ TestSchema2.ExampleSchema = Schema.Struct({
44
37
  string: Schema.String,
45
38
  number: Schema.Number,
46
- nullableShapeArray: Schema.mutable(Schema.Array(Schema.Union(Shape, Schema.Null))),
47
39
  boolean: Schema.Boolean,
48
40
  null: Schema.Null,
49
41
  undefined: Schema.Undefined,
50
42
  stringArray: Schema.mutable(Schema.Array(Schema.String)),
51
43
  twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),
52
- object: TestNestedSchema,
53
- objectArray: Schema.mutable(Schema.Array(TestNestedSchema)),
54
- nested: Schema.optional(Ref(Testing3.TestNestedType)),
44
+ nested: Schema.mutable(Nested),
45
+ nestedArray: Schema.mutable(Schema.Array(Nested)),
46
+ nestedNullableArray: Schema.mutable(Schema.Array(Schema.Union(Nested, Schema.Null))),
47
+ reference: Schema.suspend(() => Ref(TestSchema2.Example)),
48
+ referenceArray: Schema.mutable(Schema.Array(Schema.suspend(() => Ref(TestSchema2.Example)))),
49
+ classInstance: Schema.instanceOf(TestClass),
55
50
  other: Schema.Any
56
- };
57
- Testing3.TestSchema = Schema.mutable(Schema.partial(Schema.Struct(fields)));
58
- class TestSchemaType extends TypedObject({
59
- typename: "example.com/type/Test",
51
+ }).pipe(Schema.partial, Schema.mutable);
52
+ TestSchema2.Example = TestSchema2.ExampleSchema.pipe(Obj({
53
+ typename: "example.com/type/Example",
60
54
  version: "0.1.0"
61
- })(fields, {
62
- partial: true
63
- }) {
64
- }
65
- Testing3.TestSchemaType = TestSchemaType;
66
- Testing3.TestType = Testing3.TestSchema.pipe(EchoObject({
67
- typename: "example.com/type/Test",
55
+ }));
56
+ TestSchema2.MessageStruct = Schema.Struct({
57
+ // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).
58
+ // TODO(burdon): Support defaults (update create and create).
59
+ timestamp: Schema.String.pipe(Schema.propertySignature, Schema.withConstructorDefault(() => (/* @__PURE__ */ new Date()).toISOString()))
60
+ });
61
+ TestSchema2.Message = TestSchema2.MessageStruct.pipe(Obj({
62
+ typename: "example.com/type/Message",
68
63
  version: "0.1.0"
69
64
  }));
70
- class TestClass {
71
- field = "value";
72
- toJSON() {
73
- return {
74
- field: this.field
75
- };
76
- }
77
- }
78
- Testing3.TestClass = TestClass;
79
- Testing3.TestSchemaWithClass = Schema.mutable(Schema.extend(Testing3.TestSchema, Schema.mutable(Schema.Struct({
80
- classInstance: Schema.optional(Schema.instanceOf(TestClass))
81
- }))));
82
- class Person extends TypedObject({
83
- typename: "example.com/type/Person",
65
+ TestSchema2.Organization = Schema.Struct({
66
+ name: Schema.String
67
+ }).pipe(Obj({
68
+ typename: "example.com/type/Organization",
84
69
  version: "0.1.0"
85
- })({
70
+ }));
71
+ TestSchema2.Person = Schema.Struct({
86
72
  name: Schema.String,
87
73
  username: Schema.String,
88
74
  email: Schema.String,
89
- phoneNumbers: Schema.optional(Schema.Array(Schema.Struct({
90
- label: Schema.String,
91
- number: Schema.String
92
- }))),
93
- tasks: Schema.suspend(() => Schema.mutable(Schema.Array(Ref(Task)))),
75
+ tasks: Schema.mutable(Schema.Array(Schema.suspend(() => Ref(TestSchema2.Task)))),
76
+ employer: Schema.optional(Ref(TestSchema2.Organization)),
94
77
  address: Schema.Struct({
95
78
  city: Schema.optional(Schema.String),
96
79
  state: Schema.optional(Schema.String),
@@ -100,55 +83,204 @@ import * as Schema from "effect/Schema";
100
83
  lng: Schema.optional(Schema.Number)
101
84
  })
102
85
  })
103
- }, {
104
- partial: true
105
- }) {
106
- }
107
- Testing3.Person = Person;
108
- class Task extends TypedObject({
109
- typename: "example.com/type/Task",
86
+ }).pipe(Schema.partial, Obj({
87
+ typename: "example.com/type/Person",
110
88
  version: "0.1.0"
111
- })({
89
+ }));
90
+ TestSchema2.Task = Schema.Struct({
112
91
  title: Schema.optional(Schema.String),
92
+ deadline: Schema.optional(Schema.String),
113
93
  completed: Schema.optional(Schema.Boolean),
114
- assignee: Schema.optional(Ref(Person)),
115
- previous: Schema.optional(Schema.suspend(() => Ref(Task))),
116
- subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend(() => Ref(Task))))),
94
+ assignee: Schema.optional(Ref(TestSchema2.Person)),
95
+ previous: Schema.optional(Schema.suspend(() => Ref(TestSchema2.Task))),
96
+ subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend(() => Ref(TestSchema2.Task))))),
117
97
  description: Schema.optional(Schema.String)
118
- }, {
119
- partial: true
120
- }) {
121
- }
122
- Testing3.Task = Task;
123
- Testing3.HasManager = Schema.Struct({
124
- since: Schema.optional(Schema.String)
125
- }).pipe(EchoRelation({
98
+ }).pipe(Schema.partial, Obj({
99
+ typename: "example.com/type/Task",
100
+ version: "0.1.0"
101
+ }));
102
+ TestSchema2.HasManager = Schema.Struct({}).pipe(Relation({
126
103
  typename: "example.com/type/HasManager",
127
104
  version: "0.1.0",
128
- source: Person,
129
- target: Person
105
+ source: TestSchema2.Person,
106
+ target: TestSchema2.Person
130
107
  }));
131
- })(Testing || (Testing = {}));
132
- var Testing;
108
+ TestSchema2.EmployedBy = Schema.Struct({
109
+ role: Schema.String,
110
+ since: Schema.optional(Schema.String)
111
+ }).pipe(Relation({
112
+ typename: "example.com/type/EmployedBy",
113
+ version: "0.1.0",
114
+ source: TestSchema2.Person,
115
+ target: TestSchema2.Organization
116
+ }));
117
+ (function(RecordType) {
118
+ RecordType[RecordType["UNDEFINED"] = 0] = "UNDEFINED";
119
+ RecordType[RecordType["PERSONAL"] = 1] = "PERSONAL";
120
+ RecordType[RecordType["WORK"] = 2] = "WORK";
121
+ })(TestSchema2.RecordType || (TestSchema2.RecordType = {}));
122
+ TestSchema2.Container = Schema.Struct({
123
+ objects: Schema.mutable(Schema.Array(Ref(Any))),
124
+ records: Schema.mutable(Schema.Array(Schema.partial(Schema.Struct({
125
+ title: Schema.String,
126
+ description: Schema.String,
127
+ contacts: Schema.mutable(Schema.Array(Ref(TestSchema2.Person))),
128
+ type: Schema.Enums(TestSchema2.RecordType)
129
+ }))))
130
+ }).pipe(Schema.partial, Obj({
131
+ typename: "example.com/type/Container",
132
+ version: "0.1.0"
133
+ }));
134
+ })(TestSchema || (TestSchema = {}));
135
+ var TestSchema;
133
136
 
134
- // src/internal/testing/utils.ts
137
+ // src/testing/test-data.ts
138
+ var spaceKey = PublicKey.random();
139
+ var PEOPLE = {
140
+ alice: DatabaseDirectory.make({
141
+ spaceKey: spaceKey.toHex(),
142
+ objects: {
143
+ [ObjectId.random()]: ObjectStructure.makeObject({
144
+ type: Type_exports.getDXN(TestSchema.Person).toString(),
145
+ data: {
146
+ name: "Alice"
147
+ }
148
+ })
149
+ }
150
+ }),
151
+ bob: DatabaseDirectory.make({
152
+ spaceKey: spaceKey.toHex(),
153
+ objects: {
154
+ [ObjectId.random()]: ObjectStructure.makeObject({
155
+ type: Type_exports.getDXN(TestSchema.Person).toString(),
156
+ data: {
157
+ name: "Bob"
158
+ }
159
+ })
160
+ }
161
+ })
162
+ };
163
+ var ORGS = {
164
+ dxos: DatabaseDirectory.make({
165
+ spaceKey: spaceKey.toHex(),
166
+ objects: {
167
+ [ObjectId.random()]: ObjectStructure.makeObject({
168
+ type: Type_exports.getDXN(TestSchema.Organization).toString(),
169
+ data: {
170
+ name: "DXOS",
171
+ founded: "2023"
172
+ }
173
+ })
174
+ }
175
+ }),
176
+ cyberdyne: DatabaseDirectory.make({
177
+ spaceKey: spaceKey.toHex(),
178
+ objects: {
179
+ [ObjectId.random()]: ObjectStructure.makeObject({
180
+ type: Type_exports.getDXN(TestSchema.Organization).toString(),
181
+ data: {
182
+ name: "Cyberdyne Systems",
183
+ founded: "1984"
184
+ }
185
+ })
186
+ }
187
+ })
188
+ };
189
+ var WORKS_FOR = {
190
+ fredWorksForCyberdyne: DatabaseDirectory.make({
191
+ spaceKey: spaceKey.toHex(),
192
+ objects: {
193
+ [ObjectId.random()]: ObjectStructure.makeRelation({
194
+ type: Type_exports.getDXN(TestSchema.EmployedBy).toString(),
195
+ source: {
196
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects)[0]).toString()
197
+ },
198
+ target: {
199
+ "/": DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects)[0]).toString()
200
+ },
201
+ data: {
202
+ since: "2020",
203
+ position: "Engineer"
204
+ }
205
+ })
206
+ }
207
+ }),
208
+ aliceWorksForAperture: DatabaseDirectory.make({
209
+ spaceKey: spaceKey.toHex(),
210
+ objects: {
211
+ [ObjectId.random()]: ObjectStructure.makeRelation({
212
+ type: Type_exports.getDXN(TestSchema.EmployedBy).toString(),
213
+ source: {
214
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
215
+ },
216
+ target: {
217
+ "/": DXN.fromLocalObjectId(Object.keys(ORGS.dxos.objects)[0]).toString()
218
+ },
219
+ data: {
220
+ since: "2018",
221
+ position: "Research Scientist"
222
+ }
223
+ })
224
+ }
225
+ })
226
+ };
227
+ var TASKS = {
228
+ task1: DatabaseDirectory.make({
229
+ spaceKey: spaceKey.toHex(),
230
+ objects: {
231
+ [ObjectId.random()]: ObjectStructure.makeObject({
232
+ type: Type_exports.getDXN(TestSchema.Task).toString(),
233
+ data: {
234
+ title: "Complete project documentation",
235
+ description: "Write comprehensive documentation for the new system",
236
+ status: "in-progress",
237
+ dueDate: "2023-12-31",
238
+ assignee: {
239
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects)[0]).toString()
240
+ }
241
+ }
242
+ })
243
+ }
244
+ }),
245
+ task2: DatabaseDirectory.make({
246
+ spaceKey: spaceKey.toHex(),
247
+ objects: {
248
+ [ObjectId.random()]: ObjectStructure.makeObject({
249
+ type: Type_exports.getDXN(TestSchema.Task).toString(),
250
+ data: {
251
+ title: "Run experiments",
252
+ description: "Conduct series of experiments on the portal device",
253
+ status: "pending",
254
+ dueDate: "2023-11-15",
255
+ assignee: {
256
+ "/": DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects)[0]).toString()
257
+ }
258
+ }
259
+ })
260
+ }
261
+ })
262
+ };
263
+
264
+ // src/testing/util.ts
135
265
  import { effect } from "@preact/signals-core";
136
266
  import { registerSignalsRuntime } from "@dxos/echo-signals";
267
+ import { assertArgument } from "@dxos/invariant";
137
268
  import { deepMapValues } from "@dxos/util";
138
269
  registerSignalsRuntime();
139
- var updateCounter = (touch) => {
140
- let updateCount = -1;
141
- const unsubscribe = effect(() => {
142
- touch();
143
- updateCount++;
270
+ var createEchoSchema = (schema, version = "0.1.0") => {
271
+ const jsonSchema = toJsonSchema(schema);
272
+ const typename = getSchemaTypename(schema);
273
+ assertArgument(typename, "typename", "Schema does not have a typename.");
274
+ const echoSchema = new EchoSchema(makeObject(PersistentSchema, {
275
+ typename,
276
+ version,
277
+ jsonSchema
278
+ }));
279
+ effect(() => {
280
+ const _ = echoSchema.jsonSchema;
281
+ echoSchema._invalidate();
144
282
  });
145
- return {
146
- // https://github.com/tc39/proposal-explicit-resource-management
147
- [Symbol.dispose]: unsubscribe,
148
- get count() {
149
- return updateCount;
150
- }
151
- };
283
+ return echoSchema;
152
284
  };
153
285
  var prepareAstForCompare = (obj) => deepMapValues(obj, (value, recurse) => {
154
286
  if (typeof value === "function") {
@@ -169,97 +301,26 @@ var prepareAstForCompare = (obj) => deepMapValues(obj, (value, recurse) => {
169
301
  }
170
302
  return recurse(value);
171
303
  });
172
-
173
- // src/testing/types.ts
174
- import * as Schema2 from "effect/Schema";
175
- (function(Testing3) {
176
- Testing3.Person = Schema2.Struct({
177
- name: Schema2.String,
178
- username: Schema2.String,
179
- email: Schema2.String,
180
- tasks: Schema2.mutable(Schema2.Array(Schema2.suspend(() => Type_exports.Ref(Testing3.Task)))),
181
- address: Schema2.Struct({
182
- city: Schema2.optional(Schema2.String),
183
- state: Schema2.optional(Schema2.String),
184
- zip: Schema2.optional(Schema2.String),
185
- coordinates: Schema2.Struct({
186
- lat: Schema2.optional(Schema2.Number),
187
- lng: Schema2.optional(Schema2.Number)
188
- })
189
- })
190
- }).pipe(Schema2.partial, Type_exports.Obj({
191
- typename: "example.com/type/Person",
192
- version: "0.1.0"
193
- }));
194
- Testing3.Task = Schema2.Struct({
195
- title: Schema2.optional(Schema2.String),
196
- completed: Schema2.optional(Schema2.Boolean),
197
- assignee: Schema2.optional(Type_exports.Ref(Testing3.Person)),
198
- previous: Schema2.optional(Schema2.suspend(() => Type_exports.Ref(Testing3.Task))),
199
- subTasks: Schema2.optional(Schema2.mutable(Schema2.Array(Schema2.suspend(() => Type_exports.Ref(Testing3.Task))))),
200
- description: Schema2.optional(Schema2.String)
201
- }).pipe(Schema2.partial, Type_exports.Obj({
202
- typename: "example.com/type/Task",
203
- version: "0.1.0"
204
- }));
205
- Testing3.WorksFor = Schema2.Struct({
206
- since: Schema2.optional(Schema2.String)
207
- }).pipe(Type_exports.Relation({
208
- typename: "example.com/type/WorksFor",
209
- version: "0.1.0",
210
- source: Testing3.Person,
211
- target: Testing3.Person
212
- }));
213
- Testing3.HasManager = Schema2.Struct({
214
- since: Schema2.optional(Schema2.String)
215
- }).pipe(Type_exports.Relation({
216
- typename: "example.com/type/HasManager",
217
- version: "0.1.0",
218
- source: Testing3.Person,
219
- target: Testing3.Person
220
- }));
221
- (function(RecordType) {
222
- RecordType[RecordType["UNDEFINED"] = 0] = "UNDEFINED";
223
- RecordType[RecordType["PERSONAL"] = 1] = "PERSONAL";
224
- RecordType[RecordType["WORK"] = 2] = "WORK";
225
- })(Testing3.RecordType || (Testing3.RecordType = {}));
226
- Testing3.Container = Schema2.Struct({
227
- objects: Schema2.mutable(Schema2.Array(Type_exports.Ref(Type_exports.Expando))),
228
- records: Schema2.mutable(Schema2.Array(Schema2.partial(Schema2.Struct({
229
- title: Schema2.String,
230
- description: Schema2.String,
231
- contacts: Schema2.mutable(Schema2.Array(Type_exports.Ref(Testing3.Person))),
232
- type: Schema2.Enums(Testing3.RecordType)
233
- }))))
234
- }).pipe(Schema2.partial, Type_exports.Obj({
235
- typename: "example.com/type/Container",
236
- version: "0.1.0"
237
- }));
238
- })(Testing2 || (Testing2 = {}));
239
- var Testing2;
240
-
241
- // src/testing/echo-schema.ts
242
- import { effect as effect2 } from "@preact/signals-core";
243
- import { registerSignalsRuntime as registerSignalsRuntime2 } from "@dxos/echo-signals";
244
- import { assertArgument } from "@dxos/invariant";
245
- registerSignalsRuntime2();
246
- var createEchoSchema = (schema) => {
247
- const typename = getSchemaTypename(schema);
248
- assertArgument(typename, "typename", "Schema does not have a typename.");
249
- const echoSchema = new EchoSchema(live(StoredSchema, {
250
- typename,
251
- version: "0.1.0",
252
- jsonSchema: toJsonSchema(schema)
253
- }));
254
- effect2(() => {
255
- const _ = echoSchema.jsonSchema;
256
- echoSchema._invalidate();
304
+ var updateCounter = (touch) => {
305
+ let updateCount = -1;
306
+ const unsubscribe = effect(() => {
307
+ touch();
308
+ updateCount++;
257
309
  });
258
- return echoSchema;
310
+ return {
311
+ // https://github.com/tc39/proposal-explicit-resource-management
312
+ [Symbol.dispose]: unsubscribe,
313
+ get count() {
314
+ return updateCount;
315
+ }
316
+ };
259
317
  };
260
318
  export {
261
- Testing2 as Testing,
262
- Testing as TestingDeprecated,
319
+ ORGS,
320
+ PEOPLE,
321
+ TASKS,
322
+ TestSchema,
323
+ WORKS_FOR,
263
324
  createEchoSchema,
264
325
  prepareAstForCompare,
265
326
  updateCounter
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/internal/testing/types.ts", "../../../../src/internal/testing/utils.ts", "../../../../src/testing/types.ts", "../../../../src/testing/echo-schema.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { EchoObject, EchoRelation, TypedObject } from '../object';\nimport { Ref, type Ref$ } from '../ref';\n\n/**\n * @deprecated\n */\n// TOOD(burdon): Reconcile with ../testing (remove this).\nexport namespace Testing {\n //\n // Primitives\n //\n\n const Circle = Schema.Struct({ type: Schema.Literal('circle'), radius: Schema.Number });\n const Square = Schema.Struct({ type: Schema.Literal('square'), side: Schema.Number });\n const Shape = Schema.Union(Circle, Square);\n\n //\n // Simple types\n //\n\n const TestNestedSchema = Schema.mutable(Schema.Struct({ field: Schema.String }));\n export type TestNestedSchema = Schema.Schema.Type<typeof TestNestedSchema>;\n export const TestNestedType = TestNestedSchema.pipe(\n EchoObject({ typename: 'example.com/type/TestNested', version: '0.1.0' }),\n );\n\n //\n // Complex types\n // TODO(burdon): Change to Type.Obj.\n //\n\n export class EmptySchemaType extends TypedObject({\n typename: 'example.com/type/Empty',\n version: '0.1.0',\n })({}) {}\n\n const fields = {\n string: Schema.String,\n number: Schema.Number,\n nullableShapeArray: Schema.mutable(Schema.Array(Schema.Union(Shape, Schema.Null))),\n boolean: Schema.Boolean,\n null: Schema.Null,\n undefined: Schema.Undefined,\n stringArray: Schema.mutable(Schema.Array(Schema.String)),\n twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),\n object: TestNestedSchema,\n objectArray: Schema.mutable(Schema.Array(TestNestedSchema)),\n nested: Schema.optional(Ref(TestNestedType)),\n other: Schema.Any,\n };\n\n export const TestSchema = Schema.mutable(Schema.partial(Schema.Struct(fields)));\n export type TestSchema = Schema.Schema.Type<typeof TestSchema>;\n\n export class TestSchemaType extends TypedObject({\n typename: 'example.com/type/Test',\n version: '0.1.0',\n })(fields, { partial: true }) {} // TODO(burdon): Partial?\n\n // TODO(burdon): Why do we use need this rather then TestSchemaType?\n export const TestType = TestSchema.pipe(\n EchoObject({\n typename: 'example.com/type/Test',\n version: '0.1.0',\n }),\n );\n\n export class TestClass {\n field = 'value';\n toJSON() {\n return { field: this.field };\n }\n }\n\n // TODO(dmaretskyi): Another top-level Schema.mutable call as a workaround for the regression in the last minor.\n export const TestSchemaWithClass = Schema.mutable(\n Schema.extend(\n TestSchema,\n Schema.mutable(\n Schema.Struct({\n classInstance: Schema.optional(Schema.instanceOf(TestClass)),\n }),\n ),\n ),\n );\n\n export type TestSchemaWithClass = Schema.Schema.Type<typeof TestSchemaWithClass>;\n\n export class Person extends TypedObject({\n typename: 'example.com/type/Person',\n version: '0.1.0',\n })(\n {\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n phoneNumbers: Schema.optional(Schema.Array(Schema.Struct({ label: Schema.String, number: Schema.String }))),\n tasks: Schema.suspend((): Schema.mutable<Schema.Array$<Ref$<Task>>> => Schema.mutable(Schema.Array(Ref(Task)))),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n },\n { partial: true },\n ) {}\n\n export class Task extends TypedObject({\n typename: 'example.com/type/Task',\n version: '0.1.0',\n })(\n {\n title: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Ref$<Task> => Ref(Task))),\n subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend((): Ref$<Task> => Ref(Task))))),\n description: Schema.optional(Schema.String),\n },\n { partial: true },\n ) {}\n\n export const HasManager = Schema.Struct({\n since: Schema.optional(Schema.String),\n }).pipe(\n EchoRelation({\n typename: 'example.com/type/HasManager',\n version: '0.1.0',\n source: Person,\n target: Person,\n }),\n );\n export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\nimport type * as SchemaAST from 'effect/SchemaAST';\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals';\nimport { deepMapValues } from '@dxos/util';\n\nregisterSignalsRuntime();\n\n// TODO(burdon): Move to util.\nexport const updateCounter = (touch: () => void) => {\n let updateCount = -1;\n const unsubscribe = effect(() => {\n touch();\n updateCount++;\n });\n\n return {\n // https://github.com/tc39/proposal-explicit-resource-management\n [Symbol.dispose]: unsubscribe,\n get count() {\n return updateCount;\n },\n };\n};\n\n/**\n * Converts AST to a format that can be compared with test matchers.\n */\nexport const prepareAstForCompare = (obj: SchemaAST.AST): any =>\n deepMapValues(obj, (value: any, recurse) => {\n if (typeof value === 'function') {\n return null;\n }\n\n if (value instanceof RegExp) {\n return value;\n }\n\n // Convert symbols to strings.\n if (typeof value === 'object') {\n const clone = { ...value };\n for (const sym of Object.getOwnPropertySymbols(clone as any)) {\n clone[sym.toString()] = clone[sym];\n delete clone[sym];\n }\n return recurse(clone);\n }\n\n return recurse(value);\n });\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Type } from '..';\n\n/**\n * @deprecated\n */\n// TOOD(burdon): Reconcile with @dxos/schema.\nexport namespace Testing {\n export const Person = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n tasks: Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task)))),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Person',\n version: '0.1.0',\n }),\n );\n\n export interface Person extends Schema.Schema.Type<typeof Person> {}\n\n export const Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Type.Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))),\n subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))))),\n description: Schema.optional(Schema.String),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Task',\n version: '0.1.0',\n }),\n );\n\n export interface Task extends Schema.Schema.Type<typeof Task> {}\n\n export const WorksFor = Schema.Struct({\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.Relation({\n typename: 'example.com/type/WorksFor',\n version: '0.1.0',\n source: Person,\n target: Person,\n }),\n );\n\n export interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}\n\n export const HasManager = Schema.Struct({\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.Relation({\n typename: 'example.com/type/HasManager',\n version: '0.1.0',\n source: Person,\n target: Person,\n }),\n );\n\n export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.mutable(Schema.Array(Type.Ref(Type.Expando))),\n records: Schema.mutable(\n Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.mutable(Schema.Array(Type.Ref(Person))),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n ),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Container',\n version: '0.1.0',\n }),\n );\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\nimport type * as Schema from 'effect/Schema';\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals';\nimport { assertArgument } from '@dxos/invariant';\n\nimport { EchoSchema, StoredSchema, getSchemaTypename, live, toJsonSchema } from '../internal';\n\n// NOTE: Registration is done here is this is the module that calls out to `effect`.\nregisterSignalsRuntime();\n\n/**\n * Create a reactive mutable schema that updates when the JSON schema is updated.\n */\n// TODO(dmaretskyi): Should be replaced by registration of typed object.\nexport const createEchoSchema = (schema: Schema.Schema.AnyNoContext): EchoSchema => {\n const typename = getSchemaTypename(schema);\n assertArgument(typename, 'typename', 'Schema does not have a typename.');\n\n const echoSchema = new EchoSchema(\n live(StoredSchema, {\n typename,\n version: '0.1.0',\n jsonSchema: toJsonSchema(schema),\n }),\n );\n\n // TODO(burdon): Unsubscribe is never called.\n effect(() => {\n const _ = echoSchema.jsonSchema;\n echoSchema._invalidate();\n });\n\n return echoSchema;\n};\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "Testing", "Circle", "Struct", "type", "Literal", "radius", "Number", "Square", "side", "Shape", "Union", "TestNestedSchema", "mutable", "field", "String", "TestNestedType", "pipe", "EchoObject", "typename", "version", "EmptySchemaType", "TypedObject", "fields", "string", "number", "nullableShapeArray", "Array", "Null", "boolean", "Boolean", "null", "undefined", "Undefined", "stringArray", "twoDimNumberArray", "object", "objectArray", "nested", "optional", "Ref", "other", "Any", "TestSchema", "partial", "TestSchemaType", "TestType", "TestClass", "toJSON", "TestSchemaWithClass", "extend", "classInstance", "instanceOf", "Person", "name", "username", "email", "phoneNumbers", "label", "tasks", "suspend", "Task", "address", "city", "state", "zip", "coordinates", "lat", "lng", "title", "completed", "assignee", "previous", "subTasks", "description", "HasManager", "since", "EchoRelation", "source", "target", "effect", "registerSignalsRuntime", "deepMapValues", "registerSignalsRuntime", "updateCounter", "touch", "updateCount", "unsubscribe", "effect", "Symbol", "dispose", "count", "prepareAstForCompare", "obj", "deepMapValues", "value", "recurse", "RegExp", "clone", "sym", "Object", "getOwnPropertySymbols", "toString", "Schema", "Testing", "Person", "Struct", "name", "String", "username", "email", "tasks", "mutable", "Array", "suspend", "Type", "Ref", "Task", "address", "city", "optional", "state", "zip", "coordinates", "lat", "Number", "lng", "pipe", "partial", "Obj", "typename", "version", "title", "completed", "Boolean", "assignee", "previous", "subTasks", "description", "WorksFor", "since", "Relation", "source", "target", "HasManager", "RecordType", "Container", "objects", "Expando", "records", "contacts", "type", "Enums", "effect", "registerSignalsRuntime", "assertArgument", "registerSignalsRuntime", "createEchoSchema", "schema", "typename", "getSchemaTypename", "assertArgument", "echoSchema", "EchoSchema", "live", "StoredSchema", "version", "jsonSchema", "toJsonSchema", "effect", "_", "_invalidate"]
3
+ "sources": ["../../../../src/testing/test-data.ts", "../../../../src/testing/test-schema.ts", "../../../../src/testing/util.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\nimport { DXN, ObjectId, PublicKey } from '@dxos/keys';\n\nimport { Type } from '../index';\n\nimport { TestSchema } from './test-schema';\n\nconst spaceKey = PublicKey.random();\n\n// TODO(burdon): Use Obj.make.\n\nexport const PEOPLE = {\n alice: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Alice',\n },\n }),\n },\n }),\n bob: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Bob',\n },\n }),\n },\n }),\n};\n\nexport const ORGS = {\n dxos: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'DXOS',\n founded: '2023',\n },\n }),\n },\n }),\n cyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n }),\n};\n\nexport const WORKS_FOR = {\n fredWorksForCyberdyne: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects!)[0]).toString() },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n }),\n aliceWorksForAperture: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.dxos.objects!)[0]).toString() },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n }),\n};\n\nexport const TASKS = {\n task1: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n },\n }),\n },\n }),\n task2: DatabaseDirectory.make({\n spaceKey: spaceKey.toHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n },\n }),\n },\n }),\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as Obj from '../Obj';\nimport * as Type from '../Type';\n\nexport namespace TestSchema {\n //\n // Example\n //\n\n const Nested = Schema.Struct({\n field: Schema.String,\n }).pipe(Schema.mutable);\n\n export class TestClass {\n field = 'value';\n toJSON() {\n return { field: this.field };\n }\n }\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const ExampleSchema = Schema.Struct({\n string: Schema.String,\n number: Schema.Number,\n boolean: Schema.Boolean,\n null: Schema.Null,\n undefined: Schema.Undefined,\n stringArray: Schema.mutable(Schema.Array(Schema.String)),\n twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),\n nested: Schema.mutable(Nested),\n nestedArray: Schema.mutable(Schema.Array(Nested)),\n nestedNullableArray: Schema.mutable(Schema.Array(Schema.Union(Nested, Schema.Null))),\n reference: Schema.suspend((): Type.Ref<Example> => Type.Ref(Example)),\n referenceArray: Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Example> => Type.Ref(Example)))),\n classInstance: Schema.instanceOf(TestClass),\n other: Schema.Any,\n }).pipe(Schema.partial, Schema.mutable);\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface ExampleSchema extends Schema.Schema.Type<typeof ExampleSchema> {}\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const Example = ExampleSchema.pipe(\n Type.Obj({\n typename: 'example.com/type/Example',\n version: '0.1.0',\n }),\n );\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface Example extends Schema.Schema.Type<typeof Example> {}\n\n //\n // Message\n //\n\n // TODO(burdon): Support defaults directly on Type: `make` is erased by `pipe(Type.Obj)`.\n export const MessageStruct = Schema.Struct({\n // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).\n // TODO(burdon): Support defaults (update create and create).\n timestamp: Schema.String.pipe(\n Schema.propertySignature,\n Schema.withConstructorDefault(() => new Date().toISOString()),\n ),\n });\n\n export const Message = MessageStruct.pipe(\n Type.Obj({\n typename: 'example.com/type/Message',\n version: '0.1.0',\n }),\n );\n\n export interface Message extends Schema.Schema.Type<typeof Message> {}\n\n //\n // Organization\n //\n\n export const Organization = Schema.Struct({\n name: Schema.String,\n }).pipe(\n Type.Obj({\n typename: 'example.com/type/Organization',\n version: '0.1.0',\n }),\n );\n\n export interface Organization extends Schema.Schema.Type<typeof Organization> {}\n\n //\n // Person\n //\n\n export const Person = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n tasks: Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task)))),\n employer: Schema.optional(Type.Ref(Organization)),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Person',\n version: '0.1.0',\n }),\n );\n\n export interface Person extends Schema.Schema.Type<typeof Person> {}\n\n //\n // Task\n //\n\n export const Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n deadline: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Type.Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))),\n subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend((): Type.Ref<Task> => Type.Ref(Task))))),\n description: Schema.optional(Schema.String),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Task',\n version: '0.1.0',\n }),\n );\n\n export interface Task extends Schema.Schema.Type<typeof Task> {}\n\n //\n // HasManager\n //\n\n export const HasManager = Schema.Struct({}).pipe(\n Type.Relation({\n typename: 'example.com/type/HasManager',\n version: '0.1.0',\n source: Person,\n target: Person,\n }),\n );\n\n export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}\n\n //\n // EmployedBy\n //\n\n export const EmployedBy = Schema.Struct({\n role: Schema.String,\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.Relation({\n typename: 'example.com/type/EmployedBy',\n version: '0.1.0',\n source: Person,\n target: Organization,\n }),\n );\n\n export interface EmployedBy extends Schema.Schema.Type<typeof EmployedBy> {}\n\n //\n // RecordType\n //\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.mutable(Schema.Array(Type.Ref(Obj.Any))),\n records: Schema.mutable(\n Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.mutable(Schema.Array(Type.Ref(Person))),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n ),\n }).pipe(\n Schema.partial,\n Type.Obj({\n typename: 'example.com/type/Container',\n version: '0.1.0',\n }),\n );\n\n export interface Container extends Schema.Schema.Type<typeof Container> {}\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\nimport type * as Schema from 'effect/Schema';\nimport type * as SchemaAST from 'effect/SchemaAST';\n\nimport { registerSignalsRuntime } from '@dxos/echo-signals';\nimport { assertArgument } from '@dxos/invariant';\nimport { deepMapValues } from '@dxos/util';\n\nimport { EchoSchema, PersistentSchema, getSchemaTypename, makeObject, toJsonSchema } from '../internal';\n\nregisterSignalsRuntime();\n\n/**\n * Create a reactive mutable schema that updates when the JSON schema is updated.\n */\n// TODO(dmaretskyi): Should be replaced by registration of typed object.\nexport const createEchoSchema = (schema: Schema.Schema.AnyNoContext, version = '0.1.0'): EchoSchema => {\n const jsonSchema = toJsonSchema(schema);\n const typename = getSchemaTypename(schema);\n assertArgument(typename, 'typename', 'Schema does not have a typename.');\n const echoSchema = new EchoSchema(makeObject(PersistentSchema, { typename, version, jsonSchema }));\n\n // TODO(burdon): Unsubscribe is never called.\n effect(() => {\n const _ = echoSchema.jsonSchema;\n echoSchema._invalidate();\n });\n\n return echoSchema;\n};\n\n/**\n * Converts AST to a format that can be compared with test matchers.\n */\nexport const prepareAstForCompare = (obj: SchemaAST.AST): any =>\n deepMapValues(obj, (value: any, recurse: any) => {\n if (typeof value === 'function') {\n return null;\n }\n\n if (value instanceof RegExp) {\n return value;\n }\n\n // Convert symbols to strings.\n if (typeof value === 'object') {\n const clone = { ...value };\n for (const sym of Object.getOwnPropertySymbols(clone as any)) {\n clone[sym.toString()] = clone[sym];\n delete clone[sym];\n }\n\n return recurse(clone);\n }\n\n return recurse(value);\n });\n\n// TODO(burdon): Use @dxos/util.\nexport const updateCounter = (touch: () => void) => {\n let updateCount = -1;\n const unsubscribe = effect(() => {\n touch();\n updateCount++;\n });\n\n return {\n // https://github.com/tc39/proposal-explicit-resource-management\n [Symbol.dispose]: unsubscribe,\n get count() {\n return updateCount;\n },\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["DatabaseDirectory", "ObjectStructure", "DXN", "ObjectId", "PublicKey", "Schema", "TestSchema", "Nested", "Struct", "field", "String", "pipe", "mutable", "TestClass", "toJSON", "ExampleSchema", "string", "number", "Number", "boolean", "Boolean", "null", "Null", "undefined", "Undefined", "stringArray", "Array", "twoDimNumberArray", "nested", "nestedArray", "nestedNullableArray", "Union", "reference", "suspend", "Ref", "Example", "referenceArray", "classInstance", "instanceOf", "other", "Any", "partial", "Obj", "typename", "version", "MessageStruct", "timestamp", "propertySignature", "withConstructorDefault", "Date", "toISOString", "Message", "Organization", "name", "Person", "username", "email", "tasks", "Task", "employer", "optional", "address", "city", "state", "zip", "coordinates", "lat", "lng", "title", "deadline", "completed", "assignee", "previous", "subTasks", "description", "HasManager", "Relation", "source", "target", "EmployedBy", "role", "since", "RecordType", "Container", "objects", "records", "contacts", "type", "Enums", "spaceKey", "PublicKey", "random", "PEOPLE", "alice", "DatabaseDirectory", "make", "toHex", "objects", "ObjectId", "ObjectStructure", "makeObject", "type", "Type", "getDXN", "TestSchema", "Person", "toString", "data", "name", "bob", "ORGS", "dxos", "Organization", "founded", "cyberdyne", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "EmployedBy", "source", "DXN", "fromLocalObjectId", "Object", "keys", "target", "since", "position", "aliceWorksForAperture", "TASKS", "task1", "Task", "title", "description", "status", "dueDate", "assignee", "task2", "effect", "registerSignalsRuntime", "assertArgument", "deepMapValues", "registerSignalsRuntime", "createEchoSchema", "schema", "version", "jsonSchema", "toJsonSchema", "typename", "getSchemaTypename", "assertArgument", "echoSchema", "EchoSchema", "makeObject", "PersistentSchema", "effect", "_", "_invalidate", "prepareAstForCompare", "obj", "deepMapValues", "value", "recurse", "RegExp", "clone", "sym", "Object", "getOwnPropertySymbols", "toString", "updateCounter", "touch", "updateCount", "unsubscribe", "Symbol", "dispose", "count"]
7
7
  }