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

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 (559) hide show
  1. package/README.md +3 -4
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +45 -0
  4. package/dist/lib/neutral/Entity.mjs +56 -0
  5. package/dist/lib/neutral/Err.mjs +12 -0
  6. package/dist/lib/neutral/Feed.mjs +43 -0
  7. package/dist/lib/neutral/Filter.mjs +61 -0
  8. package/dist/lib/neutral/Format.mjs +66 -0
  9. package/dist/lib/neutral/Format.mjs.map +7 -0
  10. package/dist/lib/neutral/JsonSchema.mjs +18 -0
  11. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  12. package/dist/lib/neutral/Key.mjs +12 -0
  13. package/dist/lib/neutral/Key.mjs.map +7 -0
  14. package/dist/lib/neutral/Obj.mjs +107 -0
  15. package/dist/lib/neutral/Obj.mjs.map +7 -0
  16. package/dist/lib/neutral/Order.mjs +12 -0
  17. package/dist/lib/neutral/Order.mjs.map +7 -0
  18. package/dist/lib/neutral/Query.mjs +32 -0
  19. package/dist/lib/neutral/Query.mjs.map +7 -0
  20. package/dist/lib/neutral/QueryResult.mjs +2 -0
  21. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  22. package/dist/lib/neutral/Ref.mjs +24 -0
  23. package/dist/lib/neutral/Ref.mjs.map +7 -0
  24. package/dist/lib/neutral/Relation.mjs +90 -0
  25. package/dist/lib/neutral/Relation.mjs.map +7 -0
  26. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  27. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  28. package/dist/lib/neutral/Tag.mjs +25 -0
  29. package/dist/lib/neutral/Tag.mjs.map +7 -0
  30. package/dist/lib/neutral/Type.mjs +34 -0
  31. package/dist/lib/neutral/Type.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-4KG6IGL4.mjs +67 -0
  33. package/dist/lib/neutral/chunk-4KG6IGL4.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-5ELDDYWE.mjs +130 -0
  35. package/dist/lib/neutral/chunk-5ELDDYWE.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-ALOGSVBP.mjs +299 -0
  37. package/dist/lib/neutral/chunk-ALOGSVBP.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  39. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-AQP4QKYP.mjs +283 -0
  41. package/dist/lib/neutral/chunk-AQP4QKYP.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-BRJSLACP.mjs +152 -0
  43. package/dist/lib/neutral/chunk-BRJSLACP.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-DZQSL6RW.mjs +73 -0
  45. package/dist/lib/neutral/chunk-DZQSL6RW.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs +327 -0
  47. package/dist/lib/neutral/chunk-F7KMHDPJ.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs +56 -0
  49. package/dist/lib/neutral/chunk-GAWKQ5DZ.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-GFNCSK7F.mjs +101 -0
  51. package/dist/lib/neutral/chunk-GFNCSK7F.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  53. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-KGV3QIRX.mjs +313 -0
  55. package/dist/lib/neutral/chunk-KGV3QIRX.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-M2KVTHZM.mjs +402 -0
  57. package/dist/lib/neutral/chunk-M2KVTHZM.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-MXQJZCPY.mjs +51 -0
  59. package/dist/lib/neutral/chunk-MXQJZCPY.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-O3TZFQCT.mjs +27 -0
  61. package/dist/lib/neutral/chunk-O3TZFQCT.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  63. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-OVUBTQLT.mjs +45 -0
  65. package/dist/lib/neutral/chunk-OVUBTQLT.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-PP4DNUZU.mjs +3919 -0
  67. package/dist/lib/neutral/chunk-PP4DNUZU.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-QXF3LGN2.mjs +43 -0
  69. package/dist/lib/neutral/chunk-QXF3LGN2.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs +97 -0
  71. package/dist/lib/neutral/chunk-T4MPQJ7X.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-T6JEFNP6.mjs +7 -0
  73. package/dist/lib/neutral/chunk-T6JEFNP6.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs +121 -0
  75. package/dist/lib/neutral/chunk-W7OP5HGZ.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs +42 -0
  77. package/dist/lib/neutral/chunk-ZTUBYOGB.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs +298 -0
  79. package/dist/lib/neutral/chunk-ZWKJ4LZJ.mjs.map +7 -0
  80. package/dist/lib/neutral/index.mjs +94 -0
  81. package/dist/lib/neutral/index.mjs.map +7 -0
  82. package/dist/lib/{node-esm → neutral}/internal/index.mjs +260 -122
  83. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  84. package/dist/lib/neutral/meta.json +1 -0
  85. package/dist/lib/neutral/testing/index.mjs +369 -0
  86. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  87. package/dist/types/src/Annotation.d.ts +24 -0
  88. package/dist/types/src/Annotation.d.ts.map +1 -0
  89. package/dist/types/src/Collection.d.ts +16 -0
  90. package/dist/types/src/Collection.d.ts.map +1 -0
  91. package/dist/types/src/Database.d.ts +189 -0
  92. package/dist/types/src/Database.d.ts.map +1 -0
  93. package/dist/types/src/Dataset.d.ts +18 -0
  94. package/dist/types/src/Dataset.d.ts.map +1 -0
  95. package/dist/types/src/Entity.d.ts +168 -0
  96. package/dist/types/src/Entity.d.ts.map +1 -0
  97. package/dist/types/src/Entity.test.d.ts +2 -0
  98. package/dist/types/src/Entity.test.d.ts.map +1 -0
  99. package/dist/types/src/Err.d.ts +107 -0
  100. package/dist/types/src/Err.d.ts.map +1 -0
  101. package/dist/types/src/Feed.d.ts +165 -0
  102. package/dist/types/src/Feed.d.ts.map +1 -0
  103. package/dist/types/src/Filter.d.ts +120 -0
  104. package/dist/types/src/Filter.d.ts.map +1 -0
  105. package/dist/types/src/Format.d.ts +4 -0
  106. package/dist/types/src/Format.d.ts.map +1 -0
  107. package/dist/types/src/Hypergraph.d.ts +60 -0
  108. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  109. package/dist/types/src/JsonSchema.d.ts +16 -0
  110. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  111. package/dist/types/src/Key.d.ts +1 -0
  112. package/dist/types/src/Key.d.ts.map +1 -1
  113. package/dist/types/src/Obj.d.ts +423 -95
  114. package/dist/types/src/Obj.d.ts.map +1 -1
  115. package/dist/types/src/Obj.test.d.ts +2 -0
  116. package/dist/types/src/Obj.test.d.ts.map +1 -0
  117. package/dist/types/src/Order.d.ts +16 -0
  118. package/dist/types/src/Order.d.ts.map +1 -0
  119. package/dist/types/src/Query.d.ts +202 -0
  120. package/dist/types/src/Query.d.ts.map +1 -0
  121. package/dist/types/src/Query.test.d.ts +2 -0
  122. package/dist/types/src/Query.test.d.ts.map +1 -0
  123. package/dist/types/src/QueryResult.d.ts +80 -0
  124. package/dist/types/src/QueryResult.d.ts.map +1 -0
  125. package/dist/types/src/Ref.d.ts +61 -11
  126. package/dist/types/src/Ref.d.ts.map +1 -1
  127. package/dist/types/src/Relation.d.ts +287 -21
  128. package/dist/types/src/Relation.d.ts.map +1 -1
  129. package/dist/types/src/Relation.test.d.ts +2 -0
  130. package/dist/types/src/Relation.test.d.ts.map +1 -0
  131. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  132. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  133. package/dist/types/src/Tag.d.ts +18 -0
  134. package/dist/types/src/Tag.d.ts.map +1 -0
  135. package/dist/types/src/Type.d.ts +120 -97
  136. package/dist/types/src/Type.d.ts.map +1 -1
  137. package/dist/types/src/Type.test.d.ts +2 -0
  138. package/dist/types/src/Type.test.d.ts.map +1 -0
  139. package/dist/types/src/View.d.ts +68 -0
  140. package/dist/types/src/View.d.ts.map +1 -0
  141. package/dist/types/src/hierarchy.test.d.ts +2 -0
  142. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  143. package/dist/types/src/index.d.ts +19 -5
  144. package/dist/types/src/index.d.ts.map +1 -1
  145. package/dist/types/src/internal/annotations/annotations.d.ts +209 -0
  146. package/dist/types/src/internal/annotations/annotations.d.ts.map +1 -0
  147. package/dist/types/src/internal/annotations/annotations.test.d.ts.map +1 -0
  148. package/dist/types/src/internal/annotations/index.d.ts +3 -0
  149. package/dist/types/src/internal/annotations/index.d.ts.map +1 -0
  150. package/dist/types/src/internal/annotations/util.d.ts +39 -0
  151. package/dist/types/src/internal/annotations/util.d.ts.map +1 -0
  152. package/dist/types/src/internal/api/annotations.d.ts +23 -0
  153. package/dist/types/src/internal/api/annotations.d.ts.map +1 -0
  154. package/dist/types/src/internal/api/entity.d.ts +13 -0
  155. package/dist/types/src/internal/api/entity.d.ts.map +1 -0
  156. package/dist/types/src/internal/api/index.d.ts +15 -0
  157. package/dist/types/src/internal/api/index.d.ts.map +1 -0
  158. package/dist/types/src/internal/api/meta.d.ts +42 -0
  159. package/dist/types/src/internal/api/meta.d.ts.map +1 -0
  160. package/dist/types/src/internal/api/sorting.d.ts +24 -0
  161. package/dist/types/src/internal/api/sorting.d.ts.map +1 -0
  162. package/dist/types/src/internal/api/version.d.ts +42 -0
  163. package/dist/types/src/internal/api/version.d.ts.map +1 -0
  164. package/dist/types/src/internal/entities/entity.d.ts +20 -0
  165. package/dist/types/src/internal/entities/entity.d.ts.map +1 -0
  166. package/dist/types/src/internal/entities/index.d.ts +6 -0
  167. package/dist/types/src/internal/entities/index.d.ts.map +1 -0
  168. package/dist/types/src/internal/entities/model.d.ts +79 -0
  169. package/dist/types/src/internal/entities/model.d.ts.map +1 -0
  170. package/dist/types/src/internal/entities/object.d.ts +18 -0
  171. package/dist/types/src/internal/entities/object.d.ts.map +1 -0
  172. package/dist/types/src/internal/entities/relation.d.ts +62 -0
  173. package/dist/types/src/internal/entities/relation.d.ts.map +1 -0
  174. package/dist/types/src/internal/entities/util.d.ts +2 -0
  175. package/dist/types/src/internal/entities/util.d.ts.map +1 -0
  176. package/dist/types/src/internal/formats/format.d.ts +4 -2
  177. package/dist/types/src/internal/formats/format.d.ts.map +1 -1
  178. package/dist/types/src/internal/formats/select.d.ts +6 -4
  179. package/dist/types/src/internal/formats/select.d.ts.map +1 -1
  180. package/dist/types/src/internal/formats/string.d.ts +4 -0
  181. package/dist/types/src/internal/formats/string.d.ts.map +1 -1
  182. package/dist/types/src/internal/formats/types.d.ts +13 -9
  183. package/dist/types/src/internal/formats/types.d.ts.map +1 -1
  184. package/dist/types/src/internal/index.d.ts +7 -10
  185. package/dist/types/src/internal/index.d.ts.map +1 -1
  186. package/dist/types/src/internal/json-schema/annotations.d.ts.map +1 -0
  187. package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +1 -0
  188. package/dist/types/src/internal/json-schema/index.d.ts +2 -0
  189. package/dist/types/src/internal/json-schema/index.d.ts.map +1 -1
  190. package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +1 -1
  191. package/dist/types/src/internal/json-schema/json-schema-type.d.ts +130 -29
  192. package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +1 -1
  193. package/dist/types/src/internal/{json → json-schema}/json-schema.d.ts +4 -6
  194. package/dist/types/src/internal/json-schema/json-schema.d.ts.map +1 -0
  195. package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +1 -0
  196. package/dist/types/src/internal/object/clone.d.ts +8 -0
  197. package/dist/types/src/internal/object/clone.d.ts.map +1 -0
  198. package/dist/types/src/internal/object/common.d.ts.map +1 -1
  199. package/dist/types/src/internal/object/{create.d.ts → create-object.d.ts} +10 -11
  200. package/dist/types/src/internal/object/create-object.d.ts.map +1 -0
  201. package/dist/types/src/internal/object/create-object.test.d.ts +2 -0
  202. package/dist/types/src/internal/object/create-object.test.d.ts.map +1 -0
  203. package/dist/types/src/internal/object/deleted.d.ts +2 -2
  204. package/dist/types/src/internal/object/deleted.d.ts.map +1 -1
  205. package/dist/types/src/internal/object/ids.d.ts.map +1 -1
  206. package/dist/types/src/internal/object/index.d.ts +6 -12
  207. package/dist/types/src/internal/object/index.d.ts.map +1 -1
  208. package/dist/types/src/internal/object/json-serializer.d.ts +14 -9
  209. package/dist/types/src/internal/object/json-serializer.d.ts.map +1 -1
  210. package/dist/types/src/internal/object/schema-validator.d.ts +1 -14
  211. package/dist/types/src/internal/object/schema-validator.d.ts.map +1 -1
  212. package/dist/types/src/internal/object/set-value.d.ts +7 -0
  213. package/dist/types/src/internal/object/set-value.d.ts.map +1 -0
  214. package/dist/types/src/internal/object/set-value.test.d.ts +2 -0
  215. package/dist/types/src/internal/object/set-value.test.d.ts.map +1 -0
  216. package/dist/types/src/internal/object/snapshot.d.ts +6 -0
  217. package/dist/types/src/internal/object/snapshot.d.ts.map +1 -0
  218. package/dist/types/src/internal/object/typed-object.d.ts +8 -14
  219. package/dist/types/src/internal/object/typed-object.d.ts.map +1 -1
  220. package/dist/types/src/internal/proxy/change-context.d.ts +55 -0
  221. package/dist/types/src/internal/proxy/change-context.d.ts.map +1 -0
  222. package/dist/types/src/internal/proxy/change.test.d.ts +2 -0
  223. package/dist/types/src/internal/proxy/change.test.d.ts.map +1 -0
  224. package/dist/types/src/internal/proxy/define-hidden-property.d.ts +5 -0
  225. package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +1 -0
  226. package/dist/types/src/internal/proxy/errors.d.ts +19 -0
  227. package/dist/types/src/internal/proxy/errors.d.ts.map +1 -0
  228. package/dist/types/src/internal/proxy/event-batch.d.ts +10 -0
  229. package/dist/types/src/internal/proxy/event-batch.d.ts.map +1 -0
  230. package/dist/types/src/internal/proxy/index.d.ts +14 -0
  231. package/dist/types/src/internal/proxy/index.d.ts.map +1 -0
  232. package/dist/types/src/internal/proxy/json-serializer.d.ts +6 -0
  233. package/dist/types/src/internal/proxy/json-serializer.d.ts.map +1 -0
  234. package/dist/types/src/internal/proxy/make-object.d.ts +14 -0
  235. package/dist/types/src/internal/proxy/make-object.d.ts.map +1 -0
  236. package/dist/types/src/internal/proxy/ownership.d.ts +57 -0
  237. package/dist/types/src/internal/proxy/ownership.d.ts.map +1 -0
  238. package/dist/types/src/internal/proxy/proxy-types.d.ts +18 -0
  239. package/dist/types/src/internal/proxy/proxy-types.d.ts.map +1 -0
  240. package/dist/types/src/internal/proxy/proxy-utils.d.ts +47 -0
  241. package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +1 -0
  242. package/dist/types/src/internal/proxy/reactive-array.d.ts +8 -0
  243. package/dist/types/src/internal/proxy/reactive-array.d.ts.map +1 -0
  244. package/dist/types/src/internal/proxy/reactive.d.ts +39 -0
  245. package/dist/types/src/internal/proxy/reactive.d.ts.map +1 -0
  246. package/dist/types/src/internal/proxy/schema-validator.d.ts +15 -0
  247. package/dist/types/src/internal/proxy/schema-validator.d.ts.map +1 -0
  248. package/dist/types/src/internal/proxy/symbols.d.ts +3 -0
  249. package/dist/types/src/internal/proxy/symbols.d.ts.map +1 -0
  250. package/dist/types/src/internal/proxy/typed-handler.d.ts +16 -12
  251. package/dist/types/src/internal/proxy/typed-handler.d.ts.map +1 -1
  252. package/dist/types/src/internal/ref/ref-array.d.ts +4 -4
  253. package/dist/types/src/internal/ref/ref-array.d.ts.map +1 -1
  254. package/dist/types/src/internal/ref/ref.d.ts +43 -18
  255. package/dist/types/src/internal/ref/ref.d.ts.map +1 -1
  256. package/dist/types/src/internal/schema/compose.d.ts +7 -0
  257. package/dist/types/src/internal/schema/compose.d.ts.map +1 -0
  258. package/dist/types/src/internal/schema/compose.test.d.ts.map +1 -0
  259. package/dist/types/src/internal/schema/echo-schema.d.ts +25 -12
  260. package/dist/types/src/internal/schema/echo-schema.d.ts.map +1 -1
  261. package/dist/types/src/internal/schema/index.d.ts +1 -4
  262. package/dist/types/src/internal/schema/index.d.ts.map +1 -1
  263. package/dist/types/src/internal/schema/manipulation.d.ts.map +1 -1
  264. package/dist/types/src/internal/schema/persistent-schema.d.ts +20 -0
  265. package/dist/types/src/internal/schema/persistent-schema.d.ts.map +1 -0
  266. package/dist/types/src/internal/types/base.d.ts +27 -0
  267. package/dist/types/src/internal/types/base.d.ts.map +1 -0
  268. package/dist/types/src/internal/types/entity.d.ts +37 -0
  269. package/dist/types/src/internal/types/entity.d.ts.map +1 -0
  270. package/dist/types/src/internal/types/index.d.ts +5 -2
  271. package/dist/types/src/internal/types/index.d.ts.map +1 -1
  272. package/dist/types/src/internal/{object → types}/meta.d.ts +16 -14
  273. package/dist/types/src/internal/types/meta.d.ts.map +1 -0
  274. package/dist/types/src/internal/types/typename.d.ts +21 -0
  275. package/dist/types/src/internal/types/typename.d.ts.map +1 -0
  276. package/dist/types/src/internal/types/version.d.ts +15 -0
  277. package/dist/types/src/internal/types/version.d.ts.map +1 -0
  278. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  279. package/dist/types/src/testing/index.d.ts +3 -3
  280. package/dist/types/src/testing/index.d.ts.map +1 -1
  281. package/dist/types/src/testing/test-data.d.ts +18 -0
  282. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  283. package/dist/types/src/testing/test-schema.d.ts +304 -0
  284. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  285. package/dist/types/src/testing/util.d.ts +21 -0
  286. package/dist/types/src/testing/util.d.ts.map +1 -0
  287. package/dist/types/tsconfig.tsbuildinfo +1 -1
  288. package/package.json +106 -65
  289. package/src/Annotation.ts +46 -0
  290. package/src/Collection.ts +30 -0
  291. package/src/Database.ts +315 -0
  292. package/src/Dataset.ts +24 -0
  293. package/src/Entity.test.ts +22 -0
  294. package/src/Entity.ts +234 -0
  295. package/src/Err.ts +38 -0
  296. package/src/Feed.ts +254 -0
  297. package/src/Filter.ts +389 -0
  298. package/src/Format.ts +9 -0
  299. package/src/Hypergraph.ts +74 -0
  300. package/src/JsonSchema.ts +24 -0
  301. package/src/Key.ts +3 -0
  302. package/src/Obj.test.ts +447 -0
  303. package/src/Obj.ts +588 -248
  304. package/src/Order.ts +44 -0
  305. package/src/Query.test.ts +632 -0
  306. package/src/Query.ts +520 -0
  307. package/src/QueryResult.ts +106 -0
  308. package/src/Ref.ts +77 -9
  309. package/src/Relation.test.ts +88 -0
  310. package/src/Relation.ts +440 -58
  311. package/src/SchemaRegistry.ts +106 -0
  312. package/src/Tag.ts +39 -0
  313. package/src/Type.test.ts +52 -0
  314. package/src/Type.ts +162 -151
  315. package/src/View.ts +100 -0
  316. package/src/hierarchy.test.ts +33 -0
  317. package/src/index.ts +20 -6
  318. package/src/internal/README.md +102 -0
  319. package/src/internal/{ast → annotations}/annotations.test.ts +18 -20
  320. package/src/internal/annotations/annotations.ts +526 -0
  321. package/src/internal/annotations/index.ts +6 -0
  322. package/src/internal/annotations/util.ts +85 -0
  323. package/src/internal/api/annotations.ts +60 -0
  324. package/src/internal/api/entity.ts +29 -0
  325. package/src/internal/api/index.ts +19 -0
  326. package/src/internal/api/meta.ts +88 -0
  327. package/src/internal/api/sorting.ts +53 -0
  328. package/src/internal/api/version.ts +96 -0
  329. package/src/internal/entities/entity.ts +128 -0
  330. package/src/internal/entities/index.ts +9 -0
  331. package/src/internal/entities/model.ts +138 -0
  332. package/src/internal/entities/object.ts +58 -0
  333. package/src/internal/entities/relation.ts +171 -0
  334. package/src/internal/entities/util.ts +33 -0
  335. package/src/internal/formats/date.test.ts +1 -1
  336. package/src/internal/formats/date.ts +5 -5
  337. package/src/internal/formats/format.test.ts +6 -6
  338. package/src/internal/formats/format.ts +8 -6
  339. package/src/internal/formats/number.ts +5 -5
  340. package/src/internal/formats/object.ts +4 -4
  341. package/src/internal/formats/select.ts +6 -4
  342. package/src/internal/formats/string.ts +14 -9
  343. package/src/internal/formats/types.ts +53 -42
  344. package/src/internal/index.ts +30 -13
  345. package/src/internal/{json → json-schema}/annotations.ts +1 -1
  346. package/src/internal/json-schema/index.ts +2 -0
  347. package/src/internal/json-schema/json-schema-normalize.ts +4 -2
  348. package/src/internal/json-schema/json-schema-type.ts +35 -35
  349. package/src/internal/{json → json-schema}/json-schema.test.ts +232 -97
  350. package/src/internal/{json → json-schema}/json-schema.ts +79 -93
  351. package/src/internal/object/clone.ts +48 -0
  352. package/src/internal/object/common.ts +3 -4
  353. package/src/internal/object/{create.test.ts → create-object.test.ts} +31 -33
  354. package/src/internal/object/{create.ts → create-object.ts} +36 -37
  355. package/src/internal/object/deleted.ts +6 -6
  356. package/src/internal/object/ids.ts +1 -1
  357. package/src/internal/object/index.ts +6 -12
  358. package/src/internal/object/inspect.ts +5 -7
  359. package/src/internal/object/json-serializer.test.ts +59 -37
  360. package/src/internal/object/json-serializer.ts +87 -108
  361. package/src/internal/object/schema-validator.test.ts +3 -7
  362. package/src/internal/object/schema-validator.ts +2 -237
  363. package/src/internal/object/set-value.test.ts +281 -0
  364. package/src/internal/object/set-value.ts +165 -0
  365. package/src/internal/object/snapshot.ts +96 -0
  366. package/src/internal/object/typed-object.test.ts +11 -11
  367. package/src/internal/object/typed-object.ts +8 -59
  368. package/src/internal/proxy/change-context.ts +138 -0
  369. package/src/internal/proxy/change.test.ts +519 -0
  370. package/src/internal/proxy/define-hidden-property.ts +14 -0
  371. package/src/internal/proxy/errors.ts +42 -0
  372. package/src/internal/proxy/event-batch.ts +44 -0
  373. package/src/internal/proxy/handler.test.ts +51 -91
  374. package/src/internal/proxy/index.ts +17 -0
  375. package/src/internal/proxy/json-serializer.ts +87 -0
  376. package/src/internal/proxy/make-object.ts +106 -0
  377. package/src/internal/proxy/ownership.ts +253 -0
  378. package/src/internal/proxy/proxy-types.ts +23 -0
  379. package/src/internal/proxy/proxy-utils.ts +150 -0
  380. package/src/internal/proxy/reactive-array.ts +71 -0
  381. package/src/internal/proxy/reactive.ts +69 -0
  382. package/src/internal/proxy/schema-validator.ts +244 -0
  383. package/src/internal/proxy/schema.test.ts +27 -18
  384. package/src/internal/proxy/symbols.ts +7 -0
  385. package/src/internal/proxy/typed-handler.test.ts +260 -48
  386. package/src/internal/proxy/typed-handler.ts +283 -61
  387. package/src/internal/proxy/typed-object.test.ts +54 -38
  388. package/src/internal/ref/ref-array.ts +4 -4
  389. package/src/internal/ref/ref.test.ts +10 -9
  390. package/src/internal/ref/ref.ts +107 -56
  391. package/src/internal/{projection → schema}/compose.test.ts +8 -9
  392. package/src/internal/{projection → schema}/compose.ts +13 -8
  393. package/src/internal/schema/echo-schema.ts +74 -33
  394. package/src/internal/schema/index.ts +1 -4
  395. package/src/internal/schema/manipulation.ts +7 -1
  396. package/src/internal/schema/persistent-schema.ts +33 -0
  397. package/src/internal/types/base.ts +43 -0
  398. package/src/internal/types/entity.ts +54 -0
  399. package/src/internal/types/index.ts +5 -2
  400. package/src/internal/types/meta.ts +68 -0
  401. package/src/internal/types/typename.ts +55 -0
  402. package/src/internal/types/version.ts +19 -0
  403. package/src/testing/api.test.ts +126 -0
  404. package/src/testing/index.ts +3 -3
  405. package/src/testing/test-data.ts +130 -0
  406. package/src/testing/test-schema.ts +240 -0
  407. package/src/testing/util.ts +85 -0
  408. package/dist/lib/browser/chunk-MWLA34S5.mjs +0 -3843
  409. package/dist/lib/browser/chunk-MWLA34S5.mjs.map +0 -7
  410. package/dist/lib/browser/chunk-OAZJQHVO.mjs +0 -453
  411. package/dist/lib/browser/chunk-OAZJQHVO.mjs.map +0 -7
  412. package/dist/lib/browser/chunk-ORIE2FMS.mjs +0 -514
  413. package/dist/lib/browser/chunk-ORIE2FMS.mjs.map +0 -7
  414. package/dist/lib/browser/index.mjs +0 -43
  415. package/dist/lib/browser/internal/index.mjs +0 -326
  416. package/dist/lib/browser/meta.json +0 -1
  417. package/dist/lib/browser/query/index.mjs +0 -23
  418. package/dist/lib/browser/testing/index.mjs +0 -298
  419. package/dist/lib/browser/testing/index.mjs.map +0 -7
  420. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs +0 -453
  421. package/dist/lib/node-esm/chunk-AXWVDOP7.mjs.map +0 -7
  422. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs +0 -514
  423. package/dist/lib/node-esm/chunk-L4PBAJDP.mjs.map +0 -7
  424. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs +0 -3843
  425. package/dist/lib/node-esm/chunk-YTNLFBIK.mjs.map +0 -7
  426. package/dist/lib/node-esm/index.mjs +0 -43
  427. package/dist/lib/node-esm/meta.json +0 -1
  428. package/dist/lib/node-esm/query/index.mjs +0 -23
  429. package/dist/lib/node-esm/testing/index.mjs +0 -298
  430. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  431. package/dist/types/src/errors.d.ts +0 -72
  432. package/dist/types/src/errors.d.ts.map +0 -1
  433. package/dist/types/src/internal/ast/annotation-helper.d.ts +0 -8
  434. package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
  435. package/dist/types/src/internal/ast/annotations.d.ts +0 -119
  436. package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
  437. package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
  438. package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
  439. package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
  440. package/dist/types/src/internal/ast/index.d.ts +0 -5
  441. package/dist/types/src/internal/ast/index.d.ts.map +0 -1
  442. package/dist/types/src/internal/ast/types.d.ts +0 -6
  443. package/dist/types/src/internal/ast/types.d.ts.map +0 -1
  444. package/dist/types/src/internal/json/annotations.d.ts.map +0 -1
  445. package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
  446. package/dist/types/src/internal/json/index.d.ts +0 -2
  447. package/dist/types/src/internal/json/index.d.ts.map +0 -1
  448. package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
  449. package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
  450. package/dist/types/src/internal/object/accessors.d.ts +0 -29
  451. package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
  452. package/dist/types/src/internal/object/create.d.ts.map +0 -1
  453. package/dist/types/src/internal/object/create.test.d.ts +0 -2
  454. package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
  455. package/dist/types/src/internal/object/entity.d.ts +0 -22
  456. package/dist/types/src/internal/object/entity.d.ts.map +0 -1
  457. package/dist/types/src/internal/object/expando.d.ts +0 -14
  458. package/dist/types/src/internal/object/expando.d.ts.map +0 -1
  459. package/dist/types/src/internal/object/meta.d.ts.map +0 -1
  460. package/dist/types/src/internal/object/model.d.ts +0 -117
  461. package/dist/types/src/internal/object/model.d.ts.map +0 -1
  462. package/dist/types/src/internal/object/relation.d.ts +0 -17
  463. package/dist/types/src/internal/object/relation.d.ts.map +0 -1
  464. package/dist/types/src/internal/object/typed-relation.d.ts +0 -32
  465. package/dist/types/src/internal/object/typed-relation.d.ts.map +0 -1
  466. package/dist/types/src/internal/object/typename.d.ts +0 -15
  467. package/dist/types/src/internal/object/typename.d.ts.map +0 -1
  468. package/dist/types/src/internal/object/version.d.ts +0 -14
  469. package/dist/types/src/internal/object/version.d.ts.map +0 -1
  470. package/dist/types/src/internal/projection/compose.d.ts +0 -6
  471. package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
  472. package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
  473. package/dist/types/src/internal/projection/index.d.ts +0 -2
  474. package/dist/types/src/internal/projection/index.d.ts.map +0 -1
  475. package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
  476. package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
  477. package/dist/types/src/internal/query/index.d.ts +0 -2
  478. package/dist/types/src/internal/query/index.d.ts.map +0 -1
  479. package/dist/types/src/internal/query/query.d.ts +0 -17
  480. package/dist/types/src/internal/query/query.d.ts.map +0 -1
  481. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts +0 -18
  482. package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
  483. package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
  484. package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
  485. package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
  486. package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
  487. package/dist/types/src/internal/testing/index.d.ts +0 -3
  488. package/dist/types/src/internal/testing/index.d.ts.map +0 -1
  489. package/dist/types/src/internal/testing/types.d.ts +0 -455
  490. package/dist/types/src/internal/testing/types.d.ts.map +0 -1
  491. package/dist/types/src/internal/testing/utils.d.ts +0 -10
  492. package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
  493. package/dist/types/src/internal/types/types.d.ts +0 -79
  494. package/dist/types/src/internal/types/types.d.ts.map +0 -1
  495. package/dist/types/src/internal/types/types.test.d.ts +0 -2
  496. package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
  497. package/dist/types/src/internal/types/util.d.ts +0 -5
  498. package/dist/types/src/internal/types/util.d.ts.map +0 -1
  499. package/dist/types/src/query/index.d.ts +0 -3
  500. package/dist/types/src/query/index.d.ts.map +0 -1
  501. package/dist/types/src/query/query.d.ts +0 -247
  502. package/dist/types/src/query/query.d.ts.map +0 -1
  503. package/dist/types/src/query/query.test.d.ts +0 -2
  504. package/dist/types/src/query/query.test.d.ts.map +0 -1
  505. package/dist/types/src/query/tag.d.ts +0 -18
  506. package/dist/types/src/query/tag.d.ts.map +0 -1
  507. package/dist/types/src/testing/echo-schema.d.ts +0 -7
  508. package/dist/types/src/testing/echo-schema.d.ts.map +0 -1
  509. package/dist/types/src/testing/types.d.ts +0 -113
  510. package/dist/types/src/testing/types.d.ts.map +0 -1
  511. package/src/errors.ts +0 -18
  512. package/src/internal/ast/annotation-helper.ts +0 -22
  513. package/src/internal/ast/annotations.ts +0 -212
  514. package/src/internal/ast/entity-kind.ts +0 -15
  515. package/src/internal/ast/index.ts +0 -8
  516. package/src/internal/ast/types.ts +0 -17
  517. package/src/internal/json/index.ts +0 -5
  518. package/src/internal/object/accessors.ts +0 -115
  519. package/src/internal/object/entity.ts +0 -204
  520. package/src/internal/object/expando.ts +0 -21
  521. package/src/internal/object/meta.ts +0 -62
  522. package/src/internal/object/model.ts +0 -170
  523. package/src/internal/object/relation.ts +0 -24
  524. package/src/internal/object/typed-relation.ts +0 -85
  525. package/src/internal/object/typename.ts +0 -61
  526. package/src/internal/object/version.ts +0 -22
  527. package/src/internal/projection/index.ts +0 -5
  528. package/src/internal/proxy/reactive-object.ts +0 -108
  529. package/src/internal/query/index.ts +0 -5
  530. package/src/internal/query/query.ts +0 -23
  531. package/src/internal/schema/runtime-schema-registry.ts +0 -78
  532. package/src/internal/schema/snapshot.ts +0 -25
  533. package/src/internal/schema/stored-schema.ts +0 -26
  534. package/src/internal/testing/index.ts +0 -6
  535. package/src/internal/testing/types.ts +0 -211
  536. package/src/internal/testing/utils.ts +0 -54
  537. package/src/internal/types/types.test.ts +0 -48
  538. package/src/internal/types/types.ts +0 -176
  539. package/src/internal/types/util.ts +0 -9
  540. package/src/query/index.ts +0 -6
  541. package/src/query/query.test.ts +0 -362
  542. package/src/query/query.ts +0 -784
  543. package/src/query/tag.ts +0 -35
  544. package/src/test/api.test.ts +0 -180
  545. package/src/testing/echo-schema.ts +0 -39
  546. package/src/testing/types.ts +0 -91
  547. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  548. /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
  549. /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
  550. /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
  551. /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Feed.mjs.map} +0 -0
  552. /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Filter.mjs.map} +0 -0
  553. /package/dist/types/src/internal/{ast → annotations}/annotations.test.d.ts +0 -0
  554. /package/dist/types/src/internal/{json → json-schema}/annotations.d.ts +0 -0
  555. /package/dist/types/src/internal/{json → json-schema}/effect-schema.test.d.ts +0 -0
  556. /package/dist/types/src/internal/{json → json-schema}/json-schema.test.d.ts +0 -0
  557. /package/dist/types/src/internal/{projection → schema}/compose.test.d.ts +0 -0
  558. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
  559. /package/src/internal/{json → json-schema}/effect-schema.test.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/types/typename.ts", "../../../src/internal/annotations/annotations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\n\n/**\n * Property name for typename when object is serialized to JSON.\n */\nexport const ATTR_TYPE = '@type';\n\n/**\n * DXN to the object type.\n */\nexport const TypeId = Symbol.for('@dxos/echo/Type');\n\n/**\n * Reference to the object schema.\n */\nexport const SchemaId = Symbol.for('@dxos/echo/Schema');\n\n/**\n * Property name for parent when object is serialized to JSON.\n */\nexport const ATTR_PARENT = '@parent';\n\n/**\n * Reference to the object parent.\n */\nexport const ParentId = Symbol.for('@dxos/echo/Parent');\n\n/**\n * Returns the schema for the given object if one is defined.\n *\n * @internal (Use Obj.getSchema)\n */\n// TODO(burdon): Narrow type.\n// TODO(dmaretskyi): For echo objects, this always returns the root schema.\nexport const getSchema = (obj: unknown | undefined): Schema.Schema.AnyNoContext | undefined => {\n if (obj) {\n return (obj as any)[SchemaId];\n }\n};\n\n/**\n * @internal\n */\nexport const setSchema = (obj: any, schema: Schema.Schema.AnyNoContext): void => {\n Object.defineProperty(obj, SchemaId, {\n value: schema,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { raise } from '@dxos/debug';\nimport { type JsonPath, getField } from '@dxos/effect';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { DXN } from '@dxos/keys';\nimport { type Primitive } from '@dxos/util';\n\nimport { type AnyProperties, EntityKind, TypeId, getSchema } from '../types';\n\nimport { type AnnotationHelper, createAnnotationHelper } from './util';\n\n/**\n * @internal\n */\nexport const FIELD_PATH_ANNOTATION = 'path';\n\n/**\n * Sets the path for the field.\n * @param path Data source path in the json path format. This is the field path in the source object.\n */\n// TODO(burdon): Field, vs. path vs. property.\nexport const FieldPath = (path: string) => PropertyMeta(FIELD_PATH_ANNOTATION, path);\n\n//\n// Type\n//\n\n/**\n * ECHO identifier (for a stored schema).\n * Must be a `dxn:echo:` URI.\n */\nexport const TypeIdentifierAnnotationId = Symbol.for('@dxos/schema/annotation/TypeIdentifier');\n\nexport const getTypeIdentifierAnnotation = (schema: Schema.Schema.All) =>\n Function.flow(\n SchemaAST.getAnnotation<string>(TypeIdentifierAnnotationId),\n Option.getOrElse(() => undefined),\n )(schema.ast);\n\n/**\n * @returns DXN of the schema.\n *\n * For non-stored schema returns `dxn:type:`.\n * For stored schema returns `dxn:echo:`.\n */\nexport const getSchemaDXN = (schema: Schema.Schema.All): DXN | undefined => {\n assertArgument(Schema.isSchema(schema), 'schema', 'invalid schema');\n const id = getTypeIdentifierAnnotation(schema);\n if (id) {\n return DXN.parse(id);\n }\n\n // TODO(dmaretskyi): Add support for dynamic schema.\n const objectAnnotation = getTypeAnnotation(schema);\n if (!objectAnnotation) {\n return undefined;\n }\n\n return DXN.fromTypenameAndVersion(objectAnnotation.typename, objectAnnotation.version);\n};\n\n/**\n * @param input schema or a typename string.\n * @return type DXN.\n */\nexport const getTypeDXNFromSpecifier = (input: Schema.Schema.All | string): DXN => {\n if (Schema.isSchema(input)) {\n return getSchemaDXN(input) ?? raise(new TypeError('Schema has no DXN'));\n } else {\n assertArgument(typeof input === 'string', 'input');\n assertArgument(!input.startsWith('dxn:'), 'input');\n return DXN.fromTypename(input);\n }\n};\n\n//\n// TypeAnnotation\n//\n\n/**\n * Fully qualified globally unique typename.\n * Example: `dxos.org/type/Message`\n */\n// TODO(burdon): Reconcile with short DXN format.\n// TODO(burdon): Change \"/type\" => \"/schema\" throughout.\nexport const TypenameSchema = Schema.String.pipe(Schema.pattern(/^[a-zA-Z]\\w+\\.[a-zA-Z]\\w{1,}\\/[\\w/_-]+$/)).annotations(\n {\n description: 'Fully qualified globally unique typename',\n example: 'dxos.org/type/Message',\n },\n);\n\n/**\n * Semantic version format: `major.minor.patch`\n * Example: `1.0.0`\n */\nexport const VersionSchema = Schema.String.pipe(Schema.pattern(/^\\d+.\\d+.\\d+$/)).annotations({\n description: 'Semantic version format: `major.minor.patch`',\n example: '1.0.0',\n});\n\nexport const TypeMeta = Schema.Struct({\n typename: TypenameSchema,\n version: VersionSchema,\n});\n\nexport interface TypeMeta extends Schema.Schema.Type<typeof TypeMeta> {}\n\n/**\n * Entity type.\n */\nexport const TypeAnnotationId = Symbol.for('@dxos/schema/annotation/Type');\n\n/**\n * Payload stored under {@link TypeAnnotationId}.\n */\nexport const TypeAnnotation = Schema.extend(\n TypeMeta,\n Schema.Struct({\n kind: Schema.Enums(EntityKind),\n\n /**\n * If this is a relation, the schema of the source object.\n * Must be present if entity kind is {@link EntityKind.Relation}.\n */\n sourceSchema: Schema.optional(DXN.Schema),\n\n /**\n * If this is a relation, the schema of the target object.\n * Must be present if entity kind is {@link EntityKind.Relation}.\n */\n targetSchema: Schema.optional(DXN.Schema),\n }),\n);\n\nexport interface TypeAnnotation extends Schema.Schema.Type<typeof TypeAnnotation> {}\n\n/**\n * @returns {@link TypeAnnotation} from a schema.\n * Schema must have been created with {@link TypedObject} or {@link TypedLink} or manually assigned an appropriate annotation.\n */\nexport const getTypeAnnotation = (schema: Schema.Schema.All): TypeAnnotation | undefined => {\n assertArgument(schema != null && schema.ast != null, 'schema', 'invalid schema');\n return Function.flow(\n SchemaAST.getAnnotation<TypeAnnotation>(TypeAnnotationId),\n Option.getOrElse(() => undefined),\n )(schema.ast);\n};\n\n/**\n * @returns {@link EntityKind} from a schema.\n */\nexport const getEntityKind = (schema: Schema.Schema.All): EntityKind | undefined => getTypeAnnotation(schema)?.kind;\n\n/**\n * @internal\n * @returns Schema typename (without dxn: prefix or version number).\n */\nexport const getSchemaTypename = (schema: Schema.Schema.All): string | undefined => getTypeAnnotation(schema)?.typename;\n\n/**\n * @internal\n * @returns Schema version in semver format.\n */\nexport const getSchemaVersion = (schema: Schema.Schema.All): string | undefined => getTypeAnnotation(schema)?.version;\n\n/**\n * Gets the typename of the object without the version.\n * Returns only the name portion, not the DXN.\n * @example \"example.org/type/Contact\"\n *\n * @internal (use Obj.getTypename)\n */\nexport const getTypename = (obj: AnyProperties): string | undefined => {\n const schema = getSchema(obj);\n if (schema != null) {\n // Try to extract typename from DXN.\n return getSchemaTypename(schema);\n } else {\n const type = getTypeDXN(obj);\n return type?.asTypeDXN()?.type;\n }\n};\n\n/**\n * @internal (use Type.setTypename)\n */\n// TODO(dmaretskyi): Rename setTypeDXN.\nexport const setTypename = (obj: any, typename: DXN): void => {\n invariant(typename instanceof DXN, 'Invalid type.');\n Object.defineProperty(obj, TypeId, {\n value: typename,\n writable: false,\n enumerable: false,\n configurable: false,\n });\n};\n\n/**\n * @returns Object type as {@link DXN}.\n * @returns undefined if the object doesn't have a type.\n * @example `dxn:example.com/type/Person:1.0.0`\n *\n * @internal (use Obj.getTypeDXN)\n */\n// TODO(burdon): Narrow type.\nexport const getTypeDXN = (obj: AnyProperties): DXN | undefined => {\n if (!obj) {\n return undefined;\n }\n\n const type = (obj as any)[TypeId];\n if (!type) {\n return undefined;\n }\n\n invariant(type instanceof DXN, 'Invalid object.');\n return type;\n};\n\n/**\n * Checks if the object is an instance of the schema.\n * Only typename is compared, the schema version is ignored.\n *\n * The following cases are considered to mean that the object is an instance of the schema:\n * - Object was created with this exact schema.\n * - Object was created with a different version of this schema.\n * - Object was created with a different schema (maybe dynamic) that has the same typename.\n */\n// TODO(burdon): Can we use `Schema.is`?\nexport const isInstanceOf = <Schema extends Schema.Schema.AnyNoContext>(\n schema: Schema,\n object: any,\n): object is Schema.Schema.Type<Schema> => {\n if (object == null) {\n return false;\n }\n\n const schemaDXN = getSchemaDXN(schema);\n if (!schemaDXN) {\n throw new Error('Schema must have an object annotation.');\n }\n\n const type = getTypeDXN(object);\n if (type && DXN.equals(type, schemaDXN)) {\n return true;\n }\n\n const typename = getTypename(object);\n if (!typename) {\n return false;\n }\n\n const typeDXN = schemaDXN.asTypeDXN();\n if (!typeDXN) {\n return false;\n }\n\n return typeDXN.type === typename;\n};\n\n//\n// PropertyMeta\n//\n\n/**\n * PropertyMeta (metadata for dynamic schema properties).\n * For user-defined annotations.\n */\nexport const PropertyMetaAnnotationId = Symbol.for('@dxos/schema/annotation/PropertyMeta');\n\nexport type PropertyMetaValue = Primitive | Record<string, Primitive> | Primitive[];\n\nexport type PropertyMetaAnnotation = {\n [name: string]: PropertyMetaValue;\n};\n\n// TODO(wittjosiah): Align with other annotations.\n// TODO(wittjosiah): Why is this separate from FormatAnnotation?\nexport const PropertyMeta = (name: string, value: PropertyMetaValue) => {\n return <A, I, R>(self: Schema.Schema<A, I, R>): Schema.Schema<A, I, R> => {\n const existingMeta = self.ast.annotations[PropertyMetaAnnotationId] as PropertyMetaAnnotation;\n return self.annotations({\n [PropertyMetaAnnotationId]: {\n ...existingMeta,\n [name]: value,\n },\n });\n };\n};\n\nexport const getPropertyMetaAnnotation = <T>(prop: SchemaAST.PropertySignature, name: string) =>\n Function.pipe(\n SchemaAST.getAnnotation<PropertyMetaAnnotation>(PropertyMetaAnnotationId)(prop.type),\n Option.map((meta) => meta[name] as T),\n Option.getOrElse(() => undefined),\n );\n\n//\n// Reference\n//\n\n/**\n * Schema reference.\n */\nexport const ReferenceAnnotationId = Symbol.for('@dxos/schema/annotation/Reference');\nexport type ReferenceAnnotationValue = TypeAnnotation;\nexport const ReferenceAnnotation = createAnnotationHelper<ReferenceAnnotationValue>(ReferenceAnnotationId);\n\n/**\n * SchemaMeta.\n */\nexport const SchemaMetaSymbol = Symbol.for('@dxos/schema/SchemaMeta');\nexport type SchemaMeta = TypeMeta & { id: string };\n\n/**\n * Identifies a schema as a schema for a hidden system type.\n */\nexport const SystemTypeAnnotationId = Symbol.for('@dxos/schema/annotation/SystemType');\nexport const SystemTypeAnnotation = createAnnotationHelper<boolean>(SystemTypeAnnotationId);\n\n/**\n * Identifies label property or JSON path expression.\n * Either a string or an array of strings representing field accessors each matched in priority order.\n */\nexport const LabelAnnotationId = Symbol.for('@dxos/schema/annotation/Label');\nexport const LabelAnnotation = createAnnotationHelper<string[]>(LabelAnnotationId);\n\n/**\n * Returns the label for a given object based on {@link LabelAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\n// TODO(burdon): Convert to JsonPath?\nexport const getLabelWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n): string | undefined => {\n const annotation = LabelAnnotation.get(schema).pipe(Option.getOrElse(() => ['name']));\n for (const accessor of annotation) {\n assertArgument(\n typeof accessor === 'string',\n 'accessor',\n 'Label annotation must be a string or an array of strings',\n );\n const value = getField(object, accessor as JsonPath);\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'bigint':\n case 'symbol':\n return value.toString();\n case 'undefined':\n case 'object':\n case 'function':\n continue;\n }\n }\n\n return undefined;\n};\n\n/**\n * Sets the label for a given object based on {@link LabelAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\nexport const setLabelWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n label: string,\n) => {\n const annotation = LabelAnnotation.get(schema).pipe(\n Option.map((field) => field[0]),\n Option.getOrElse(() => 'name'),\n );\n object[annotation] = label;\n};\n\n/**\n * Identifies description property or JSON path expression.\n * A string representing field accessor.\n */\nexport const DescriptionAnnotationId = Symbol.for('@dxos/schema/annotation/Description');\nexport const DescriptionAnnotation = createAnnotationHelper<string>(DescriptionAnnotationId);\n\n/**\n * Returns the description for a given object based on {@link DescriptionAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\n// TODO(burdon): Convert to JsonPath?\nexport const getDescriptionWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n): string | undefined => {\n const accessor = DescriptionAnnotation.get(schema).pipe(Option.getOrElse(() => 'description'));\n assertArgument(typeof accessor === 'string', 'accessor', 'Description annotation must be a string');\n const value = getField(object, accessor as JsonPath);\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'bigint':\n case 'symbol':\n return value.toString();\n case 'undefined':\n case 'object':\n case 'function':\n default:\n return undefined;\n }\n};\n\n/**\n * Sets the description for a given object based on {@link DescriptionAnnotationId}.\n * Lower-level version that requires explicit schema parameter.\n */\nexport const setDescriptionWithSchema = <S extends Schema.Schema.Any>(\n schema: S,\n object: Schema.Schema.Type<S>,\n description: string,\n) => {\n const accessor = DescriptionAnnotation.get(schema).pipe(Option.getOrElse(() => 'description'));\n object[accessor] = description;\n};\n\n/**\n * Identifies if a property should be included in a form or not.\n * By default, all properties are included in forms, so this is opt-out.\n */\n// TODO(burdon): UI concern.\nexport const FormInputAnnotationId = Symbol.for('@dxos/schema/annotation/FormInput');\nexport const FormInputAnnotation = createAnnotationHelper<boolean>(FormInputAnnotationId);\n\n/**\n * Default field to be used on referenced schema to lookup the value.\n */\nexport const FieldLookupAnnotationId = Symbol.for('@dxos/schema/annotation/FieldLookup');\n\n/**\n * Generate test data.\n */\nexport const GeneratorAnnotationId = Symbol.for('@dxos/schema/annotation/Generator');\n\nexport type GeneratorAnnotationValue =\n | string\n | {\n generator: string;\n args?: any[];\n probability?: number;\n };\n\nexport const GeneratorAnnotation = createAnnotationHelper<GeneratorAnnotationValue>(GeneratorAnnotationId);\n\ninterface MakeAnnoationsProps<T> {\n id: string;\n schema: Schema.Schema<T, any, never>;\n}\n\n// TODO(wittjosiah): Comment.\nexport const makeUserAnnotation = <T>(props: MakeAnnoationsProps<T>): AnnotationHelper<T> => {\n assertArgument(\n /[a-zA-Z0-9]+\\.[a-zA-Z.]+\\/[a-zA-Z/]+/.test(props.id),\n 'id',\n 'Annotation id must be in the FQN format (dxos.org/annotation/Example).',\n );\n\n const getFromAst = (ast: SchemaAST.AST) =>\n SchemaAST.getAnnotation<PropertyMetaAnnotation>(PropertyMetaAnnotationId)(ast).pipe(\n Option.map((meta) => meta[props.id] as unknown),\n Option.map(Schema.decodeUnknownSync(props.schema)),\n );\n\n return {\n get: (schema) => getFromAst(schema.ast),\n getFromAst: (ast) => getFromAst(ast),\n set: (value) =>\n PropertyMeta(props.id, Schema.encodeSync(props.schema)(value)) as <S extends Schema.Schema.Any>(schema: S) => S,\n };\n};\n\nconst IconAnnotationSchema = Schema.Struct({\n /**\n * Phosphor icon name (e.g., 'ph--user--regular', 'ph--cube--regular', 'ph--link--regular ', etc.)\n */\n icon: Schema.String.pipe(Schema.pattern(/^ph--[a-z-]+--[a-z]+$/)),\n\n /**\n * Color name.\n *\n * List of colors:\n * - 'red'\n * - 'orange'\n * - 'amber'\n * - 'yellow'\n * - 'lime'\n * - 'green'\n * - 'emerald'\n * - 'teal'\n * - 'cyan'\n * - 'violet'\n * - 'purple'\n * - 'fuchsia'\n * - 'pink'\n * - 'rose'\n */\n\n hue: Schema.optional(Schema.String),\n});\n\nexport interface IconAnnotation extends Schema.Schema.Type<typeof IconAnnotationSchema> {}\n\n/**\n * Icon to render in the UI.\n */\nexport const IconAnnotation = makeUserAnnotation<IconAnnotation>({\n id: 'dxos.org/annotation/Icon',\n schema: IconAnnotationSchema,\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ATTR_TYPE", "TypeId", "Symbol", "for", "SchemaId", "ATTR_PARENT", "ParentId", "getSchema", "obj", "setSchema", "schema", "Object", "defineProperty", "value", "writable", "enumerable", "configurable", "Function", "Option", "Schema", "SchemaAST", "raise", "getField", "assertArgument", "invariant", "DXN", "FIELD_PATH_ANNOTATION", "FieldPath", "path", "PropertyMeta", "TypeIdentifierAnnotationId", "Symbol", "for", "getTypeIdentifierAnnotation", "schema", "flow", "getAnnotation", "getOrElse", "undefined", "ast", "getSchemaDXN", "assertArgument", "isSchema", "id", "DXN", "parse", "objectAnnotation", "getTypeAnnotation", "fromTypenameAndVersion", "typename", "version", "getTypeDXNFromSpecifier", "input", "raise", "TypeError", "startsWith", "fromTypename", "TypenameSchema", "String", "pipe", "pattern", "annotations", "description", "example", "VersionSchema", "TypeMeta", "Struct", "TypeAnnotationId", "TypeAnnotation", "extend", "kind", "Enums", "EntityKind", "sourceSchema", "optional", "Schema", "targetSchema", "getEntityKind", "getSchemaTypename", "getSchemaVersion", "getTypename", "obj", "getSchema", "type", "getTypeDXN", "asTypeDXN", "setTypename", "invariant", "Object", "defineProperty", "TypeId", "value", "writable", "enumerable", "configurable", "isInstanceOf", "object", "schemaDXN", "Error", "equals", "typeDXN", "PropertyMetaAnnotationId", "name", "self", "existingMeta", "getPropertyMetaAnnotation", "prop", "map", "meta", "ReferenceAnnotationId", "ReferenceAnnotation", "createAnnotationHelper", "SchemaMetaSymbol", "SystemTypeAnnotationId", "SystemTypeAnnotation", "LabelAnnotationId", "LabelAnnotation", "getLabelWithSchema", "annotation", "get", "accessor", "getField", "toString", "setLabelWithSchema", "label", "field", "DescriptionAnnotationId", "DescriptionAnnotation", "getDescriptionWithSchema", "setDescriptionWithSchema", "FormInputAnnotationId", "FormInputAnnotation", "FieldLookupAnnotationId", "GeneratorAnnotationId", "GeneratorAnnotation", "makeUserAnnotation", "props", "test", "getFromAst", "decodeUnknownSync", "set", "encodeSync", "IconAnnotationSchema", "icon", "hue", "IconAnnotation"]
7
+ }
@@ -0,0 +1,56 @@
1
+ import {
2
+ object
3
+ } from "./chunk-T4MPQJ7X.mjs";
4
+ import {
5
+ make
6
+ } from "./chunk-KGV3QIRX.mjs";
7
+ import {
8
+ LabelAnnotation,
9
+ SystemTypeAnnotation
10
+ } from "./chunk-F7KMHDPJ.mjs";
11
+ import {
12
+ __export
13
+ } from "./chunk-J5LGTIGS.mjs";
14
+
15
+ // src/Tag.ts
16
+ var Tag_exports = {};
17
+ __export(Tag_exports, {
18
+ Tag: () => Tag,
19
+ createTagList: () => createTagList,
20
+ findTagByLabel: () => findTagByLabel,
21
+ make: () => make2,
22
+ sortTags: () => sortTags
23
+ });
24
+ import * as Schema from "effect/Schema";
25
+ var Tag = Schema.Struct({
26
+ label: Schema.String,
27
+ hue: Schema.optional(Schema.String)
28
+ }).pipe(object({
29
+ typename: "dxos.org/type/Tag",
30
+ version: "0.1.0"
31
+ }), LabelAnnotation.set([
32
+ "label"
33
+ ]), SystemTypeAnnotation.set(true));
34
+ var make2 = (props) => make(Tag, props);
35
+ var sortTags = ({ label: a }, { label: b }) => a.localeCompare(b);
36
+ var createTagList = (tags) => Object.entries(tags).map(([id, tag]) => ({
37
+ ...tag,
38
+ id
39
+ })).sort(sortTags);
40
+ var findTagByLabel = (tags, name) => {
41
+ const entry = Object.entries(tags ?? {}).find(([_, tag]) => tag.label.toLowerCase() === name.toLowerCase());
42
+ return entry ? {
43
+ ...entry[1],
44
+ id: entry[0]
45
+ } : void 0;
46
+ };
47
+
48
+ export {
49
+ Tag,
50
+ make2 as make,
51
+ sortTags,
52
+ createTagList,
53
+ findTagByLabel,
54
+ Tag_exports
55
+ };
56
+ //# sourceMappingURL=chunk-GAWKQ5DZ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Tag.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport * as Type from './Type';\n\nexport const Tag = Schema.Struct({\n label: Schema.String,\n hue: Schema.optional(Schema.String), // TODO(burdon): Color name?\n}).pipe(\n Type.object({\n typename: 'dxos.org/type/Tag',\n version: '0.1.0',\n }),\n internal.LabelAnnotation.set(['label']),\n internal.SystemTypeAnnotation.set(true),\n);\n\nexport type Tag = Schema.Schema.Type<typeof Tag>;\n\nexport const make = (props: Obj.MakeProps<typeof Tag>) => Obj.make(Tag, props);\n\nexport type Map = Record<string, Tag>;\n\nexport const sortTags = ({ label: a }: Tag, { label: b }: Tag) => a.localeCompare(b);\n\nexport const createTagList = (tags: Map): Tag[] =>\n Object.entries(tags)\n .map(([id, tag]) => ({ ...tag, id }))\n .sort(sortTags);\n\nexport const findTagByLabel = (tags: Map | undefined, name: string): Tag | undefined => {\n const entry = Object.entries(tags ?? {}).find(([_, tag]) => tag.label.toLowerCase() === name.toLowerCase());\n return entry ? { ...entry[1], id: entry[0] } : undefined;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;;;;;cAAAA;EAAA;;AAIA,YAAYC,YAAY;AAMjB,IAAMC,MAAaC,cAAO;EAC/BC,OAAcC;EACdC,KAAYC,gBAAgBF,aAAM;AACpC,CAAA,EAAGG,KACIC,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACSC,gBAAgBC,IAAI;EAAC;CAAQ,GAC7BC,qBAAqBD,IAAI,IAAA,CAAA;AAK7B,IAAME,QAAO,CAACC,UAAyCD,KAAKb,KAAKc,KAAAA;AAIjE,IAAMC,WAAW,CAAC,EAAEb,OAAOc,EAAC,GAAS,EAAEd,OAAOe,EAAC,MAAYD,EAAEE,cAAcD,CAAAA;AAE3E,IAAME,gBAAgB,CAACC,SAC5BC,OAAOC,QAAQF,IAAAA,EACZG,IAAI,CAAC,CAACC,IAAIC,GAAAA,OAAU;EAAE,GAAGA;EAAKD;AAAG,EAAA,EACjCE,KAAKX,QAAAA;AAEH,IAAMY,iBAAiB,CAACP,MAAuBQ,SAAAA;AACpD,QAAMC,QAAQR,OAAOC,QAAQF,QAAQ,CAAC,CAAA,EAAGU,KAAK,CAAC,CAACC,GAAGN,GAAAA,MAASA,IAAIvB,MAAM8B,YAAW,MAAOJ,KAAKI,YAAW,CAAA;AACxG,SAAOH,QAAQ;IAAE,GAAGA,MAAM,CAAA;IAAIL,IAAIK,MAAM,CAAA;EAAG,IAAII;AACjD;",
6
+ "names": ["make", "Schema", "Tag", "Struct", "label", "String", "hue", "optional", "pipe", "object", "typename", "version", "LabelAnnotation", "set", "SystemTypeAnnotation", "make", "props", "sortTags", "a", "b", "localeCompare", "createTagList", "tags", "Object", "entries", "map", "id", "tag", "sort", "findTagByLabel", "name", "entry", "find", "_", "toLowerCase", "undefined"]
7
+ }
@@ -0,0 +1,101 @@
1
+ import {
2
+ object
3
+ } from "./chunk-T4MPQJ7X.mjs";
4
+ import {
5
+ getKeys,
6
+ make
7
+ } from "./chunk-KGV3QIRX.mjs";
8
+ import {
9
+ FormInputAnnotation
10
+ } from "./chunk-F7KMHDPJ.mjs";
11
+ import {
12
+ __export
13
+ } from "./chunk-J5LGTIGS.mjs";
14
+
15
+ // src/Feed.ts
16
+ var Feed_exports = {};
17
+ __export(Feed_exports, {
18
+ DXN_KEY: () => DXN_KEY,
19
+ Feed: () => Feed,
20
+ Service: () => Service,
21
+ append: () => append,
22
+ cursor: () => cursor,
23
+ getQueueDxn: () => getQueueDxn,
24
+ make: () => make2,
25
+ next: () => next,
26
+ nextOption: () => nextOption,
27
+ notAvailable: () => notAvailable,
28
+ query: () => query,
29
+ remove: () => remove,
30
+ runQuery: () => runQuery,
31
+ setRetention: () => setRetention
32
+ });
33
+ import * as Context from "effect/Context";
34
+ import * as Effect from "effect/Effect";
35
+ import * as Layer from "effect/Layer";
36
+ import * as Schema from "effect/Schema";
37
+ import { DXN } from "@dxos/keys";
38
+ var Feed = Schema.Struct({
39
+ /** User-facing display name. */
40
+ name: Schema.String.pipe(Schema.optional),
41
+ /** Identifier for the feed's kind (e.g., plugin id). */
42
+ kind: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional)
43
+ }).pipe(object({
44
+ typename: "dxos.org/type/Feed",
45
+ version: "0.1.0"
46
+ }));
47
+ var DXN_KEY = "dxos.org/key/feed";
48
+ var make2 = (props) => make(Feed, props);
49
+ var getQueueDxn = (feed) => {
50
+ const keys = getKeys(feed, DXN_KEY);
51
+ return keys.length === 0 ? void 0 : DXN.parse(keys[0].id);
52
+ };
53
+ var Service = class extends Context.Tag("@dxos/echo/Feed/Service")() {
54
+ };
55
+ var notAvailable = Layer.succeed(Service, {
56
+ append: () => {
57
+ throw new Error("Feed.Service not available");
58
+ },
59
+ remove: () => {
60
+ throw new Error("Feed.Service not available");
61
+ },
62
+ query: () => {
63
+ throw new Error("Feed.Service not available");
64
+ }
65
+ });
66
+ var append = (feed, items) => Effect.gen(function* () {
67
+ const service = yield* Service;
68
+ yield* Effect.promise(() => service.append(feed, items));
69
+ });
70
+ var remove = (feed, items) => Effect.gen(function* () {
71
+ const service = yield* Service;
72
+ const ids = items.map((item) => item.id);
73
+ yield* Effect.promise(() => service.remove(feed, ids));
74
+ });
75
+ var query = (feed, queryOrFilter) => Service.pipe(Effect.map((service) => service.query(feed, queryOrFilter)));
76
+ var runQuery = (feed, queryOrFilter) => query(feed, queryOrFilter).pipe(Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())));
77
+ var cursor = (_feed) => Effect.succeed({
78
+ _tag: "Cursor"
79
+ });
80
+ var next = (_cursor) => Effect.die("Feed.next is not yet implemented");
81
+ var nextOption = (_cursor) => Effect.die("Feed.nextOption is not yet implemented");
82
+ var setRetention = (_feed, _options) => Effect.void;
83
+
84
+ export {
85
+ Feed,
86
+ DXN_KEY,
87
+ make2 as make,
88
+ getQueueDxn,
89
+ Service,
90
+ notAvailable,
91
+ append,
92
+ remove,
93
+ query,
94
+ runQuery,
95
+ cursor,
96
+ next,
97
+ nextOption,
98
+ setRetention,
99
+ Feed_exports
100
+ };
101
+ //# sourceMappingURL=chunk-GFNCSK7F.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Feed.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport type * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nimport type * as Entity from './Entity';\nimport type * as Filter from './Filter';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport type * as Query from './Query';\nimport type * as QueryResult from './QueryResult';\nimport * as Type from './Type';\n\n/**\n * Runtime schema for a Feed object.\n *\n * @example\n * ```ts\n * const feed = Obj.make(Feed.Feed, { name: 'notifications', kind: 'dxos.org/plugin/notifications/v1' });\n * ```\n */\nexport const Feed = Schema.Struct({\n /** User-facing display name. */\n name: Schema.String.pipe(Schema.optional),\n /** Identifier for the feed's kind (e.g., plugin id). */\n kind: Schema.String.pipe(internal.FormInputAnnotation.set(false), Schema.optional),\n}).pipe(\n Type.object({\n typename: 'dxos.org/type/Feed',\n version: '0.1.0',\n }),\n);\n\n/**\n * TypeScript instance type for a Feed object.\n */\nexport interface Feed extends Schema.Schema.Type<typeof Feed> {}\n\n//\n// Types\n//\n\n/**\n * Meta key source for storing the backing DXN bound to a feed object.\n */\n// TODO(dmaretskyi): Enforce that Feed ObjectId = feed storage ID. And remove this key.\nexport const DXN_KEY = 'dxos.org/key/feed';\n\n/**\n * Opaque cursor for iterating over feed items.\n */\n// TODO(dmaretskyi): T needs to be referenced in the type structure for typescript to respect it during inference and type-checking.\nexport interface Cursor<T = Obj.Snapshot> {\n readonly _tag: 'Cursor';\n}\n\n/**\n * Retention options for a feed.\n */\nexport interface RetentionOptions {\n /** Retain items after this cursor position. */\n // TODO(wittjosiah): Use FeedCursor from @dxos/feed?\n cursor?: string;\n}\n\n//\n// Factory\n//\n\n/**\n * Creates a new feed object.\n *\n * @example\n * ```ts\n * const feed = Feed.make({ name: 'notifications', kind: 'dxos.org/plugin/notifications/v1' });\n * ```\n */\n// TODO(wittjosiah): How to control the feed namespace (data/trace)? Why do feeds have namespaces?\nexport const make = (props: Obj.MakeProps<typeof Feed>): Feed => Obj.make(Feed, props);\n\n/**\n * Reads the queue DXN from feed metadata.\n *\n * @deprecated\n */\n// TODO(wittjosiah): Align backing feed dxn's with object DXN.\nexport const getQueueDxn = (feed: Feed): DXN | undefined => {\n const keys = Obj.getKeys(feed, DXN_KEY);\n return keys.length === 0 ? undefined : DXN.parse(keys[0].id);\n};\n\n//\n// Service\n//\n\n/**\n * Effect service for feed operations.\n * Provides the bridge to the underlying storage implementation.\n * Must be provided by the application layer (e.g., echo-db).\n */\nexport class Service extends Context.Tag('@dxos/echo/Feed/Service')<\n Service,\n {\n /**\n * Appends items to a feed.\n */\n append(feed: Feed, items: Entity.Unknown[]): Promise<void>;\n\n /**\n * Removes items from a feed by ID.\n */\n // TODO(dmaretskyi): Change type to ObjectId.\n remove(feed: Feed, ids: string[]): Promise<void>;\n\n /**\n * Queries items in a feed.\n */\n query: {\n <Q extends Query.Any>(feed: Feed, query: Q): QueryResult.QueryResult<Query.Type<Q>>;\n <F extends Filter.Any>(feed: Feed, filter: F): QueryResult.QueryResult<Filter.Type<F>>;\n };\n }\n>() {}\n\n/**\n * Layer that provides a Feed service that throws when accessed.\n * Useful as a default layer when no feed service is available.\n */\nexport const notAvailable: Layer.Layer<Service> = Layer.succeed(Service, {\n append: () => {\n throw new Error('Feed.Service not available');\n },\n remove: () => {\n throw new Error('Feed.Service not available');\n },\n query: () => {\n throw new Error('Feed.Service not available');\n },\n} as Context.Tag.Service<Service>);\n\n//\n// Operations\n//\n\n/**\n * Appends items to a feed.\n *\n * @example\n * ```ts\n * yield* Feed.append(feed, [Obj.make(Notification, { title: 'Hello' })]);\n * ```\n */\nexport const append = (feed: Feed, items: Entity.Unknown[]): Effect.Effect<void, never, Service> =>\n Effect.gen(function* () {\n const service = yield* Service;\n yield* Effect.promise(() => service.append(feed, items));\n });\n\n/**\n * Removes items from a feed.\n *\n * @example\n * ```ts\n * yield* Feed.remove(feed, [item]);\n * ```\n */\n// TODO(dmaretskyi): Should we allow snapshots here? - what does it mean to remove a snapshot?\nexport const remove = (feed: Feed, items: (Entity.Unknown | Obj.Snapshot)[]): Effect.Effect<void, never, Service> =>\n Effect.gen(function* () {\n const service = yield* Service;\n const ids = items.map((item) => item.id);\n yield* Effect.promise(() => service.remove(feed, ids));\n });\n\n/**\n * Creates a reactive query over items in a feed.\n *\n * @example\n * ```ts\n * const result = yield* Feed.query(feed, Filter.type(Person));\n * ```\n */\n// TODO(dmaretskyi): Suport chained queries:\n// const result = yield* feed.pipe(Feed.query(Filter.type(Person))); result.subscribe(...)\n// const objects = yield* feed.pipe(Feed.query(Filter.type(Person))).run;\n// const object = yield* feed.pipe(Feed.query(Filter.type(Person))).first;\n// ... unify for Database and schema queries.\nexport const query: {\n <Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;\n <F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;\n} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>\n Service.pipe(Effect.map((service) => service.query(feed, queryOrFilter as any) as QueryResult.QueryResult<any>));\n\n/**\n * Executes a feed query once and returns the results.\n *\n * @example\n * ```ts\n * const items = yield* Feed.runQuery(feed, Filter.type(Person));\n * ```\n */\nexport const runQuery: {\n <Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;\n <F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;\n} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>\n query(feed, queryOrFilter as any).pipe(Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())));\n\n/**\n * Creates a cursor for iterating over feed items.\n * Currently stubbed — cursor operations are not yet implemented.\n *\n * @example\n * ```ts\n * const cursor = yield* Feed.cursor<Person>(feed);\n * const item = yield* Feed.next(cursor);\n * ```\n */\n// TODO(wittjosiah): Implement cursor operations. Use Effect streams?\nexport const cursor = <T = Obj.Snapshot>(_feed: Feed): Effect.Effect<Cursor<T>, never, Service> =>\n Effect.succeed({ _tag: 'Cursor' } as Cursor<T>);\n\n/**\n * Returns the next item from a feed cursor.\n * Currently stubbed — cursor operations are not yet implemented.\n */\nexport const next = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<T, never, Service> =>\n Effect.die('Feed.next is not yet implemented');\n\n/**\n * Returns the next item from a feed cursor as an Option.\n * Currently stubbed — cursor operations are not yet implemented.\n */\nexport const nextOption = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<Option.Option<T>, never, Service> =>\n Effect.die('Feed.nextOption is not yet implemented');\n\n/**\n * Sets the local retention policy for a feed.\n * Currently stubbed — queues do not yet support retention.\n *\n * @example\n * ```ts\n * yield* Feed.setRetention(feed, { count: 1000 });\n * ```\n */\n// TODO(feed): Implement when queue retention is supported.\nexport const setRetention = (_feed: Feed, _options: RetentionOptions): Effect.Effect<void, never, Service> =>\n Effect.void;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;;;cAAAA;EAAA;;;;;;;;AAIA,YAAYC,aAAa;AACzB,YAAYC,YAAY;AACxB,YAAYC,WAAW;AAEvB,YAAYC,YAAY;AAExB,SAASC,WAAW;AAkBb,IAAMC,OAAcC,cAAO;;EAEhCC,MAAaC,cAAOC,KAAYC,eAAQ;;EAExCC,MAAaH,cAAOC,KAAcG,oBAAoBC,IAAI,KAAA,GAAeH,eAAQ;AACnF,CAAA,EAAGD,KACIK,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,CAAA;AAgBK,IAAMC,UAAU;AAgChB,IAAMC,QAAO,CAACC,UAAgDD,KAAKb,MAAMc,KAAAA;AAQzE,IAAMC,cAAc,CAACC,SAAAA;AAC1B,QAAMC,OAAWC,QAAQF,MAAMJ,OAAAA;AAC/B,SAAOK,KAAKE,WAAW,IAAIC,SAAYC,IAAIC,MAAML,KAAK,CAAA,EAAGM,EAAE;AAC7D;AAWO,IAAMC,UAAN,cAA8BC,YAAI,yBAAA,EAAA,EAAA;AAsBpC;AAME,IAAMC,eAA2CC,cAAQH,SAAS;EACvEI,QAAQ,MAAA;AACN,UAAM,IAAIC,MAAM,4BAAA;EAClB;EACAC,QAAQ,MAAA;AACN,UAAM,IAAID,MAAM,4BAAA;EAClB;EACAE,OAAO,MAAA;AACL,UAAM,IAAIF,MAAM,4BAAA;EAClB;AACF,CAAA;AAcO,IAAMD,SAAS,CAACZ,MAAYgB,UAC1BC,WAAI,aAAA;AACT,QAAMC,UAAU,OAAOV;AACvB,SAAcW,eAAQ,MAAMD,QAAQN,OAAOZ,MAAMgB,KAAAA,CAAAA;AACnD,CAAA;AAWK,IAAMF,SAAS,CAACd,MAAYgB,UAC1BC,WAAI,aAAA;AACT,QAAMC,UAAU,OAAOV;AACvB,QAAMY,MAAMJ,MAAMK,IAAI,CAACC,SAASA,KAAKf,EAAE;AACvC,SAAcY,eAAQ,MAAMD,QAAQJ,OAAOd,MAAMoB,GAAAA,CAAAA;AACnD,CAAA;AAeK,IAAML,QAGT,CAACf,MAAYuB,kBACff,QAAQpB,KAAYiC,WAAI,CAACH,YAAYA,QAAQH,MAAMf,MAAMuB,aAAAA,CAAAA,CAAAA;AAUpD,IAAMC,WAGT,CAACxB,MAAYuB,kBACfR,MAAMf,MAAMuB,aAAAA,EAAsBnC,KAAYqC,eAAQ,CAACC,gBAAuBP,eAAQ,MAAMO,YAAYC,IAAG,CAAA,CAAA,CAAA;AAatG,IAAMC,SAAS,CAAmBC,UAChClB,eAAQ;EAAEmB,MAAM;AAAS,CAAA;AAM3B,IAAMC,OAAO,CAAmBC,YAC9BC,WAAI,kCAAA;AAMN,IAAMC,aAAa,CAAmBF,YACpCC,WAAI,wCAAA;AAYN,IAAME,eAAe,CAACN,OAAaO,aACjCC;",
6
+ "names": ["make", "Context", "Effect", "Layer", "Schema", "DXN", "Feed", "Struct", "name", "String", "pipe", "optional", "kind", "FormInputAnnotation", "set", "object", "typename", "version", "DXN_KEY", "make", "props", "getQueueDxn", "feed", "keys", "getKeys", "length", "undefined", "DXN", "parse", "id", "Service", "Tag", "notAvailable", "succeed", "append", "Error", "remove", "query", "items", "gen", "service", "promise", "ids", "map", "item", "queryOrFilter", "runQuery", "flatMap", "queryResult", "run", "cursor", "_feed", "_tag", "next", "_cursor", "die", "nextOption", "setRetention", "_options", "void"]
7
+ }
@@ -0,0 +1,10 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
7
+ export {
8
+ __export
9
+ };
10
+ //# sourceMappingURL=chunk-J5LGTIGS.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,313 @@
1
+ import {
2
+ Kind,
3
+ KindId,
4
+ SnapshotKindId
5
+ } from "./chunk-W7OP5HGZ.mjs";
6
+ import {
7
+ EchoObjectSchema,
8
+ MetaId,
9
+ VersionTypeId,
10
+ addTag,
11
+ change,
12
+ clone,
13
+ compareVersions,
14
+ decodeVersion,
15
+ deleteKeys,
16
+ encodeVersion,
17
+ getDXN,
18
+ getDatabase,
19
+ getDescription,
20
+ getKeys,
21
+ getLabel,
22
+ getMetaChecked,
23
+ getSnapshot,
24
+ getValue,
25
+ isDeleted,
26
+ isVersion,
27
+ makeObject,
28
+ objectFromJSON,
29
+ objectToJSON,
30
+ removeTag,
31
+ setDescription,
32
+ setLabel,
33
+ setValue,
34
+ sort,
35
+ sortByLabel,
36
+ sortByTypename,
37
+ subscribe,
38
+ version,
39
+ versionValid
40
+ } from "./chunk-PP4DNUZU.mjs";
41
+ import {
42
+ ParentId,
43
+ getSchema,
44
+ getTypeAnnotation,
45
+ getTypeDXN,
46
+ getTypename,
47
+ isInstanceOf
48
+ } from "./chunk-F7KMHDPJ.mjs";
49
+ import {
50
+ ANY_OBJECT_TYPENAME,
51
+ ANY_OBJECT_VERSION,
52
+ SchemaKindId
53
+ } from "./chunk-4KG6IGL4.mjs";
54
+ import {
55
+ GetReactiveError
56
+ } from "./chunk-MXQJZCPY.mjs";
57
+ import {
58
+ __export
59
+ } from "./chunk-J5LGTIGS.mjs";
60
+
61
+ // src/Obj.ts
62
+ var Obj_exports = {};
63
+ __export(Obj_exports, {
64
+ ID: () => ID,
65
+ Meta: () => Meta,
66
+ Parent: () => Parent,
67
+ Unknown: () => Unknown2,
68
+ VersionTypeId: () => VersionTypeId2,
69
+ addTag: () => addTag2,
70
+ change: () => change2,
71
+ clone: () => clone2,
72
+ compareVersions: () => compareVersions2,
73
+ decodeVersion: () => decodeVersion2,
74
+ deleteKeys: () => deleteKeys2,
75
+ encodeVersion: () => encodeVersion2,
76
+ fromJSON: () => fromJSON,
77
+ getDXN: () => getDXN2,
78
+ getDatabase: () => getDatabase2,
79
+ getDescription: () => getDescription2,
80
+ getKeys: () => getKeys2,
81
+ getLabel: () => getLabel2,
82
+ getMeta: () => getMeta,
83
+ getParent: () => getParent,
84
+ getReactive: () => getReactive,
85
+ getReactiveOption: () => getReactiveOption,
86
+ getReactiveOrThrow: () => getReactiveOrThrow,
87
+ getSchema: () => getSchema2,
88
+ getSnapshot: () => getSnapshot2,
89
+ getTypeDXN: () => getTypeDXN2,
90
+ getTypename: () => getTypename2,
91
+ getValue: () => getValue2,
92
+ instanceOf: () => instanceOf,
93
+ isDeleted: () => isDeleted2,
94
+ isObject: () => isObject,
95
+ isSnapshot: () => isSnapshot,
96
+ isVersion: () => isVersion2,
97
+ make: () => make,
98
+ removeTag: () => removeTag2,
99
+ setDescription: () => setDescription2,
100
+ setLabel: () => setLabel2,
101
+ setParent: () => setParent,
102
+ setValue: () => setValue2,
103
+ snapshotOf: () => snapshotOf,
104
+ sort: () => sort2,
105
+ sortByLabel: () => sortByLabel2,
106
+ sortByTypename: () => sortByTypename2,
107
+ subscribe: () => subscribe2,
108
+ toJSON: () => toJSON,
109
+ version: () => version2,
110
+ versionValid: () => versionValid2
111
+ });
112
+ import * as Effect from "effect/Effect";
113
+ import * as Function from "effect/Function";
114
+ import * as Option from "effect/Option";
115
+ import * as Schema from "effect/Schema";
116
+ import { createJsonPath } from "@dxos/effect";
117
+ import { assertArgument } from "@dxos/invariant";
118
+ import { ObjectId } from "@dxos/keys";
119
+ import { assumeType } from "@dxos/util";
120
+ var Unknown2 = Schema.Struct({
121
+ id: Schema.String
122
+ }).pipe(
123
+ Schema.extend(Schema.Record({
124
+ key: Schema.String,
125
+ value: Schema.Unknown
126
+ })),
127
+ // TODO(dmaretskyi): Clean this up.
128
+ // NOTE: The EchoObjectSchema annotation is required for Ref.Ref(Obj.Unknown) to work.
129
+ // The typename/version only satisfy ECHO schema machinery for reference targets.
130
+ EchoObjectSchema({
131
+ typename: ANY_OBJECT_TYPENAME,
132
+ version: ANY_OBJECT_VERSION
133
+ }),
134
+ (schema) => Object.assign(schema, {
135
+ [SchemaKindId]: schema[SchemaKindId]
136
+ })
137
+ );
138
+ var defaultMeta = {
139
+ keys: []
140
+ };
141
+ var make = (schema, props) => {
142
+ assertArgument(getTypeAnnotation(schema)?.kind === Kind.Object, "schema", "Expected an object schema");
143
+ let meta = void 0;
144
+ if (props[MetaId] != null) {
145
+ meta = {
146
+ ...structuredClone(defaultMeta),
147
+ ...props[MetaId]
148
+ };
149
+ delete props[MetaId];
150
+ }
151
+ const filterUndefined = Object.fromEntries(Object.entries(props).filter(([_, v]) => v !== void 0));
152
+ for (const sym of Object.getOwnPropertySymbols(props)) {
153
+ const value = props[sym];
154
+ if (value !== void 0) {
155
+ filterUndefined[sym] = value;
156
+ }
157
+ }
158
+ return makeObject(schema, filterUndefined, {
159
+ ...defaultMeta,
160
+ ...meta
161
+ });
162
+ };
163
+ var isObject = (obj) => {
164
+ assumeType(obj);
165
+ return typeof obj === "object" && obj !== null && obj[KindId] === Kind.Object;
166
+ };
167
+ var isSnapshot = (obj) => {
168
+ assumeType(obj);
169
+ return typeof obj === "object" && obj !== null && obj[SnapshotKindId] === Kind.Object;
170
+ };
171
+ var subscribe2 = (obj, callback) => {
172
+ return subscribe(obj, callback);
173
+ };
174
+ var getSnapshot2 = getSnapshot;
175
+ var getReactive = (snapshot) => Effect.gen(function* () {
176
+ const db = getDatabase(snapshot);
177
+ if (!db) {
178
+ return yield* Effect.fail(new GetReactiveError({
179
+ reason: "no-database",
180
+ snapshotId: snapshot.id
181
+ }));
182
+ }
183
+ const obj = db.getObjectById(snapshot.id);
184
+ if (!obj) {
185
+ return yield* Effect.fail(new GetReactiveError({
186
+ reason: "object-not-found",
187
+ snapshotId: snapshot.id
188
+ }));
189
+ }
190
+ return obj;
191
+ });
192
+ var getReactiveOption = (snapshot) => getReactive(snapshot).pipe(Effect.map(Option.some), Effect.catchAll(() => Effect.succeed(Option.none())));
193
+ var getReactiveOrThrow = (snapshot) => Effect.runSync(getReactive(snapshot));
194
+ var clone2 = clone;
195
+ var change2 = (obj, callback) => {
196
+ change(obj, callback);
197
+ };
198
+ var getValue2 = (obj, path) => {
199
+ return getValue(obj, createJsonPath(path));
200
+ };
201
+ var setValue2 = setValue;
202
+ var ID = ObjectId;
203
+ var instanceOf = (...args) => {
204
+ if (args.length === 1) {
205
+ return (entity) => isInstanceOf(args[0], entity);
206
+ }
207
+ return isInstanceOf(args[0], args[1]);
208
+ };
209
+ var snapshotOf = (...args) => {
210
+ const check = (entity) => entity != null && typeof entity === "object" && SnapshotKindId in entity && isInstanceOf(args[0], entity);
211
+ if (args.length === 1) {
212
+ return (entity) => check(entity);
213
+ }
214
+ return check(args[1]);
215
+ };
216
+ var getDXN2 = (entity) => {
217
+ assertArgument(!Schema.isSchema(entity), "obj", "Object should not be a schema.");
218
+ return getDXN(entity);
219
+ };
220
+ var getTypeDXN2 = getTypeDXN;
221
+ var getSchema2 = getSchema;
222
+ var getTypename2 = (entity) => getTypename(entity);
223
+ var getDatabase2 = (entity) => getDatabase(entity);
224
+ var Meta = MetaId;
225
+ function getMeta(entity) {
226
+ return getMetaChecked(entity);
227
+ }
228
+ var getKeys2 = Function.dual(2, (entity, source) => getKeys(entity, source));
229
+ var deleteKeys2 = (entity, source) => deleteKeys(entity, source);
230
+ var addTag2 = (entity, tag) => addTag(entity, tag);
231
+ var removeTag2 = (entity, tag) => removeTag(entity, tag);
232
+ var isDeleted2 = (entity) => isDeleted(entity);
233
+ var getLabel2 = (entity) => getLabel(entity);
234
+ var setLabel2 = (entity, label) => setLabel(entity, label);
235
+ var getDescription2 = (entity) => getDescription(entity);
236
+ var setDescription2 = (entity, description) => setDescription(entity, description);
237
+ var Parent = ParentId;
238
+ var getParent = (entity) => {
239
+ assertArgument(isObject(entity), "Expected an object");
240
+ assumeType(entity);
241
+ return entity[ParentId];
242
+ };
243
+ var setParent = (entity, parent) => {
244
+ assertArgument(isObject(entity), "Expected an object");
245
+ assertArgument(parent === void 0 || isObject(parent), "Expected an object");
246
+ assumeType(entity);
247
+ assumeType(parent);
248
+ entity[ParentId] = parent;
249
+ };
250
+ var toJSON = (entity) => objectToJSON(entity);
251
+ var fromJSON = objectFromJSON;
252
+ var sortByLabel2 = sortByLabel;
253
+ var sortByTypename2 = sortByTypename;
254
+ var sort2 = (...comparators) => sort(...comparators);
255
+ var VersionTypeId2 = VersionTypeId;
256
+ var isVersion2 = isVersion;
257
+ var versionValid2 = versionValid;
258
+ var compareVersions2 = compareVersions;
259
+ var encodeVersion2 = encodeVersion;
260
+ var decodeVersion2 = decodeVersion;
261
+ var version2 = (entity) => version(entity);
262
+
263
+ export {
264
+ Unknown2 as Unknown,
265
+ make,
266
+ isObject,
267
+ isSnapshot,
268
+ subscribe2 as subscribe,
269
+ getSnapshot2 as getSnapshot,
270
+ getReactive,
271
+ getReactiveOption,
272
+ getReactiveOrThrow,
273
+ clone2 as clone,
274
+ change2 as change,
275
+ getValue2 as getValue,
276
+ setValue2 as setValue,
277
+ ID,
278
+ instanceOf,
279
+ snapshotOf,
280
+ getDXN2 as getDXN,
281
+ getTypeDXN2 as getTypeDXN,
282
+ getSchema2 as getSchema,
283
+ getTypename2 as getTypename,
284
+ getDatabase2 as getDatabase,
285
+ Meta,
286
+ getMeta,
287
+ getKeys2 as getKeys,
288
+ deleteKeys2 as deleteKeys,
289
+ addTag2 as addTag,
290
+ removeTag2 as removeTag,
291
+ isDeleted2 as isDeleted,
292
+ getLabel2 as getLabel,
293
+ setLabel2 as setLabel,
294
+ getDescription2 as getDescription,
295
+ setDescription2 as setDescription,
296
+ Parent,
297
+ getParent,
298
+ setParent,
299
+ toJSON,
300
+ fromJSON,
301
+ sortByLabel2 as sortByLabel,
302
+ sortByTypename2 as sortByTypename,
303
+ sort2 as sort,
304
+ VersionTypeId2 as VersionTypeId,
305
+ isVersion2 as isVersion,
306
+ versionValid2 as versionValid,
307
+ compareVersions2 as compareVersions,
308
+ encodeVersion2 as encodeVersion,
309
+ decodeVersion2 as decodeVersion,
310
+ version2 as version,
311
+ Obj_exports
312
+ };
313
+ //# sourceMappingURL=chunk-KGV3QIRX.mjs.map