@dxos/echo 0.8.4-main.e098934 → 0.8.4-main.ead640a

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 (308) hide show
  1. package/dist/lib/browser/chunk-HKFCK2GL.mjs +175 -0
  2. package/dist/lib/browser/chunk-HKFCK2GL.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-EIXXFUN5.mjs → chunk-MAAYELT7.mjs} +477 -486
  4. package/dist/lib/browser/chunk-MAAYELT7.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-MB6MMNFP.mjs +3857 -0
  6. package/dist/lib/browser/chunk-MB6MMNFP.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +12 -7
  8. package/dist/lib/browser/internal/index.mjs +332 -0
  9. package/dist/lib/browser/internal/index.mjs.map +7 -0
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/query/index.mjs +15 -0
  12. package/dist/lib/browser/query/index.mjs.map +7 -0
  13. package/dist/lib/browser/testing/index.mjs +260 -32
  14. package/dist/lib/browser/testing/index.mjs.map +4 -4
  15. package/dist/lib/node-esm/{chunk-TCY7IVTS.mjs → chunk-5NWDGIBT.mjs} +477 -486
  16. package/dist/lib/node-esm/chunk-5NWDGIBT.mjs.map +7 -0
  17. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs +175 -0
  18. package/dist/lib/node-esm/chunk-AUAH4E2J.mjs.map +7 -0
  19. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs +3857 -0
  20. package/dist/lib/node-esm/chunk-BQRA4VLX.mjs.map +7 -0
  21. package/dist/lib/node-esm/index.mjs +12 -7
  22. package/dist/lib/node-esm/internal/index.mjs +332 -0
  23. package/dist/lib/node-esm/internal/index.mjs.map +7 -0
  24. package/dist/lib/node-esm/meta.json +1 -1
  25. package/dist/lib/node-esm/query/index.mjs +15 -0
  26. package/dist/lib/node-esm/query/index.mjs.map +7 -0
  27. package/dist/lib/node-esm/testing/index.mjs +260 -32
  28. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  29. package/dist/types/src/Obj.d.ts +22 -5
  30. package/dist/types/src/Obj.d.ts.map +1 -1
  31. package/dist/types/src/Ref.d.ts +1 -1
  32. package/dist/types/src/Ref.d.ts.map +1 -1
  33. package/dist/types/src/Relation.d.ts +5 -4
  34. package/dist/types/src/Relation.d.ts.map +1 -1
  35. package/dist/types/src/Type.d.ts +16 -17
  36. package/dist/types/src/Type.d.ts.map +1 -1
  37. package/dist/types/src/errors.d.ts +8 -8
  38. package/dist/types/src/index.d.ts +2 -2
  39. package/dist/types/src/index.d.ts.map +1 -1
  40. package/dist/types/src/internal/ast/annotation-helper.d.ts +8 -0
  41. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +1 -0
  42. package/dist/types/src/internal/ast/annotations.d.ts +125 -0
  43. package/dist/types/src/internal/ast/annotations.d.ts.map +1 -0
  44. package/dist/types/src/internal/ast/annotations.test.d.ts +2 -0
  45. package/dist/types/src/internal/ast/annotations.test.d.ts.map +1 -0
  46. package/dist/types/src/internal/ast/entity-kind.d.ts +10 -0
  47. package/dist/types/src/internal/ast/entity-kind.d.ts.map +1 -0
  48. package/dist/types/src/internal/ast/index.d.ts +5 -0
  49. package/dist/types/src/internal/ast/index.d.ts.map +1 -0
  50. package/dist/types/src/internal/ast/types.d.ts +6 -0
  51. package/dist/types/src/internal/ast/types.d.ts.map +1 -0
  52. package/dist/types/src/internal/formats/date.d.ts +63 -0
  53. package/dist/types/src/internal/formats/date.d.ts.map +1 -0
  54. package/dist/types/src/internal/formats/date.test.d.ts +2 -0
  55. package/dist/types/src/internal/formats/date.test.d.ts.map +1 -0
  56. package/dist/types/src/internal/formats/format.d.ts +30 -0
  57. package/dist/types/src/internal/formats/format.d.ts.map +1 -0
  58. package/dist/types/src/internal/formats/format.test.d.ts +2 -0
  59. package/dist/types/src/internal/formats/format.test.d.ts.map +1 -0
  60. package/dist/types/src/internal/formats/index.d.ts +8 -0
  61. package/dist/types/src/internal/formats/index.d.ts.map +1 -0
  62. package/dist/types/src/internal/formats/number.d.ts +31 -0
  63. package/dist/types/src/internal/formats/number.d.ts.map +1 -0
  64. package/dist/types/src/internal/formats/object.d.ts +35 -0
  65. package/dist/types/src/internal/formats/object.d.ts.map +1 -0
  66. package/dist/types/src/internal/formats/select.d.ts +11 -0
  67. package/dist/types/src/internal/formats/select.d.ts.map +1 -0
  68. package/dist/types/src/internal/formats/string.d.ts +38 -0
  69. package/dist/types/src/internal/formats/string.d.ts.map +1 -0
  70. package/dist/types/src/internal/formats/types.d.ts +68 -0
  71. package/dist/types/src/internal/formats/types.d.ts.map +1 -0
  72. package/dist/types/src/internal/index.d.ts +15 -0
  73. package/dist/types/src/internal/index.d.ts.map +1 -0
  74. package/dist/types/src/internal/json/annotations.d.ts +19 -0
  75. package/dist/types/src/internal/json/annotations.d.ts.map +1 -0
  76. package/dist/types/src/internal/json/effect-schema.test.d.ts +2 -0
  77. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +1 -0
  78. package/dist/types/src/internal/json/index.d.ts +2 -0
  79. package/dist/types/src/internal/json/index.d.ts.map +1 -0
  80. package/dist/types/src/internal/json/json-schema.d.ts +28 -0
  81. package/dist/types/src/internal/json/json-schema.d.ts.map +1 -0
  82. package/dist/types/src/internal/json/json-schema.test.d.ts +2 -0
  83. package/dist/types/src/internal/json/json-schema.test.d.ts.map +1 -0
  84. package/dist/types/src/internal/json-schema/index.d.ts +3 -0
  85. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -0
  86. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts +7 -0
  87. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -0
  88. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +250 -0
  89. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -0
  90. package/dist/types/src/internal/object/accessors.d.ts +37 -0
  91. package/dist/types/src/internal/object/accessors.d.ts.map +1 -0
  92. package/dist/types/src/internal/object/common.d.ts +18 -0
  93. package/dist/types/src/internal/object/common.d.ts.map +1 -0
  94. package/dist/types/src/internal/object/create.d.ts +40 -0
  95. package/dist/types/src/internal/object/create.d.ts.map +1 -0
  96. package/dist/types/src/internal/object/create.test.d.ts +2 -0
  97. package/dist/types/src/internal/object/create.test.d.ts.map +1 -0
  98. package/dist/types/src/internal/object/deleted.d.ts +6 -0
  99. package/dist/types/src/internal/object/deleted.d.ts.map +1 -0
  100. package/dist/types/src/internal/object/entity.d.ts +33 -0
  101. package/dist/types/src/internal/object/entity.d.ts.map +1 -0
  102. package/dist/types/src/internal/object/expando.d.ts +14 -0
  103. package/dist/types/src/internal/object/expando.d.ts.map +1 -0
  104. package/dist/types/src/internal/object/ids.d.ts +6 -0
  105. package/dist/types/src/internal/object/ids.d.ts.map +1 -0
  106. package/dist/types/src/internal/object/index.d.ts +16 -0
  107. package/dist/types/src/internal/object/index.d.ts.map +1 -0
  108. package/dist/types/src/internal/object/inspect.d.ts +2 -0
  109. package/dist/types/src/internal/object/inspect.d.ts.map +1 -0
  110. package/dist/types/src/internal/object/json-serializer.d.ts +32 -0
  111. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -0
  112. package/dist/types/src/internal/object/json-serializer.test.d.ts +2 -0
  113. package/dist/types/src/internal/object/json-serializer.test.d.ts.map +1 -0
  114. package/dist/types/src/internal/object/meta.d.ts +31 -0
  115. package/dist/types/src/internal/object/meta.d.ts.map +1 -0
  116. package/dist/types/src/internal/object/model.d.ts +117 -0
  117. package/dist/types/src/internal/object/model.d.ts.map +1 -0
  118. package/dist/types/src/internal/object/relation.d.ts +17 -0
  119. package/dist/types/src/internal/object/relation.d.ts.map +1 -0
  120. package/dist/types/src/internal/object/schema-validator.d.ts +15 -0
  121. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -0
  122. package/dist/types/src/internal/object/schema-validator.test.d.ts +2 -0
  123. package/dist/types/src/internal/object/schema-validator.test.d.ts.map +1 -0
  124. package/dist/types/src/internal/object/typed-object.d.ts +31 -0
  125. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -0
  126. package/dist/types/src/internal/object/typed-object.test.d.ts +2 -0
  127. package/dist/types/src/internal/object/typed-object.test.d.ts.map +1 -0
  128. package/dist/types/src/internal/object/typename.d.ts +15 -0
  129. package/dist/types/src/internal/object/typename.d.ts.map +1 -0
  130. package/dist/types/src/internal/object/version.d.ts +14 -0
  131. package/dist/types/src/internal/object/version.d.ts.map +1 -0
  132. package/dist/types/src/internal/projection/compose.d.ts +6 -0
  133. package/dist/types/src/internal/projection/compose.d.ts.map +1 -0
  134. package/dist/types/src/internal/projection/compose.test.d.ts +2 -0
  135. package/dist/types/src/internal/projection/compose.test.d.ts.map +1 -0
  136. package/dist/types/src/internal/projection/index.d.ts +2 -0
  137. package/dist/types/src/internal/projection/index.d.ts.map +1 -0
  138. package/dist/types/src/internal/proxy/handler.test.d.ts +2 -0
  139. package/dist/types/src/internal/proxy/handler.test.d.ts.map +1 -0
  140. package/dist/types/src/internal/proxy/reactive-object.d.ts +15 -0
  141. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +1 -0
  142. package/dist/types/src/internal/proxy/schema.test.d.ts +2 -0
  143. package/dist/types/src/internal/proxy/schema.test.d.ts.map +1 -0
  144. package/dist/types/src/internal/proxy/typed-handler.d.ts +44 -0
  145. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -0
  146. package/dist/types/src/internal/proxy/typed-handler.test.d.ts +2 -0
  147. package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +1 -0
  148. package/dist/types/src/internal/proxy/typed-object.test.d.ts +2 -0
  149. package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +1 -0
  150. package/dist/types/src/internal/query/index.d.ts +2 -0
  151. package/dist/types/src/internal/query/index.d.ts.map +1 -0
  152. package/dist/types/src/internal/query/query.d.ts +17 -0
  153. package/dist/types/src/internal/query/query.d.ts.map +1 -0
  154. package/dist/types/src/internal/ref/index.d.ts +3 -0
  155. package/dist/types/src/internal/ref/index.d.ts.map +1 -0
  156. package/dist/types/src/internal/ref/ref-array.d.ts +21 -0
  157. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -0
  158. package/dist/types/src/internal/ref/ref.d.ts +206 -0
  159. package/dist/types/src/internal/ref/ref.d.ts.map +1 -0
  160. package/dist/types/src/internal/ref/ref.test.d.ts +2 -0
  161. package/dist/types/src/internal/ref/ref.test.d.ts.map +1 -0
  162. package/dist/types/src/internal/schema/echo-schema.d.ts +168 -0
  163. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -0
  164. package/dist/types/src/internal/schema/index.d.ts +7 -0
  165. package/dist/types/src/internal/schema/index.d.ts.map +1 -0
  166. package/dist/types/src/internal/schema/manipulation.d.ts +10 -0
  167. package/dist/types/src/internal/schema/manipulation.d.ts.map +1 -0
  168. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +18 -0
  169. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +1 -0
  170. package/dist/types/src/internal/schema/snapshot.d.ts +6 -0
  171. package/dist/types/src/internal/schema/snapshot.d.ts.map +1 -0
  172. package/dist/types/src/internal/schema/stored-schema.d.ts +13 -0
  173. package/dist/types/src/internal/schema/stored-schema.d.ts.map +1 -0
  174. package/dist/types/src/internal/testing/index.d.ts +3 -0
  175. package/dist/types/src/internal/testing/index.d.ts.map +1 -0
  176. package/dist/types/src/internal/testing/types.d.ts +455 -0
  177. package/dist/types/src/internal/testing/types.d.ts.map +1 -0
  178. package/dist/types/src/internal/testing/utils.d.ts +10 -0
  179. package/dist/types/src/internal/testing/utils.d.ts.map +1 -0
  180. package/dist/types/src/internal/types/index.d.ts +3 -0
  181. package/dist/types/src/internal/types/index.d.ts.map +1 -0
  182. package/dist/types/src/internal/types/types.d.ts +79 -0
  183. package/dist/types/src/internal/types/types.d.ts.map +1 -0
  184. package/dist/types/src/internal/types/types.test.d.ts +2 -0
  185. package/dist/types/src/internal/types/types.test.d.ts.map +1 -0
  186. package/dist/types/src/internal/types/util.d.ts +5 -0
  187. package/dist/types/src/internal/types/util.d.ts.map +1 -0
  188. package/dist/types/src/query/index.d.ts +2 -1
  189. package/dist/types/src/query/index.d.ts.map +1 -1
  190. package/dist/types/src/query/{dsl.d.ts → query.d.ts} +28 -23
  191. package/dist/types/src/query/query.d.ts.map +1 -0
  192. package/dist/types/src/query/query.test.d.ts +2 -0
  193. package/dist/types/src/query/query.test.d.ts.map +1 -0
  194. package/dist/types/src/query/tag.d.ts +17 -0
  195. package/dist/types/src/query/tag.d.ts.map +1 -0
  196. package/dist/types/src/testing/echo-schema.d.ts +7 -0
  197. package/dist/types/src/testing/echo-schema.d.ts.map +1 -0
  198. package/dist/types/src/testing/index.d.ts +2 -0
  199. package/dist/types/src/testing/index.d.ts.map +1 -1
  200. package/dist/types/src/testing/types.d.ts +18 -18
  201. package/dist/types/src/testing/types.d.ts.map +1 -1
  202. package/dist/types/tsconfig.tsbuildinfo +1 -1
  203. package/package.json +29 -18
  204. package/src/Obj.ts +77 -12
  205. package/src/Ref.ts +1 -2
  206. package/src/Relation.ts +15 -5
  207. package/src/Type.ts +29 -30
  208. package/src/index.ts +2 -2
  209. package/src/internal/ast/annotation-helper.ts +22 -0
  210. package/src/internal/ast/annotations.test.ts +98 -0
  211. package/src/internal/ast/annotations.ts +219 -0
  212. package/src/internal/ast/entity-kind.ts +15 -0
  213. package/src/internal/ast/index.ts +8 -0
  214. package/src/internal/ast/types.ts +17 -0
  215. package/src/internal/formats/date.test.ts +56 -0
  216. package/src/internal/formats/date.ts +217 -0
  217. package/src/internal/formats/format.test.ts +77 -0
  218. package/src/internal/formats/format.ts +52 -0
  219. package/src/internal/formats/index.ts +12 -0
  220. package/src/internal/formats/number.ts +89 -0
  221. package/src/internal/formats/object.ts +80 -0
  222. package/src/internal/formats/select.ts +16 -0
  223. package/src/internal/formats/string.ts +76 -0
  224. package/src/internal/formats/types.ts +175 -0
  225. package/src/internal/index.ts +22 -0
  226. package/src/internal/json/annotations.ts +50 -0
  227. package/src/internal/json/effect-schema.test.ts +143 -0
  228. package/src/internal/json/index.ts +5 -0
  229. package/src/internal/json/json-schema.test.ts +857 -0
  230. package/src/internal/json/json-schema.ts +519 -0
  231. package/src/internal/json-schema/index.ts +6 -0
  232. package/src/internal/json-schema/json-schema-normalize.ts +109 -0
  233. package/src/internal/json-schema/json-schema-type.ts +403 -0
  234. package/src/internal/object/accessors.ts +153 -0
  235. package/src/internal/object/common.ts +76 -0
  236. package/src/internal/object/create.test.ts +118 -0
  237. package/src/internal/object/create.ts +96 -0
  238. package/src/internal/object/deleted.ts +19 -0
  239. package/src/internal/object/entity.ts +248 -0
  240. package/src/internal/object/expando.ts +21 -0
  241. package/src/internal/object/ids.ts +12 -0
  242. package/src/internal/object/index.ts +19 -0
  243. package/src/internal/object/inspect.ts +48 -0
  244. package/src/internal/object/json-serializer.test.ts +99 -0
  245. package/src/internal/object/json-serializer.ts +225 -0
  246. package/src/internal/object/meta.ts +61 -0
  247. package/src/internal/object/model.ts +170 -0
  248. package/src/internal/object/relation.ts +24 -0
  249. package/src/internal/object/schema-validator.test.ts +186 -0
  250. package/src/internal/object/schema-validator.ts +241 -0
  251. package/src/internal/object/typed-object.test.ts +34 -0
  252. package/src/internal/object/typed-object.ts +88 -0
  253. package/src/internal/object/typename.ts +61 -0
  254. package/src/internal/object/version.ts +22 -0
  255. package/src/internal/projection/compose.test.ts +43 -0
  256. package/src/internal/projection/compose.ts +36 -0
  257. package/src/internal/projection/index.ts +5 -0
  258. package/src/internal/proxy/handler.test.ts +163 -0
  259. package/src/internal/proxy/reactive-object.ts +108 -0
  260. package/src/internal/proxy/schema.test.ts +136 -0
  261. package/src/internal/proxy/typed-handler.test.ts +102 -0
  262. package/src/internal/proxy/typed-handler.ts +228 -0
  263. package/src/internal/proxy/typed-object.test.ts +100 -0
  264. package/src/internal/query/index.ts +5 -0
  265. package/src/internal/query/query.ts +23 -0
  266. package/src/internal/ref/index.ts +6 -0
  267. package/src/internal/ref/ref-array.ts +39 -0
  268. package/src/internal/ref/ref.test.ts +100 -0
  269. package/src/internal/ref/ref.ts +521 -0
  270. package/src/internal/schema/echo-schema.ts +383 -0
  271. package/src/internal/schema/index.ts +10 -0
  272. package/src/internal/schema/manipulation.ts +92 -0
  273. package/src/internal/schema/runtime-schema-registry.ts +78 -0
  274. package/src/internal/schema/snapshot.ts +25 -0
  275. package/src/internal/schema/stored-schema.ts +26 -0
  276. package/src/internal/testing/index.ts +6 -0
  277. package/src/internal/testing/types.ts +211 -0
  278. package/src/internal/testing/utils.ts +54 -0
  279. package/src/internal/types/index.ts +6 -0
  280. package/src/internal/types/types.test.ts +48 -0
  281. package/src/internal/types/types.ts +176 -0
  282. package/src/internal/types/util.ts +9 -0
  283. package/src/query/index.ts +2 -1
  284. package/src/query/query.test.ts +401 -0
  285. package/src/query/{dsl.ts → query.ts} +82 -45
  286. package/src/query/tag.ts +37 -0
  287. package/src/test/api.test.ts +9 -9
  288. package/src/testing/echo-schema.ts +39 -0
  289. package/src/testing/index.ts +2 -0
  290. package/src/testing/types.ts +1 -1
  291. package/dist/lib/browser/chunk-EIXXFUN5.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-TCY7IVTS.mjs.map +0 -7
  293. package/dist/types/src/experimental/database.d.ts +0 -8
  294. package/dist/types/src/experimental/database.d.ts.map +0 -1
  295. package/dist/types/src/experimental/index.d.ts +0 -1
  296. package/dist/types/src/experimental/index.d.ts.map +0 -1
  297. package/dist/types/src/experimental/queue.d.ts +0 -8
  298. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  299. package/dist/types/src/experimental/space.d.ts +0 -8
  300. package/dist/types/src/experimental/space.d.ts.map +0 -1
  301. package/dist/types/src/query/dsl.d.ts.map +0 -1
  302. package/dist/types/src/query/dsl.test.d.ts +0 -2
  303. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  304. package/src/experimental/database.ts +0 -11
  305. package/src/experimental/index.ts +0 -7
  306. package/src/experimental/queue.ts +0 -11
  307. package/src/experimental/space.ts +0 -11
  308. package/src/query/dsl.test.ts +0 -362
@@ -1,16 +1,112 @@
1
1
  import "@dxos/node-std/globals";
2
+ import "../chunk-HKFCK2GL.mjs";
2
3
  import {
3
4
  Type_exports
4
- } from "../chunk-EIXXFUN5.mjs";
5
+ } from "../chunk-MAAYELT7.mjs";
6
+ import {
7
+ EchoObject,
8
+ EchoRelation,
9
+ EchoSchema,
10
+ Expando,
11
+ Ref,
12
+ StoredSchema,
13
+ TypedObject,
14
+ getSchemaTypename,
15
+ live,
16
+ toJsonSchema
17
+ } from "../chunk-MB6MMNFP.mjs";
5
18
 
6
- // src/testing/types.ts
7
- import { Schema } from "effect";
8
- (function(Testing2) {
9
- const _Contact = Schema.Struct({
19
+ // src/internal/testing/types.ts
20
+ import * as Schema from "effect/Schema";
21
+ function _define_property(obj, key, value) {
22
+ if (key in obj) {
23
+ Object.defineProperty(obj, key, {
24
+ value,
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true
28
+ });
29
+ } else {
30
+ obj[key] = value;
31
+ }
32
+ return obj;
33
+ }
34
+ (function(Testing3) {
35
+ const Circle = Schema.Struct({
36
+ type: Schema.Literal("circle"),
37
+ radius: Schema.Number
38
+ });
39
+ const Square = Schema.Struct({
40
+ type: Schema.Literal("square"),
41
+ side: Schema.Number
42
+ });
43
+ const Shape = Schema.Union(Circle, Square);
44
+ const TestNestedSchema = Schema.mutable(Schema.Struct({
45
+ field: Schema.String
46
+ }));
47
+ Testing3.TestNestedType = TestNestedSchema.pipe(EchoObject({
48
+ typename: "example.com/type/TestNested",
49
+ version: "0.1.0"
50
+ }));
51
+ class EmptySchemaType extends TypedObject({
52
+ typename: "example.com/type/Empty",
53
+ version: "0.1.0"
54
+ })({}) {
55
+ }
56
+ Testing3.EmptySchemaType = EmptySchemaType;
57
+ const fields = {
58
+ string: Schema.String,
59
+ number: Schema.Number,
60
+ nullableShapeArray: Schema.mutable(Schema.Array(Schema.Union(Shape, Schema.Null))),
61
+ boolean: Schema.Boolean,
62
+ null: Schema.Null,
63
+ undefined: Schema.Undefined,
64
+ stringArray: Schema.mutable(Schema.Array(Schema.String)),
65
+ twoDimNumberArray: Schema.mutable(Schema.Array(Schema.mutable(Schema.Array(Schema.Number)))),
66
+ object: TestNestedSchema,
67
+ objectArray: Schema.mutable(Schema.Array(TestNestedSchema)),
68
+ nested: Schema.optional(Ref(Testing3.TestNestedType)),
69
+ other: Schema.Any
70
+ };
71
+ Testing3.TestSchema = Schema.mutable(Schema.partial(Schema.Struct(fields)));
72
+ class TestSchemaType extends TypedObject({
73
+ typename: "example.com/type/Test",
74
+ version: "0.1.0"
75
+ })(fields, {
76
+ partial: true
77
+ }) {
78
+ }
79
+ Testing3.TestSchemaType = TestSchemaType;
80
+ Testing3.TestType = Testing3.TestSchema.pipe(EchoObject({
81
+ typename: "example.com/type/Test",
82
+ version: "0.1.0"
83
+ }));
84
+ class TestClass {
85
+ toJSON() {
86
+ return {
87
+ field: this.field
88
+ };
89
+ }
90
+ constructor() {
91
+ _define_property(this, "field", "value");
92
+ }
93
+ }
94
+ Testing3.TestClass = TestClass;
95
+ Testing3.TestSchemaWithClass = Schema.mutable(Schema.extend(Testing3.TestSchema, Schema.mutable(Schema.Struct({
96
+ classInstance: Schema.optional(Schema.instanceOf(TestClass))
97
+ }))));
98
+ class Contact extends TypedObject({
99
+ typename: "example.com/type/Contact",
100
+ version: "0.1.0"
101
+ })({
10
102
  name: Schema.String,
11
103
  username: Schema.String,
12
104
  email: Schema.String,
13
- tasks: Schema.mutable(Schema.Array(Schema.suspend(() => Type_exports.Ref(Testing2.Task)))),
105
+ phoneNumbers: Schema.optional(Schema.Array(Schema.Struct({
106
+ label: Schema.String,
107
+ number: Schema.String
108
+ }))),
109
+ tasks: Schema.suspend(() => Schema.mutable(Schema.Array(Ref(Task)))),
14
110
  address: Schema.Struct({
15
111
  city: Schema.optional(Schema.String),
16
112
  state: Schema.optional(Schema.String),
@@ -20,51 +116,183 @@ import { Schema } from "effect";
20
116
  lng: Schema.optional(Schema.Number)
21
117
  })
22
118
  })
23
- }).pipe(Schema.partial, Type_exports.Obj({
24
- typename: "example.com/type/Contact",
119
+ }, {
120
+ partial: true
121
+ }) {
122
+ }
123
+ Testing3.Contact = Contact;
124
+ class Task extends TypedObject({
125
+ typename: "example.com/type/Task",
25
126
  version: "0.1.0"
26
- }));
27
- Testing2.Contact = _Contact;
28
- const _Task = Schema.Struct({
127
+ })({
29
128
  title: Schema.optional(Schema.String),
30
129
  completed: Schema.optional(Schema.Boolean),
31
- assignee: Schema.optional(Type_exports.Ref(Testing2.Contact)),
32
- previous: Schema.optional(Schema.suspend(() => Type_exports.Ref(Testing2.Task))),
33
- subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend(() => Type_exports.Ref(Testing2.Task))))),
130
+ assignee: Schema.optional(Ref(Contact)),
131
+ previous: Schema.optional(Schema.suspend(() => Ref(Task))),
132
+ subTasks: Schema.optional(Schema.mutable(Schema.Array(Schema.suspend(() => Ref(Task))))),
34
133
  description: Schema.optional(Schema.String)
35
- }).pipe(Schema.partial, Type_exports.Obj({
36
- typename: "example.com/type/Task",
37
- version: "0.1.0"
38
- }));
39
- Testing2.Task = _Task;
134
+ }, {
135
+ partial: true
136
+ }) {
137
+ }
138
+ Testing3.Task = Task;
40
139
  (function(RecordType) {
41
140
  RecordType[RecordType["UNDEFINED"] = 0] = "UNDEFINED";
42
141
  RecordType[RecordType["PERSONAL"] = 1] = "PERSONAL";
43
142
  RecordType[RecordType["WORK"] = 2] = "WORK";
44
- })(Testing2.RecordType || (Testing2.RecordType = {}));
45
- Testing2.Container = Schema.Struct({
46
- objects: Schema.mutable(Schema.Array(Type_exports.Ref(Type_exports.Expando))),
143
+ })(Testing3.RecordType || (Testing3.RecordType = {}));
144
+ class Container extends TypedObject({
145
+ typename: "example.com/type/Container",
146
+ version: "0.1.0"
147
+ })({
148
+ objects: Schema.mutable(Schema.Array(Ref(Expando))),
47
149
  records: Schema.mutable(Schema.Array(Schema.partial(Schema.Struct({
48
150
  title: Schema.String,
49
151
  description: Schema.String,
50
- contacts: Schema.mutable(Schema.Array(Type_exports.Ref(Testing2.Contact))),
51
- type: Schema.Enums(Testing2.RecordType)
152
+ contacts: Schema.mutable(Schema.Array(Ref(Contact))),
153
+ type: Schema.Enums(Testing3.RecordType)
154
+ }))))
155
+ }, {
156
+ partial: true
157
+ }) {
158
+ }
159
+ Testing3.Container = Container;
160
+ Testing3.HasManager = Schema.Struct({
161
+ since: Schema.optional(Schema.String)
162
+ }).pipe(EchoRelation({
163
+ typename: "example.com/type/HasManager",
164
+ version: "0.1.0",
165
+ source: Contact,
166
+ target: Contact
167
+ }));
168
+ })(Testing || (Testing = {}));
169
+ var Testing;
170
+
171
+ // src/internal/testing/utils.ts
172
+ import { effect } from "@preact/signals-core";
173
+ import { registerSignalsRuntime } from "@dxos/echo-signals";
174
+ import { deepMapValues } from "@dxos/util";
175
+ registerSignalsRuntime();
176
+ var updateCounter = (touch) => {
177
+ let updateCount = -1;
178
+ const unsubscribe = effect(() => {
179
+ touch();
180
+ updateCount++;
181
+ });
182
+ return {
183
+ // https://github.com/tc39/proposal-explicit-resource-management
184
+ [Symbol.dispose]: unsubscribe,
185
+ get count() {
186
+ return updateCount;
187
+ }
188
+ };
189
+ };
190
+ var prepareAstForCompare = (obj) => deepMapValues(obj, (value, recurse, key) => {
191
+ if (typeof value === "function") {
192
+ return null;
193
+ }
194
+ if (value instanceof RegExp) {
195
+ return value;
196
+ }
197
+ if (typeof value === "object") {
198
+ const clone = {
199
+ ...value
200
+ };
201
+ for (const sym of Object.getOwnPropertySymbols(clone)) {
202
+ clone[sym.toString()] = clone[sym];
203
+ delete clone[sym];
204
+ }
205
+ return recurse(clone);
206
+ }
207
+ return recurse(value);
208
+ });
209
+
210
+ // src/testing/types.ts
211
+ import * as Schema2 from "effect/Schema";
212
+ (function(Testing3) {
213
+ const _Contact = Schema2.Struct({
214
+ name: Schema2.String,
215
+ username: Schema2.String,
216
+ email: Schema2.String,
217
+ tasks: Schema2.mutable(Schema2.Array(Schema2.suspend(() => Type_exports.Ref(Testing3.Task)))),
218
+ address: Schema2.Struct({
219
+ city: Schema2.optional(Schema2.String),
220
+ state: Schema2.optional(Schema2.String),
221
+ zip: Schema2.optional(Schema2.String),
222
+ coordinates: Schema2.Struct({
223
+ lat: Schema2.optional(Schema2.Number),
224
+ lng: Schema2.optional(Schema2.Number)
225
+ })
226
+ })
227
+ }).pipe(Schema2.partial, Type_exports.Obj({
228
+ typename: "example.com/type/Contact",
229
+ version: "0.1.0"
230
+ }));
231
+ Testing3.Contact = _Contact;
232
+ const _Task = Schema2.Struct({
233
+ title: Schema2.optional(Schema2.String),
234
+ completed: Schema2.optional(Schema2.Boolean),
235
+ assignee: Schema2.optional(Type_exports.Ref(Testing3.Contact)),
236
+ previous: Schema2.optional(Schema2.suspend(() => Type_exports.Ref(Testing3.Task))),
237
+ subTasks: Schema2.optional(Schema2.mutable(Schema2.Array(Schema2.suspend(() => Type_exports.Ref(Testing3.Task))))),
238
+ description: Schema2.optional(Schema2.String)
239
+ }).pipe(Schema2.partial, Type_exports.Obj({
240
+ typename: "example.com/type/Task",
241
+ version: "0.1.0"
242
+ }));
243
+ Testing3.Task = _Task;
244
+ (function(RecordType) {
245
+ RecordType[RecordType["UNDEFINED"] = 0] = "UNDEFINED";
246
+ RecordType[RecordType["PERSONAL"] = 1] = "PERSONAL";
247
+ RecordType[RecordType["WORK"] = 2] = "WORK";
248
+ })(Testing3.RecordType || (Testing3.RecordType = {}));
249
+ Testing3.Container = Schema2.Struct({
250
+ objects: Schema2.mutable(Schema2.Array(Type_exports.Ref(Type_exports.Expando))),
251
+ records: Schema2.mutable(Schema2.Array(Schema2.partial(Schema2.Struct({
252
+ title: Schema2.String,
253
+ description: Schema2.String,
254
+ contacts: Schema2.mutable(Schema2.Array(Type_exports.Ref(Testing3.Contact))),
255
+ type: Schema2.Enums(Testing3.RecordType)
52
256
  }))))
53
- }).pipe(Schema.partial, Type_exports.Obj({
257
+ }).pipe(Schema2.partial, Type_exports.Obj({
54
258
  typename: "example.com/type/Container",
55
259
  version: "0.1.0"
56
260
  }));
57
- Testing2.WorksFor = Schema.Struct({
58
- since: Schema.optional(Schema.String)
261
+ Testing3.WorksFor = Schema2.Struct({
262
+ since: Schema2.optional(Schema2.String)
59
263
  }).pipe(Type_exports.Relation({
60
264
  typename: "example.com/type/WorksFor",
61
265
  version: "0.1.0",
62
- source: Testing2.Contact,
63
- target: Testing2.Contact
266
+ source: Testing3.Contact,
267
+ target: Testing3.Contact
64
268
  }));
65
- })(Testing || (Testing = {}));
66
- var Testing;
269
+ })(Testing2 || (Testing2 = {}));
270
+ var Testing2;
271
+
272
+ // src/testing/echo-schema.ts
273
+ import { effect as effect2 } from "@preact/signals-core";
274
+ import { registerSignalsRuntime as registerSignalsRuntime2 } from "@dxos/echo-signals";
275
+ import { assertArgument } from "@dxos/invariant";
276
+ registerSignalsRuntime2();
277
+ var createEchoSchema = (schema) => {
278
+ const typename = getSchemaTypename(schema);
279
+ assertArgument(typename, "typename", "Schema does not have a typename.");
280
+ const echoSchema = new EchoSchema(live(StoredSchema, {
281
+ typename,
282
+ version: "0.1.0",
283
+ jsonSchema: toJsonSchema(schema)
284
+ }));
285
+ effect2(() => {
286
+ const _ = echoSchema.jsonSchema;
287
+ echoSchema._invalidate();
288
+ });
289
+ return echoSchema;
290
+ };
67
291
  export {
68
- Testing
292
+ Testing2 as Testing,
293
+ Testing as TestingDeprecated,
294
+ createEchoSchema,
295
+ prepareAstForCompare,
296
+ updateCounter
69
297
  };
70
298
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/testing/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '..';\n\n// TODO(burdon): These are non-canonical test types, so we really shouldn't export and use in other classes (compare with @dxos/sdk/testing).\nexport namespace Testing {\n const _Contact = 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/Contact',\n version: '0.1.0',\n }),\n );\n export interface Contact extends Schema.Schema.Type<typeof _Contact> {}\n export const Contact: Schema.Schema<Contact, Schema.Schema.Encoded<typeof _Contact>, never> = _Contact;\n\n const _Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Type.Ref(Contact)),\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 export interface Task extends Schema.Schema.Type<typeof _Task> {}\n export const Task: Schema.Schema<Task, Schema.Schema.Encoded<typeof _Task>, never> = _Task;\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(Contact))),\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 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: Contact,\n target: Contact,\n }),\n );\n export interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}\n}\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,cAAc;UAKNC,UAAAA;AACf,QAAMC,WAAWC,OAAOC,OAAO;IAC7BC,MAAMF,OAAOG;IACbC,UAAUJ,OAAOG;IACjBE,OAAOL,OAAOG;IACdG,OAAON,OAAOO,QAAQP,OAAOQ,MAAMR,OAAOS,QAAQ,MAAsBC,aAAKC,IAAGb,SAACc,IAAAA,CAAAA,CAAAA,CAAAA;IACjFC,SAASb,OAAOC,OAAO;MACrBa,MAAMd,OAAOe,SAASf,OAAOG,MAAM;MACnCa,OAAOhB,OAAOe,SAASf,OAAOG,MAAM;MACpCc,KAAKjB,OAAOe,SAASf,OAAOG,MAAM;MAClCe,aAAalB,OAAOC,OAAO;QACzBkB,KAAKnB,OAAOe,SAASf,OAAOoB,MAAM;QAClCC,KAAKrB,OAAOe,SAASf,OAAOoB,MAAM;MACpC,CAAA;IACF,CAAA;EACF,CAAA,EAAGE,KACDtB,OAAOuB,SACPb,aAAKc,IAAI;IACPC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;WAGWC,UAAiF5B;AAE9F,QAAM6B,QAAQ5B,OAAOC,OAAO;IAC1B4B,OAAO7B,OAAOe,SAASf,OAAOG,MAAM;IACpC2B,WAAW9B,OAAOe,SAASf,OAAO+B,OAAO;IACzCC,UAAUhC,OAAOe,SAASL,aAAKC,IAAGb,SAAC6B,OAAAA,CAAAA;IACnCM,UAAUjC,OAAOe,SAASf,OAAOS,QAAQ,MAAsBC,aAAKC,IAAGb,SAACc,IAAAA,CAAAA,CAAAA;IACxEsB,UAAUlC,OAAOe,SAASf,OAAOO,QAAQP,OAAOQ,MAAMR,OAAOS,QAAQ,MAAsBC,aAAKC,IAAGb,SAACc,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IACpGuB,aAAanC,OAAOe,SAASf,OAAOG,MAAM;EAC5C,CAAA,EAAGmB,KACDtB,OAAOuB,SACPb,aAAKc,IAAI;IACPC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;WAGWd,OAAwEgB;YAEzEQ,YAAAA;;;;cAAAA,eAAAA,SAAAA,aAAAA,CAAAA,EAAAA;WAMCC,YAAYrC,OAAOC,OAAO;IACrCqC,SAAStC,OAAOO,QAAQP,OAAOQ,MAAME,aAAKC,IAAID,aAAK6B,OAAO,CAAA,CAAA;IAC1DC,SAASxC,OAAOO,QACdP,OAAOQ,MACLR,OAAOuB,QACLvB,OAAOC,OAAO;MACZ4B,OAAO7B,OAAOG;MACdgC,aAAanC,OAAOG;MACpBsC,UAAUzC,OAAOO,QAAQP,OAAOQ,MAAME,aAAKC,IAAGb,SAAC6B,OAAAA,CAAAA,CAAAA;MAC/Ce,MAAM1C,OAAO2C,MAAK7C,SAACsC,UAAAA;IACrB,CAAA,CAAA,CAAA,CAAA;EAIR,CAAA,EAAGd,KACDtB,OAAOuB,SACPb,aAAKc,IAAI;IACPC,UAAU;IACVC,SAAS;EACX,CAAA,CAAA;WAGWkB,WAAW5C,OAAOC,OAAO;IACpC4C,OAAO7C,OAAOe,SAASf,OAAOG,MAAM;EACtC,CAAA,EAAGmB,KACDZ,aAAKoC,SAAS;IACZrB,UAAU;IACVC,SAAS;IACTqB,QAAMjD,SAAE6B;IACRqB,QAAMlD,SAAE6B;EACV,CAAA,CAAA;AAGJ,GAjFiB7B,YAAAA,UAAAA,CAAAA,EAAAA;;",
6
- "names": ["Schema", "Testing", "_Contact", "Schema", "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", "Contact", "_Task", "title", "completed", "Boolean", "assignee", "previous", "subTasks", "description", "RecordType", "Container", "objects", "Expando", "records", "contacts", "type", "Enums", "WorksFor", "since", "Relation", "source", "target"]
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, Expando, TypedObject } from '../object';\nimport { Ref, type Ref$ } from '../ref';\n\n// TODO(burdon): These are non-canonical test types, so we really shouldn't export and use in other classes (compare with @dxos/sdk/testing).\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 Contact extends TypedObject({\n typename: 'example.com/type/Contact',\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(Contact)),\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 // TOOD(burdon): Ref$ breaks if using new syntax (since ID is not declared).\n\n // export const Task = Schema.Struct({\n // title: Schema.String,\n // completed: Schema.Boolean,\n // assignee: Schema.optional(Ref(Schema.suspend((): Ref$<Contact> => Ref(Contact)))),\n // previous: Schema.optional(Ref(Schema.suspend((): Ref$<Task> => Ref(Task)))),\n // subTasks: Schema.optional(Schema.Array(Ref(Schema.suspend((): Ref$<Task> => Ref(Task))))),\n // description: Schema.optional(Schema.String),\n // }).pipe(\n // EchoObject({\n // typename: 'example.com/type/Task',\n // version: '0.1.0',\n // }),\n // );\n\n // export type Task = Schema.Schema.Type<typeof Task>;\n\n // export const Contact = Schema.Struct({\n // name: Schema.String,\n // username: Schema.String,\n // email: Schema.String,\n // // TOOD(burdon): Should model via relations?\n // // tasks: 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 // }).pipe(\n // EchoObject({\n // typename: 'example.com/type/Contact',\n // version: '0.1.0',\n // }),\n // );\n\n // export type Contact = Schema.Schema.Type<typeof Contact>;\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export class Container extends TypedObject({\n typename: 'example.com/type/Container',\n version: '0.1.0',\n })(\n {\n objects: Schema.mutable(Schema.Array(Ref(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(Ref(Contact))),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n ),\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: Contact,\n target: Contact,\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, key) => {\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// TODO(burdon): These are non-canonical test types, so we really shouldn't export and use in other classes (compare with @dxos/sdk/testing).\nexport namespace Testing {\n const _Contact = 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/Contact',\n version: '0.1.0',\n }),\n );\n export interface Contact extends Schema.Schema.Type<typeof _Contact> {}\n export const Contact: Schema.Schema<Contact, Schema.Schema.Encoded<typeof _Contact>, never> = _Contact;\n\n const _Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Type.Ref(Contact)),\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 export interface Task extends Schema.Schema.Type<typeof _Task> {}\n export const Task: Schema.Schema<Task, Schema.Schema.Encoded<typeof _Task>, never> = _Task;\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(Contact))),\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 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: Contact,\n target: Contact,\n }),\n );\n export interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}\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", "Contact", "name", "username", "email", "phoneNumbers", "label", "tasks", "suspend", "Task", "address", "city", "state", "zip", "coordinates", "lat", "lng", "title", "completed", "assignee", "previous", "subTasks", "description", "RecordType", "Container", "objects", "Expando", "records", "contacts", "Enums", "HasManager", "since", "EchoRelation", "source", "target", "effect", "registerSignalsRuntime", "deepMapValues", "registerSignalsRuntime", "updateCounter", "touch", "updateCount", "unsubscribe", "effect", "Symbol", "dispose", "count", "prepareAstForCompare", "obj", "deepMapValues", "value", "recurse", "key", "RegExp", "clone", "sym", "Object", "getOwnPropertySymbols", "toString", "Schema", "Testing", "_Contact", "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", "Contact", "_Task", "title", "completed", "Boolean", "assignee", "previous", "subTasks", "description", "RecordType", "Container", "objects", "Expando", "records", "contacts", "type", "Enums", "WorksFor", "since", "Relation", "source", "target", "effect", "registerSignalsRuntime", "assertArgument", "registerSignalsRuntime", "createEchoSchema", "schema", "typename", "getSchemaTypename", "assertArgument", "echoSchema", "EchoSchema", "live", "StoredSchema", "version", "jsonSchema", "toJsonSchema", "effect", "_", "_invalidate"]
7
7
  }