@dxos/echo 0.8.4-main.69d29f4 → 0.8.4-main.6fa680abb7
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.
- package/README.md +2 -2
- package/dist/lib/{browser → neutral}/Annotation.mjs +9 -5
- package/dist/lib/neutral/Database.mjs +45 -0
- package/dist/lib/{browser → neutral}/Entity.mjs +19 -12
- package/dist/lib/{browser → neutral}/Err.mjs +4 -3
- package/dist/lib/neutral/Feed.mjs +46 -0
- package/dist/lib/{node-esm → neutral}/Filter.mjs +12 -10
- package/dist/lib/{browser → neutral}/Format.mjs +4 -5
- package/dist/lib/neutral/JsonSchema.mjs +19 -0
- package/dist/lib/{browser → neutral}/Key.mjs +2 -3
- package/dist/lib/{browser → neutral}/Obj.mjs +36 -17
- package/dist/lib/{browser → neutral}/Order.mjs +2 -3
- package/dist/lib/neutral/Query.mjs +35 -0
- package/dist/lib/neutral/QueryResult.mjs +2 -0
- package/dist/lib/neutral/Ref.mjs +24 -0
- package/dist/lib/{browser → neutral}/Relation.mjs +21 -13
- package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
- package/dist/lib/neutral/Tag.mjs +28 -0
- package/dist/lib/neutral/Type.mjs +37 -0
- package/dist/lib/{browser/chunk-AFGYYVVQ.mjs → neutral/chunk-2FK7XCDV.mjs} +6 -7
- package/dist/lib/neutral/chunk-2FK7XCDV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-2Z72D23W.mjs +787 -0
- package/dist/lib/neutral/chunk-2Z72D23W.mjs.map +7 -0
- package/dist/lib/neutral/chunk-35FDO7WH.mjs +396 -0
- package/dist/lib/neutral/chunk-35FDO7WH.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4HWWKURH.mjs +34 -0
- package/dist/lib/neutral/chunk-4HWWKURH.mjs.map +7 -0
- package/dist/lib/{browser/chunk-73M2G455.mjs → neutral/chunk-7VLKWC6T.mjs} +33 -10
- package/dist/lib/neutral/chunk-7VLKWC6T.mjs.map +7 -0
- package/dist/lib/{browser/chunk-INHXFXY5.mjs → neutral/chunk-ANHVGJI4.mjs} +2 -3
- package/dist/lib/{node-esm/chunk-AJEMYSIR.mjs.map → neutral/chunk-ANHVGJI4.mjs.map} +1 -1
- package/dist/lib/{browser/chunk-R3S54KRI.mjs → neutral/chunk-B5OXLWZL.mjs} +14 -15
- package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
- package/dist/lib/{browser/chunk-TPIL3G6Y.mjs → neutral/chunk-BESZGRPL.mjs} +17 -6
- package/dist/lib/neutral/chunk-BESZGRPL.mjs.map +7 -0
- package/dist/lib/{browser/chunk-ZHXZGIXD.mjs → neutral/chunk-BNCCGLJN.mjs} +1 -3
- package/dist/lib/{browser/chunk-ZHXZGIXD.mjs.map → neutral/chunk-BNCCGLJN.mjs.map} +2 -2
- package/dist/lib/{browser/chunk-QIWDIPLR.mjs → neutral/chunk-EK7UOJ3R.mjs} +9 -5
- package/dist/lib/neutral/chunk-EK7UOJ3R.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ETOQXZHC.mjs +130 -0
- package/dist/lib/neutral/chunk-ETOQXZHC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-EV3A23AS.mjs +283 -0
- package/dist/lib/neutral/chunk-EV3A23AS.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-OZEDKT4R.mjs → neutral/chunk-FUGL645K.mjs} +135 -26
- package/dist/lib/neutral/chunk-FUGL645K.mjs.map +7 -0
- package/dist/lib/{browser/chunk-5RDNDPMX.mjs → neutral/chunk-FZO7LQO7.mjs} +3 -4
- package/dist/lib/neutral/chunk-FZO7LQO7.mjs.map +7 -0
- package/dist/lib/{browser/chunk-CGS2ULMK.mjs → neutral/chunk-J5LGTIGS.mjs} +1 -2
- package/dist/lib/neutral/chunk-LDHKQDXR.mjs +27 -0
- package/dist/lib/neutral/chunk-LDHKQDXR.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-5U5F4AWK.mjs → neutral/chunk-MFJPOZDU.mjs} +1579 -2717
- package/dist/lib/neutral/chunk-MFJPOZDU.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-NBWL7UCZ.mjs → neutral/chunk-OENWMTE6.mjs} +9 -4
- package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
- package/dist/lib/{browser/chunk-IXVWLTG7.mjs → neutral/chunk-OMUPQMLR.mjs} +1 -3
- package/dist/lib/{node-esm/chunk-UKGVOINP.mjs.map → neutral/chunk-OMUPQMLR.mjs.map} +1 -1
- package/dist/lib/{browser/chunk-2RMVRVOB.mjs → neutral/chunk-PH5RST5U.mjs} +73 -25
- package/dist/lib/neutral/chunk-PH5RST5U.mjs.map +7 -0
- package/dist/lib/neutral/chunk-PKD2L7XO.mjs +152 -0
- package/dist/lib/neutral/chunk-PKD2L7XO.mjs.map +7 -0
- package/dist/lib/{browser/chunk-L4RXUJHJ.mjs → neutral/chunk-QLALBCSA.mjs} +12 -58
- package/dist/lib/neutral/chunk-QLALBCSA.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QTUBE4DR.mjs +102 -0
- package/dist/lib/neutral/chunk-QTUBE4DR.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-YOLH5KS4.mjs → neutral/chunk-SEMVAGBM.mjs} +97 -25
- package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-YQ2NWGL5.mjs → neutral/chunk-UBEZSGXY.mjs} +15 -3
- package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
- package/dist/lib/{browser/chunk-JMKVF2YQ.mjs → neutral/chunk-UI6MWK5W.mjs} +3 -4
- package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
- package/dist/lib/{browser/chunk-YKTSSMDS.mjs → neutral/chunk-WYOKA6AE.mjs} +4 -6
- package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +97 -0
- package/dist/lib/{node-esm → neutral}/internal/index.mjs +53 -40
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/{node-esm → neutral}/testing/index.mjs +43 -37
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/Annotation.d.ts +23 -1
- package/dist/types/src/Annotation.d.ts.map +1 -1
- package/dist/types/src/Collection.d.ts +16 -0
- package/dist/types/src/Collection.d.ts.map +1 -0
- package/dist/types/src/Database.d.ts +78 -83
- package/dist/types/src/Database.d.ts.map +1 -1
- package/dist/types/src/Dataset.d.ts +18 -0
- package/dist/types/src/Dataset.d.ts.map +1 -0
- package/dist/types/src/Entity.d.ts +38 -12
- package/dist/types/src/Entity.d.ts.map +1 -1
- package/dist/types/src/Err.d.ts +43 -0
- package/dist/types/src/Err.d.ts.map +1 -1
- package/dist/types/src/Feed.d.ts +165 -0
- package/dist/types/src/Feed.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +1 -1
- package/dist/types/src/Filter.d.ts.map +1 -1
- package/dist/types/src/Format.d.ts +3 -3
- package/dist/types/src/Format.d.ts.map +1 -1
- package/dist/types/src/Hypergraph.d.ts +2 -2
- package/dist/types/src/Hypergraph.d.ts.map +1 -1
- package/dist/types/src/JsonSchema.d.ts +11 -4
- package/dist/types/src/JsonSchema.d.ts.map +1 -1
- package/dist/types/src/Obj.d.ts +149 -36
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Order.d.ts.map +1 -1
- package/dist/types/src/Query.d.ts +101 -14
- package/dist/types/src/Query.d.ts.map +1 -1
- package/dist/types/src/Ref.d.ts +58 -10
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +73 -26
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/SchemaRegistry.d.ts +4 -4
- package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
- package/dist/types/src/Tag.d.ts +4 -3
- package/dist/types/src/Tag.d.ts.map +1 -1
- package/dist/types/src/Type.d.ts +51 -180
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/View.d.ts +68 -0
- package/dist/types/src/View.d.ts.map +1 -0
- package/dist/types/src/hierarchy.test.d.ts +2 -0
- package/dist/types/src/hierarchy.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +4 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +68 -8
- package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/index.d.ts +4 -0
- package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
- package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
- package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
- package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +13 -1
- package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
- package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
- package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
- package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
- package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
- package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
- package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
- package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
- package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
- package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
- package/dist/types/src/internal/Format/format.d.ts.map +1 -0
- package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
- package/dist/types/src/internal/Format/index.d.ts.map +1 -0
- package/dist/types/src/internal/Format/number.d.ts.map +1 -0
- package/dist/types/src/internal/Format/object.d.ts.map +1 -0
- package/dist/types/src/internal/Format/select.d.ts.map +1 -0
- package/dist/types/src/internal/Format/string.d.ts.map +1 -0
- package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
- package/dist/types/src/internal/Format/types.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
- package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +19 -19
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
- package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
- package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +4 -4
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/set-value.d.ts +1 -1
- package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
- package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
- package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref.d.ts +16 -3
- package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
- package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
- package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
- package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
- package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +8 -7
- package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
- package/dist/types/src/internal/Type/index.d.ts.map +1 -0
- package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
- package/dist/types/src/internal/{schema → Type}/persistent-schema.d.ts +2 -2
- package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
- package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
- package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/index.d.ts +4 -0
- package/dist/types/src/internal/common/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +2 -1
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
- package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/entity.d.ts +2 -2
- package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/meta.d.ts +2 -1
- package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
- package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
- package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
- package/dist/types/src/internal/index.d.ts +8 -10
- package/dist/types/src/internal/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +19 -18
- package/dist/types/src/testing/test-schema.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +39 -113
- package/src/Annotation.ts +31 -1
- package/src/Collection.ts +32 -0
- package/src/Database.ts +153 -172
- package/src/Dataset.ts +26 -0
- package/src/Entity.ts +71 -51
- package/src/Err.ts +22 -0
- package/src/Feed.ts +257 -0
- package/src/Filter.ts +19 -4
- package/src/Format.ts +3 -3
- package/src/Hypergraph.ts +2 -2
- package/src/JsonSchema.ts +14 -4
- package/src/Obj.test.ts +63 -2
- package/src/Obj.ts +274 -132
- package/src/Order.ts +3 -1
- package/src/Query.test.ts +181 -14
- package/src/Query.ts +249 -23
- package/src/Ref.ts +64 -11
- package/src/Relation.test.ts +8 -2
- package/src/Relation.ts +163 -129
- package/src/SchemaRegistry.ts +5 -4
- package/src/Tag.ts +6 -5
- package/src/Type.test.ts +10 -10
- package/src/Type.ts +70 -303
- package/src/View.ts +102 -0
- package/src/hierarchy.test.ts +33 -0
- package/src/index.ts +4 -0
- package/src/internal/{annotations → Annotation}/annotations.test.ts +6 -6
- package/src/internal/{annotations → Annotation}/annotations.ts +120 -9
- package/src/internal/{annotations → Annotation}/index.ts +1 -0
- package/src/internal/{api → Annotation}/sorting.ts +2 -3
- package/src/internal/{annotations → Annotation}/util.ts +14 -1
- package/src/internal/{api/entity.ts → Entity/api.ts} +4 -2
- package/src/internal/{entities → Entity}/entity.ts +6 -4
- package/src/internal/{entities → Entity}/index.ts +2 -0
- package/src/internal/{entities → Entity}/model.ts +17 -42
- package/src/internal/{entities → Entity}/object.ts +2 -2
- package/src/internal/{entities → Entity}/relation.ts +19 -36
- package/src/internal/{api → Entity}/version.ts +3 -2
- package/src/internal/{formats → Format}/date.test.ts +1 -1
- package/src/internal/{formats → Format}/format.test.ts +1 -1
- package/src/internal/{formats → Format}/types.ts +3 -3
- package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
- package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
- package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -48
- package/src/internal/{json-schema → JsonSchema}/json-schema.ts +6 -4
- package/src/internal/{object → Obj}/clone.ts +3 -3
- package/src/internal/{object → Obj}/common.ts +2 -2
- package/src/internal/{object → Obj}/create-object.test.ts +4 -4
- package/src/internal/{object → Obj}/create-object.ts +5 -5
- package/src/internal/{object → Obj}/deleted.ts +2 -2
- package/src/internal/{object → Obj}/inspect.ts +2 -2
- package/src/internal/{object → Obj}/json-serializer.test.ts +29 -6
- package/src/internal/{object → Obj}/json-serializer.ts +30 -14
- package/src/internal/{object → Obj}/schema-validator.ts +1 -1
- package/src/internal/{object → Obj}/set-value.ts +2 -2
- package/src/internal/Obj/snapshot.ts +105 -0
- package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
- package/src/internal/{object → Obj}/typed-object.ts +4 -4
- package/src/internal/{ref → Ref}/ref-array.ts +1 -1
- package/src/internal/{ref → Ref}/ref.test.ts +4 -4
- package/src/internal/{ref → Ref}/ref.ts +27 -4
- package/src/internal/{schema → Type}/compose.test.ts +5 -5
- package/src/internal/{schema → Type}/compose.ts +1 -1
- package/src/internal/{schema → Type}/echo-schema.ts +11 -10
- package/src/internal/{schema → Type}/manipulation.ts +1 -1
- package/src/internal/{schema → Type}/persistent-schema.ts +10 -4
- package/src/internal/{README.md → common/README.md} +1 -1
- package/src/internal/{api → common/api}/index.ts +0 -4
- package/src/internal/common/index.ts +7 -0
- package/src/internal/{proxy → common/proxy}/change.test.ts +3 -3
- package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -2
- package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
- package/src/internal/{proxy → common/proxy}/make-object.ts +13 -3
- package/src/internal/{proxy → common/proxy}/reactive.ts +1 -1
- package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
- package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -6
- package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -3
- package/src/internal/{proxy → common/proxy}/typed-object.test.ts +4 -4
- package/src/internal/{types → common/types}/base.ts +1 -1
- package/src/internal/{types → common/types}/entity.ts +2 -2
- package/src/internal/{types → common/types}/index.ts +1 -0
- package/src/internal/{types → common/types}/meta.ts +4 -1
- package/src/internal/common/types/model-symbols.ts +69 -0
- package/src/internal/{types → common/types}/typename.ts +10 -0
- package/src/internal/{types → common/types}/version.ts +2 -3
- package/src/internal/index.ts +8 -31
- package/src/testing/api.test.ts +4 -4
- package/src/testing/test-schema.ts +20 -18
- package/dist/lib/browser/Database.mjs +0 -18
- package/dist/lib/browser/Filter.mjs +0 -62
- package/dist/lib/browser/JsonSchema.mjs +0 -20
- package/dist/lib/browser/Query.mjs +0 -27
- package/dist/lib/browser/QueryResult.mjs +0 -3
- package/dist/lib/browser/Ref.mjs +0 -23
- package/dist/lib/browser/SchemaRegistry.mjs +0 -3
- package/dist/lib/browser/Tag.mjs +0 -26
- package/dist/lib/browser/Type.mjs +0 -48
- package/dist/lib/browser/chunk-2RMVRVOB.mjs.map +0 -7
- package/dist/lib/browser/chunk-5RDNDPMX.mjs.map +0 -7
- package/dist/lib/browser/chunk-73M2G455.mjs.map +0 -7
- package/dist/lib/browser/chunk-7STIBCP7.mjs +0 -133
- package/dist/lib/browser/chunk-7STIBCP7.mjs.map +0 -7
- package/dist/lib/browser/chunk-AFGYYVVQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-BC6R4CAF.mjs +0 -24
- package/dist/lib/browser/chunk-BC6R4CAF.mjs.map +0 -7
- package/dist/lib/browser/chunk-BPYFLHWO.mjs +0 -158
- package/dist/lib/browser/chunk-BPYFLHWO.mjs.map +0 -7
- package/dist/lib/browser/chunk-CBPFF3ZO.mjs +0 -204
- package/dist/lib/browser/chunk-CBPFF3ZO.mjs.map +0 -7
- package/dist/lib/browser/chunk-CJ5YELTO.mjs +0 -39
- package/dist/lib/browser/chunk-CJ5YELTO.mjs.map +0 -7
- package/dist/lib/browser/chunk-FPOISFQK.mjs +0 -40
- package/dist/lib/browser/chunk-FPOISFQK.mjs.map +0 -7
- package/dist/lib/browser/chunk-INHXFXY5.mjs.map +0 -7
- package/dist/lib/browser/chunk-IXVWLTG7.mjs.map +0 -7
- package/dist/lib/browser/chunk-JMKVF2YQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-L4RXUJHJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-MYCCGG2T.mjs +0 -15
- package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +0 -7
- package/dist/lib/browser/chunk-PAM4KEXE.mjs +0 -3847
- package/dist/lib/browser/chunk-PAM4KEXE.mjs.map +0 -7
- package/dist/lib/browser/chunk-QIWDIPLR.mjs.map +0 -7
- package/dist/lib/browser/chunk-R3S54KRI.mjs.map +0 -7
- package/dist/lib/browser/chunk-RK4Z4JUZ.mjs +0 -283
- package/dist/lib/browser/chunk-RK4Z4JUZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-TPIL3G6Y.mjs.map +0 -7
- package/dist/lib/browser/chunk-YKTSSMDS.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -85
- package/dist/lib/browser/internal/index.mjs +0 -457
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/testing/index.mjs +0 -367
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/Annotation.mjs +0 -33
- package/dist/lib/node-esm/Annotation.mjs.map +0 -7
- package/dist/lib/node-esm/Database.mjs +0 -18
- package/dist/lib/node-esm/Database.mjs.map +0 -7
- package/dist/lib/node-esm/Entity.mjs +0 -52
- package/dist/lib/node-esm/Entity.mjs.map +0 -7
- package/dist/lib/node-esm/Err.mjs +0 -11
- package/dist/lib/node-esm/Err.mjs.map +0 -7
- package/dist/lib/node-esm/Format.mjs +0 -67
- package/dist/lib/node-esm/Format.mjs.map +0 -7
- package/dist/lib/node-esm/JsonSchema.mjs +0 -20
- package/dist/lib/node-esm/JsonSchema.mjs.map +0 -7
- package/dist/lib/node-esm/Key.mjs +0 -13
- package/dist/lib/node-esm/Key.mjs.map +0 -7
- package/dist/lib/node-esm/Obj.mjs +0 -91
- package/dist/lib/node-esm/Obj.mjs.map +0 -7
- package/dist/lib/node-esm/Order.mjs +0 -13
- package/dist/lib/node-esm/Order.mjs.map +0 -7
- package/dist/lib/node-esm/Query.mjs +0 -27
- package/dist/lib/node-esm/Query.mjs.map +0 -7
- package/dist/lib/node-esm/QueryResult.mjs +0 -3
- package/dist/lib/node-esm/QueryResult.mjs.map +0 -7
- package/dist/lib/node-esm/Ref.mjs +0 -23
- package/dist/lib/node-esm/Ref.mjs.map +0 -7
- package/dist/lib/node-esm/Relation.mjs +0 -85
- package/dist/lib/node-esm/Relation.mjs.map +0 -7
- package/dist/lib/node-esm/SchemaRegistry.mjs +0 -3
- package/dist/lib/node-esm/SchemaRegistry.mjs.map +0 -7
- package/dist/lib/node-esm/Tag.mjs +0 -26
- package/dist/lib/node-esm/Tag.mjs.map +0 -7
- package/dist/lib/node-esm/Type.mjs +0 -48
- package/dist/lib/node-esm/Type.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2RIFBW3A.mjs +0 -250
- package/dist/lib/node-esm/chunk-2RIFBW3A.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5CB2ZW74.mjs +0 -57
- package/dist/lib/node-esm/chunk-5CB2ZW74.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5U5F4AWK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +0 -22
- package/dist/lib/node-esm/chunk-BKYE5IW6.mjs +0 -158
- package/dist/lib/node-esm/chunk-BKYE5IW6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BYOD7EVP.mjs +0 -98
- package/dist/lib/node-esm/chunk-BYOD7EVP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FWTSPIFF.mjs +0 -133
- package/dist/lib/node-esm/chunk-FWTSPIFF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-K37NA7PO.mjs +0 -43
- package/dist/lib/node-esm/chunk-K37NA7PO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LIXUCQJM.mjs +0 -41
- package/dist/lib/node-esm/chunk-LIXUCQJM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MOLNWFNL.mjs +0 -9
- package/dist/lib/node-esm/chunk-MOLNWFNL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +0 -15
- package/dist/lib/node-esm/chunk-MOWUEW5P.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OZEDKT4R.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PW3VCWL5.mjs +0 -24
- package/dist/lib/node-esm/chunk-PW3VCWL5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TSTKBFST.mjs +0 -403
- package/dist/lib/node-esm/chunk-TSTKBFST.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UKGVOINP.mjs +0 -9
- package/dist/lib/node-esm/chunk-UV63HEHQ.mjs +0 -143
- package/dist/lib/node-esm/chunk-UV63HEHQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WXLVPCRJ.mjs +0 -288
- package/dist/lib/node-esm/chunk-WXLVPCRJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WZ6YBELW.mjs +0 -74
- package/dist/lib/node-esm/chunk-WZ6YBELW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XHJRMQZD.mjs +0 -69
- package/dist/lib/node-esm/chunk-XHJRMQZD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YOLH5KS4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -85
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/internal/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/index.d.ts +0 -3
- package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
- package/dist/types/src/internal/api/annotations.d.ts +0 -23
- package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/api/entity.d.ts.map +0 -1
- package/dist/types/src/internal/api/index.d.ts.map +0 -1
- package/dist/types/src/internal/api/meta.d.ts.map +0 -1
- package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
- package/dist/types/src/internal/api/version.d.ts.map +0 -1
- package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
- package/dist/types/src/internal/entities/index.d.ts.map +0 -1
- package/dist/types/src/internal/entities/model.d.ts.map +0 -1
- package/dist/types/src/internal/entities/object.d.ts.map +0 -1
- package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
- package/dist/types/src/internal/entities/util.d.ts.map +0 -1
- package/dist/types/src/internal/formats/date.d.ts.map +0 -1
- package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
- package/dist/types/src/internal/formats/format.d.ts.map +0 -1
- package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
- package/dist/types/src/internal/formats/index.d.ts.map +0 -1
- package/dist/types/src/internal/formats/number.d.ts.map +0 -1
- package/dist/types/src/internal/formats/object.d.ts.map +0 -1
- package/dist/types/src/internal/formats/select.d.ts.map +0 -1
- package/dist/types/src/internal/formats/string.d.ts.map +0 -1
- package/dist/types/src/internal/formats/types.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/clone.d.ts.map +0 -1
- package/dist/types/src/internal/object/common.d.ts.map +0 -1
- package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
- package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
- package/dist/types/src/internal/object/ids.d.ts.map +0 -1
- package/dist/types/src/internal/object/index.d.ts.map +0 -1
- package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
- package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
- package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
- package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
- package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
- package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
- package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
- package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/reactive.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/ref/index.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
- package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
- package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
- package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
- package/dist/types/src/internal/schema/index.d.ts.map +0 -1
- package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
- package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
- package/dist/types/src/internal/types/base.d.ts.map +0 -1
- package/dist/types/src/internal/types/entity.d.ts.map +0 -1
- package/dist/types/src/internal/types/index.d.ts.map +0 -1
- package/dist/types/src/internal/types/meta.d.ts.map +0 -1
- package/dist/types/src/internal/types/typename.d.ts.map +0 -1
- package/dist/types/src/internal/types/version.d.ts.map +0 -1
- package/src/internal/api/annotations.ts +0 -60
- package/src/internal/object/snapshot.ts +0 -70
- /package/dist/lib/{browser → neutral}/Annotation.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Database.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Entity.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Err.mjs.map +0 -0
- /package/dist/lib/{browser/Filter.mjs.map → neutral/Feed.mjs.map} +0 -0
- /package/dist/lib/{node-esm → neutral}/Filter.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Format.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/JsonSchema.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Key.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Obj.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Order.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Query.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/QueryResult.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Ref.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Relation.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/SchemaRegistry.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Tag.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Type.mjs.map +0 -0
- /package/dist/lib/{browser/chunk-CGS2ULMK.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{browser → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/internal/index.mjs.map +0 -0
- /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
- /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/format.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/index.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
- /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
- /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
- /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
- /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
- /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
- /package/dist/types/src/internal/{api → common/api}/meta.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
- /package/src/internal/{entities → Entity}/util.ts +0 -0
- /package/src/internal/{formats → Format}/date.ts +0 -0
- /package/src/internal/{formats → Format}/format.ts +0 -0
- /package/src/internal/{formats → Format}/index.ts +0 -0
- /package/src/internal/{formats → Format}/number.ts +0 -0
- /package/src/internal/{formats → Format}/object.ts +0 -0
- /package/src/internal/{formats → Format}/select.ts +0 -0
- /package/src/internal/{formats → Format}/string.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
- /package/src/internal/{object → Obj}/ids.ts +0 -0
- /package/src/internal/{object → Obj}/index.ts +0 -0
- /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
- /package/src/internal/{object → Obj}/set-value.test.ts +0 -0
- /package/src/internal/{ref → Ref}/index.ts +0 -0
- /package/src/internal/{schema → Type}/index.ts +0 -0
- /package/src/internal/{api → common/api}/meta.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/change-context.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/errors.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/ownership.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/reactive-array.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
package/src/Database.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
5
7
|
import * as Context from 'effect/Context';
|
|
6
8
|
import * as Effect from 'effect/Effect';
|
|
7
9
|
import * as Layer from 'effect/Layer';
|
|
@@ -9,71 +11,30 @@ import * as Option from 'effect/Option';
|
|
|
9
11
|
import * as Schema from 'effect/Schema';
|
|
10
12
|
import type * as Types from 'effect/Types';
|
|
11
13
|
|
|
12
|
-
import { type QueryAST } from '@dxos/echo-protocol';
|
|
13
14
|
import { promiseWithCauseCapture } from '@dxos/effect';
|
|
14
15
|
import { invariant } from '@dxos/invariant';
|
|
15
|
-
import { DXN, type
|
|
16
|
-
import { type QueryOptions as QueryOptionsProto } from '@dxos/protocols/proto/dxos/echo/filter';
|
|
16
|
+
import { DXN, type SpaceId } from '@dxos/keys';
|
|
17
17
|
|
|
18
18
|
import type * as Entity from './Entity';
|
|
19
19
|
import * as Err from './Err';
|
|
20
20
|
import type * as Filter from './Filter';
|
|
21
21
|
import type * as Hypergraph from './Hypergraph';
|
|
22
|
-
import { isInstanceOf } from './internal/
|
|
23
|
-
import type { Ref } from './internal/
|
|
24
|
-
import { type AnyProperties } from './internal/types';
|
|
22
|
+
import { isInstanceOf } from './internal/Annotation';
|
|
23
|
+
import type { Ref } from './internal/Ref/ref';
|
|
24
|
+
import { type AnyProperties } from './internal/common/types';
|
|
25
25
|
import type * as Obj from './Obj';
|
|
26
26
|
import type * as Query from './Query';
|
|
27
27
|
import type * as QueryResult from './QueryResult';
|
|
28
28
|
import type * as SchemaRegistry from './SchemaRegistry';
|
|
29
29
|
import type * as Type from './Type';
|
|
30
30
|
|
|
31
|
-
/**
|
|
32
|
-
* @deprecated Use `QueryAST.QueryOptions` instead.
|
|
33
|
-
*/
|
|
34
|
-
export type QueryOptions = {
|
|
35
|
-
/**
|
|
36
|
-
* @deprecated Use `spaceIds` instead.
|
|
37
|
-
*/
|
|
38
|
-
spaces?: PublicKey[];
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Query only in specific spaces.
|
|
42
|
-
*/
|
|
43
|
-
// TODO(dmaretskyi): Change this to SpaceId.
|
|
44
|
-
spaceIds?: string[];
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Return only the first `limit` results.
|
|
48
|
-
*/
|
|
49
|
-
limit?: number;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Query only local spaces, or remote on agent.
|
|
53
|
-
* @default `QueryOptions.DataLocation.LOCAL`
|
|
54
|
-
*
|
|
55
|
-
* Options:
|
|
56
|
-
* - proto3_optional = true
|
|
57
|
-
*/
|
|
58
|
-
// TODO(burdon): Remove?
|
|
59
|
-
dataLocation?: QueryOptionsProto.DataLocation;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
31
|
/**
|
|
63
32
|
* `query` API function declaration.
|
|
64
33
|
*/
|
|
65
34
|
// TODO(burdon): Reconcile Query and Filter (should only have one root type).
|
|
66
|
-
// TODO(dmaretskyi): Remove query options.
|
|
67
35
|
export interface QueryFn {
|
|
68
|
-
<Q extends Query.Any>(
|
|
69
|
-
|
|
70
|
-
options?: (QueryAST.QueryOptions & QueryOptions) | undefined,
|
|
71
|
-
): QueryResult.QueryResult<Query.Type<Q>>;
|
|
72
|
-
|
|
73
|
-
<F extends Filter.Any>(
|
|
74
|
-
filter: F,
|
|
75
|
-
options?: (QueryAST.QueryOptions & QueryOptions) | undefined,
|
|
76
|
-
): QueryResult.QueryResult<Filter.Type<F>>;
|
|
36
|
+
<Q extends Query.Any>(query: Q): QueryResult.QueryResult<Query.Type<Q>>;
|
|
37
|
+
<F extends Filter.Any>(filter: F): QueryResult.QueryResult<Filter.Type<F>>;
|
|
77
38
|
}
|
|
78
39
|
|
|
79
40
|
/**
|
|
@@ -145,7 +106,10 @@ export interface Database extends Queryable {
|
|
|
145
106
|
/**
|
|
146
107
|
* Return object by local ID.
|
|
147
108
|
*/
|
|
148
|
-
getObjectById<T extends Obj.Unknown = Obj.
|
|
109
|
+
getObjectById<T extends Obj.Unknown = Obj.OfShape<AnyProperties>>(
|
|
110
|
+
id: string,
|
|
111
|
+
opts?: GetObjectByIdOptions,
|
|
112
|
+
): T | undefined;
|
|
149
113
|
|
|
150
114
|
/**
|
|
151
115
|
* Query objects.
|
|
@@ -186,151 +150,168 @@ export const isDatabase = (obj: unknown): obj is Database => {
|
|
|
186
150
|
|
|
187
151
|
export const Database: Schema.Schema<Database> = Schema.Any.pipe(Schema.filter((space) => isDatabase(space)));
|
|
188
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Effect service tag for Database dependency injection.
|
|
155
|
+
*/
|
|
189
156
|
export class Service extends Context.Tag('@dxos/echo/Database/Service')<
|
|
190
157
|
Service,
|
|
191
158
|
{
|
|
192
159
|
readonly db: Database;
|
|
193
160
|
}
|
|
194
|
-
>() {
|
|
195
|
-
static notAvailable = Layer.succeed(Service, {
|
|
196
|
-
get db(): Database {
|
|
197
|
-
throw new Error('Database not available');
|
|
198
|
-
},
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
static make = (db: Database): Context.Tag.Service<Service> => {
|
|
202
|
-
return {
|
|
203
|
-
get db() {
|
|
204
|
-
return db;
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
};
|
|
161
|
+
>() {}
|
|
208
162
|
|
|
209
|
-
|
|
210
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Layer that provides a Database service that throws when accessed.
|
|
165
|
+
* Useful as a default layer when no database is available.
|
|
166
|
+
*/
|
|
167
|
+
export const notAvailable = Layer.succeed(Service, {
|
|
168
|
+
get db(): Database {
|
|
169
|
+
throw new Error('Database not available');
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Creates a Database service instance from a Database.
|
|
175
|
+
*/
|
|
176
|
+
export const makeService = (db: Database): Context.Tag.Service<Service> => {
|
|
177
|
+
return {
|
|
178
|
+
get db() {
|
|
179
|
+
return db;
|
|
180
|
+
},
|
|
211
181
|
};
|
|
182
|
+
};
|
|
212
183
|
|
|
213
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Creates a Layer that provides the Database service.
|
|
186
|
+
*/
|
|
187
|
+
export const layer = (db: Database): Layer.Layer<Service> => {
|
|
188
|
+
return Layer.succeed(Service, makeService(db));
|
|
189
|
+
};
|
|
214
190
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
191
|
+
/**
|
|
192
|
+
* Returns the space ID of the database.
|
|
193
|
+
*/
|
|
194
|
+
export const spaceId = Effect.gen(function* () {
|
|
195
|
+
const { db } = yield* Service;
|
|
196
|
+
return db.spaceId;
|
|
197
|
+
});
|
|
222
198
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
ref: DXN | Ref<any>,
|
|
232
|
-
schema: S,
|
|
233
|
-
): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service>;
|
|
234
|
-
} = (<S extends Type.Entity.Any>(
|
|
199
|
+
/**
|
|
200
|
+
* Resolves an object by its DXN.
|
|
201
|
+
*/
|
|
202
|
+
export const resolve: {
|
|
203
|
+
// No type check.
|
|
204
|
+
(ref: DXN | Ref<any>): Effect.Effect<Entity.Unknown, never, Service>;
|
|
205
|
+
// Check matches schema.
|
|
206
|
+
<S extends Type.AnyEntity>(
|
|
235
207
|
ref: DXN | Ref<any>,
|
|
236
|
-
schema
|
|
237
|
-
): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
invariant(!schema || isInstanceOf(schema, object), 'Object type mismatch.');
|
|
255
|
-
return object as any;
|
|
256
|
-
})) as any;
|
|
208
|
+
schema: S,
|
|
209
|
+
): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service>;
|
|
210
|
+
} = (<S extends Type.AnyEntity>(
|
|
211
|
+
ref: DXN | Ref<any>,
|
|
212
|
+
schema?: S,
|
|
213
|
+
): Effect.Effect<Schema.Schema.Type<S>, Err.ObjectNotFoundError, Service> =>
|
|
214
|
+
Effect.gen(function* () {
|
|
215
|
+
const { db } = yield* Service;
|
|
216
|
+
const dxn = ref instanceof DXN ? ref : ref.dxn;
|
|
217
|
+
const object = yield* promiseWithCauseCapture(() =>
|
|
218
|
+
db.graph
|
|
219
|
+
.createRefResolver({
|
|
220
|
+
context: {
|
|
221
|
+
space: db.spaceId,
|
|
222
|
+
},
|
|
223
|
+
})
|
|
224
|
+
.resolve(dxn),
|
|
225
|
+
);
|
|
257
226
|
|
|
258
|
-
/**
|
|
259
|
-
* Loads an object reference.
|
|
260
|
-
*/
|
|
261
|
-
static load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never> = Effect.fn(function* (ref) {
|
|
262
|
-
const object = yield* promiseWithCauseCapture(() => ref.tryLoad());
|
|
263
227
|
if (!object) {
|
|
264
|
-
return yield* Effect.fail(new Err.ObjectNotFoundError(
|
|
228
|
+
return yield* Effect.fail(new Err.ObjectNotFoundError(dxn));
|
|
265
229
|
}
|
|
266
|
-
|
|
267
|
-
|
|
230
|
+
invariant(!schema || isInstanceOf(schema, object), 'Object type mismatch.');
|
|
231
|
+
return object as any;
|
|
232
|
+
})) as any;
|
|
268
233
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
234
|
+
/**
|
|
235
|
+
* Loads an object reference.
|
|
236
|
+
*/
|
|
237
|
+
export const load: <T>(ref: Ref<T>) => Effect.Effect<T, Err.ObjectNotFoundError, never> = Effect.fn(function* (ref) {
|
|
238
|
+
const object = yield* promiseWithCauseCapture(() => ref.tryLoad());
|
|
239
|
+
if (!object) {
|
|
240
|
+
return yield* Effect.fail(new Err.ObjectNotFoundError(ref.dxn));
|
|
241
|
+
}
|
|
242
|
+
return object;
|
|
243
|
+
});
|
|
277
244
|
|
|
278
|
-
|
|
279
|
-
|
|
245
|
+
/**
|
|
246
|
+
* Loads an object reference option.
|
|
247
|
+
*/
|
|
248
|
+
// TODO(dmaretskyi): Do we need this -- you can just use `Effect.catchTag` in calling code instead.
|
|
249
|
+
export const loadOption: <T>(ref: Ref<T>) => Effect.Effect<Option.Option<T>, never, never> = Effect.fn(function* (ref) {
|
|
250
|
+
const object = yield* load(ref).pipe(Effect.catchTag('ObjectNotFoundError', () => Effect.succeed(undefined)));
|
|
280
251
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
*/
|
|
284
|
-
static add = <T extends Entity.Unknown>(obj: T): Effect.Effect<T, never, Service> =>
|
|
285
|
-
Service.pipe(Effect.map(({ db }) => db.add(obj)));
|
|
252
|
+
return Option.fromNullable(object);
|
|
253
|
+
});
|
|
286
254
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
255
|
+
/**
|
|
256
|
+
* Adds an object to the database.
|
|
257
|
+
* @see {@link Database.add}
|
|
258
|
+
*/
|
|
259
|
+
export const add = <T extends Entity.Unknown>(obj: T): Effect.Effect<T, never, Service> =>
|
|
260
|
+
Service.pipe(Effect.map(({ db }) => db.add(obj)));
|
|
292
261
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
262
|
+
/**
|
|
263
|
+
* Removes an object from the database.
|
|
264
|
+
* @see {@link Database.remove}
|
|
265
|
+
*/
|
|
266
|
+
export const remove = <T extends Entity.Unknown>(obj: T): Effect.Effect<void, never, Service> =>
|
|
267
|
+
Service.pipe(Effect.map(({ db }) => db.remove(obj)));
|
|
298
268
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
} = (queryOrFilter: Query.Any | Filter.Any) =>
|
|
306
|
-
Service.pipe(
|
|
307
|
-
Effect.map(({ db }) => db.query(queryOrFilter as any) as QueryResult.QueryResult<any>),
|
|
308
|
-
Effect.withSpan('Service.query'),
|
|
309
|
-
);
|
|
269
|
+
/**
|
|
270
|
+
* Flushes pending changes to disk.
|
|
271
|
+
* @see {@link Database.flush}
|
|
272
|
+
*/
|
|
273
|
+
export const flush = (opts?: FlushOptions) =>
|
|
274
|
+
Service.pipe(Effect.flatMap(({ db }) => promiseWithCauseCapture(() => db.flush(opts))));
|
|
310
275
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
)
|
|
276
|
+
/**
|
|
277
|
+
* Creates a `QueryResult` object that can be subscribed to.
|
|
278
|
+
*/
|
|
279
|
+
export const query: {
|
|
280
|
+
<Q extends Query.Any>(query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;
|
|
281
|
+
<F extends Filter.Any>(filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;
|
|
282
|
+
} = (queryOrFilter: Query.Any | Filter.Any) =>
|
|
283
|
+
Service.pipe(
|
|
284
|
+
Effect.map(({ db }) => db.query(queryOrFilter as any) as QueryResult.QueryResult<any>),
|
|
285
|
+
Effect.withSpan('Database.query'),
|
|
286
|
+
);
|
|
321
287
|
|
|
322
|
-
|
|
288
|
+
/**
|
|
289
|
+
* Executes the query once and returns the results.
|
|
290
|
+
*/
|
|
291
|
+
export const runQuery: {
|
|
292
|
+
<Q extends Query.Any>(query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;
|
|
293
|
+
<F extends Filter.Any>(filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;
|
|
294
|
+
} = (queryOrFilter: Query.Any | Filter.Any) =>
|
|
295
|
+
query(queryOrFilter as any).pipe(Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())));
|
|
323
296
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
297
|
+
/**
|
|
298
|
+
* Creates a schema query result that can be subscribed to.
|
|
299
|
+
*/
|
|
300
|
+
// TODO(dmaretskyi): Change API to `yield* Database.querySchema(...).first` and `yield* Database.querySchema(...).schema`.
|
|
301
|
+
export const schemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(
|
|
302
|
+
schemaQueryOptions?: Q & SchemaRegistry.Query,
|
|
303
|
+
): Effect.Effect<QueryResult.QueryResult<SchemaRegistry.ExtractQueryResult<Q>>, never, Service> =>
|
|
304
|
+
Service.pipe(
|
|
305
|
+
Effect.map(({ db }) => db.schemaRegistry.query(schemaQueryOptions)),
|
|
306
|
+
Effect.withSpan('Database.schemaQuery'),
|
|
307
|
+
);
|
|
331
308
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
309
|
+
/**
|
|
310
|
+
* Executes a schema query once and returns the results.
|
|
311
|
+
*/
|
|
312
|
+
export const runSchemaQuery = <Q extends Types.NoExcessProperties<SchemaRegistry.Query, Q>>(
|
|
313
|
+
schemaQueryOptions?: Q & SchemaRegistry.Query,
|
|
314
|
+
): Effect.Effect<SchemaRegistry.ExtractQueryResult<Q>[], never, Service> =>
|
|
315
|
+
schemaQuery(schemaQueryOptions).pipe(
|
|
316
|
+
Effect.flatMap((queryResult) => promiseWithCauseCapture(() => queryResult.run())),
|
|
317
|
+
);
|
package/src/Dataset.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import { pipe } from 'effect/Function';
|
|
8
|
+
import * as Predicate from 'effect/Predicate';
|
|
9
|
+
import * as Schema from 'effect/Schema';
|
|
10
|
+
|
|
11
|
+
import * as Collection from './Collection';
|
|
12
|
+
import * as Feed from './Feed';
|
|
13
|
+
import * as Obj from './Obj';
|
|
14
|
+
import * as View from './View';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Abstart set of objects, represented by a view, feed, or collection.
|
|
18
|
+
*/
|
|
19
|
+
export const Dataset = Schema.Union(Feed.Feed, Collection.Collection, View.View);
|
|
20
|
+
export type Dataset = Feed.Feed | Collection.Collection | View.View;
|
|
21
|
+
|
|
22
|
+
export const isDataset: (value: unknown) => value is Dataset = pipe(
|
|
23
|
+
Obj.instanceOf(Feed.Feed),
|
|
24
|
+
Predicate.or(Obj.instanceOf(Collection.Collection)),
|
|
25
|
+
Predicate.or(Obj.instanceOf(View.View)),
|
|
26
|
+
);
|
package/src/Entity.ts
CHANGED
|
@@ -2,46 +2,28 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
5
7
|
import type { ForeignKey } from '@dxos/echo-protocol';
|
|
6
8
|
import type { DXN, ObjectId } from '@dxos/keys';
|
|
7
9
|
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
EntityKindSchema,
|
|
12
|
-
KindId,
|
|
13
|
-
type Mutable,
|
|
14
|
-
type ObjectJSON,
|
|
15
|
-
type ObjectMeta,
|
|
16
|
-
type ReadonlyMeta,
|
|
17
|
-
SnapshotKindId,
|
|
18
|
-
addTag as addTag$,
|
|
19
|
-
change as change$,
|
|
20
|
-
getDXN as getDXN$,
|
|
21
|
-
getDatabase as getDatabase$,
|
|
22
|
-
getDescription as getDescription$,
|
|
23
|
-
getEntityKind,
|
|
24
|
-
getKeys as getKeys$,
|
|
25
|
-
getLabel as getLabel$,
|
|
26
|
-
getMetaChecked as getMeta$,
|
|
27
|
-
getTypeDXN as getTypeDXN$,
|
|
28
|
-
getTypename as getTypename$,
|
|
29
|
-
isDeleted as isDeleted$,
|
|
30
|
-
removeTag as removeTag$,
|
|
31
|
-
subscribe as subscribe$,
|
|
32
|
-
objectToJSON as toJSON$,
|
|
33
|
-
} from './internal';
|
|
10
|
+
import * as entityInternal from './internal/Entity';
|
|
11
|
+
import * as internal from './internal';
|
|
12
|
+
import type * as Relation from './Relation';
|
|
34
13
|
|
|
35
14
|
// Re-export KindId and SnapshotKindId from internal.
|
|
36
|
-
export
|
|
15
|
+
export const KindId = internal.KindId;
|
|
16
|
+
export type KindId = typeof internal.KindId;
|
|
17
|
+
export const SnapshotKindId = internal.SnapshotKindId;
|
|
18
|
+
export type SnapshotKindId = typeof internal.SnapshotKindId;
|
|
37
19
|
|
|
38
20
|
// NOTE: Relation does not extend Obj so that, for example, we can prevent Relations from being used as source and target objects.
|
|
39
21
|
// However, we generally refer to Obj and Relation instances as "objects",
|
|
40
22
|
// and many API methods accept both Obj.Unknown and Relation.Unknown (i.e., Entity.Unknown) instances.
|
|
41
23
|
|
|
42
|
-
export const Kind = EntityKind;
|
|
43
|
-
export type Kind = EntityKind;
|
|
44
|
-
export const KindSchema = EntityKindSchema;
|
|
24
|
+
export const Kind = internal.EntityKind;
|
|
25
|
+
export type Kind = internal.EntityKind;
|
|
26
|
+
export const KindSchema = internal.EntityKindSchema;
|
|
45
27
|
|
|
46
28
|
/**
|
|
47
29
|
* Assigns a kind to an Object or Relation instance.
|
|
@@ -89,7 +71,45 @@ export interface Any extends OfKind<Kind> {
|
|
|
89
71
|
[key: string]: unknown;
|
|
90
72
|
}
|
|
91
73
|
|
|
92
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Returns all properties of an object or relation except for the id and kind.
|
|
76
|
+
*/
|
|
77
|
+
export type Properties<T> = Omit<T, 'id' | KindId | Relation.Source | Relation.Target>;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Check if a value is an ECHO entity (object or relation).
|
|
81
|
+
* Returns `false` for snapshots.
|
|
82
|
+
*/
|
|
83
|
+
export const isEntity = (value: unknown): value is Unknown => {
|
|
84
|
+
if (typeof value !== 'object' || value === null) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return (value as any)[KindId] !== undefined;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Check if a value is an ECHO entity snapshot.
|
|
92
|
+
* Returns `false` for entities.
|
|
93
|
+
*/
|
|
94
|
+
export const isSnapshot = (value: unknown): value is Snapshot => {
|
|
95
|
+
if (typeof value !== 'object' || value === null) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return (value as any)[SnapshotKindId] !== undefined;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// TODO(dmaretskyi): Type introspection -- move to kind.
|
|
102
|
+
export const getKind = internal.getEntityKind;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Property that accesses metadata for an entity.
|
|
106
|
+
*/
|
|
107
|
+
export const Meta: unique symbol = internal.MetaId as any;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Property that accesses metadata for an entity.
|
|
111
|
+
*/
|
|
112
|
+
export type Meta = typeof Meta;
|
|
93
113
|
|
|
94
114
|
//
|
|
95
115
|
// Entity-level functions that work on any entity (object or relation).
|
|
@@ -100,27 +120,27 @@ export const getKind = getEntityKind;
|
|
|
100
120
|
/**
|
|
101
121
|
* JSON representation of an entity.
|
|
102
122
|
*/
|
|
103
|
-
export type JSON = ObjectJSON;
|
|
123
|
+
export type JSON = internal.ObjectJSON;
|
|
104
124
|
|
|
105
125
|
/**
|
|
106
126
|
* Get the DXN of an entity (object or relation).
|
|
107
127
|
*/
|
|
108
|
-
export const getDXN = (entity: Unknown | Snapshot): DXN => getDXN
|
|
128
|
+
export const getDXN = (entity: Unknown | Snapshot): DXN => internal.getDXN(entity);
|
|
109
129
|
|
|
110
130
|
/**
|
|
111
131
|
* Get the DXN of an entity's type.
|
|
112
132
|
*/
|
|
113
|
-
export const getTypeDXN = getTypeDXN
|
|
133
|
+
export const getTypeDXN = internal.getTypeDXN;
|
|
114
134
|
|
|
115
135
|
/**
|
|
116
136
|
* Get the typename of an entity's type.
|
|
117
137
|
*/
|
|
118
|
-
export const getTypename = (entity: Unknown | Snapshot): string | undefined => getTypename
|
|
138
|
+
export const getTypename = (entity: Unknown | Snapshot): string | undefined => internal.getTypename(entity);
|
|
119
139
|
|
|
120
140
|
/**
|
|
121
141
|
* Get the database an entity belongs to.
|
|
122
142
|
*/
|
|
123
|
-
export const getDatabase = (entity: Unknown | Snapshot): any | undefined => getDatabase
|
|
143
|
+
export const getDatabase = (entity: Unknown | Snapshot): any | undefined => internal.getDatabase(entity);
|
|
124
144
|
|
|
125
145
|
/**
|
|
126
146
|
* Get the metadata for an entity.
|
|
@@ -128,43 +148,43 @@ export const getDatabase = (entity: Unknown | Snapshot): any | undefined => getD
|
|
|
128
148
|
* Returns read-only meta when passed a regular entity or snapshot.
|
|
129
149
|
*/
|
|
130
150
|
// TODO(wittjosiah): When passed a Snapshot, should return a snapshot of meta, not the live meta proxy.
|
|
131
|
-
export function getMeta(entity: Mutable<Unknown>): ObjectMeta;
|
|
132
|
-
export function getMeta(entity: Unknown | Snapshot): ReadonlyMeta;
|
|
133
|
-
export function getMeta(entity: Unknown | Snapshot | Mutable<Unknown>): ObjectMeta | ReadonlyMeta {
|
|
134
|
-
return
|
|
151
|
+
export function getMeta(entity: Mutable<Unknown>): internal.ObjectMeta;
|
|
152
|
+
export function getMeta(entity: Unknown | Snapshot): internal.ReadonlyMeta;
|
|
153
|
+
export function getMeta(entity: Unknown | Snapshot | Mutable<Unknown>): internal.ObjectMeta | internal.ReadonlyMeta {
|
|
154
|
+
return internal.getMetaChecked(entity);
|
|
135
155
|
}
|
|
136
156
|
|
|
137
157
|
/**
|
|
138
158
|
* Get foreign keys for an entity from the specified source.
|
|
139
159
|
*/
|
|
140
|
-
export const getKeys = (entity: Unknown | Snapshot, source: string): ForeignKey[] => getKeys
|
|
160
|
+
export const getKeys = (entity: Unknown | Snapshot, source: string): ForeignKey[] => internal.getKeys(entity, source);
|
|
141
161
|
|
|
142
162
|
/**
|
|
143
163
|
* Check if an entity is deleted.
|
|
144
164
|
*/
|
|
145
|
-
export const isDeleted = (entity: Unknown | Snapshot): boolean => isDeleted
|
|
165
|
+
export const isDeleted = (entity: Unknown | Snapshot): boolean => internal.isDeleted(entity);
|
|
146
166
|
|
|
147
167
|
/**
|
|
148
168
|
* Get the label of an entity.
|
|
149
169
|
*/
|
|
150
|
-
export const getLabel = (entity: Unknown | Snapshot): string | undefined => getLabel
|
|
170
|
+
export const getLabel = (entity: Unknown | Snapshot): string | undefined => internal.getLabel(entity);
|
|
151
171
|
|
|
152
172
|
/**
|
|
153
173
|
* Get the description of an entity.
|
|
154
174
|
*/
|
|
155
|
-
export const getDescription = (entity: Unknown | Snapshot): string | undefined => getDescription
|
|
175
|
+
export const getDescription = (entity: Unknown | Snapshot): string | undefined => internal.getDescription(entity);
|
|
156
176
|
|
|
157
177
|
/**
|
|
158
178
|
* Convert an entity to its JSON representation.
|
|
159
179
|
*/
|
|
160
|
-
export const toJSON = (entity: Unknown | Snapshot): JSON =>
|
|
180
|
+
export const toJSON = (entity: Unknown | Snapshot): JSON => internal.objectToJSON(entity);
|
|
161
181
|
|
|
162
182
|
/**
|
|
163
183
|
* Subscribe to changes on an entity (object or relation).
|
|
164
184
|
* @returns Unsubscribe function.
|
|
165
185
|
*/
|
|
166
186
|
export const subscribe = (entity: Unknown, callback: () => void): (() => void) => {
|
|
167
|
-
return subscribe
|
|
187
|
+
return internal.subscribe(entity, callback);
|
|
168
188
|
};
|
|
169
189
|
|
|
170
190
|
//
|
|
@@ -174,7 +194,7 @@ export const subscribe = (entity: Unknown, callback: () => void): (() => void) =
|
|
|
174
194
|
/**
|
|
175
195
|
* Used to provide a mutable view of an entity within `Entity.change`.
|
|
176
196
|
*/
|
|
177
|
-
export type
|
|
197
|
+
export type Mutable<T> = internal.Mutable<T>;
|
|
178
198
|
|
|
179
199
|
/**
|
|
180
200
|
* Perform mutations on an entity (object or relation) within a change context.
|
|
@@ -200,18 +220,18 @@ export type { Mutable };
|
|
|
200
220
|
*
|
|
201
221
|
* Note: For type-specific operations, prefer `Obj.change` or `Relation.change`.
|
|
202
222
|
*/
|
|
203
|
-
export const change = <T extends Unknown>(entity: T, callback: ChangeCallback<T>): void => {
|
|
204
|
-
change
|
|
223
|
+
export const change = <T extends Unknown>(entity: T, callback: internal.ChangeCallback<T>): void => {
|
|
224
|
+
internal.change(entity, callback);
|
|
205
225
|
};
|
|
206
226
|
|
|
207
227
|
/**
|
|
208
228
|
* Add a tag to an entity.
|
|
209
229
|
* Must be called within an `Entity.change`, `Obj.change`, or `Relation.change` callback.
|
|
210
230
|
*/
|
|
211
|
-
export const addTag = (entity: Mutable<Unknown>, tag: string): void => addTag
|
|
231
|
+
export const addTag = (entity: Mutable<Unknown>, tag: string): void => internal.addTag(entity, tag);
|
|
212
232
|
|
|
213
233
|
/**
|
|
214
234
|
* Remove a tag from an entity.
|
|
215
235
|
* Must be called within an `Entity.change`, `Obj.change`, or `Relation.change` callback.
|
|
216
236
|
*/
|
|
217
|
-
export const removeTag = (entity: Mutable<Unknown>, tag: string): void => removeTag
|
|
237
|
+
export const removeTag = (entity: Mutable<Unknown>, tag: string): void => internal.removeTag(entity, tag);
|
package/src/Err.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
5
7
|
import { BaseError, type BaseErrorOptions } from '@dxos/errors';
|
|
6
8
|
import { type DXN } from '@dxos/keys';
|
|
7
9
|
|
|
@@ -16,3 +18,23 @@ export class ObjectNotFoundError extends BaseError.extend('ObjectNotFoundError',
|
|
|
16
18
|
super({ context: { dxn }, ...options });
|
|
17
19
|
}
|
|
18
20
|
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Reason why getting a reactive object from a snapshot failed.
|
|
24
|
+
* - `no-database`: The snapshot is not associated with a database.
|
|
25
|
+
* - `object-not-found`: The object was removed or does not exist in the database.
|
|
26
|
+
*/
|
|
27
|
+
export type GetReactiveErrorReason = 'no-database' | 'object-not-found';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Error thrown when a reactive object cannot be resolved from a snapshot.
|
|
31
|
+
* Extends `BaseError` with a `reason` and optional `snapshotId` in its context.
|
|
32
|
+
*/
|
|
33
|
+
export class GetReactiveError extends BaseError.extend(
|
|
34
|
+
'GetReactiveError',
|
|
35
|
+
'Failed to get reactive object from snapshot',
|
|
36
|
+
) {
|
|
37
|
+
constructor(options: { reason: GetReactiveErrorReason; snapshotId?: string } & BaseErrorOptions) {
|
|
38
|
+
super({ context: { reason: options.reason, snapshotId: options.snapshotId }, ...options });
|
|
39
|
+
}
|
|
40
|
+
}
|