@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
@@ -11,186 +11,119 @@ import { log } from '@dxos/log';
11
11
 
12
12
  import * as Obj from '../Obj';
13
13
  import * as Ref from '../Ref';
14
- import * as Type from '../Type';
15
14
 
16
- import { Filter, Order, Query } from './query';
17
-
18
- //
19
- // Example schema
20
- //
21
-
22
- // TODO(dmaretskyi): Need common set of test types.
23
- const Person = Schema.Struct({
24
- name: Schema.String,
25
- email: Schema.optional(Schema.String),
26
- age: Schema.optional(Schema.Number),
27
- fields: Schema.Struct({
28
- label: Schema.String,
29
- value: Schema.String,
30
- }).pipe(Schema.Array, Schema.optional),
31
- }).pipe(
32
- Type.Obj({
33
- typename: 'dxos.org/type/Person',
34
- version: '0.1.0',
35
- }),
36
- );
37
- interface Person extends Schema.Schema.Type<typeof Person> {}
38
-
39
- const Organization = Schema.Struct({
40
- name: Schema.String,
41
- properties: Schema.optional(
42
- Schema.Record({
43
- key: Schema.String,
44
- value: Schema.String,
45
- }),
46
- ),
47
- }).pipe(
48
- Type.Obj({
49
- typename: 'dxos.org/type/Organization',
50
- version: '0.1.0',
51
- }),
52
- );
53
- interface Organization extends Schema.Schema.Type<typeof Organization> {}
54
-
55
- const WorksFor = Schema.Struct({
56
- since: Schema.String,
57
- }).pipe(
58
- Type.Relation({
59
- typename: 'dxos.org/type/WorksFor',
60
- version: '0.1.0',
61
- source: Person,
62
- target: Organization,
63
- }),
64
- );
65
- interface WorksFor extends Schema.Schema.Type<typeof WorksFor> {}
66
-
67
- const Task = Schema.Struct({
68
- title: Schema.String,
69
- createdAt: Schema.String,
70
- assignee: Schema.optional(Type.Ref(Person)),
71
- }).pipe(Type.Obj({ typename: 'dxos.org/type/Task', version: '0.1.0' }));
72
- interface Task extends Schema.Schema.Type<typeof Task> {}
73
-
74
- //
75
- // Example queries
76
- //
15
+ import { Filter } from './filter';
16
+ import { Order } from './order';
17
+ import { Query } from './query';
18
+ import * as Test from './testing';
77
19
 
78
20
  describe('query api', () => {
79
21
  describe('Query', () => {
80
22
  test('get all people', () => {
81
- const getAllPeople = Query.type(Person);
23
+ const getAllPeople = Query.type(Test.Person);
82
24
 
83
25
  log('query', { ast: getAllPeople.ast });
84
26
  Schema.validateSync(QueryAST.Query)(getAllPeople.ast);
85
- console.log('getAllPeople', JSON.stringify(getAllPeople.ast, null, 2));
27
+ log('getAllPeople', { ast: getAllPeople.ast });
86
28
  });
87
29
 
88
30
  test('get all people ordered by name', () => {
89
- const getAllPeopleOrderedByName = Query.type(Person).orderBy(Order.property('name', 'asc'));
31
+ const getAllPeopleOrderedByName = Query.type(Test.Person).orderBy(Order.property('name', 'asc'));
90
32
 
91
33
  log('query', { ast: getAllPeopleOrderedByName.ast });
92
34
  Schema.validateSync(QueryAST.Query)(getAllPeopleOrderedByName.ast);
93
- console.log('getAllPeopleOrderedByName', JSON.stringify(getAllPeopleOrderedByName.ast, null, 2));
35
+ log('getAllPeopleOrderedByName', { ast: getAllPeopleOrderedByName.ast });
94
36
  });
95
37
 
96
38
  test('get all people named Fred', () => {
97
- const PeopleNamedFred = Query.select(Filter.type(Person, { name: 'Fred' }));
39
+ const PeopleNamedFred = Query.select(Filter.type(Test.Person, { name: 'Fred' }));
98
40
 
99
41
  log('query', { ast: PeopleNamedFred.ast });
100
42
  Schema.validateSync(QueryAST.Query)(PeopleNamedFred.ast);
101
- console.log('PeopleNamedFred', JSON.stringify(PeopleNamedFred.ast, null, 2));
43
+ log('PeopleNamedFred', { ast: PeopleNamedFred.ast });
102
44
  });
103
45
 
104
46
  test('get all people with field of "label" set to "Research"', () => {
105
47
  const PeopleWithFieldLabelSetToResearch = Query.select(
106
- Filter.type(Person, { fields: Filter.contains({ label: 'label', value: 'Research' }) }),
48
+ Filter.type(Test.Person, { fields: Filter.contains({ label: 'label', value: 'Research' }) }),
107
49
  );
108
50
 
109
51
  log('query', { ast: PeopleWithFieldLabelSetToResearch.ast });
110
52
  Schema.validateSync(QueryAST.Query)(PeopleWithFieldLabelSetToResearch.ast);
111
- console.log('PeopleWithFieldLabelSetToResearch', JSON.stringify(PeopleWithFieldLabelSetToResearch.ast, null, 2));
53
+ log('PeopleWithFieldLabelSetToResearch', { ast: PeopleWithFieldLabelSetToResearch.ast });
112
54
  });
113
55
 
114
56
  test('get all orgs with property "label" set to "Research"', () => {
115
57
  const OrgsWithPropertyLabelSetToResearch = Query.select(
116
- Filter.type(Organization, { properties: { label: 'Research' } }),
58
+ Filter.type(Test.Organization, { properties: { label: 'Research' } }),
117
59
  );
118
60
 
119
61
  log('query', { ast: OrgsWithPropertyLabelSetToResearch.ast });
120
62
  Schema.validateSync(QueryAST.Query)(OrgsWithPropertyLabelSetToResearch.ast);
121
- console.log(
122
- 'OrgsWithPropertyLabelSetToResearch',
123
- JSON.stringify(OrgsWithPropertyLabelSetToResearch.ast, null, 2),
124
- );
63
+ log('OrgsWithPropertyLabelSetToResearch', { ast: OrgsWithPropertyLabelSetToResearch.ast });
125
64
  });
126
65
 
127
66
  test('get all orgs Fred worked for since 2020', () => {
128
- const fred = Obj.make(Person, { name: 'Fred' });
129
- const OrganizationsFredWorkedForSince2020 = Query.select(Filter.type(Person, { id: fred.id }))
130
- .sourceOf(WorksFor, { since: Filter.gt('2020') })
67
+ const fred = Obj.make(Test.Person, { name: 'Fred' });
68
+ const OrganizationsFredWorkedForSince2020 = Query.select(Filter.type(Test.Person, { id: fred.id }))
69
+ .sourceOf(Test.WorksFor, { since: Filter.gt('2020') })
131
70
  .target();
132
71
 
133
72
  log('query', { ast: OrganizationsFredWorkedForSince2020.ast });
134
73
  Schema.validateSync(QueryAST.Query)(OrganizationsFredWorkedForSince2020.ast);
135
- console.log(
136
- 'OrganizationsFredWorkedForSince2020',
137
- JSON.stringify(OrganizationsFredWorkedForSince2020.ast, null, 2),
138
- );
74
+ log('OrganizationsFredWorkedForSince2020', { ast: OrganizationsFredWorkedForSince2020.ast });
139
75
  });
140
76
 
141
77
  test('get all tasks for Fred', () => {
142
- const fred = Obj.make(Person, { name: 'Fred' });
143
- const TasksForFred = Query.select(Filter.type(Person, { id: fred.id })).referencedBy(Task, 'assignee');
78
+ const fred = Obj.make(Test.Person, { name: 'Fred' });
79
+ const TasksForFred = Query.select(Filter.type(Test.Person, { id: fred.id })).referencedBy(Test.Task, 'assignee');
144
80
 
145
81
  log('query', { ast: TasksForFred.ast });
146
82
  Schema.validateSync(QueryAST.Query)(TasksForFred.ast);
147
- console.log('TasksForFred', JSON.stringify(TasksForFred.ast, null, 2));
83
+ log('TasksForFred', { ast: TasksForFred.ast });
148
84
  });
149
85
 
150
86
  test('get all tasks for employees of Cyberdyne', () => {
151
- const TasksForEmployeesOfCyberdyne = Query.select(Filter.type(Organization, { name: 'Cyberdyne' }))
152
- .targetOf(WorksFor)
87
+ const TasksForEmployeesOfCyberdyne = Query.select(Filter.type(Test.Organization, { name: 'Cyberdyne' }))
88
+ .targetOf(Test.WorksFor)
153
89
  .source()
154
- .referencedBy(Task, 'assignee');
90
+ .referencedBy(Test.Task, 'assignee');
155
91
 
156
92
  log('query', { ast: TasksForEmployeesOfCyberdyne.ast });
157
93
  Schema.validateSync(QueryAST.Query)(TasksForEmployeesOfCyberdyne.ast);
158
- console.log('TasksForEmployeesOfCyberdyne', JSON.stringify(TasksForEmployeesOfCyberdyne.ast, null, 2));
94
+ log('TasksForEmployeesOfCyberdyne', { ast: TasksForEmployeesOfCyberdyne.ast });
159
95
  });
160
96
 
161
97
  test('get all people or orgs', () => {
162
98
  const PeopleOrOrganizations = Query.all(
163
- Query.select(Filter.type(Person)),
164
- Query.select(Filter.type(Organization)),
99
+ Query.select(Filter.type(Test.Person)),
100
+ Query.select(Filter.type(Test.Organization)),
165
101
  );
166
102
 
167
103
  log('query', { ast: PeopleOrOrganizations.ast });
168
104
  Schema.validateSync(QueryAST.Query)(PeopleOrOrganizations.ast);
169
- console.log('PeopleOrOrganizations', JSON.stringify(PeopleOrOrganizations.ast, null, 2));
105
+ log('PeopleOrOrganizations', { ast: PeopleOrOrganizations.ast });
170
106
  });
171
107
 
172
108
  test('get all people not in orgs', () => {
173
109
  const PeopleNotInOrganizations = Query.without(
174
- Query.select(Filter.type(Person)),
175
- Query.select(Filter.type(Person)).sourceOf(WorksFor).source(),
110
+ Query.select(Filter.type(Test.Person)),
111
+ Query.select(Filter.type(Test.Person)).sourceOf(Test.WorksFor).source(),
176
112
  );
177
113
 
178
114
  log('query', { ast: PeopleNotInOrganizations.ast });
179
115
  Schema.validateSync(QueryAST.Query)(PeopleNotInOrganizations.ast);
180
- console.log('PeopleNotInOrganizations', JSON.stringify(PeopleNotInOrganizations.ast, null, 2));
116
+ log('PeopleNotInOrganizations', { ast: PeopleNotInOrganizations.ast });
181
117
  });
182
118
 
183
119
  test('get assignees of all tasks created after 2020', () => {
184
120
  const AssigneesOfAllTasksCreatedAfter2020 = Query.select(
185
- Filter.type(Task, { createdAt: Filter.gt('2020') }),
121
+ Filter.type(Test.Task, { createdAt: Filter.gt('2020') }),
186
122
  ).reference('assignee');
187
123
 
188
124
  log('query', { ast: AssigneesOfAllTasksCreatedAfter2020.ast });
189
125
  Schema.validateSync(QueryAST.Query)(AssigneesOfAllTasksCreatedAfter2020.ast);
190
- console.log(
191
- 'AssigneesOfAllTasksCreatedAfter2020',
192
- JSON.stringify(AssigneesOfAllTasksCreatedAfter2020.ast, null, 2),
193
- );
126
+ log('AssigneesOfAllTasksCreatedAfter2020', { ast: AssigneesOfAllTasksCreatedAfter2020.ast });
194
127
  });
195
128
 
196
129
  test('untyped full-text search', () => {
@@ -211,7 +144,7 @@ describe('query api', () => {
211
144
  });
212
145
 
213
146
  test('typed full-text search', () => {
214
- const contactFullTextSearch = Query.select(Filter.type(Person)).select(Filter.text('Bill'));
147
+ const contactFullTextSearch = Query.select(Filter.type(Test.Person)).select(Filter.text('Bill'));
215
148
 
216
149
  log('query', { ast: contactFullTextSearch.ast });
217
150
  Schema.validateSync(QueryAST.Query)(contactFullTextSearch.ast);
@@ -237,8 +170,8 @@ describe('query api', () => {
237
170
  });
238
171
 
239
172
  test('filter by ref', () => {
240
- const fred = Obj.make(Person, { name: 'Fred' });
241
- const tasksByFred = Filter.type(Task, { assignee: Ref.make(fred) });
173
+ const fred = Obj.make(Test.Person, { name: 'Fred' });
174
+ const tasksByFred = Filter.type(Test.Task, { assignee: Ref.make(fred) });
242
175
  expect(tasksByFred.ast).toEqual({
243
176
  props: {
244
177
  assignee: {
@@ -252,11 +185,11 @@ describe('query api', () => {
252
185
  type: 'object',
253
186
  typename: 'dxn:type:dxos.org/type/Task:0.1.0',
254
187
  });
255
- console.log('tasksByFred', JSON.stringify(tasksByFred.ast, null, 2));
188
+ log('tasksByFred', { ast: tasksByFred.ast });
256
189
  });
257
190
 
258
191
  test('select orgs and people', () => {
259
- const orgsAndPeople = Query.select(Filter.or(Filter.type(Organization), Filter.type(Person)));
192
+ const orgsAndPeople = Query.select(Filter.or(Filter.type(Test.Organization), Filter.type(Test.Person)));
260
193
 
261
194
  Schema.validateSync(QueryAST.Query)(orgsAndPeople.ast);
262
195
  expect(orgsAndPeople.ast).toMatchInlineSnapshot(`
@@ -285,7 +218,7 @@ describe('query api', () => {
285
218
 
286
219
  test('select everything but orgs and people', () => {
287
220
  const everythingButOrgsAndPeople = Query.select(
288
- Filter.not(Filter.or(Filter.type(Organization), Filter.type(Person))),
221
+ Filter.not(Filter.or(Filter.type(Test.Organization), Filter.type(Test.Person))),
289
222
  );
290
223
 
291
224
  Schema.validateSync(QueryAST.Query)(everythingButOrgsAndPeople.ast);
@@ -317,7 +250,7 @@ describe('query api', () => {
317
250
  });
318
251
 
319
252
  test('select deleted tasks', () => {
320
- const deletedTasks = Query.select(Filter.type(Task)).options({
253
+ const deletedTasks = Query.select(Filter.type(Test.Task)).options({
321
254
  deleted: 'only',
322
255
  });
323
256
 
@@ -342,7 +275,7 @@ describe('query api', () => {
342
275
  });
343
276
 
344
277
  test('filter by tags', () => {
345
- const query = Query.select(Filter.type(Task)).select(Filter.tag('important'));
278
+ const query = Query.select(Filter.type(Test.Task)).select(Filter.tag('important'));
346
279
  Schema.validateSync(QueryAST.Query)(query.ast);
347
280
  expect(query.ast).toMatchInlineSnapshot(`
348
281
  {
@@ -369,23 +302,23 @@ describe('query api', () => {
369
302
  // const f1: Filter<Person> = Filter.props({ name: 'Fred' });
370
303
 
371
304
  // const x = Query.select(Filter.props({ id: '123' }));
372
- const y = Query.select(Filter.type(Person));
305
+ const y = Query.select(Filter.type(Test.Person));
373
306
 
374
- const or = Filter.or(Filter.type(Person, { id: Filter.in('1', '2', '3') }), Filter.type(Organization));
307
+ const or = Filter.or(Filter.type(Test.Person, { id: Filter.in('1', '2', '3') }), Filter.type(Test.Organization));
375
308
 
376
309
  const and = Filter.and(
377
- Filter.type(Person, { id: Filter.in('1', '2', '3') }),
378
- Filter.type(Person, { name: 'Fred' }),
310
+ Filter.type(Test.Person, { id: Filter.in('1', '2', '3') }),
311
+ Filter.type(Test.Person, { name: 'Fred' }),
379
312
  );
380
313
 
381
314
  const q = Query
382
315
  //
383
316
  // NOTE: Can't support functions since they can't be serialized (to server).
384
317
  // .filter((object) => Math.random() > 0.5)
385
- .select(Filter.type(Person))
386
- .select(Filter.type(Person, { name: 'Fred' }))
318
+ .select(Filter.type(Test.Person))
319
+ .select(Filter.type(Test.Person, { name: 'Fred' }))
387
320
  .select({ age: Filter.between(20, 40) })
388
- .select(Filter.and(Filter.type(Person), Filter.type(Person, { name: Filter.in('bob', 'bill') })));
321
+ .select(Filter.and(Filter.type(Test.Person), Filter.type(Test.Person, { name: Filter.in('bob', 'bill') })));
389
322
 
390
323
  log('stuff', { fOr: or, fAnd: and, q, y });
391
324
  });