@dxos/echo 0.8.4-main.b97322e → 0.8.4-main.bcb3aa67d6

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 (520) hide show
  1. package/README.md +4 -5
  2. package/dist/lib/neutral/Annotation.mjs +37 -0
  3. package/dist/lib/neutral/Database.mjs +47 -0
  4. package/dist/lib/neutral/Entity.mjs +59 -0
  5. package/dist/lib/neutral/Entity.mjs.map +7 -0
  6. package/dist/lib/neutral/Err.mjs +12 -0
  7. package/dist/lib/neutral/Err.mjs.map +7 -0
  8. package/dist/lib/neutral/Extension.mjs +18 -0
  9. package/dist/lib/neutral/Extension.mjs.map +7 -0
  10. package/dist/lib/neutral/Feed.mjs +45 -0
  11. package/dist/lib/neutral/Feed.mjs.map +7 -0
  12. package/dist/lib/neutral/Filter.mjs +70 -0
  13. package/dist/lib/neutral/Filter.mjs.map +7 -0
  14. package/dist/lib/neutral/Format.mjs +66 -0
  15. package/dist/lib/neutral/Format.mjs.map +7 -0
  16. package/dist/lib/neutral/JsonSchema.mjs +19 -0
  17. package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
  18. package/dist/lib/neutral/Key.mjs +12 -0
  19. package/dist/lib/neutral/Key.mjs.map +7 -0
  20. package/dist/lib/neutral/Obj.mjs +110 -0
  21. package/dist/lib/neutral/Obj.mjs.map +7 -0
  22. package/dist/lib/neutral/Order.mjs +12 -0
  23. package/dist/lib/neutral/Order.mjs.map +7 -0
  24. package/dist/lib/neutral/Query.mjs +38 -0
  25. package/dist/lib/neutral/Query.mjs.map +7 -0
  26. package/dist/lib/neutral/QueryResult.mjs +2 -0
  27. package/dist/lib/neutral/QueryResult.mjs.map +7 -0
  28. package/dist/lib/neutral/Ref.mjs +24 -0
  29. package/dist/lib/neutral/Ref.mjs.map +7 -0
  30. package/dist/lib/neutral/Relation.mjs +93 -0
  31. package/dist/lib/neutral/Relation.mjs.map +7 -0
  32. package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
  33. package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
  34. package/dist/lib/neutral/Tag.mjs +28 -0
  35. package/dist/lib/neutral/Tag.mjs.map +7 -0
  36. package/dist/lib/neutral/Type.mjs +37 -0
  37. package/dist/lib/neutral/Type.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-24XI6DOL.mjs +34 -0
  39. package/dist/lib/neutral/chunk-24XI6DOL.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-4YAAHG3E.mjs +335 -0
  41. package/dist/lib/neutral/chunk-4YAAHG3E.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-4ZRIO2QF.mjs +361 -0
  43. package/dist/lib/neutral/chunk-4ZRIO2QF.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-7C2A2RP6.mjs +2830 -0
  45. package/dist/lib/neutral/chunk-7C2A2RP6.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-ANHVGJI4.mjs +21 -0
  47. package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +7 -0
  48. package/dist/lib/neutral/chunk-BNCCGLJN.mjs +7 -0
  49. package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +7 -0
  50. package/dist/lib/neutral/chunk-CAB5PWUF.mjs +313 -0
  51. package/dist/lib/neutral/chunk-CAB5PWUF.mjs.map +7 -0
  52. package/dist/lib/neutral/chunk-DQYLD2RB.mjs +402 -0
  53. package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +7 -0
  54. package/dist/lib/neutral/chunk-DUTD5HFU.mjs +97 -0
  55. package/dist/lib/neutral/chunk-DUTD5HFU.mjs.map +7 -0
  56. package/dist/lib/neutral/chunk-EKQJGGA3.mjs +396 -0
  57. package/dist/lib/neutral/chunk-EKQJGGA3.mjs.map +7 -0
  58. package/dist/lib/neutral/chunk-EOIR5O5I.mjs +298 -0
  59. package/dist/lib/neutral/chunk-EOIR5O5I.mjs.map +7 -0
  60. package/dist/lib/neutral/chunk-GVY6O76A.mjs +45 -0
  61. package/dist/lib/neutral/chunk-GVY6O76A.mjs.map +7 -0
  62. package/dist/lib/neutral/chunk-GZQTCRJB.mjs +73 -0
  63. package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +7 -0
  64. package/dist/lib/neutral/chunk-HGHJ36DH.mjs +117 -0
  65. package/dist/lib/neutral/chunk-HGHJ36DH.mjs.map +7 -0
  66. package/dist/lib/neutral/chunk-IICPQK3M.mjs +27 -0
  67. package/dist/lib/neutral/chunk-IICPQK3M.mjs.map +7 -0
  68. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  69. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  70. package/dist/lib/neutral/chunk-NKPWM67P.mjs +56 -0
  71. package/dist/lib/neutral/chunk-NKPWM67P.mjs.map +7 -0
  72. package/dist/lib/neutral/chunk-OMUPQMLR.mjs +7 -0
  73. package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +7 -0
  74. package/dist/lib/neutral/chunk-OPMZTWI3.mjs +121 -0
  75. package/dist/lib/neutral/chunk-OPMZTWI3.mjs.map +7 -0
  76. package/dist/lib/neutral/chunk-OPQEHU36.mjs +45 -0
  77. package/dist/lib/neutral/chunk-OPQEHU36.mjs.map +7 -0
  78. package/dist/lib/neutral/chunk-QDV7C7VM.mjs +299 -0
  79. package/dist/lib/neutral/chunk-QDV7C7VM.mjs.map +7 -0
  80. package/dist/lib/neutral/chunk-TBKX6JQO.mjs +67 -0
  81. package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +7 -0
  82. package/dist/lib/neutral/chunk-UBEZSGXY.mjs +51 -0
  83. package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
  84. package/dist/lib/neutral/chunk-UI6MWK5W.mjs +42 -0
  85. package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
  86. package/dist/lib/neutral/chunk-XV5R2XZH.mjs +133 -0
  87. package/dist/lib/neutral/chunk-XV5R2XZH.mjs.map +7 -0
  88. package/dist/lib/neutral/chunk-YPGDBRPH.mjs +159 -0
  89. package/dist/lib/neutral/chunk-YPGDBRPH.mjs.map +7 -0
  90. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +50 -0
  91. package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +7 -0
  92. package/dist/lib/neutral/chunk-ZCBOJ6I7.mjs +787 -0
  93. package/dist/lib/neutral/chunk-ZCBOJ6I7.mjs.map +7 -0
  94. package/dist/lib/neutral/index.mjs +101 -0
  95. package/dist/lib/neutral/index.mjs.map +7 -0
  96. package/dist/lib/neutral/internal/index.mjs +474 -0
  97. package/dist/lib/neutral/internal/index.mjs.map +7 -0
  98. package/dist/lib/neutral/meta.json +1 -0
  99. package/dist/lib/neutral/testing/index.mjs +374 -0
  100. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  101. package/dist/types/src/Annotation.d.ts +24 -0
  102. package/dist/types/src/Annotation.d.ts.map +1 -0
  103. package/dist/types/src/Collection.d.ts +16 -0
  104. package/dist/types/src/Collection.d.ts.map +1 -0
  105. package/dist/types/src/Database.d.ts +196 -0
  106. package/dist/types/src/Database.d.ts.map +1 -0
  107. package/dist/types/src/Dataset.d.ts +19 -0
  108. package/dist/types/src/Dataset.d.ts.map +1 -0
  109. package/dist/types/src/Entity.d.ts +168 -0
  110. package/dist/types/src/Entity.d.ts.map +1 -0
  111. package/dist/types/src/Entity.test.d.ts +2 -0
  112. package/dist/types/src/Entity.test.d.ts.map +1 -0
  113. package/dist/types/src/Err.d.ts +107 -0
  114. package/dist/types/src/Err.d.ts.map +1 -0
  115. package/dist/types/src/Extension.d.ts +80 -0
  116. package/dist/types/src/Extension.d.ts.map +1 -0
  117. package/dist/types/src/Extension.test.d.ts +2 -0
  118. package/dist/types/src/Extension.test.d.ts.map +1 -0
  119. package/dist/types/src/Feed.d.ts +163 -0
  120. package/dist/types/src/Feed.d.ts.map +1 -0
  121. package/dist/types/src/Filter.d.ts +136 -0
  122. package/dist/types/src/Filter.d.ts.map +1 -0
  123. package/dist/types/src/Filter.test.d.ts +2 -0
  124. package/dist/types/src/Filter.test.d.ts.map +1 -0
  125. package/dist/types/src/Format.d.ts +4 -0
  126. package/dist/types/src/Format.d.ts.map +1 -0
  127. package/dist/types/src/Hypergraph.d.ts +65 -0
  128. package/dist/types/src/Hypergraph.d.ts.map +1 -0
  129. package/dist/types/src/JsonSchema.d.ts +16 -0
  130. package/dist/types/src/JsonSchema.d.ts.map +1 -0
  131. package/dist/types/src/Key.d.ts +1 -0
  132. package/dist/types/src/Key.d.ts.map +1 -1
  133. package/dist/types/src/Obj.d.ts +459 -35
  134. package/dist/types/src/Obj.d.ts.map +1 -1
  135. package/dist/types/src/Obj.test.d.ts +2 -0
  136. package/dist/types/src/Obj.test.d.ts.map +1 -0
  137. package/dist/types/src/Order.d.ts +16 -0
  138. package/dist/types/src/Order.d.ts.map +1 -0
  139. package/dist/types/src/Query.d.ts +209 -0
  140. package/dist/types/src/Query.d.ts.map +1 -0
  141. package/dist/types/src/Query.test.d.ts +2 -0
  142. package/dist/types/src/Query.test.d.ts.map +1 -0
  143. package/dist/types/src/QueryResult.d.ts +80 -0
  144. package/dist/types/src/QueryResult.d.ts.map +1 -0
  145. package/dist/types/src/Ref.d.ts +61 -11
  146. package/dist/types/src/Ref.d.ts.map +1 -1
  147. package/dist/types/src/Relation.d.ts +291 -21
  148. package/dist/types/src/Relation.d.ts.map +1 -1
  149. package/dist/types/src/Relation.test.d.ts +2 -0
  150. package/dist/types/src/Relation.test.d.ts.map +1 -0
  151. package/dist/types/src/SchemaRegistry.d.ts +84 -0
  152. package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
  153. package/dist/types/src/Tag.d.ts +18 -0
  154. package/dist/types/src/Tag.d.ts.map +1 -0
  155. package/dist/types/src/Type.d.ts +123 -100
  156. package/dist/types/src/Type.d.ts.map +1 -1
  157. package/dist/types/src/Type.test.d.ts +2 -0
  158. package/dist/types/src/Type.test.d.ts.map +1 -0
  159. package/dist/types/src/View.d.ts +68 -0
  160. package/dist/types/src/View.d.ts.map +1 -0
  161. package/dist/types/src/hierarchy.test.d.ts +2 -0
  162. package/dist/types/src/hierarchy.test.d.ts.map +1 -0
  163. package/dist/types/src/index.d.ts +20 -3
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/internal/Annotation/annotations.d.ts +231 -0
  166. package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
  167. package/dist/types/src/internal/Annotation/annotations.test.d.ts +2 -0
  168. package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
  169. package/dist/types/src/internal/Annotation/index.d.ts +4 -0
  170. package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
  171. package/dist/types/src/internal/Annotation/sorting.d.ts +24 -0
  172. package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
  173. package/dist/types/src/internal/Annotation/util.d.ts +39 -0
  174. package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
  175. package/dist/types/src/internal/Entity/api.d.ts +13 -0
  176. package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
  177. package/dist/types/src/internal/Entity/entity.d.ts +20 -0
  178. package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
  179. package/dist/types/src/internal/Entity/index.d.ts +8 -0
  180. package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
  181. package/dist/types/src/internal/Entity/model.d.ts +55 -0
  182. package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
  183. package/dist/types/src/internal/Entity/object.d.ts +18 -0
  184. package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
  185. package/dist/types/src/internal/Entity/relation.d.ts +35 -0
  186. package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
  187. package/dist/types/src/internal/Entity/util.d.ts +2 -0
  188. package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
  189. package/dist/types/src/internal/Entity/version.d.ts +42 -0
  190. package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
  191. package/dist/types/src/internal/Format/date.d.ts +63 -0
  192. package/dist/types/src/internal/Format/date.d.ts.map +1 -0
  193. package/dist/types/src/internal/Format/date.test.d.ts +2 -0
  194. package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
  195. package/dist/types/src/internal/Format/format.d.ts +32 -0
  196. package/dist/types/src/internal/Format/format.d.ts.map +1 -0
  197. package/dist/types/src/internal/Format/format.test.d.ts +2 -0
  198. package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
  199. package/dist/types/src/internal/Format/index.d.ts +8 -0
  200. package/dist/types/src/internal/Format/index.d.ts.map +1 -0
  201. package/dist/types/src/internal/Format/number.d.ts +31 -0
  202. package/dist/types/src/internal/Format/number.d.ts.map +1 -0
  203. package/dist/types/src/internal/Format/object.d.ts +35 -0
  204. package/dist/types/src/internal/Format/object.d.ts.map +1 -0
  205. package/dist/types/src/internal/Format/select.d.ts +13 -0
  206. package/dist/types/src/internal/Format/select.d.ts.map +1 -0
  207. package/dist/types/src/internal/Format/string.d.ts +42 -0
  208. package/dist/types/src/internal/Format/string.d.ts.map +1 -0
  209. package/dist/types/src/internal/Format/types.d.ts +72 -0
  210. package/dist/types/src/internal/Format/types.d.ts.map +1 -0
  211. package/dist/types/src/internal/JsonSchema/annotations.d.ts +19 -0
  212. package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
  213. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts +2 -0
  214. package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
  215. package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
  216. package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
  217. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts +7 -0
  218. package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
  219. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +351 -0
  220. package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
  221. package/dist/types/src/internal/JsonSchema/json-schema.d.ts +30 -0
  222. package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
  223. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts +2 -0
  224. package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
  225. package/dist/types/src/internal/Obj/clone.d.ts +8 -0
  226. package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
  227. package/dist/types/src/internal/Obj/common.d.ts +18 -0
  228. package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
  229. package/dist/types/src/internal/Obj/create-object.d.ts +39 -0
  230. package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
  231. package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
  232. package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
  233. package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
  234. package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
  235. package/dist/types/src/internal/Obj/ids.d.ts +6 -0
  236. package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
  237. package/dist/types/src/internal/Obj/index.d.ts +11 -0
  238. package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
  239. package/dist/types/src/internal/Obj/inspect.d.ts +2 -0
  240. package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
  241. package/dist/types/src/internal/Obj/json-serializer.d.ts +44 -0
  242. package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
  243. package/dist/types/src/internal/Obj/json-serializer.test.d.ts +2 -0
  244. package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
  245. package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
  246. package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
  247. package/dist/types/src/internal/Obj/schema-validator.test.d.ts +2 -0
  248. package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
  249. package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
  250. package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
  251. package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
  252. package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
  253. package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
  254. package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
  255. package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
  256. package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
  257. package/dist/types/src/internal/Obj/typed-object.test.d.ts +2 -0
  258. package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
  259. package/dist/types/src/internal/Query.d.ts +10 -0
  260. package/dist/types/src/internal/Query.d.ts.map +1 -0
  261. package/dist/types/src/internal/Ref/index.d.ts +3 -0
  262. package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
  263. package/dist/types/src/internal/Ref/ref-array.d.ts +21 -0
  264. package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
  265. package/dist/types/src/internal/Ref/ref.d.ts +231 -0
  266. package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
  267. package/dist/types/src/internal/Ref/ref.test.d.ts +2 -0
  268. package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
  269. package/dist/types/src/internal/Type/compose.d.ts +7 -0
  270. package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
  271. package/dist/types/src/internal/Type/compose.test.d.ts +2 -0
  272. package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
  273. package/dist/types/src/internal/Type/echo-schema.d.ts +181 -0
  274. package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
  275. package/dist/types/src/internal/Type/index.d.ts +4 -0
  276. package/dist/types/src/internal/Type/index.d.ts.map +1 -0
  277. package/dist/types/src/internal/Type/manipulation.d.ts +10 -0
  278. package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
  279. package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
  280. package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
  281. package/dist/types/src/internal/common/api/index.d.ts +11 -0
  282. package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
  283. package/dist/types/src/internal/common/api/meta.d.ts +42 -0
  284. package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
  285. package/dist/types/src/internal/common/index.d.ts +4 -0
  286. package/dist/types/src/internal/common/index.d.ts.map +1 -0
  287. package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
  288. package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
  289. package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -0
  290. package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
  291. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts +5 -0
  292. package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
  293. package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
  294. package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
  295. package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -0
  296. package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
  297. package/dist/types/src/internal/common/proxy/handler.test.d.ts +2 -0
  298. package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
  299. package/dist/types/src/internal/common/proxy/index.d.ts +14 -0
  300. package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
  301. package/dist/types/src/internal/common/proxy/json-serializer.d.ts +6 -0
  302. package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
  303. package/dist/types/src/internal/common/proxy/make-object.d.ts +14 -0
  304. package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
  305. package/dist/types/src/internal/common/proxy/ownership.d.ts +57 -0
  306. package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
  307. package/dist/types/src/internal/common/proxy/proxy-types.d.ts +18 -0
  308. package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
  309. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts +47 -0
  310. package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
  311. package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
  312. package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
  313. package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
  314. package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
  315. package/dist/types/src/internal/common/proxy/schema-validator.d.ts +15 -0
  316. package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
  317. package/dist/types/src/internal/common/proxy/schema.test.d.ts +2 -0
  318. package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
  319. package/dist/types/src/internal/common/proxy/symbols.d.ts +3 -0
  320. package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
  321. package/dist/types/src/internal/common/proxy/typed-handler.d.ts +48 -0
  322. package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
  323. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts +2 -0
  324. package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
  325. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts +2 -0
  326. package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
  327. package/dist/types/src/internal/common/types/base.d.ts +27 -0
  328. package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
  329. package/dist/types/src/internal/common/types/entity.d.ts +37 -0
  330. package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
  331. package/dist/types/src/internal/common/types/index.d.ts +7 -0
  332. package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
  333. package/dist/types/src/internal/common/types/meta.d.ts +33 -0
  334. package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
  335. package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
  336. package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
  337. package/dist/types/src/internal/common/types/typename.d.ts +21 -0
  338. package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
  339. package/dist/types/src/internal/common/types/version.d.ts +15 -0
  340. package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
  341. package/dist/types/src/internal/index.d.ts +11 -0
  342. package/dist/types/src/internal/index.d.ts.map +1 -0
  343. package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
  344. package/dist/types/src/testing/index.d.ts +3 -1
  345. package/dist/types/src/testing/index.d.ts.map +1 -1
  346. package/dist/types/src/testing/test-data.d.ts +18 -0
  347. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  348. package/dist/types/src/testing/test-schema.d.ts +304 -0
  349. package/dist/types/src/testing/test-schema.d.ts.map +1 -0
  350. package/dist/types/src/testing/util.d.ts +21 -0
  351. package/dist/types/src/testing/util.d.ts.map +1 -0
  352. package/dist/types/tsconfig.tsbuildinfo +1 -1
  353. package/package.json +117 -53
  354. package/src/Annotation.ts +48 -0
  355. package/src/Collection.ts +37 -0
  356. package/src/Database.ts +330 -0
  357. package/src/Dataset.ts +26 -0
  358. package/src/Entity.test.ts +22 -0
  359. package/src/Entity.ts +236 -0
  360. package/src/Err.ts +40 -0
  361. package/src/Extension.test.ts +235 -0
  362. package/src/Extension.ts +122 -0
  363. package/src/Feed.ts +268 -0
  364. package/src/Filter.test.ts +90 -0
  365. package/src/Filter.ts +424 -0
  366. package/src/Format.ts +9 -0
  367. package/src/Hypergraph.ts +79 -0
  368. package/src/JsonSchema.ts +26 -0
  369. package/src/Key.ts +3 -0
  370. package/src/Obj.test.ts +447 -0
  371. package/src/Obj.ts +647 -78
  372. package/src/Order.ts +46 -0
  373. package/src/Query.test.ts +698 -0
  374. package/src/Query.ts +547 -0
  375. package/src/QueryResult.ts +106 -0
  376. package/src/Ref.ts +78 -9
  377. package/src/Relation.test.ts +88 -0
  378. package/src/Relation.ts +449 -52
  379. package/src/SchemaRegistry.ts +106 -0
  380. package/src/Tag.ts +41 -0
  381. package/src/Type.test.ts +52 -0
  382. package/src/Type.ts +168 -153
  383. package/src/View.ts +107 -0
  384. package/src/hierarchy.test.ts +33 -0
  385. package/src/index.ts +22 -4
  386. package/src/internal/Annotation/annotations.test.ts +146 -0
  387. package/src/internal/Annotation/annotations.ts +579 -0
  388. package/src/internal/Annotation/index.ts +7 -0
  389. package/src/internal/Annotation/sorting.ts +52 -0
  390. package/src/internal/Annotation/util.ts +85 -0
  391. package/src/internal/Entity/api.ts +31 -0
  392. package/src/internal/Entity/entity.ts +128 -0
  393. package/src/internal/Entity/index.ts +11 -0
  394. package/src/internal/Entity/model.ts +109 -0
  395. package/src/internal/Entity/object.ts +58 -0
  396. package/src/internal/Entity/relation.ts +154 -0
  397. package/src/internal/Entity/util.ts +33 -0
  398. package/src/internal/Entity/version.ts +97 -0
  399. package/src/internal/Format/date.test.ts +56 -0
  400. package/src/internal/Format/date.ts +217 -0
  401. package/src/internal/Format/format.test.ts +77 -0
  402. package/src/internal/Format/format.ts +54 -0
  403. package/src/internal/Format/index.ts +12 -0
  404. package/src/internal/Format/number.ts +89 -0
  405. package/src/internal/Format/object.ts +80 -0
  406. package/src/internal/Format/select.ts +18 -0
  407. package/src/internal/Format/string.ts +81 -0
  408. package/src/internal/Format/types.ts +186 -0
  409. package/src/internal/JsonSchema/annotations.ts +50 -0
  410. package/src/internal/JsonSchema/effect-schema.test.ts +143 -0
  411. package/src/internal/JsonSchema/index.ts +8 -0
  412. package/src/internal/JsonSchema/json-schema-normalize.ts +111 -0
  413. package/src/internal/JsonSchema/json-schema-type.ts +403 -0
  414. package/src/internal/JsonSchema/json-schema.test.ts +861 -0
  415. package/src/internal/JsonSchema/json-schema.ts +534 -0
  416. package/src/internal/Obj/clone.ts +48 -0
  417. package/src/internal/Obj/common.ts +75 -0
  418. package/src/internal/Obj/create-object.test.ts +116 -0
  419. package/src/internal/Obj/create-object.ts +95 -0
  420. package/src/internal/Obj/deleted.ts +19 -0
  421. package/src/internal/Obj/ids.ts +12 -0
  422. package/src/internal/Obj/index.ts +14 -0
  423. package/src/internal/Obj/inspect.ts +46 -0
  424. package/src/internal/Obj/json-serializer.test.ts +121 -0
  425. package/src/internal/Obj/json-serializer.ts +215 -0
  426. package/src/internal/Obj/schema-validator.test.ts +182 -0
  427. package/src/internal/Obj/schema-validator.ts +6 -0
  428. package/src/internal/Obj/set-value.test.ts +281 -0
  429. package/src/internal/Obj/set-value.ts +165 -0
  430. package/src/internal/Obj/snapshot.ts +105 -0
  431. package/src/internal/Obj/typed-object.test.ts +34 -0
  432. package/src/internal/Obj/typed-object.ts +30 -0
  433. package/src/internal/Query.ts +132 -0
  434. package/src/internal/Ref/index.ts +6 -0
  435. package/src/internal/Ref/ref-array.ts +39 -0
  436. package/src/internal/Ref/ref.test.ts +101 -0
  437. package/src/internal/Ref/ref.ts +572 -0
  438. package/src/internal/Type/compose.test.ts +42 -0
  439. package/src/internal/Type/compose.ts +41 -0
  440. package/src/internal/Type/echo-schema.ts +424 -0
  441. package/src/internal/Type/index.ts +7 -0
  442. package/src/internal/Type/manipulation.ts +92 -0
  443. package/src/internal/Type/persistent-schema.ts +33 -0
  444. package/src/internal/common/README.md +102 -0
  445. package/src/internal/common/api/index.ts +15 -0
  446. package/src/internal/common/api/meta.ts +88 -0
  447. package/src/internal/common/index.ts +7 -0
  448. package/src/internal/common/proxy/change-context.ts +138 -0
  449. package/src/internal/common/proxy/change.test.ts +519 -0
  450. package/src/internal/common/proxy/define-hidden-property.ts +14 -0
  451. package/src/internal/common/proxy/errors.ts +42 -0
  452. package/src/internal/common/proxy/event-batch.ts +44 -0
  453. package/src/internal/common/proxy/handler.test.ts +123 -0
  454. package/src/internal/common/proxy/index.ts +17 -0
  455. package/src/internal/common/proxy/json-serializer.ts +90 -0
  456. package/src/internal/common/proxy/make-object.ts +106 -0
  457. package/src/internal/common/proxy/ownership.ts +253 -0
  458. package/src/internal/common/proxy/proxy-types.ts +23 -0
  459. package/src/internal/common/proxy/proxy-utils.ts +150 -0
  460. package/src/internal/common/proxy/reactive-array.ts +71 -0
  461. package/src/internal/common/proxy/reactive.ts +69 -0
  462. package/src/internal/common/proxy/schema-validator.ts +244 -0
  463. package/src/internal/common/proxy/schema.test.ts +145 -0
  464. package/src/internal/common/proxy/symbols.ts +7 -0
  465. package/src/internal/common/proxy/typed-handler.test.ts +314 -0
  466. package/src/internal/common/proxy/typed-handler.ts +449 -0
  467. package/src/internal/common/proxy/typed-object.test.ts +116 -0
  468. package/src/internal/common/types/base.ts +43 -0
  469. package/src/internal/common/types/entity.ts +54 -0
  470. package/src/internal/common/types/index.ts +10 -0
  471. package/src/internal/common/types/meta.ts +68 -0
  472. package/src/internal/common/types/model-symbols.ts +69 -0
  473. package/src/internal/common/types/typename.ts +55 -0
  474. package/src/internal/common/types/version.ts +19 -0
  475. package/src/internal/index.ts +17 -0
  476. package/src/testing/api.test.ts +126 -0
  477. package/src/testing/index.ts +3 -1
  478. package/src/testing/test-data.ts +130 -0
  479. package/src/testing/test-schema.ts +240 -0
  480. package/src/testing/util.ts +85 -0
  481. package/dist/lib/browser/chunk-EUA7CM23.mjs +0 -619
  482. package/dist/lib/browser/chunk-EUA7CM23.mjs.map +0 -7
  483. package/dist/lib/browser/index.mjs +0 -22
  484. package/dist/lib/browser/meta.json +0 -1
  485. package/dist/lib/browser/testing/index.mjs +0 -70
  486. package/dist/lib/browser/testing/index.mjs.map +0 -7
  487. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs +0 -619
  488. package/dist/lib/node-esm/chunk-IV6BWGHK.mjs.map +0 -7
  489. package/dist/lib/node-esm/index.mjs +0 -22
  490. package/dist/lib/node-esm/meta.json +0 -1
  491. package/dist/lib/node-esm/testing/index.mjs +0 -70
  492. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  493. package/dist/types/src/experimental/database.d.ts +0 -8
  494. package/dist/types/src/experimental/database.d.ts.map +0 -1
  495. package/dist/types/src/experimental/index.d.ts +0 -1
  496. package/dist/types/src/experimental/index.d.ts.map +0 -1
  497. package/dist/types/src/experimental/queue.d.ts +0 -8
  498. package/dist/types/src/experimental/queue.d.ts.map +0 -1
  499. package/dist/types/src/experimental/space.d.ts +0 -8
  500. package/dist/types/src/experimental/space.d.ts.map +0 -1
  501. package/dist/types/src/query/dsl.d.ts +0 -218
  502. package/dist/types/src/query/dsl.d.ts.map +0 -1
  503. package/dist/types/src/query/dsl.test.d.ts +0 -2
  504. package/dist/types/src/query/dsl.test.d.ts.map +0 -1
  505. package/dist/types/src/query/index.d.ts +0 -2
  506. package/dist/types/src/query/index.d.ts.map +0 -1
  507. package/dist/types/src/testing/types.d.ts +0 -113
  508. package/dist/types/src/testing/types.d.ts.map +0 -1
  509. package/src/experimental/database.ts +0 -11
  510. package/src/experimental/index.ts +0 -7
  511. package/src/experimental/queue.ts +0 -11
  512. package/src/experimental/space.ts +0 -11
  513. package/src/query/dsl.test.ts +0 -323
  514. package/src/query/dsl.ts +0 -646
  515. package/src/query/index.ts +0 -5
  516. package/src/test/api.test.ts +0 -173
  517. package/src/testing/types.ts +0 -91
  518. /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
  519. /package/dist/lib/{node-esm/index.mjs.map → neutral/Database.mjs.map} +0 -0
  520. /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
@@ -0,0 +1,402 @@
1
+ import {
2
+ createAnnotationHelper
3
+ } from "./chunk-TBKX6JQO.mjs";
4
+
5
+ // src/internal/Format/types.ts
6
+ import * as Function from "effect/Function";
7
+ import * as Option from "effect/Option";
8
+ import * as SchemaAST from "effect/SchemaAST";
9
+ var TypeEnum = /* @__PURE__ */ (function(TypeEnum2) {
10
+ TypeEnum2["Array"] = "array";
11
+ TypeEnum2["Object"] = "object";
12
+ TypeEnum2["String"] = "string";
13
+ TypeEnum2["Number"] = "number";
14
+ TypeEnum2["Boolean"] = "boolean";
15
+ TypeEnum2["Ref"] = "ref";
16
+ return TypeEnum2;
17
+ })({});
18
+ var getTypeEnum = (property) => {
19
+ switch (property.type) {
20
+ case "array":
21
+ return "array";
22
+ case "object":
23
+ return "object";
24
+ case "string":
25
+ return "string";
26
+ case "number":
27
+ return "number";
28
+ case "boolean":
29
+ return "boolean";
30
+ default:
31
+ return void 0;
32
+ }
33
+ };
34
+ var FormatAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Format");
35
+ var FormatAnnotation = createAnnotationHelper(FormatAnnotationId);
36
+ var getFormatAnnotation = (node) => Function.pipe(SchemaAST.getAnnotation(FormatAnnotationId)(node), Option.getOrUndefined);
37
+ var TypeFormat = /* @__PURE__ */ (function(TypeFormat2) {
38
+ TypeFormat2["None"] = "none";
39
+ TypeFormat2["String"] = "string";
40
+ TypeFormat2["Number"] = "number";
41
+ TypeFormat2["Boolean"] = "boolean";
42
+ TypeFormat2["Ref"] = "ref";
43
+ TypeFormat2["DID"] = "did";
44
+ TypeFormat2["DXN"] = "dxn";
45
+ TypeFormat2["Email"] = "email";
46
+ TypeFormat2["Formula"] = "formula";
47
+ TypeFormat2["Hostname"] = "hostname";
48
+ TypeFormat2["JSON"] = "json";
49
+ TypeFormat2["Markdown"] = "markdown";
50
+ TypeFormat2["Regex"] = "regex";
51
+ TypeFormat2["SingleSelect"] = "single-select";
52
+ TypeFormat2["Text"] = "text";
53
+ TypeFormat2["MultiSelect"] = "multi-select";
54
+ TypeFormat2["URL"] = "url";
55
+ TypeFormat2["UUID"] = "uuid";
56
+ TypeFormat2["Currency"] = "currency";
57
+ TypeFormat2["Integer"] = "integer";
58
+ TypeFormat2["Percent"] = "percent";
59
+ TypeFormat2["Timestamp"] = "timestamp";
60
+ TypeFormat2["DateTime"] = "date-time";
61
+ TypeFormat2["Date"] = "date";
62
+ TypeFormat2["Time"] = "time";
63
+ TypeFormat2["Duration"] = "duration";
64
+ TypeFormat2["GeoPoint"] = "lnglat";
65
+ return TypeFormat2;
66
+ })({});
67
+ var FormatEnums = Object.values(TypeFormat).sort();
68
+ var PropertyKind = {
69
+ type: TypeEnum,
70
+ format: TypeFormat
71
+ };
72
+ var typeToFormat = {
73
+ ["string"]: "string",
74
+ ["number"]: "number",
75
+ ["boolean"]: "boolean"
76
+ };
77
+ var formatToType = {
78
+ ["none"]: "string",
79
+ ["string"]: "string",
80
+ ["number"]: "number",
81
+ ["boolean"]: "boolean",
82
+ ["ref"]: "ref",
83
+ ["did"]: "string",
84
+ ["dxn"]: "string",
85
+ ["email"]: "string",
86
+ ["formula"]: "string",
87
+ ["hostname"]: "string",
88
+ ["json"]: "string",
89
+ ["markdown"]: "string",
90
+ ["regex"]: "string",
91
+ ["url"]: "string",
92
+ ["uuid"]: "string",
93
+ ["single-select"]: "string",
94
+ ["text"]: "string",
95
+ ["multi-select"]: "object",
96
+ ["date"]: "string",
97
+ ["date-time"]: "string",
98
+ ["duration"]: "string",
99
+ ["time"]: "string",
100
+ ["currency"]: "number",
101
+ ["integer"]: "number",
102
+ ["percent"]: "number",
103
+ ["timestamp"]: "number",
104
+ ["lnglat"]: "array"
105
+ };
106
+ var OptionsAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Options");
107
+ var OptionsAnnotation = createAnnotationHelper(OptionsAnnotationId);
108
+ var getOptionsAnnotation = (node) => Function.pipe(SchemaAST.getAnnotation(OptionsAnnotationId)(node), Option.getOrUndefined);
109
+
110
+ // src/internal/Format/number.ts
111
+ import * as Schema from "effect/Schema";
112
+ var encodeMultipleOf = (divisor) => 1 / Math.pow(10, divisor);
113
+ var encodeMultiple = (divisor) => (self) => divisor === void 0 || divisor === 0 ? self : self.pipe(Schema.multipleOf(encodeMultipleOf(divisor)));
114
+ var DecimalPrecision = Schema.transform(Schema.Number, Schema.Number, {
115
+ strict: true,
116
+ encode: (value) => encodeMultipleOf(value),
117
+ decode: (value) => Math.log10(1 / value)
118
+ }).annotations({
119
+ title: "Number of digits"
120
+ });
121
+ var CurrencyAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/Currency");
122
+ var Currency = ({ decimals, code } = {
123
+ decimals: 2
124
+ }) => Schema.Number.pipe(encodeMultiple(decimals), FormatAnnotation.set(TypeFormat.Currency), Schema.annotations({
125
+ title: "Currency",
126
+ description: "Currency value",
127
+ ...code ? {
128
+ [CurrencyAnnotationId]: code.toUpperCase()
129
+ } : {}
130
+ }));
131
+ var Integer = () => Schema.Number.pipe(Schema.int(), FormatAnnotation.set(TypeFormat.Integer), Schema.annotations({
132
+ title: "Integer",
133
+ description: "Integer value"
134
+ }));
135
+ var Percent = ({ decimals } = {
136
+ decimals: 2
137
+ }) => Schema.Number.pipe(encodeMultiple(decimals), FormatAnnotation.set(TypeFormat.Percent), Schema.annotations({
138
+ title: "Percent",
139
+ description: "Percentage value"
140
+ }));
141
+ var Timestamp = Schema.Number.pipe(FormatAnnotation.set(TypeFormat.Timestamp), Schema.annotations({
142
+ title: "Timestamp",
143
+ description: "Unix timestamp"
144
+ }));
145
+
146
+ // src/internal/Format/object.ts
147
+ import * as Schema2 from "effect/Schema";
148
+ import { clamp as clamp2 } from "@dxos/util";
149
+ var GeoPoint = Schema2.Tuple(Schema2.Number.pipe(Schema2.annotations({
150
+ title: "Longitude"
151
+ }), Schema2.clamp(-180, 180), Schema2.multipleOf(1e-6)), Schema2.Number.pipe(Schema2.annotations({
152
+ title: "Latitude"
153
+ }), Schema2.clamp(-90, 90), Schema2.multipleOf(1e-6)), Schema2.optionalElement(Schema2.Number).annotations({
154
+ title: "Height ASL (m)"
155
+ })).pipe(FormatAnnotation.set(TypeFormat.GeoPoint), Schema2.annotations({
156
+ title: "GeoPoint",
157
+ description: "GeoJSON Position"
158
+ }));
159
+ (function(GeoLocation2) {
160
+ GeoLocation2.toGeoPoint = ({ longitude, latitude, height }) => {
161
+ const clampedLongitude = clamp2(longitude, -180, 180);
162
+ const clampedLatitude = clamp2(latitude, -90, 90);
163
+ return height !== void 0 ? [
164
+ clampedLongitude,
165
+ clampedLatitude,
166
+ height
167
+ ] : [
168
+ clampedLongitude,
169
+ clampedLatitude
170
+ ];
171
+ };
172
+ GeoLocation2.fromGeoPoint = (geoPoint) => {
173
+ if (!geoPoint) {
174
+ return {
175
+ longitude: 0,
176
+ latitude: 0
177
+ };
178
+ }
179
+ const result = {
180
+ longitude: geoPoint[0],
181
+ latitude: geoPoint[1]
182
+ };
183
+ if (geoPoint[2] !== void 0) {
184
+ result.height = geoPoint[2];
185
+ }
186
+ return result;
187
+ };
188
+ })(GeoLocation || (GeoLocation = {}));
189
+ var GeoLocation;
190
+
191
+ // src/internal/Format/string.ts
192
+ import * as Schema3 from "effect/Schema";
193
+ import * as SchemaAST2 from "effect/SchemaAST";
194
+ var Email = Schema3.String.pipe(Schema3.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/), FormatAnnotation.set(TypeFormat.Email), Schema3.annotations({
195
+ title: "Email",
196
+ description: "Email address"
197
+ }));
198
+ var Formula = Schema3.String.pipe(FormatAnnotation.set(TypeFormat.Formula));
199
+ var Hostname = Schema3.String.pipe(FormatAnnotation.set(TypeFormat.Hostname));
200
+ var JSON = Schema3.String.pipe(FormatAnnotation.set(TypeFormat.JSON));
201
+ var Markdown = Schema3.String.pipe(FormatAnnotation.set(TypeFormat.Markdown));
202
+ var Regex = Schema3.String.pipe(FormatAnnotation.set(TypeFormat.Regex));
203
+ var Text = Schema3.String.pipe(FormatAnnotation.set(TypeFormat.Text));
204
+ var URL = Schema3.String.pipe(Schema3.pattern(/^(\w+?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/i), FormatAnnotation.set(TypeFormat.URL), Schema3.annotations({
205
+ title: "URL",
206
+ description: "URL"
207
+ }));
208
+ var UUID2 = Schema3.UUID.pipe(FormatAnnotation.set(TypeFormat.UUID), Schema3.annotations({
209
+ [SchemaAST2.ExamplesAnnotationId]: [
210
+ "3e4666bf-d5e5-4aa7-b8ce-cefe41c7568a"
211
+ ]
212
+ }));
213
+
214
+ // src/internal/Format/format.ts
215
+ import * as Schema5 from "effect/Schema";
216
+ import * as Keys from "@dxos/keys";
217
+
218
+ // src/internal/Format/date.ts
219
+ import * as Schema4 from "effect/Schema";
220
+ import * as SchemaAST3 from "effect/SchemaAST";
221
+ var SimpleDate = Schema4.Struct({
222
+ year: Schema4.Number.pipe(Schema4.between(1900, 9999)),
223
+ month: Schema4.Number.pipe(Schema4.between(1, 12)),
224
+ day: Schema4.Number.pipe(Schema4.between(1, 31))
225
+ });
226
+ var SimpleTime = Schema4.Struct({
227
+ hours: Schema4.Number.pipe(Schema4.between(0, 23)),
228
+ minutes: Schema4.Number.pipe(Schema4.between(0, 59)),
229
+ seconds: Schema4.Number.pipe(Schema4.between(0, 59))
230
+ });
231
+ var SimpleDateTime = Schema4.extend(SimpleDate, SimpleTime);
232
+ var DateOnly = (
233
+ /* Schema.transformOrFail(Schema.String, SimpleDate, {
234
+ strict: true,
235
+ decode: (str, _, ast) => {
236
+ if (!isValidDateFormat(str)) {
237
+ return ParseResult.fail(new ParseResult.Type(ast, str, 'Expected YYYY-MM-DD format'));
238
+ }
239
+ if (!isValidDate(str)) {
240
+ return ParseResult.fail(new ParseResult.Type(ast, str, 'Invalid date'));
241
+ }
242
+
243
+ const [year, month, day] = str.split('-').map(Number);
244
+ return ParseResult.succeed({ year, month, day });
245
+ },
246
+ encode: (date) => {
247
+ return ParseResult.succeed(
248
+ [
249
+ date.year.toString().padStart(4, '0'),
250
+ date.month.toString().padStart(2, '0'),
251
+ date.day.toString().padStart(2, '0'),
252
+ ].join('-'),
253
+ );
254
+ },
255
+ }) */
256
+ Schema4.String.pipe(FormatAnnotation.set(TypeFormat.Date), Schema4.annotations({
257
+ title: "Date",
258
+ description: "Valid date in ISO format"
259
+ }))
260
+ );
261
+ var TimeOnly = (
262
+ /* Schema.transformOrFail(Schema.String, SimpleTime, {
263
+ strict: true,
264
+ decode: (str, _, ast) => {
265
+ if (!isValidTimeFormat(str)) {
266
+ return ParseResult.fail(new ParseResult.Type(ast, str, 'Expected HH:mm:ss format'));
267
+ }
268
+
269
+ const [hours, minutes, seconds] = str.split(':').map(Number);
270
+ return ParseResult.succeed({ hours, minutes, seconds });
271
+ },
272
+ encode: (time) => {
273
+ return ParseResult.succeed(
274
+ [
275
+ time.hours.toString().padStart(2, '0'),
276
+ time.minutes.toString().padStart(2, '0'),
277
+ time.seconds.toString().padStart(2, '0'),
278
+ ].join(':'),
279
+ );
280
+ },
281
+ }) */
282
+ Schema4.String.pipe(FormatAnnotation.set(TypeFormat.Time), Schema4.annotations({
283
+ title: "Time",
284
+ description: "Valid time in ISO format"
285
+ }))
286
+ );
287
+ var DateTime = (
288
+ /* Schema.transformOrFail(Schema.String, SimpleDateTime, {
289
+ strict: false,
290
+ decode: (str, _, ast) => {
291
+ const [date, time] = str.split('T');
292
+ if (!isValidDateFormat(date)) {
293
+ return ParseResult.fail(new ParseResult.Type(ast, date, 'Expected YYYY-MM-DD format'));
294
+ }
295
+ if (!isValidDate(date)) {
296
+ return ParseResult.fail(new ParseResult.Type(ast, date, 'Invalid date'));
297
+ }
298
+ if (!isValidTimeFormat(time)) {
299
+ return ParseResult.fail(new ParseResult.Type(ast, str, 'Expected HH:mm:ss format'));
300
+ }
301
+
302
+ const [year, month, day] = date.split('-').map(Number);
303
+ const [hours, minutes, seconds] = time.split(':').map(Number);
304
+ return ParseResult.succeed({ year, month, day, hours, minutes, seconds });
305
+ },
306
+ encode: (datetime) => {
307
+ return ParseResult.succeed(
308
+ [
309
+ [
310
+ datetime.year.toString().padStart(4, '0'),
311
+ datetime.month.toString().padStart(2, '0'),
312
+ datetime.day.toString().padStart(2, '0'),
313
+ ].join('-'),
314
+ [
315
+ datetime.hours.toString().padStart(2, '0'),
316
+ datetime.minutes.toString().padStart(2, '0'),
317
+ datetime.seconds.toString().padStart(2, '0'),
318
+ ].join(':'),
319
+ ].join('T'),
320
+ );
321
+ },
322
+ }) */
323
+ Schema4.String.pipe(FormatAnnotation.set(TypeFormat.DateTime), Schema4.annotations({
324
+ title: "DateTime",
325
+ description: "Valid date and time in ISO format"
326
+ }))
327
+ );
328
+ var Duration = Schema4.String.pipe(FormatAnnotation.set(TypeFormat.Duration), Schema4.annotations({
329
+ title: "Duration",
330
+ description: "Duration in ISO 8601 format",
331
+ [SchemaAST3.ExamplesAnnotationId]: [
332
+ "1h",
333
+ "3D"
334
+ ]
335
+ }));
336
+
337
+ // src/internal/Format/format.ts
338
+ (function(Format2) {
339
+ Format2.TypeFormat = TypeFormat;
340
+ Format2.DXN = Keys.DXN.Schema;
341
+ Format2.Email = Email;
342
+ Format2.Formula = Formula;
343
+ Format2.Hostname = Hostname;
344
+ Format2.JSON = JSON;
345
+ Format2.Markdown = Markdown;
346
+ Format2.Regex = Regex;
347
+ Format2.URL = URL;
348
+ Format2.UUID = Schema5.UUID;
349
+ Format2.Currency = Currency;
350
+ Format2.Integer = Integer;
351
+ Format2.Percent = Percent;
352
+ Format2.Timestamp = Timestamp;
353
+ Format2.Date = DateOnly;
354
+ Format2.DateTime = DateTime;
355
+ Format2.Duration = Duration;
356
+ Format2.Time = TimeOnly;
357
+ Format2.GeoPoint = GeoPoint;
358
+ })(Format || (Format = {}));
359
+ var Format;
360
+
361
+ // src/internal/Format/select.ts
362
+ import * as Schema6 from "effect/Schema";
363
+ var SelectOption = Schema6.Struct({
364
+ /** Stable identifier for the option. */
365
+ id: Schema6.NonEmptyString,
366
+ title: Schema6.String,
367
+ /** Color palette used for visual styling. */
368
+ color: Schema6.String
369
+ });
370
+
371
+ export {
372
+ TypeEnum,
373
+ getTypeEnum,
374
+ FormatAnnotationId,
375
+ FormatAnnotation,
376
+ getFormatAnnotation,
377
+ TypeFormat,
378
+ FormatEnums,
379
+ PropertyKind,
380
+ typeToFormat,
381
+ formatToType,
382
+ OptionsAnnotationId,
383
+ OptionsAnnotation,
384
+ getOptionsAnnotation,
385
+ DecimalPrecision,
386
+ CurrencyAnnotationId,
387
+ Currency,
388
+ GeoPoint,
389
+ GeoLocation,
390
+ Email,
391
+ Formula,
392
+ Hostname,
393
+ JSON,
394
+ Markdown,
395
+ Regex,
396
+ Text,
397
+ URL,
398
+ UUID2 as UUID,
399
+ Format,
400
+ SelectOption
401
+ };
402
+ //# sourceMappingURL=chunk-DQYLD2RB.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/Format/types.ts", "../../../src/internal/Format/number.ts", "../../../src/internal/Format/object.ts", "../../../src/internal/Format/string.ts", "../../../src/internal/Format/format.ts", "../../../src/internal/Format/date.ts", "../../../src/internal/Format/select.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport type * as JSONSchema from 'effect/JSONSchema';\nimport * as Option from 'effect/Option';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { createAnnotationHelper } from '../Annotation';\nimport { type JsonSchemaType } from '../JsonSchema';\n\n// TODO(burdon): Rename PropertyType.\nexport type ScalarType =\n | JSONSchema.JsonSchema7Object\n | JSONSchema.JsonSchema7String\n | JSONSchema.JsonSchema7Number\n | JSONSchema.JsonSchema7Boolean\n | JSONSchema.JsonSchema7Ref;\n\n// TODO(burdon): Rename ValueType and change to disciminated union.\n// export type ValueType = 'array' | 'object' | 'string' | 'number' | 'boolean' | 'ref';\nexport enum TypeEnum {\n Array = 'array', // TODO(burdon): Remove?\n Object = 'object',\n String = 'string',\n Number = 'number',\n Boolean = 'boolean',\n Ref = 'ref',\n}\n\n// TODO(burdon): Ref?\nexport const getTypeEnum = (property: JsonSchemaType): TypeEnum | undefined => {\n switch (property.type) {\n case 'array':\n return TypeEnum.Array;\n case 'object':\n return TypeEnum.Object;\n case 'string':\n return TypeEnum.String;\n case 'number':\n return TypeEnum.Number;\n case 'boolean':\n return TypeEnum.Boolean;\n default:\n return undefined;\n }\n};\n\n/**\n * https://json-schema.org/understanding-json-schema/reference/schema\n * https://json-schema.org/understanding-json-schema/reference/string#built-in-formats\n */\nexport const FormatAnnotationId = Symbol.for('@dxos/schema/annotation/Format');\n\nexport const FormatAnnotation = createAnnotationHelper<TypeFormat>(FormatAnnotationId);\n\n/** @deprecated */\nexport const getFormatAnnotation = (node: SchemaAST.AST): TypeFormat | undefined =>\n Function.pipe(SchemaAST.getAnnotation<TypeFormat>(FormatAnnotationId)(node), Option.getOrUndefined);\n\n// TODO(burdon): Rename Format; Change to discriminated union?\nexport enum TypeFormat {\n None = 'none',\n\n //\n // Scalar\n //\n\n String = 'string',\n Number = 'number',\n Boolean = 'boolean',\n Ref = 'ref',\n\n //\n // { type: 'string' }\n //\n\n DID = 'did', // Users, etc.\n DXN = 'dxn',\n Email = 'email',\n Formula = 'formula', // Spreadsheet formula.\n Hostname = 'hostname',\n JSON = 'json',\n Markdown = 'markdown',\n Regex = 'regex',\n SingleSelect = 'single-select',\n Text = 'text',\n MultiSelect = 'multi-select',\n URL = 'url',\n UUID = 'uuid',\n\n //\n // { type: 'number' }\n //\n\n Currency = 'currency',\n Integer = 'integer',\n Percent = 'percent',\n Timestamp = 'timestamp',\n\n //\n // { type: 'date' }\n //\n\n DateTime = 'date-time',\n Date = 'date',\n Time = 'time',\n Duration = 'duration',\n\n //\n // { type: 'object' }\n //\n\n GeoPoint = 'lnglat',\n}\n\nexport const FormatEnums = Object.values(TypeFormat).sort();\n\nexport const PropertyKind = {\n type: TypeEnum,\n format: TypeFormat,\n};\n\n/**\n * Default formats\n */\nexport const typeToFormat: Partial<Record<TypeEnum, TypeFormat>> = {\n [TypeEnum.String]: TypeFormat.String,\n [TypeEnum.Number]: TypeFormat.Number,\n [TypeEnum.Boolean]: TypeFormat.Boolean,\n};\n\n/**\n * Map of format to type.\n */\nexport const formatToType: Record<TypeFormat, TypeEnum> = {\n [TypeFormat.None]: TypeEnum.String,\n [TypeFormat.String]: TypeEnum.String,\n [TypeFormat.Number]: TypeEnum.Number,\n [TypeFormat.Boolean]: TypeEnum.Boolean,\n [TypeFormat.Ref]: TypeEnum.Ref,\n\n // Strings\n [TypeFormat.DID]: TypeEnum.String,\n [TypeFormat.DXN]: TypeEnum.String,\n [TypeFormat.Email]: TypeEnum.String,\n [TypeFormat.Formula]: TypeEnum.String,\n [TypeFormat.Hostname]: TypeEnum.String,\n [TypeFormat.JSON]: TypeEnum.String,\n [TypeFormat.Markdown]: TypeEnum.String,\n [TypeFormat.Regex]: TypeEnum.String,\n [TypeFormat.URL]: TypeEnum.String,\n [TypeFormat.UUID]: TypeEnum.String,\n [TypeFormat.SingleSelect]: TypeEnum.String,\n [TypeFormat.Text]: TypeEnum.String,\n [TypeFormat.MultiSelect]: TypeEnum.Object,\n\n // Dates\n [TypeFormat.Date]: TypeEnum.String,\n [TypeFormat.DateTime]: TypeEnum.String,\n [TypeFormat.Duration]: TypeEnum.String,\n [TypeFormat.Time]: TypeEnum.String,\n\n // Numbers\n [TypeFormat.Currency]: TypeEnum.Number,\n [TypeFormat.Integer]: TypeEnum.Number,\n [TypeFormat.Percent]: TypeEnum.Number,\n [TypeFormat.Timestamp]: TypeEnum.Number,\n\n // Objects\n [TypeFormat.GeoPoint]: TypeEnum.Array,\n};\n\n/**\n * Allowed value options for select.\n */\nexport const OptionsAnnotationId = Symbol.for('@dxos/schema/annotation/Options');\n\n// TODO(wittjosiah): Reconcile with `SelectOption`.\nexport type Options = string | number;\nexport const OptionsAnnotation = createAnnotationHelper<Options[]>(OptionsAnnotationId);\n\n/** @deprecated */\nexport const getOptionsAnnotation = (node: SchemaAST.AST): Options[] | undefined =>\n Function.pipe(SchemaAST.getAnnotation<Options[]>(OptionsAnnotationId)(node), Option.getOrUndefined);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { FormatAnnotation, TypeFormat } from './types';\n\nconst encodeMultipleOf = (divisor: number) => 1 / Math.pow(10, divisor);\n\nconst encodeMultiple =\n <A extends number>(divisor?: number) =>\n <I, R>(self: Schema.Schema<A, I, R>) =>\n divisor === undefined || divisor === 0 ? self : self.pipe(Schema.multipleOf(encodeMultipleOf(divisor)));\n\n/**\n * Convert number of digits to multipleOf annotation.\n */\nexport const DecimalPrecision = Schema.transform(Schema.Number, Schema.Number, {\n strict: true,\n encode: (value) => encodeMultipleOf(value),\n decode: (value) => Math.log10(1 / value),\n}).annotations({\n title: 'Number of digits',\n});\n\nexport const CurrencyAnnotationId = Symbol.for('@dxos/schema/annotation/Currency');\n\nexport type CurrencyAnnotation = {\n decimals?: number;\n code?: string;\n};\n\n/**\n * ISO 4217 currency code.\n */\nexport const Currency = ({ decimals, code }: CurrencyAnnotation = { decimals: 2 }) =>\n Schema.Number.pipe(\n encodeMultiple(decimals),\n FormatAnnotation.set(TypeFormat.Currency),\n Schema.annotations({\n title: 'Currency',\n description: 'Currency value',\n ...(code ? { [CurrencyAnnotationId]: code.toUpperCase() } : {}),\n }),\n );\n\nexport type PercentAnnotation = {\n decimals?: number;\n};\n\n/**\n * Integer.\n */\nexport const Integer = () =>\n Schema.Number.pipe(\n Schema.int(),\n FormatAnnotation.set(TypeFormat.Integer),\n Schema.annotations({\n title: 'Integer',\n description: 'Integer value',\n }),\n );\n\n/**\n * Percent.\n */\n// TODO(burdon): Define min/max (e.g., 0, 1).\nexport const Percent = ({ decimals }: PercentAnnotation = { decimals: 2 }) =>\n Schema.Number.pipe(\n encodeMultiple(decimals),\n FormatAnnotation.set(TypeFormat.Percent),\n Schema.annotations({\n title: 'Percent',\n description: 'Percentage value',\n }),\n );\n\n/**\n * Unix timestamp.\n * https://en.wikipedia.org/wiki/Unix_time\n */\nexport const Timestamp = Schema.Number.pipe(\n FormatAnnotation.set(TypeFormat.Timestamp),\n Schema.annotations({\n title: 'Timestamp',\n description: 'Unix timestamp',\n }),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { clamp } from '@dxos/util';\n\nimport { FormatAnnotation, TypeFormat } from './types';\n\n/**\n * GeoJSON Format\n * https://datatracker.ietf.org/doc/html/rfc7946\n * https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.1\n * https://en.wikipedia.org/wiki/Geographic_coordinate_system\n * https://geojson.org\n * {\n * \"type\": \"Point\",\n * \"coordinates\": [0, 51.47] // [longitude, latitude]\n * }\n * Note: optional third element for altitude.\n */\nexport const GeoPoint = Schema.Tuple(\n Schema.Number.pipe(Schema.annotations({ title: 'Longitude' }), Schema.clamp(-180, 180), Schema.multipleOf(0.000001)),\n Schema.Number.pipe(Schema.annotations({ title: 'Latitude' }), Schema.clamp(-90, 90), Schema.multipleOf(0.000001)),\n Schema.optionalElement(Schema.Number).annotations({\n title: 'Height ASL (m)',\n }),\n).pipe(\n FormatAnnotation.set(TypeFormat.GeoPoint),\n Schema.annotations({\n title: 'GeoPoint',\n description: 'GeoJSON Position',\n }),\n);\n\nexport type GeoPoint = Schema.Schema.Type<typeof GeoPoint>;\n\nexport type GeoLocation = {\n longitude: number;\n latitude: number;\n height?: number;\n};\n\n/**\n * Geolocation utilities for working with GeoPoint format.\n */\nexport namespace GeoLocation {\n /**\n * Convert latitude and longitude to GeoPoint (GeoJSON format [longitude, latitude, height?]).\n * Clamps values to valid ranges: latitude [-90, 90], longitude [-180, 180].\n */\n export const toGeoPoint = ({ longitude, latitude, height }: GeoLocation): GeoPoint => {\n // TODO(ZaymonFC): Use schema validation instead of doing this manually.\n const clampedLongitude = clamp(longitude, -180, 180);\n const clampedLatitude = clamp(latitude, -90, 90);\n return height !== undefined ? [clampedLongitude, clampedLatitude, height] : [clampedLongitude, clampedLatitude];\n };\n\n /**\n * Extract latitude and longitude from GeoPoint (GeoJSON format [longitude, latitude, height?]).\n */\n export const fromGeoPoint = (geoPoint: GeoPoint | undefined): GeoLocation => {\n if (!geoPoint) {\n return { longitude: 0, latitude: 0 };\n }\n\n const result: GeoLocation = {\n longitude: geoPoint[0],\n latitude: geoPoint[1],\n };\n\n // Add height if defined.\n if (geoPoint[2] !== undefined) {\n result.height = geoPoint[2];\n }\n\n return result;\n };\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { FormatAnnotation, TypeFormat } from './types';\n\n/**\n * Email address (RFC 5321)\n * https://datatracker.ietf.org/doc/html/rfc5321#section-4.1.2\n */\nexport const Email = Schema.String.pipe(\n Schema.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/),\n FormatAnnotation.set(TypeFormat.Email),\n Schema.annotations({\n title: 'Email',\n description: 'Email address',\n }),\n);\n\n/**\n *\n */\n// TODO(burdon): Implement.\nexport const Formula = Schema.String.pipe(FormatAnnotation.set(TypeFormat.Formula));\n\n/**\n *\n */\n// TODO(burdon): Implement.\nexport const Hostname = Schema.String.pipe(FormatAnnotation.set(TypeFormat.Hostname));\n\n/**\n *\n */\n// TODO(burdon): Implement.\nexport const JSON = Schema.String.pipe(FormatAnnotation.set(TypeFormat.JSON));\n\n/**\n *\n */\n// TODO(burdon): Implement.\nexport const Markdown = Schema.String.pipe(FormatAnnotation.set(TypeFormat.Markdown));\n\n/**\n * Regex\n * https://json-schema.org/understanding-json-schema/reference/regular_expressions\n * https://ecma-international.org/publications-and-standards/standards/ecma-262\n */\n// TODO(burdon): Implement.\nexport const Regex = Schema.String.pipe(FormatAnnotation.set(TypeFormat.Regex));\n\n/**\n * Multi-line text.\n */\nexport const Text = Schema.String.pipe(FormatAnnotation.set(TypeFormat.Text));\n\n/**\n * https://datatracker.ietf.org/doc/html/rfc3986#section-1.1.3\n */\nexport const URL = Schema.String.pipe(\n Schema.pattern(/^(\\w+?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})([/\\w .-]*)*\\/?$/i),\n FormatAnnotation.set(TypeFormat.URL),\n Schema.annotations({\n title: 'URL',\n description: 'URL',\n }),\n);\n\n/**\n * UUID (RFC 4122)\n * https://datatracker.ietf.org/doc/html/rfc4122\n */\nexport const UUID = Schema.UUID.pipe(\n FormatAnnotation.set(TypeFormat.UUID),\n Schema.annotations({\n [SchemaAST.ExamplesAnnotationId]: ['3e4666bf-d5e5-4aa7-b8ce-cefe41c7568a'],\n }),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as Keys from '@dxos/keys';\n\nimport * as DateUtil from './date';\nimport * as NumberUtil from './number';\nimport * as ObjectUtil from './object';\nimport * as StringUtil from './string';\nimport { TypeFormat as TypeFormat$ } from './types';\n\n// TODO(burdon): Media encoding.\n// - https://json-schema.org/understanding-json-schema/reference/non_json_data\n\n/**\n * Formats.\n * https://json-schema.org/understanding-json-schema/reference/string#built-in-formats\n * NOTE: A JSON Schema validator will ignore any format type that it does not understand.\n */\n// TODO(burdon): Add fields for `examples`, `message`, etc.\nexport namespace Format {\n export import TypeFormat = TypeFormat$;\n\n // String\n export const DXN = Keys.DXN.Schema;\n export const Email = StringUtil.Email;\n export const Formula = StringUtil.Formula;\n export const Hostname = StringUtil.Hostname;\n export const JSON = StringUtil.JSON;\n export const Markdown = StringUtil.Markdown;\n export const Regex = StringUtil.Regex;\n export const URL = StringUtil.URL;\n export const UUID = Schema.UUID;\n\n // Numbers\n // TODO(burdon): BigInt.\n export const Currency = NumberUtil.Currency;\n export const Integer = NumberUtil.Integer;\n export const Percent = NumberUtil.Percent;\n export const Timestamp = NumberUtil.Timestamp;\n\n // Dates and times\n export const Date = DateUtil.DateOnly;\n export const DateTime = DateUtil.DateTime;\n export const Duration = DateUtil.Duration;\n export const Time = DateUtil.TimeOnly;\n\n // Objects\n export const GeoPoint = ObjectUtil.GeoPoint;\n export type GeoPoint = ObjectUtil.GeoPoint; // TODO(burdon): Export types.\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { FormatAnnotation, TypeFormat } from './types';\n\n/**\n * Datetime values should be stored as ISO strings or unix numbers (ms) in UTC.\n *\n * NOTE: HyperFormula uses Excel's time format (null date 1900/01/01)\n * It can be configured to use a different parser via `parseDateTime`.\n * https://hyperformula.handsontable.com/guide/date-and-time-handling.html#date-and-time-handling\n * https://github.com/handsontable/hyperformula/blob/master/src/DateTimeHelper.ts\n */\n\n// TODO(burdon): Annotations not present in JSON.\n// TODO(burdon): Timezone.\n// TODO(burdon): Format for timestamp (Unix UTC or ISO 8601)?\n// TODO(burdon): Refs\n// - https://www.npmjs.com/package/numfmt\n// - https://date-fns.org/docs/Getting-Started\n// - https://github.com/date-fns/tz\n\n/**\n * Simple date compatible with HF.\n */\nexport const SimpleDate = Schema.Struct({\n year: Schema.Number.pipe(Schema.between(1900, 9999)),\n month: Schema.Number.pipe(Schema.between(1, 12)),\n day: Schema.Number.pipe(Schema.between(1, 31)),\n});\n\nexport type SimpleDate = Schema.Schema.Type<typeof SimpleDate>;\n\nexport const toSimpleDate = (date: Date): SimpleDate => ({\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate(),\n});\n\n/**\n * Simple time compatible with HF.\n */\nexport const SimpleTime = Schema.Struct({\n hours: Schema.Number.pipe(Schema.between(0, 23)),\n minutes: Schema.Number.pipe(Schema.between(0, 59)),\n seconds: Schema.Number.pipe(Schema.between(0, 59)),\n});\n\nexport type SimpleTime = Schema.Schema.Type<typeof SimpleTime>;\n\nexport const toSimpleTime = (date: Date): SimpleTime => ({\n hours: date.getUTCHours(),\n minutes: date.getUTCSeconds(),\n seconds: date.getUTCSeconds(),\n});\n\n/**\n * Simple date-time compatible with HF.\n */\nexport const SimpleDateTime = Schema.extend(SimpleDate, SimpleTime);\n\nexport type SimpleDateTime = Schema.Schema.Type<typeof SimpleDateTime>;\n\nexport const toSimpleDateTime = (date: Date): SimpleDateTime => ({\n ...toSimpleDate(date),\n ...toSimpleTime(date),\n});\n\n/**\n * https://effect.website/docs/guides/schema/transformations#date-transformations\n */\n\n// TODO(burdon): Consider if transformations should be supported with Automerge.\n\n/**\n * Format: 2018-11-13\n */\nexport const DateOnly = /* Schema.transformOrFail(Schema.String, SimpleDate, {\n strict: true,\n decode: (str, _, ast) => {\n if (!isValidDateFormat(str)) {\n return ParseResult.fail(new ParseResult.Type(ast, str, 'Expected YYYY-MM-DD format'));\n }\n if (!isValidDate(str)) {\n return ParseResult.fail(new ParseResult.Type(ast, str, 'Invalid date'));\n }\n\n const [year, month, day] = str.split('-').map(Number);\n return ParseResult.succeed({ year, month, day });\n },\n encode: (date) => {\n return ParseResult.succeed(\n [\n date.year.toString().padStart(4, '0'),\n date.month.toString().padStart(2, '0'),\n date.day.toString().padStart(2, '0'),\n ].join('-'),\n );\n },\n}) */ Schema.String.pipe(\n FormatAnnotation.set(TypeFormat.Date),\n Schema.annotations({\n title: 'Date',\n description: 'Valid date in ISO format',\n }),\n);\n\n/**\n * Format: 20:20:39+00:00\n */\nexport const TimeOnly = /* Schema.transformOrFail(Schema.String, SimpleTime, {\n strict: true,\n decode: (str, _, ast) => {\n if (!isValidTimeFormat(str)) {\n return ParseResult.fail(new ParseResult.Type(ast, str, 'Expected HH:mm:ss format'));\n }\n\n const [hours, minutes, seconds] = str.split(':').map(Number);\n return ParseResult.succeed({ hours, minutes, seconds });\n },\n encode: (time) => {\n return ParseResult.succeed(\n [\n time.hours.toString().padStart(2, '0'),\n time.minutes.toString().padStart(2, '0'),\n time.seconds.toString().padStart(2, '0'),\n ].join(':'),\n );\n },\n}) */ Schema.String.pipe(\n FormatAnnotation.set(TypeFormat.Time),\n Schema.annotations({\n title: 'Time',\n description: 'Valid time in ISO format',\n }),\n);\n\n/**\n * Format: 2018-11-13T20:20:39+00:00\n */\nexport const DateTime = /* Schema.transformOrFail(Schema.String, SimpleDateTime, {\n strict: false,\n decode: (str, _, ast) => {\n const [date, time] = str.split('T');\n if (!isValidDateFormat(date)) {\n return ParseResult.fail(new ParseResult.Type(ast, date, 'Expected YYYY-MM-DD format'));\n }\n if (!isValidDate(date)) {\n return ParseResult.fail(new ParseResult.Type(ast, date, 'Invalid date'));\n }\n if (!isValidTimeFormat(time)) {\n return ParseResult.fail(new ParseResult.Type(ast, str, 'Expected HH:mm:ss format'));\n }\n\n const [year, month, day] = date.split('-').map(Number);\n const [hours, minutes, seconds] = time.split(':').map(Number);\n return ParseResult.succeed({ year, month, day, hours, minutes, seconds });\n },\n encode: (datetime) => {\n return ParseResult.succeed(\n [\n [\n datetime.year.toString().padStart(4, '0'),\n datetime.month.toString().padStart(2, '0'),\n datetime.day.toString().padStart(2, '0'),\n ].join('-'),\n [\n datetime.hours.toString().padStart(2, '0'),\n datetime.minutes.toString().padStart(2, '0'),\n datetime.seconds.toString().padStart(2, '0'),\n ].join(':'),\n ].join('T'),\n );\n },\n}) */ Schema.String.pipe(\n FormatAnnotation.set(TypeFormat.DateTime),\n Schema.annotations({\n title: 'DateTime',\n description: 'Valid date and time in ISO format',\n }),\n);\n\n/**\n * https://datatracker.ietf.org/doc/html/rfc3339#appendix-A\n */\n// TODO(burdon): Define duration type.\nexport const Duration = Schema.String.pipe(\n FormatAnnotation.set(TypeFormat.Duration),\n Schema.annotations({\n title: 'Duration',\n description: 'Duration in ISO 8601 format',\n [SchemaAST.ExamplesAnnotationId]: ['1h', '3D'],\n }),\n);\n\n//\n// Utils\n//\n\n// YYYY-MM-DD\nconst DATE_REGEX = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nconst _isValidDateFormat = (str: string) => DATE_REGEX.test(str);\n\nconst _isValidDate = (str: string) => {\n const date = new Date(str);\n return !isNaN(date.getTime()) && date.toISOString().startsWith(str);\n};\n\n// HH:mm:ss\nconst TIME_REGEX = /^([01]\\d|2[0-3]):([0-5]\\d):([0-5]\\d)$/;\n\nconst _isValidTimeFormat = (str: string) => TIME_REGEX.test(str);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\n/**\n * Schema for a single select option. Used to define choices in a {single|multi}-select field.\n */\nexport const SelectOption = Schema.Struct({\n /** Stable identifier for the option. */\n id: Schema.NonEmptyString,\n title: Schema.String,\n /** Color palette used for visual styling. */\n color: Schema.String,\n});\n\nexport type SelectOption = Schema.Schema.Type<typeof SelectOption>;\n"],
5
+ "mappings": "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",
6
+ "names": ["Function", "Option", "SchemaAST", "TypeEnum", "getTypeEnum", "property", "type", "undefined", "FormatAnnotationId", "Symbol", "for", "FormatAnnotation", "createAnnotationHelper", "getFormatAnnotation", "node", "pipe", "getAnnotation", "getOrUndefined", "TypeFormat", "FormatEnums", "Object", "values", "sort", "PropertyKind", "format", "typeToFormat", "formatToType", "OptionsAnnotationId", "OptionsAnnotation", "getOptionsAnnotation", "Schema", "encodeMultipleOf", "divisor", "Math", "pow", "encodeMultiple", "self", "undefined", "pipe", "multipleOf", "DecimalPrecision", "transform", "Number", "strict", "encode", "value", "decode", "log10", "annotations", "title", "CurrencyAnnotationId", "Symbol", "for", "Currency", "decimals", "code", "FormatAnnotation", "set", "TypeFormat", "description", "toUpperCase", "Integer", "int", "Percent", "Timestamp", "Schema", "clamp", "GeoPoint", "Tuple", "Number", "pipe", "annotations", "title", "clamp", "multipleOf", "optionalElement", "FormatAnnotation", "set", "TypeFormat", "description", "GeoLocation", "toGeoPoint", "longitude", "latitude", "height", "clampedLongitude", "clampedLatitude", "undefined", "fromGeoPoint", "geoPoint", "result", "Schema", "SchemaAST", "Email", "String", "pipe", "pattern", "FormatAnnotation", "set", "TypeFormat", "annotations", "title", "description", "Formula", "Hostname", "JSON", "Markdown", "Regex", "Text", "URL", "UUID", "ExamplesAnnotationId", "Schema", "Keys", "Schema", "SchemaAST", "SimpleDate", "Struct", "year", "Number", "pipe", "between", "month", "day", "SimpleTime", "Struct", "hours", "Number", "pipe", "between", "minutes", "seconds", "SimpleDateTime", "extend", "SimpleDate", "SimpleTime", "DateOnly", "String", "pipe", "FormatAnnotation", "set", "TypeFormat", "Date", "annotations", "title", "description", "TimeOnly", "Time", "DateTime", "Duration", "ExamplesAnnotationId", "Format", "TypeFormat", "DXN", "Schema", "Email", "Formula", "Hostname", "JSON", "Markdown", "Regex", "URL", "UUID", "Currency", "Integer", "Percent", "Timestamp", "Date", "DateOnly", "DateTime", "Duration", "Time", "TimeOnly", "GeoPoint", "Schema", "SelectOption", "Struct", "id", "NonEmptyString", "title", "String", "color"]
7
+ }
@@ -0,0 +1,97 @@
1
+ import {
2
+ EchoObjectSchema,
3
+ EchoRelationSchema,
4
+ EchoSchema,
5
+ PersistentSchema,
6
+ isMutable
7
+ } from "./chunk-7C2A2RP6.mjs";
8
+ import {
9
+ getSchemaDXN,
10
+ getSchemaTypename,
11
+ getSchemaVersion,
12
+ getTypeAnnotation
13
+ } from "./chunk-4ZRIO2QF.mjs";
14
+ import {
15
+ EntityKind,
16
+ SchemaKindId
17
+ } from "./chunk-TBKX6JQO.mjs";
18
+ import {
19
+ __export
20
+ } from "./chunk-J5LGTIGS.mjs";
21
+
22
+ // src/Type.ts
23
+ var Type_exports = {};
24
+ __export(Type_exports, {
25
+ PersistentType: () => PersistentType,
26
+ RuntimeType: () => RuntimeType,
27
+ getDXN: () => getDXN,
28
+ getMeta: () => getMeta,
29
+ getTypename: () => getTypename,
30
+ getVersion: () => getVersion,
31
+ isMutable: () => isMutable2,
32
+ isObjectSchema: () => isObjectSchema,
33
+ isRelationSchema: () => isRelationSchema,
34
+ object: () => object,
35
+ relation: () => relation
36
+ });
37
+ import { invariant } from "@dxos/invariant";
38
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/Type.ts";
39
+ var RuntimeType = EchoSchema;
40
+ var object = EchoObjectSchema;
41
+ var PersistentType = PersistentSchema;
42
+ var relation = EchoRelationSchema;
43
+ var isObjectSchema = (schema) => {
44
+ return schema[SchemaKindId] === EntityKind.Object;
45
+ };
46
+ var isRelationSchema = (schema) => {
47
+ return schema[SchemaKindId] === EntityKind.Relation;
48
+ };
49
+ var getDXN = (schema) => {
50
+ return getSchemaDXN(schema);
51
+ };
52
+ var getTypename = (schema) => {
53
+ const typename = getSchemaTypename(schema);
54
+ invariant(typeof typename === "string" && !typename.startsWith("dxn:"), "Invalid typename", {
55
+ F: __dxlog_file,
56
+ L: 230,
57
+ S: void 0,
58
+ A: [
59
+ "typeof typename === 'string' && !typename.startsWith('dxn:')",
60
+ "'Invalid typename'"
61
+ ]
62
+ });
63
+ return typename;
64
+ };
65
+ var getVersion = (schema) => {
66
+ const version = getSchemaVersion(schema);
67
+ invariant(typeof version === "string" && version.match(/^\d+\.\d+\.\d+$/), "Invalid version", {
68
+ F: __dxlog_file,
69
+ L: 240,
70
+ S: void 0,
71
+ A: [
72
+ "typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/)",
73
+ "'Invalid version'"
74
+ ]
75
+ });
76
+ return version;
77
+ };
78
+ var isMutable2 = isMutable;
79
+ var getMeta = (schema) => {
80
+ return getTypeAnnotation(schema);
81
+ };
82
+
83
+ export {
84
+ RuntimeType,
85
+ object,
86
+ PersistentType,
87
+ relation,
88
+ isObjectSchema,
89
+ isRelationSchema,
90
+ getDXN,
91
+ getTypename,
92
+ getVersion,
93
+ isMutable2 as isMutable,
94
+ getMeta,
95
+ Type_exports
96
+ };
97
+ //# sourceMappingURL=chunk-DUTD5HFU.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/Type.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Schema from 'effect/Schema';\n\nimport { type EncodedReference } from '@dxos/echo-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { type DXN } from '@dxos/keys';\nimport { type ToMutable } from '@dxos/util';\n\nimport type * as Entity from './Entity';\nimport * as typeInternal from './internal/Type';\nimport * as internal from './internal';\nimport type * as ObjModule from './Obj';\nimport type * as RelationModule from './Relation';\n\n/**\n * Dynamic type that can be constructed, mutated, and persisted in the ECHO database.\n */\nexport const RuntimeType = typeInternal.EchoSchema;\n\n/**\n * Dynamic type that can be constructed, mutated, and persisted in the ECHO database.\n */\nexport type RuntimeType = typeInternal.EchoSchema;\n\n//\n// Internal types (not exported)\n//\n\n/**\n * Type that marks a schema as an ECHO schema.\n * The value indicates the entity kind (Object or Relation).\n */\ntype EchoSchemaKind<K extends internal.EntityKind = internal.EntityKind> = {\n readonly [internal.SchemaKindId]: K;\n};\n\n//\n// Obj - Runtime schema for any ECHO object\n//\n\n/**\n * TypeScript type for an ECHO object schema.\n * `T` is the instance type produced by the schema.\n * `Fields` is the optional struct fields type for introspection.\n *\n * @example\n * ```ts\n * const PersonSchema: Type.Obj<Person> = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.object({ typename: 'Person', version: '0.1.0' }));\n *\n * // Access fields for introspection:\n * Object.keys(PersonSchema.fields); // ['name']\n * ```\n */\nexport interface Obj<T, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>\n extends\n internal.TypeMeta,\n EchoSchemaKind<internal.EntityKind.Object>,\n Schema.AnnotableClass<\n Obj<T, Fields>,\n Entity.OfKind<typeof Entity.Kind.Object> & T,\n Schema.Simplify<ObjModule.BaseObjJson & ToMutable<T>>,\n never\n > {\n /**\n * The fields defined in the original struct schema.\n * Allows accessing field definitions for introspection.\n */\n readonly fields: Fields;\n}\n\n/**\n * Structural base type for any ECHO object schema.\n * Accepts both static schemas (created with Type.object()) and EchoSchema.\n * NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.\n * Use Type.isObjectSchema() for runtime type guards.\n */\ntype ObjectSchemaBase = Schema.Schema.AnyNoContext & {\n readonly typename: string;\n readonly version: string;\n};\n\n/**\n * Type that represents any ECHO object schema.\n * Accepts both static schemas (Type.object()) and mutable schemas (EchoSchema).\n */\nexport type AnyObj = ObjectSchemaBase;\n\n/**\n * Factory function to create an ECHO object schema.\n * Adds object metadata annotations to an Effect schema.\n *\n * @example\n * ```ts\n * const Person = Schema.Struct({\n * name: Schema.String,\n * }).pipe(Type.object({ typename: 'com.example.type.person', version: '0.1.0' }));\n * ```\n */\nexport const object: {\n (opts: internal.TypeMeta): <Self extends Schema.Schema.Any>(self: Self) => Obj<Schema.Schema.Type<Self>>;\n} = internal.EchoObjectSchema as any;\n\n//\n// PersistentType (Schema stored in database)\n//\n\nexport const PersistentType: Obj<typeInternal.PersistentSchema> = typeInternal.PersistentSchema as any;\n\nexport interface PersistentType extends Schema.Schema.Type<typeof PersistentType> {}\n\n/**\n * TypeScript type for an ECHO relation schema.\n * `T` is the instance type produced by the schema (excluding source/target).\n * `Source` and `Target` are the endpoint types.\n * `Fields` is the optional struct fields type for introspection.\n */\nexport interface Relation<T, Source, Target, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>\n extends\n internal.TypeMeta,\n EchoSchemaKind<internal.EntityKind.Relation>,\n Schema.AnnotableClass<\n Relation<T, Source, Target, Fields>,\n Entity.OfKind<typeof Entity.Kind.Relation> & RelationModule.Endpoints<Source, Target> & T,\n Schema.Simplify<RelationModule.BaseRelationJson & ToMutable<T>>,\n never\n > {\n /**\n * The fields defined in the original struct schema.\n * Allows accessing field definitions for introspection.\n */\n readonly fields: Fields;\n}\n\n/**\n * Structural base type for any ECHO relation schema.\n * Accepts static schemas (created with Type.relation()).\n * NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.\n * Use Type.isRelationSchema() for runtime type guards.\n */\ntype RelationSchemaBase = Schema.Schema.AnyNoContext & {\n readonly typename: string;\n readonly version: string;\n};\n\n/**\n * Type that represents any ECHO relation schema.\n * Accepts static schemas (Type.relation()).\n */\nexport type AnyRelation = RelationSchemaBase;\n\n/**\n * Factory function to create an ECHO relation schema.\n * Adds relation metadata annotations to an Effect schema.\n *\n * @example\n * ```ts\n * const WorksFor = Schema.Struct({\n * role: Schema.String,\n * }).pipe(Type.relation({\n * typename: 'com.example.type.works-for',\n * version: '0.1.0',\n * source: Person,\n * target: Company,\n * }));\n * ```\n */\nexport const relation: {\n <SourceSchema extends Schema.Schema.AnyNoContext, TargetSchema extends Schema.Schema.AnyNoContext>(\n opts: internal.EchoRelationSchemaOptions<SourceSchema, TargetSchema>,\n ): <Self extends Schema.Schema.Any>(\n self: Self,\n ) => Relation<Schema.Schema.Type<Self>, Schema.Schema.Type<SourceSchema>, Schema.Schema.Type<TargetSchema>>;\n} = internal.EchoRelationSchema as any;\n\n/**\n * Type alias for any ECHO entity schema (object or relation).\n * Use this in type annotations for schema parameters.\n */\nexport type AnyEntity = AnyObj | AnyRelation;\n\n/**\n * Type guard to check if a schema is an object schema.\n * NOTE: This checks SCHEMAS, not instances. Use Obj.isObject for instances.\n */\nexport const isObjectSchema = (schema: AnyEntity): schema is AnyObj => {\n return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Object;\n};\n\n/**\n * Type guard to check if a schema is a relation schema.\n * NOTE: This checks SCHEMAS, not instances. Use Relation.isRelation for instances.\n */\nexport const isRelationSchema = (schema: AnyEntity): schema is AnyRelation => {\n return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Relation;\n};\n\n/**\n * Type that represents any Ref schema (with unknown target type).\n * This is a schema type, not an instance type.\n */\nexport type AnyRef = Schema.Schema<internal.Ref<any>, EncodedReference>;\n\n//\n// Schema utility functions\n//\n\n/**\n * Gets the full DXN of the schema.\n * Will include the version if it's a `type` DXN.\n * @example \"dxn:com.example.type.person:0.1.0\"\n * @example \"dxn:echo:SSSSSSSSSS:XXXXXXXXXXXXX\"\n */\nexport const getDXN = (schema: AnyEntity): DXN | undefined => {\n return internal.getSchemaDXN(schema);\n};\n\n/**\n * @param schema - Schema to get the typename from.\n * @returns The typename of the schema. Example: `com.example.type.person`.\n */\nexport const getTypename = (schema: AnyEntity): string => {\n const typename = internal.getSchemaTypename(schema);\n invariant(typeof typename === 'string' && !typename.startsWith('dxn:'), 'Invalid typename');\n return typename;\n};\n\n/**\n * Gets the version of the schema.\n * @example 0.1.0\n */\nexport const getVersion = (schema: AnyEntity): string => {\n const version = internal.getSchemaVersion(schema);\n invariant(typeof version === 'string' && version.match(/^\\d+\\.\\d+\\.\\d+$/), 'Invalid version');\n return version;\n};\n\n/**\n * @returns True if the schema is mutable.\n */\nexport const isMutable = typeInternal.isMutable;\n\n/**\n * ECHO type metadata.\n */\nexport type Meta = internal.TypeAnnotation;\n\n/**\n * Gets the meta data of the schema.\n */\nexport const getMeta = (schema: AnyEntity): Meta | undefined => {\n return internal.getTypeAnnotation(schema);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;mBAAAA;EAAA;;;;;AASA,SAASC,iBAAiB;;AAanB,IAAMC,cAA2BC;AAmFjC,IAAMC,SAEAC;AAMN,IAAMC,iBAAkEC;AA4DxE,IAAMC,WAMAC;AAYN,IAAMC,iBAAiB,CAACC,WAAAA;AAC7B,SAAQA,OAAwBC,YAAY,MAAeC,WAAWC;AACxE;AAMO,IAAMC,mBAAmB,CAACJ,WAAAA;AAC/B,SAAQA,OAAwBC,YAAY,MAAeC,WAAWG;AACxE;AAkBO,IAAMC,SAAS,CAACN,WAAAA;AACrB,SAAgBO,aAAaP,MAAAA;AAC/B;AAMO,IAAMQ,cAAc,CAACR,WAAAA;AAC1B,QAAMS,WAAoBC,kBAAkBV,MAAAA;AAC5CW,YAAU,OAAOF,aAAa,YAAY,CAACA,SAASG,WAAW,MAAA,GAAS,oBAAA;;;;;;;;;AACxE,SAAOH;AACT;AAMO,IAAMI,aAAa,CAACb,WAAAA;AACzB,QAAMc,UAAmBC,iBAAiBf,MAAAA;AAC1CW,YAAU,OAAOG,YAAY,YAAYA,QAAQE,MAAM,iBAAA,GAAoB,mBAAA;;;;;;;;;AAC3E,SAAOF;AACT;AAKO,IAAMG,aAAyBA;AAU/B,IAAMC,UAAU,CAAClB,WAAAA;AACtB,SAAgBmB,kBAAkBnB,MAAAA;AACpC;",
6
+ "names": ["isMutable", "invariant", "RuntimeType", "EchoSchema", "object", "EchoObjectSchema", "PersistentType", "PersistentSchema", "relation", "EchoRelationSchema", "isObjectSchema", "schema", "SchemaKindId", "EntityKind", "Object", "isRelationSchema", "Relation", "getDXN", "getSchemaDXN", "getTypename", "typename", "getSchemaTypename", "invariant", "startsWith", "getVersion", "version", "getSchemaVersion", "match", "isMutable", "getMeta", "getTypeAnnotation"]
7
+ }