@dxos/echo 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8
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/neutral/Annotation.mjs +8 -3
- package/dist/lib/neutral/Database.mjs +34 -6
- package/dist/lib/neutral/Entity.mjs +18 -10
- package/dist/lib/neutral/Err.mjs +3 -1
- package/dist/lib/neutral/Feed.mjs +47 -0
- package/dist/lib/neutral/Feed.mjs.map +7 -0
- package/dist/lib/neutral/Filter.mjs +11 -8
- package/dist/lib/neutral/Format.mjs +3 -3
- package/dist/lib/neutral/JsonSchema.mjs +9 -9
- package/dist/lib/neutral/Obj.mjs +35 -15
- package/dist/lib/neutral/Order.mjs +1 -1
- package/dist/lib/neutral/Query.mjs +19 -9
- package/dist/lib/neutral/Ref.mjs +9 -7
- package/dist/lib/neutral/Relation.mjs +20 -11
- package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
- package/dist/lib/neutral/Tag.mjs +13 -10
- package/dist/lib/neutral/Type.mjs +13 -23
- package/dist/lib/neutral/chunk-43Y5DOS6.mjs +396 -0
- package/dist/lib/neutral/chunk-43Y5DOS6.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-2MTHJ5UW.mjs → chunk-4JRI2ZJI.mjs} +134 -24
- package/dist/lib/neutral/chunk-4JRI2ZJI.mjs.map +7 -0
- package/dist/lib/neutral/chunk-6DNYDXCV.mjs +159 -0
- package/dist/lib/neutral/chunk-6DNYDXCV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-6GPU7XC3.mjs +283 -0
- package/dist/lib/neutral/chunk-6GPU7XC3.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-IP2GHXWA.mjs → chunk-6K2MVI2O.mjs} +5 -5
- package/dist/lib/neutral/chunk-6K2MVI2O.mjs.map +7 -0
- package/dist/lib/neutral/chunk-7VNVH63N.mjs +106 -0
- package/dist/lib/neutral/chunk-7VNVH63N.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-62DWJ6CE.mjs → chunk-B5OXLWZL.mjs} +14 -14
- package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-4L6DOFXP.mjs → chunk-BNCCGLJN.mjs} +1 -1
- package/dist/lib/neutral/{chunk-4L6DOFXP.mjs.map → chunk-BNCCGLJN.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-BOZZPUXE.mjs +787 -0
- package/dist/lib/neutral/chunk-BOZZPUXE.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-SU2LVM7J.mjs → chunk-C4JZK4J7.mjs} +1596 -2730
- package/dist/lib/neutral/chunk-C4JZK4J7.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-HMOXCO27.mjs → chunk-FXEG7EOK.mjs} +8 -3
- package/dist/lib/neutral/chunk-FXEG7EOK.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-4TT624YA.mjs → chunk-FZO7LQO7.mjs} +2 -2
- package/dist/lib/neutral/{chunk-4TT624YA.mjs.map → chunk-FZO7LQO7.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-NEGC54NE.mjs +130 -0
- package/dist/lib/neutral/chunk-NEGC54NE.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-VB5HVDCA.mjs → chunk-NXMFBIT5.mjs} +16 -4
- package/dist/lib/neutral/chunk-NXMFBIT5.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-NWUO5FKZ.mjs → chunk-OENWMTE6.mjs} +8 -2
- package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-6QPSGMEF.mjs → chunk-ROAGDPV7.mjs} +32 -8
- package/dist/lib/neutral/chunk-ROAGDPV7.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-CUDIBUM4.mjs → chunk-SEMVAGBM.mjs} +97 -24
- package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-RPB6V4BE.mjs → chunk-UBEZSGXY.mjs} +14 -1
- package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ROKO4RKJ.mjs → chunk-UI6MWK5W.mjs} +2 -2
- package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-3ZEAZF7T.mjs → chunk-UTBRYVQC.mjs} +8 -4
- package/dist/lib/neutral/chunk-UTBRYVQC.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-VR4A4WGG.mjs → chunk-W47JKR3X.mjs} +72 -23
- package/dist/lib/neutral/chunk-W47JKR3X.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-YQYMWZAD.mjs → chunk-WYOKA6AE.mjs} +4 -4
- package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-XMIDBDE6.mjs → chunk-YMNSMKKW.mjs} +11 -56
- package/dist/lib/neutral/chunk-YMNSMKKW.mjs.map +7 -0
- package/dist/lib/neutral/chunk-YWXWXIE5.mjs +34 -0
- package/dist/lib/neutral/chunk-YWXWXIE5.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +39 -26
- package/dist/lib/neutral/internal/index.mjs +52 -38
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/testing/index.mjs +41 -34
- package/dist/lib/neutral/testing/index.mjs.map +3 -3
- 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 +79 -84
- 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 +8 -3
- 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 +151 -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 +12 -5
- 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 +19 -14
- package/src/Annotation.ts +31 -1
- package/src/Collection.ts +37 -0
- package/src/Database.ts +154 -173
- package/src/Dataset.ts +26 -0
- package/src/Entity.ts +71 -51
- package/src/Err.ts +22 -0
- package/src/Feed.ts +262 -0
- package/src/Filter.ts +19 -4
- package/src/Format.ts +3 -3
- package/src/Hypergraph.ts +9 -4
- package/src/JsonSchema.ts +14 -4
- package/src/Obj.test.ts +63 -2
- package/src/Obj.ts +278 -133
- 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 +107 -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 +42 -15
- 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/neutral/chunk-2MTHJ5UW.mjs.map +0 -7
- package/dist/lib/neutral/chunk-3ZEAZF7T.mjs.map +0 -7
- package/dist/lib/neutral/chunk-62DWJ6CE.mjs.map +0 -7
- package/dist/lib/neutral/chunk-6QPSGMEF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-CUDIBUM4.mjs.map +0 -7
- package/dist/lib/neutral/chunk-HMOXCO27.mjs.map +0 -7
- package/dist/lib/neutral/chunk-IP2GHXWA.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KRHDMXSU.mjs +0 -132
- package/dist/lib/neutral/chunk-KRHDMXSU.mjs.map +0 -7
- package/dist/lib/neutral/chunk-NWUO5FKZ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ROKO4RKJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-RPB6V4BE.mjs.map +0 -7
- package/dist/lib/neutral/chunk-SU2LVM7J.mjs.map +0 -7
- package/dist/lib/neutral/chunk-VB5HVDCA.mjs.map +0 -7
- package/dist/lib/neutral/chunk-VR4A4WGG.mjs.map +0 -7
- package/dist/lib/neutral/chunk-X2MPMYYN.mjs +0 -13
- package/dist/lib/neutral/chunk-X2MPMYYN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XK5OUUBY.mjs +0 -157
- package/dist/lib/neutral/chunk-XK5OUUBY.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XMIDBDE6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-YQYMWZAD.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/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/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
|
+
}
|
package/src/Feed.ts
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import * as Context from 'effect/Context';
|
|
8
|
+
import * as Effect from 'effect/Effect';
|
|
9
|
+
import * as Layer from 'effect/Layer';
|
|
10
|
+
import type * as Option from 'effect/Option';
|
|
11
|
+
import * as Schema from 'effect/Schema';
|
|
12
|
+
|
|
13
|
+
import { DXN } from '@dxos/keys';
|
|
14
|
+
|
|
15
|
+
import type * as Entity from './Entity';
|
|
16
|
+
import type * as Filter from './Filter';
|
|
17
|
+
import * as internal from './internal';
|
|
18
|
+
import * as Obj from './Obj';
|
|
19
|
+
import type * as Query from './Query';
|
|
20
|
+
import type * as QueryResult from './QueryResult';
|
|
21
|
+
import * as Type from './Type';
|
|
22
|
+
import * as Annotation from './Annotation';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Runtime schema for a Feed object.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const feed = Obj.make(Feed.Feed, { name: 'notifications', kind: 'org.dxos.plugin.notifications.v1' });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export const Feed = Schema.Struct({
|
|
33
|
+
/** User-facing display name. */
|
|
34
|
+
name: Schema.String.pipe(Schema.optional),
|
|
35
|
+
/** Identifier for the feed's kind (e.g., plugin id). */
|
|
36
|
+
kind: Schema.String.pipe(internal.FormInputAnnotation.set(false), Schema.optional),
|
|
37
|
+
}).pipe(
|
|
38
|
+
Type.object({
|
|
39
|
+
typename: 'org.dxos.type.feed',
|
|
40
|
+
version: '0.1.0',
|
|
41
|
+
}),
|
|
42
|
+
internal.SystemTypeAnnotation.set(true),
|
|
43
|
+
Annotation.IconAnnotation.set({
|
|
44
|
+
icon: 'ph--rows--regular',
|
|
45
|
+
hue: 'yellow',
|
|
46
|
+
}),
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* TypeScript instance type for a Feed object.
|
|
51
|
+
*/
|
|
52
|
+
export interface Feed extends Schema.Schema.Type<typeof Feed> {}
|
|
53
|
+
|
|
54
|
+
//
|
|
55
|
+
// Types
|
|
56
|
+
//
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Meta key source for storing the backing DXN bound to a feed object.
|
|
60
|
+
*/
|
|
61
|
+
// TODO(dmaretskyi): Enforce that Feed ObjectId = feed storage ID. And remove this key.
|
|
62
|
+
export const DXN_KEY = 'org.dxos.key.feed';
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Opaque cursor for iterating over feed items.
|
|
66
|
+
*/
|
|
67
|
+
// TODO(dmaretskyi): T needs to be referenced in the type structure for typescript to respect it during inference and type-checking.
|
|
68
|
+
export interface Cursor<T = Obj.Snapshot> {
|
|
69
|
+
readonly _tag: 'Cursor';
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Retention options for a feed.
|
|
74
|
+
*/
|
|
75
|
+
export interface RetentionOptions {
|
|
76
|
+
/** Retain items after this cursor position. */
|
|
77
|
+
// TODO(wittjosiah): Use FeedCursor from @dxos/feed?
|
|
78
|
+
cursor?: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
//
|
|
82
|
+
// Factory
|
|
83
|
+
//
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Creates a new feed object.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const feed = Feed.make({ name: 'notifications', kind: 'org.dxos.plugin.notifications.v1' });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
// TODO(wittjosiah): How to control the feed namespace (data/trace)? Why do feeds have namespaces?
|
|
94
|
+
export const make = (props: Obj.MakeProps<typeof Feed> = {}): Feed => Obj.make(Feed, props);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Reads the queue DXN from feed metadata.
|
|
98
|
+
*
|
|
99
|
+
* @deprecated
|
|
100
|
+
*/
|
|
101
|
+
// TODO(wittjosiah): Align backing feed dxn's with object DXN.
|
|
102
|
+
export const getQueueDxn = (feed: Feed): DXN | undefined => {
|
|
103
|
+
const keys = Obj.getKeys(feed, DXN_KEY);
|
|
104
|
+
return keys.length === 0 ? undefined : DXN.parse(keys[0].id);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
//
|
|
108
|
+
// Service
|
|
109
|
+
//
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Effect service for feed operations.
|
|
113
|
+
* Provides the bridge to the underlying storage implementation.
|
|
114
|
+
* Must be provided by the application layer (e.g., echo-db).
|
|
115
|
+
*/
|
|
116
|
+
export class Service extends Context.Tag('@dxos/echo/Feed/Service')<
|
|
117
|
+
Service,
|
|
118
|
+
{
|
|
119
|
+
/**
|
|
120
|
+
* Appends items to a feed.
|
|
121
|
+
*/
|
|
122
|
+
append(feed: Feed, items: Entity.Unknown[]): Promise<void>;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Removes items from a feed by ID.
|
|
126
|
+
*/
|
|
127
|
+
// TODO(dmaretskyi): Change type to ObjectId.
|
|
128
|
+
remove(feed: Feed, ids: string[]): Promise<void>;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Queries items in a feed.
|
|
132
|
+
*/
|
|
133
|
+
query: {
|
|
134
|
+
<Q extends Query.Any>(feed: Feed, query: Q): QueryResult.QueryResult<Query.Type<Q>>;
|
|
135
|
+
<F extends Filter.Any>(feed: Feed, filter: F): QueryResult.QueryResult<Filter.Type<F>>;
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
>() {}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Layer that provides a Feed service that throws when accessed.
|
|
142
|
+
* Useful as a default layer when no feed service is available.
|
|
143
|
+
*/
|
|
144
|
+
export const notAvailable: Layer.Layer<Service> = Layer.succeed(Service, {
|
|
145
|
+
append: () => {
|
|
146
|
+
throw new Error('Feed.Service not available');
|
|
147
|
+
},
|
|
148
|
+
remove: () => {
|
|
149
|
+
throw new Error('Feed.Service not available');
|
|
150
|
+
},
|
|
151
|
+
query: () => {
|
|
152
|
+
throw new Error('Feed.Service not available');
|
|
153
|
+
},
|
|
154
|
+
} as Context.Tag.Service<Service>);
|
|
155
|
+
|
|
156
|
+
//
|
|
157
|
+
// Operations
|
|
158
|
+
//
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Appends items to a feed.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```ts
|
|
165
|
+
* yield* Feed.append(feed, [Obj.make(Notification, { title: 'Hello' })]);
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export const append = (feed: Feed, items: Entity.Unknown[]): Effect.Effect<void, never, Service> =>
|
|
169
|
+
Effect.gen(function* () {
|
|
170
|
+
const service = yield* Service;
|
|
171
|
+
yield* Effect.promise(() => service.append(feed, items));
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Removes items from a feed.
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* ```ts
|
|
179
|
+
* yield* Feed.remove(feed, [item]);
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
// TODO(dmaretskyi): Should we allow snapshots here? - what does it mean to remove a snapshot?
|
|
183
|
+
export const remove = (feed: Feed, items: (Entity.Unknown | Obj.Snapshot)[]): Effect.Effect<void, never, Service> =>
|
|
184
|
+
Effect.gen(function* () {
|
|
185
|
+
const service = yield* Service;
|
|
186
|
+
const ids = items.map((item) => item.id);
|
|
187
|
+
yield* Effect.promise(() => service.remove(feed, ids));
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Creates a reactive query over items in a feed.
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```ts
|
|
195
|
+
* const result = yield* Feed.query(feed, Filter.type(Person));
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
// TODO(dmaretskyi): Suport chained queries:
|
|
199
|
+
// const result = yield* feed.pipe(Feed.query(Filter.type(Person))); result.subscribe(...)
|
|
200
|
+
// const objects = yield* feed.pipe(Feed.query(Filter.type(Person))).run;
|
|
201
|
+
// const object = yield* feed.pipe(Feed.query(Filter.type(Person))).first;
|
|
202
|
+
// ... unify for Database and schema queries.
|
|
203
|
+
export const query: {
|
|
204
|
+
<Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;
|
|
205
|
+
<F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;
|
|
206
|
+
} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>
|
|
207
|
+
Service.pipe(Effect.map((service) => service.query(feed, queryOrFilter as any) as QueryResult.QueryResult<any>));
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Executes a feed query once and returns the results.
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* const items = yield* Feed.runQuery(feed, Filter.type(Person));
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
export const runQuery: {
|
|
218
|
+
<Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;
|
|
219
|
+
<F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;
|
|
220
|
+
} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>
|
|
221
|
+
query(feed, queryOrFilter as any).pipe(Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())));
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Creates a cursor for iterating over feed items.
|
|
225
|
+
* Currently stubbed — cursor operations are not yet implemented.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* const cursor = yield* Feed.cursor<Person>(feed);
|
|
230
|
+
* const item = yield* Feed.next(cursor);
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
// TODO(wittjosiah): Implement cursor operations. Use Effect streams?
|
|
234
|
+
export const cursor = <T = Obj.Snapshot>(_feed: Feed): Effect.Effect<Cursor<T>, never, Service> =>
|
|
235
|
+
Effect.succeed({ _tag: 'Cursor' } as Cursor<T>);
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Returns the next item from a feed cursor.
|
|
239
|
+
* Currently stubbed — cursor operations are not yet implemented.
|
|
240
|
+
*/
|
|
241
|
+
export const next = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<T, never, Service> =>
|
|
242
|
+
Effect.die('Feed.next is not yet implemented');
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Returns the next item from a feed cursor as an Option.
|
|
246
|
+
* Currently stubbed — cursor operations are not yet implemented.
|
|
247
|
+
*/
|
|
248
|
+
export const nextOption = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<Option.Option<T>, never, Service> =>
|
|
249
|
+
Effect.die('Feed.nextOption is not yet implemented');
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Sets the local retention policy for a feed.
|
|
253
|
+
* Currently stubbed — queues do not yet support retention.
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* yield* Feed.setRetention(feed, { count: 1000 });
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
// TODO(feed): Implement when queue retention is supported.
|
|
261
|
+
export const setRetention = (_feed: Feed, _options: RetentionOptions): Effect.Effect<void, never, Service> =>
|
|
262
|
+
Effect.void;
|
package/src/Filter.ts
CHANGED
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
5
7
|
import * as Match from 'effect/Match';
|
|
6
8
|
import * as Schema from 'effect/Schema';
|
|
9
|
+
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
10
|
import type * as Types from 'effect/Types';
|
|
8
11
|
|
|
9
12
|
import { type ForeignKey, type QueryAST } from '@dxos/echo-protocol';
|
|
10
13
|
import { assertArgument } from '@dxos/invariant';
|
|
11
14
|
import { DXN, ObjectId } from '@dxos/keys';
|
|
12
15
|
|
|
13
|
-
import
|
|
16
|
+
import * as internal from './internal';
|
|
14
17
|
import * as Ref from './Ref';
|
|
15
18
|
|
|
16
19
|
export interface Filter<T> {
|
|
@@ -30,7 +33,7 @@ export type Any = Filter<any>;
|
|
|
30
33
|
export type Type<F extends Any> = F extends Filter<infer T> ? T : never;
|
|
31
34
|
|
|
32
35
|
class FilterClass implements Any {
|
|
33
|
-
private static variance: Any['~Filter'] = {} as Any['~Filter'];
|
|
36
|
+
private static 'variance': Any['~Filter'] = {} as Any['~Filter'];
|
|
34
37
|
|
|
35
38
|
constructor(public readonly ast: QueryAST.Filter) {}
|
|
36
39
|
|
|
@@ -101,7 +104,19 @@ export const type = <S extends Schema.Schema.All>(
|
|
|
101
104
|
schema: S | string,
|
|
102
105
|
props?: Props<Schema.Schema.Type<S>>,
|
|
103
106
|
): Filter<Schema.Schema.Type<S>> => {
|
|
104
|
-
|
|
107
|
+
if (Schema.isSchema(schema) && SchemaAST.isUnion(schema.ast)) {
|
|
108
|
+
const typenames = schema.ast.types.map((type) => internal.getTypeDXNFromSpecifier(Schema.make(type)));
|
|
109
|
+
return new FilterClass({
|
|
110
|
+
type: 'or',
|
|
111
|
+
filters: typenames.map((typename) => ({
|
|
112
|
+
type: 'object',
|
|
113
|
+
typename: typename.toString(),
|
|
114
|
+
props: {},
|
|
115
|
+
})),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const dxn = internal.getTypeDXNFromSpecifier(schema);
|
|
105
120
|
return new FilterClass({
|
|
106
121
|
type: 'object',
|
|
107
122
|
typename: dxn.toString(),
|
|
@@ -180,7 +195,7 @@ export const foreignKeys = <S extends Schema.Schema.All>(
|
|
|
180
195
|
schema: S | string,
|
|
181
196
|
keys: ForeignKey[],
|
|
182
197
|
): Filter<Schema.Schema.Type<S>> => {
|
|
183
|
-
const dxn = getTypeDXNFromSpecifier(schema);
|
|
198
|
+
const dxn = internal.getTypeDXNFromSpecifier(schema);
|
|
184
199
|
return new FilterClass({
|
|
185
200
|
type: 'object',
|
|
186
201
|
typename: dxn.toString(),
|
package/src/Format.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import type * as internal from './internal';
|
|
6
6
|
|
|
7
|
-
export * from './internal/
|
|
7
|
+
export * from './internal/Format';
|
|
8
8
|
|
|
9
|
-
export type
|
|
9
|
+
export type Format = internal.TypeFormat;
|
package/src/Hypergraph.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type DXN } from '@dxos/keys';
|
|
|
6
6
|
|
|
7
7
|
import type * as Database from './Database';
|
|
8
8
|
import type * as Entity from './Entity';
|
|
9
|
-
import
|
|
9
|
+
import type * as internal from './internal';
|
|
10
10
|
import type * as Key from './Key';
|
|
11
11
|
import type * as Ref from './Ref';
|
|
12
12
|
import type * as SchemaRegistry from './SchemaRegistry';
|
|
@@ -39,13 +39,12 @@ export interface RefResolverOptions {
|
|
|
39
39
|
* Middleware to change the resolved object before returning it.
|
|
40
40
|
* @deprecated On track to be removed.
|
|
41
41
|
*/
|
|
42
|
-
middleware?: (obj: AnyProperties) => AnyProperties;
|
|
42
|
+
middleware?: (obj: internal.AnyProperties) => internal.AnyProperties;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
46
|
+
* Manages cross-space database interactions.
|
|
47
47
|
*/
|
|
48
|
-
// TODO(burdon): Comment required.
|
|
49
48
|
export interface Hypergraph extends Database.Queryable {
|
|
50
49
|
get schemaRegistry(): SchemaRegistry.SchemaRegistry;
|
|
51
50
|
|
|
@@ -71,4 +70,10 @@ export interface Hypergraph extends Database.Queryable {
|
|
|
71
70
|
*/
|
|
72
71
|
// TODO(dmaretskyi): Restructure API: Remove middleware.
|
|
73
72
|
createRefResolver(options: RefResolverOptions): Ref.Resolver;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Get a database by space ID.
|
|
76
|
+
* @returns The database for the given space ID, or undefined if not found.
|
|
77
|
+
*/
|
|
78
|
+
getDatabase(spaceId: Key.SpaceId): Database.Database | undefined;
|
|
74
79
|
}
|
package/src/JsonSchema.ts
CHANGED
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
5
7
|
import type * as Schema from 'effect/Schema';
|
|
6
8
|
|
|
7
|
-
import
|
|
9
|
+
import * as jsonSchemaInternal from './internal/JsonSchema';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Decode JSON Schema to Effect Schema.
|
|
13
|
+
*/
|
|
14
|
+
export const toEffectSchema = jsonSchemaInternal.toEffectSchema;
|
|
8
15
|
|
|
9
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Encode Effect Schema to JSON Schema.
|
|
18
|
+
*/
|
|
19
|
+
export const toJsonSchema = jsonSchemaInternal.toJsonSchema;
|
|
10
20
|
|
|
11
21
|
/**
|
|
12
22
|
* Serializable JsonSchema type definition.
|
|
13
23
|
*/
|
|
14
|
-
export type JsonSchema = JsonSchemaType;
|
|
24
|
+
export type JsonSchema = jsonSchemaInternal.JsonSchemaType;
|
|
15
25
|
|
|
16
|
-
export const JsonSchema: Schema.Schema<JsonSchemaType> = JsonSchemaType;
|
|
26
|
+
export const JsonSchema: Schema.Schema<jsonSchemaInternal.JsonSchemaType> = jsonSchemaInternal.JsonSchemaType;
|