@dxos/echo 0.8.4-staging.ac66bdf99f → 0.9.1-main.c7dcc2e112
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/LICENSE +102 -5
- package/README.md +7 -7
- package/dist/lib/neutral/Annotation.mjs +45 -6
- package/dist/lib/neutral/Database.mjs +10 -17
- package/dist/lib/neutral/Entity.mjs +35 -20
- package/dist/lib/neutral/Err.mjs +3 -3
- package/dist/lib/neutral/Feed.mjs +23 -19
- package/dist/lib/neutral/Filter.mjs +13 -15
- package/dist/lib/neutral/Format.mjs +23 -3
- package/dist/lib/neutral/JsonSchema.mjs +7 -8
- package/dist/lib/neutral/Key.mjs +9 -5
- package/dist/lib/neutral/Migration.mjs +11 -10
- package/dist/lib/neutral/Obj.mjs +33 -20
- package/dist/lib/neutral/Order.mjs +7 -3
- package/dist/lib/neutral/Query.mjs +17 -17
- package/dist/lib/neutral/QueryResult.mjs +1 -1
- package/dist/lib/neutral/Ref.mjs +10 -9
- package/dist/lib/neutral/Registry.mjs +14 -0
- package/dist/lib/neutral/Relation.mjs +28 -25
- package/dist/lib/neutral/Scope.mjs +12 -0
- package/dist/lib/neutral/Tag.mjs +17 -14
- package/dist/lib/neutral/Type.mjs +54 -26
- package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-35INCYOE.mjs} +1 -1
- package/dist/lib/neutral/chunk-35INCYOE.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-4OIBYSXE.mjs → chunk-3JXQUMUI.mjs} +78 -32
- package/dist/lib/neutral/chunk-3JXQUMUI.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-G3IQMKF7.mjs → chunk-4TPQZPLY.mjs} +130 -119
- package/dist/lib/neutral/chunk-4TPQZPLY.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-TU3GW67D.mjs → chunk-5GAIWRQB.mjs} +40 -40
- package/dist/lib/neutral/chunk-5GAIWRQB.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-B4BASU6W.mjs → chunk-6CEISA3V.mjs} +93 -76
- package/dist/lib/neutral/chunk-6CEISA3V.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-GZQTCRJB.mjs → chunk-6M2Z6WBH.mjs} +22 -2
- package/dist/lib/neutral/chunk-6M2Z6WBH.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-7LOUAPYZ.mjs} +9 -5
- package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-WAK4DMFV.mjs → chunk-A53NTBHE.mjs} +12 -7
- package/dist/lib/neutral/chunk-A53NTBHE.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-EAMSSLZC.mjs → chunk-AFANXSGV.mjs} +83 -46
- package/dist/lib/neutral/chunk-AFANXSGV.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-UBEZSGXY.mjs → chunk-BBFJWWAV.mjs} +6 -6
- package/dist/lib/neutral/chunk-BBFJWWAV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-E7IOTOZD.mjs +108 -0
- package/dist/lib/neutral/chunk-E7IOTOZD.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-UI6MWK5W.mjs → chunk-EVK6XBXO.mjs} +16 -2
- package/dist/lib/neutral/chunk-EVK6XBXO.mjs.map +7 -0
- package/dist/lib/neutral/chunk-HGWQR5KH.mjs +259 -0
- package/dist/lib/neutral/chunk-HGWQR5KH.mjs.map +7 -0
- package/dist/lib/neutral/chunk-JZ6LFQU5.mjs +109 -0
- package/dist/lib/neutral/chunk-JZ6LFQU5.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-JUXPFOEI.mjs → chunk-K3S7D5PR.mjs} +48 -88
- package/dist/lib/neutral/chunk-K3S7D5PR.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-OS35K56T.mjs → chunk-L3OBWBV2.mjs} +3 -3
- package/dist/lib/neutral/{chunk-OS35K56T.mjs.map → chunk-L3OBWBV2.mjs.map} +2 -2
- package/dist/lib/neutral/{chunk-V36VO5SS.mjs → chunk-NOL7O3BL.mjs} +32 -40
- package/dist/lib/neutral/chunk-NOL7O3BL.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-TBKX6JQO.mjs → chunk-O6BH7EPN.mjs} +30 -3
- package/dist/lib/neutral/chunk-O6BH7EPN.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-7RO7CPBZ.mjs → chunk-PLDMJJJC.mjs} +2 -2
- package/dist/lib/neutral/{chunk-HBUZJNZO.mjs → chunk-SZ5WB6HF.mjs} +94 -99
- package/dist/lib/neutral/chunk-SZ5WB6HF.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-BVOFLCVF.mjs → chunk-TF5BSLF6.mjs} +9 -6
- package/dist/lib/neutral/chunk-TF5BSLF6.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-DQYLD2RB.mjs → chunk-TFEWTY5A.mjs} +155 -129
- package/dist/lib/neutral/chunk-TFEWTY5A.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-MOR5ERFM.mjs → chunk-VQYL2OQF.mjs} +771 -1252
- package/dist/lib/neutral/chunk-VQYL2OQF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-WISOH2XH.mjs +36 -0
- package/dist/lib/neutral/chunk-WISOH2XH.mjs.map +7 -0
- package/dist/lib/neutral/chunk-WU3GIANS.mjs +31 -0
- package/dist/lib/neutral/chunk-WU3GIANS.mjs.map +7 -0
- package/dist/lib/neutral/chunk-WZ32BF53.mjs +702 -0
- package/dist/lib/neutral/chunk-WZ32BF53.mjs.map +7 -0
- package/dist/lib/neutral/chunk-X3NUUON4.mjs +184 -0
- package/dist/lib/neutral/chunk-X3NUUON4.mjs.map +7 -0
- package/dist/lib/neutral/chunk-Z3WMRRAZ.mjs +168 -0
- package/dist/lib/neutral/chunk-Z3WMRRAZ.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +47 -41
- package/dist/lib/neutral/internal/index.mjs +157 -72
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/testing/index.mjs +261 -178
- package/dist/lib/neutral/testing/index.mjs.map +4 -4
- package/dist/types/src/Annotation.d.ts +108 -4
- package/dist/types/src/Annotation.d.ts.map +1 -1
- package/dist/types/src/Annotation.test.d.ts +2 -0
- package/dist/types/src/Annotation.test.d.ts.map +1 -0
- package/dist/types/src/Collection.d.ts +2 -3
- package/dist/types/src/Collection.d.ts.map +1 -1
- package/dist/types/src/Database.d.ts +78 -49
- package/dist/types/src/Database.d.ts.map +1 -1
- package/dist/types/src/Dataset.d.ts +16 -6
- package/dist/types/src/Dataset.d.ts.map +1 -1
- package/dist/types/src/Entity.d.ts +103 -28
- package/dist/types/src/Entity.d.ts.map +1 -1
- package/dist/types/src/Err.d.ts +27 -27
- package/dist/types/src/Err.d.ts.map +1 -1
- package/dist/types/src/Feed.d.ts +69 -19
- package/dist/types/src/Feed.d.ts.map +1 -1
- package/dist/types/src/Filter.d.ts +38 -12
- package/dist/types/src/Filter.d.ts.map +1 -1
- package/dist/types/src/Format.d.ts +0 -2
- package/dist/types/src/Format.d.ts.map +1 -1
- package/dist/types/src/Hypergraph.d.ts +14 -9
- package/dist/types/src/Hypergraph.d.ts.map +1 -1
- package/dist/types/src/Json.d.ts +33 -0
- package/dist/types/src/Json.d.ts.map +1 -0
- package/dist/types/src/Json.test.d.ts +2 -0
- package/dist/types/src/Json.test.d.ts.map +1 -0
- package/dist/types/src/JsonSchema.d.ts +2 -2
- package/dist/types/src/JsonSchema.d.ts.map +1 -1
- package/dist/types/src/Key.d.ts +1 -1
- package/dist/types/src/Key.d.ts.map +1 -1
- package/dist/types/src/Migration.d.ts +26 -11
- package/dist/types/src/Migration.d.ts.map +1 -1
- package/dist/types/src/Obj.d.ts +106 -61
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Order.d.ts +10 -0
- package/dist/types/src/Order.d.ts.map +1 -1
- package/dist/types/src/Query.d.ts +34 -12
- package/dist/types/src/Query.d.ts.map +1 -1
- package/dist/types/src/QueryResult.d.ts +21 -0
- package/dist/types/src/QueryResult.d.ts.map +1 -1
- package/dist/types/src/Ref.d.ts +15 -7
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Registry.d.ts +131 -0
- package/dist/types/src/Registry.d.ts.map +1 -0
- package/dist/types/src/Relation.d.ts +73 -41
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/Scope.d.ts +35 -0
- package/dist/types/src/Scope.d.ts.map +1 -0
- package/dist/types/src/Tag.d.ts +21 -5
- package/dist/types/src/Tag.d.ts.map +1 -1
- package/dist/types/src/Type.d.ts +366 -95
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/View.d.ts +9 -12
- package/dist/types/src/View.d.ts.map +1 -1
- package/dist/types/src/exemplars.test.d.ts +2 -0
- package/dist/types/src/exemplars.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +4 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/annotations.d.ts +120 -38
- package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/dictionary.d.ts +24 -0
- package/dist/types/src/internal/Annotation/dictionary.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/entity-dictionary.d.ts +14 -0
- package/dist/types/src/internal/Annotation/entity-dictionary.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/index.d.ts +4 -2
- package/dist/types/src/internal/Annotation/index.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/util.d.ts +14 -5
- package/dist/types/src/internal/Annotation/util.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/api.d.ts +17 -3
- package/dist/types/src/internal/Entity/api.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/entity.d.ts +72 -8
- package/dist/types/src/internal/Entity/entity.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/guard.d.ts +10 -0
- package/dist/types/src/internal/Entity/guard.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/index.d.ts +2 -0
- package/dist/types/src/internal/Entity/index.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/model.d.ts +21 -17
- package/dist/types/src/internal/Entity/model.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/object.d.ts +3 -3
- package/dist/types/src/internal/Entity/object.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/relation.d.ts +30 -7
- package/dist/types/src/internal/Entity/relation.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/type-kind.d.ts +24 -0
- package/dist/types/src/internal/Entity/type-kind.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/type-uri.d.ts +24 -0
- package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/version.d.ts.map +1 -1
- package/dist/types/src/internal/Format/date.d.ts.map +1 -1
- package/dist/types/src/internal/Format/format.d.ts +3 -2
- package/dist/types/src/internal/Format/format.d.ts.map +1 -1
- package/dist/types/src/internal/Format/index.d.ts +2 -2
- package/dist/types/src/internal/Format/index.d.ts.map +1 -1
- package/dist/types/src/internal/Format/number.d.ts.map +1 -1
- package/dist/types/src/internal/Format/object.d.ts +3 -1
- package/dist/types/src/internal/Format/object.d.ts.map +1 -1
- package/dist/types/src/internal/Format/types.d.ts.map +1 -1
- package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -1
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +34 -34
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -1
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts +3 -2
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/atoms.d.ts +43 -0
- package/dist/types/src/internal/Obj/atoms.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/clone.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/common.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/create-object.d.ts +12 -12
- package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/index.d.ts +1 -1
- package/dist/types/src/internal/Obj/index.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/json-serializer.d.ts +8 -8
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/set-value.d.ts +1 -1
- package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/typed-object.d.ts +1 -1
- package/dist/types/src/internal/Query/index.d.ts +2 -0
- package/dist/types/src/internal/Query/index.d.ts.map +1 -0
- package/dist/types/src/internal/{Query.d.ts → Query/pretty.d.ts} +1 -1
- package/dist/types/src/internal/Query/pretty.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/atoms.d.ts +10 -0
- package/dist/types/src/internal/Ref/atoms.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/index.d.ts +1 -0
- package/dist/types/src/internal/Ref/index.d.ts.map +1 -1
- package/dist/types/src/internal/Ref/ref-array.d.ts +2 -2
- package/dist/types/src/internal/Ref/ref.d.ts +114 -19
- package/dist/types/src/internal/Ref/ref.d.ts.map +1 -1
- package/dist/types/src/internal/Ref/strong-deps.d.ts +35 -0
- package/dist/types/src/internal/Ref/strong-deps.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/utils.d.ts +8 -0
- package/dist/types/src/internal/Ref/utils.d.ts.map +1 -0
- package/dist/types/src/internal/Type/compose.d.ts.map +1 -1
- package/dist/types/src/internal/Type/index.d.ts +1 -2
- package/dist/types/src/internal/Type/index.d.ts.map +1 -1
- package/dist/types/src/internal/Type/manipulation.d.ts +0 -1
- package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -1
- package/dist/types/src/internal/Type/type-schema.d.ts +52 -0
- package/dist/types/src/internal/Type/type-schema.d.ts.map +1 -0
- package/dist/types/src/internal/common/api/meta.d.ts +14 -11
- package/dist/types/src/internal/common/api/meta.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/change-context.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/errors.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/make-object.d.ts +11 -5
- package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/reactive-array.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/reactive.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
- package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts +18 -2
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/base.d.ts +4 -4
- package/dist/types/src/internal/common/types/base.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/entity.d.ts +62 -5
- package/dist/types/src/internal/common/types/entity.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/index.d.ts +1 -1
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/meta.d.ts +33 -12
- package/dist/types/src/internal/common/types/meta.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/model-symbols.d.ts +15 -4
- package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/typename.d.ts +7 -0
- package/dist/types/src/internal/common/types/typename.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/version.d.ts +1 -1
- package/dist/types/src/internal/common/types/well-known-types.d.ts +11 -0
- package/dist/types/src/internal/common/types/well-known-types.d.ts.map +1 -0
- package/dist/types/src/internal/index.d.ts +2 -2
- package/dist/types/src/internal/index.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/registry.d.ts +9 -0
- package/dist/types/src/testing/registry.d.ts.map +1 -0
- package/dist/types/src/testing/test-data.d.ts +8 -8
- package/dist/types/src/testing/test-data.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +83 -89
- package/dist/types/src/testing/test-schema.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts +5 -3
- package/dist/types/src/testing/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +26 -24
- package/src/Annotation.test.ts +439 -0
- package/src/Annotation.ts +163 -4
- package/src/Collection.ts +5 -9
- package/src/Database.ts +126 -101
- package/src/Dataset.ts +10 -2
- package/src/Entity.test.ts +116 -6
- package/src/Entity.ts +136 -32
- package/src/Err.ts +4 -4
- package/src/Feed.ts +95 -44
- package/src/Filter.ts +70 -40
- package/src/Format.ts +0 -4
- package/src/Hypergraph.ts +14 -9
- package/src/Json.test.ts +175 -0
- package/src/Json.ts +103 -0
- package/src/Key.ts +1 -1
- package/src/Migration.ts +39 -19
- package/src/Obj.test.ts +122 -20
- package/src/Obj.ts +170 -91
- package/src/Order.ts +22 -0
- package/src/Query.test.ts +183 -154
- package/src/Query.ts +172 -85
- package/src/QueryResult.ts +26 -0
- package/src/Ref.ts +22 -4
- package/src/Registry.ts +155 -0
- package/src/Relation.test.ts +10 -10
- package/src/Relation.ts +116 -69
- package/src/Scope.ts +50 -0
- package/src/Tag.md +88 -0
- package/src/Tag.ts +50 -6
- package/src/Type.test.ts +223 -18
- package/src/Type.ts +623 -131
- package/src/View.ts +14 -23
- package/src/exemplars.test.ts +21 -0
- package/src/index.ts +4 -4
- package/src/internal/Annotation/annotations.test.ts +31 -11
- package/src/internal/Annotation/annotations.ts +199 -111
- package/src/internal/Annotation/dictionary.ts +47 -0
- package/src/internal/Annotation/entity-dictionary.ts +74 -0
- package/src/internal/Annotation/index.ts +4 -2
- package/src/internal/Annotation/util.ts +17 -8
- package/src/internal/Entity/api.ts +54 -7
- package/src/internal/Entity/entity.ts +196 -47
- package/src/internal/Entity/guard.ts +26 -0
- package/src/internal/Entity/index.ts +2 -0
- package/src/internal/Entity/model.ts +38 -28
- package/src/internal/Entity/object.ts +21 -5
- package/src/internal/Entity/relation.ts +68 -34
- package/src/internal/Entity/type-kind.ts +75 -0
- package/src/internal/Entity/type-uri.ts +92 -0
- package/src/internal/Entity/util.ts +9 -9
- package/src/internal/Format/date.ts +0 -4
- package/src/internal/Format/format.test.ts +21 -0
- package/src/internal/Format/index.ts +2 -3
- package/src/internal/Format/object.ts +21 -4
- package/src/internal/Format/types.ts +1 -1
- package/src/internal/JsonSchema/annotations.ts +1 -1
- package/src/internal/JsonSchema/json-schema-type.ts +4 -4
- package/src/internal/JsonSchema/json-schema.test.ts +71 -145
- package/src/internal/JsonSchema/json-schema.ts +49 -35
- package/src/internal/Obj/atoms.ts +275 -0
- package/src/internal/Obj/clone.ts +9 -4
- package/src/internal/Obj/create-object.test.ts +12 -10
- package/src/internal/Obj/create-object.ts +68 -22
- package/src/internal/Obj/index.ts +1 -1
- package/src/internal/Obj/inspect.ts +5 -3
- package/src/internal/Obj/json-serializer.test.ts +101 -22
- package/src/internal/Obj/json-serializer.ts +92 -36
- package/src/internal/Obj/set-value.test.ts +22 -45
- package/src/internal/Obj/set-value.ts +12 -19
- package/src/internal/Obj/snapshot.ts +13 -4
- package/src/internal/Obj/typed-object.test.ts +9 -11
- package/src/internal/Obj/typed-object.ts +1 -1
- package/src/internal/Query/index.ts +5 -0
- package/src/internal/{Query.ts → Query/pretty.ts} +40 -12
- package/src/internal/Ref/atoms.ts +20 -0
- package/src/internal/Ref/index.ts +1 -0
- package/src/internal/Ref/ref-array.ts +3 -3
- package/src/internal/Ref/ref.test.ts +18 -27
- package/src/internal/Ref/ref.ts +224 -69
- package/src/internal/Ref/strong-deps.ts +107 -0
- package/src/internal/Ref/utils.ts +45 -0
- package/src/internal/Type/compose.test.ts +3 -1
- package/src/internal/Type/index.ts +1 -2
- package/src/internal/Type/manipulation.ts +0 -25
- package/src/internal/Type/type-schema.ts +60 -0
- package/src/internal/common/README.md +2 -2
- package/src/internal/common/api/meta.ts +19 -17
- package/src/internal/common/proxy/change-context.ts +1 -1
- package/src/internal/common/proxy/change.test.ts +91 -83
- package/src/internal/common/proxy/errors.ts +2 -2
- package/src/internal/common/proxy/handler.test.ts +1 -1
- package/src/internal/common/proxy/json-serializer.ts +27 -16
- package/src/internal/common/proxy/make-object.ts +44 -20
- package/src/internal/common/proxy/ownership.ts +2 -2
- package/src/internal/common/proxy/reactive-array.ts +1 -1
- package/src/internal/common/proxy/reactive.test.ts +54 -0
- package/src/internal/common/proxy/reactive.ts +11 -2
- package/src/internal/common/proxy/schema.test.ts +48 -86
- package/src/internal/common/proxy/typed-handler.test.ts +12 -11
- package/src/internal/common/proxy/typed-handler.ts +78 -16
- package/src/internal/common/proxy/typed-object.test.ts +16 -28
- package/src/internal/common/types/base.ts +4 -4
- package/src/internal/common/types/entity.ts +80 -1
- package/src/internal/common/types/index.ts +6 -1
- package/src/internal/common/types/meta.ts +62 -20
- package/src/internal/common/types/model-symbols.ts +24 -4
- package/src/internal/common/types/typename.ts +39 -3
- package/src/internal/common/types/well-known-types.ts +15 -0
- package/src/internal/index.ts +6 -4
- package/src/testing/api.test.ts +15 -9
- package/src/testing/index.ts +1 -0
- package/src/testing/registry.ts +44 -0
- package/src/testing/test-data.ts +159 -99
- package/src/testing/test-schema.ts +22 -58
- package/src/testing/util.ts +14 -11
- package/dist/lib/neutral/Extension.mjs +0 -18
- package/dist/lib/neutral/SchemaRegistry.mjs +0 -2
- package/dist/lib/neutral/chunk-2KHZ36F5.mjs +0 -361
- package/dist/lib/neutral/chunk-2KHZ36F5.mjs.map +0 -7
- package/dist/lib/neutral/chunk-4OIBYSXE.mjs.map +0 -7
- package/dist/lib/neutral/chunk-4P3IXBLT.mjs +0 -45
- package/dist/lib/neutral/chunk-4P3IXBLT.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +0 -7
- package/dist/lib/neutral/chunk-B4BASU6W.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BNCCGLJN.mjs +0 -7
- package/dist/lib/neutral/chunk-BNCCGLJN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BVOFLCVF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-DQYLD2RB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-EAMSSLZC.mjs.map +0 -7
- package/dist/lib/neutral/chunk-G3IQMKF7.mjs.map +0 -7
- package/dist/lib/neutral/chunk-GZQTCRJB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-HBUZJNZO.mjs.map +0 -7
- package/dist/lib/neutral/chunk-JUXPFOEI.mjs.map +0 -7
- package/dist/lib/neutral/chunk-MOR5ERFM.mjs.map +0 -7
- package/dist/lib/neutral/chunk-OMUPQMLR.mjs.map +0 -7
- package/dist/lib/neutral/chunk-PHU22NLC.mjs +0 -136
- package/dist/lib/neutral/chunk-PHU22NLC.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ROG4RXXL.mjs +0 -97
- package/dist/lib/neutral/chunk-ROG4RXXL.mjs.map +0 -7
- package/dist/lib/neutral/chunk-T6W2LEZU.mjs +0 -125
- package/dist/lib/neutral/chunk-T6W2LEZU.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TBKX6JQO.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TU3GW67D.mjs.map +0 -7
- package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +0 -7
- package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +0 -7
- package/dist/lib/neutral/chunk-V36VO5SS.mjs.map +0 -7
- package/dist/lib/neutral/chunk-WAK4DMFV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-YAHXAYOW.mjs +0 -56
- package/dist/lib/neutral/chunk-YAHXAYOW.mjs.map +0 -7
- package/dist/lib/neutral/chunk-YS6Q3XAD.mjs +0 -50
- package/dist/lib/neutral/chunk-YS6Q3XAD.mjs.map +0 -7
- package/dist/types/src/Extension.d.ts +0 -80
- package/dist/types/src/Extension.d.ts.map +0 -1
- package/dist/types/src/Extension.test.d.ts +0 -2
- package/dist/types/src/Extension.test.d.ts.map +0 -1
- package/dist/types/src/SchemaRegistry.d.ts +0 -84
- package/dist/types/src/SchemaRegistry.d.ts.map +0 -1
- package/dist/types/src/internal/Obj/ids.d.ts +0 -6
- package/dist/types/src/internal/Obj/ids.d.ts.map +0 -1
- package/dist/types/src/internal/Query.d.ts.map +0 -1
- package/dist/types/src/internal/Type/echo-schema.d.ts +0 -181
- package/dist/types/src/internal/Type/echo-schema.d.ts.map +0 -1
- package/dist/types/src/internal/Type/persistent-schema.d.ts +0 -20
- package/dist/types/src/internal/Type/persistent-schema.d.ts.map +0 -1
- package/src/Extension.test.ts +0 -235
- package/src/Extension.ts +0 -122
- package/src/SchemaRegistry.ts +0 -106
- package/src/internal/Obj/ids.ts +0 -12
- package/src/internal/Type/echo-schema.ts +0 -423
- package/src/internal/Type/persistent-schema.ts +0 -33
- /package/dist/lib/neutral/{Extension.mjs.map → Registry.mjs.map} +0 -0
- /package/dist/lib/neutral/{SchemaRegistry.mjs.map → Scope.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-7RO7CPBZ.mjs.map → chunk-PLDMJJJC.mjs.map} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import type * as Atom from '@effect-atom/atom/Atom';
|
|
6
|
+
|
|
7
|
+
import type { Ref } from './ref';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal helper for loading ref targets in atoms.
|
|
11
|
+
* Handles the common pattern of checking for loaded target and triggering async load.
|
|
12
|
+
*/
|
|
13
|
+
export const loadRefTarget = <T, R>(
|
|
14
|
+
ref: Ref<T>,
|
|
15
|
+
get: Atom.Context,
|
|
16
|
+
onTargetAvailable: (target: T) => R,
|
|
17
|
+
): R | undefined => {
|
|
18
|
+
// Accessing `ref.target` registers a resolution callback when the target is
|
|
19
|
+
// not yet loaded, so resolution can be observed via `ref.onResolved` below.
|
|
20
|
+
const currentTarget = ref.target;
|
|
21
|
+
if (currentTarget) {
|
|
22
|
+
return onTargetAvailable(currentTarget);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Subscribe to the ref's resolution event in case the target loads later.
|
|
26
|
+
const unsubscribe = ref.onResolved(() => {
|
|
27
|
+
const target = ref.target;
|
|
28
|
+
if (target) {
|
|
29
|
+
get.setSelf(onTargetAvailable(target));
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
get.addFinalizer(unsubscribe);
|
|
33
|
+
|
|
34
|
+
// Also try async load (e.g. for objects that need disk loading).
|
|
35
|
+
void ref
|
|
36
|
+
.load()
|
|
37
|
+
.then((loadedTarget) => {
|
|
38
|
+
get.setSelf(onTargetAvailable(loadedTarget));
|
|
39
|
+
})
|
|
40
|
+
.catch(() => {
|
|
41
|
+
// Loading failed; the resolution subscription above will pick up cross-client updates.
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return undefined;
|
|
45
|
+
};
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
import { describe, test } from 'vitest';
|
|
7
7
|
|
|
8
|
+
import { DXN } from '@dxos/keys';
|
|
9
|
+
|
|
8
10
|
import { FieldPath } from '../Annotation';
|
|
9
11
|
import { EchoObjectSchema } from '../Entity';
|
|
10
12
|
import { FormatAnnotation, TypeFormat } from '../Format';
|
|
@@ -16,7 +18,7 @@ describe('schema composition', () => {
|
|
|
16
18
|
const BaseType = Schema.Struct({
|
|
17
19
|
name: Schema.String,
|
|
18
20
|
email: Schema.String,
|
|
19
|
-
}).pipe(EchoObjectSchema(
|
|
21
|
+
}).pipe(EchoObjectSchema(DXN.make('com.example.person', '0.1.0')));
|
|
20
22
|
|
|
21
23
|
const OverlaySchema = Schema.Struct({
|
|
22
24
|
email: Schema.String.pipe(FieldPath('$.email'), FormatAnnotation.set(TypeFormat.Email)),
|
|
@@ -6,9 +6,6 @@ import * as Schema from 'effect/Schema';
|
|
|
6
6
|
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
7
|
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
9
|
-
import { DXN } from '@dxos/keys';
|
|
10
|
-
|
|
11
|
-
import { type TypeAnnotation, TypeAnnotationId, TypeIdentifierAnnotationId } from '../Annotation';
|
|
12
9
|
|
|
13
10
|
// TODO(ZaymonFC): Do this one at a time. This might be dangerous.
|
|
14
11
|
export const addFieldsToSchema = (
|
|
@@ -68,25 +65,3 @@ export const updateFieldNameInSchema = (
|
|
|
68
65
|
),
|
|
69
66
|
);
|
|
70
67
|
};
|
|
71
|
-
|
|
72
|
-
export const setTypenameInSchema = (
|
|
73
|
-
schema: Schema.Schema.AnyNoContext,
|
|
74
|
-
typename: string,
|
|
75
|
-
): Schema.Schema.AnyNoContext => {
|
|
76
|
-
const existingAnnotation = schema.ast.annotations[TypeAnnotationId] as TypeAnnotation;
|
|
77
|
-
invariant(existingAnnotation, `Missing ${String(TypeAnnotationId)}`);
|
|
78
|
-
|
|
79
|
-
return schema.annotations({
|
|
80
|
-
...schema.ast.annotations,
|
|
81
|
-
[TypeAnnotationId]: {
|
|
82
|
-
kind: existingAnnotation.kind,
|
|
83
|
-
typename,
|
|
84
|
-
version: existingAnnotation.version,
|
|
85
|
-
} satisfies TypeAnnotation,
|
|
86
|
-
[SchemaAST.JSONSchemaAnnotationId]: {
|
|
87
|
-
...(schema.ast.annotations[SchemaAST.JSONSchemaAnnotationId] ?? {}),
|
|
88
|
-
$id: schema.ast.annotations[TypeIdentifierAnnotationId] ?? DXN.fromTypename(typename).toString(),
|
|
89
|
-
typename,
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
|
|
7
|
+
import { IconAnnotation, LabelAnnotation } from '../Annotation';
|
|
8
|
+
import { EntityKind, KindId, SchemaKindId, StaticTypeSchemaSlot } from '../common/types';
|
|
9
|
+
import { EchoTypeKindSchema, TypeMetaSchemaDXN } from '../Entity';
|
|
10
|
+
import { JsonSchemaType } from '../JsonSchema';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Raw struct backing {@link TypeSchema}. Exposed only so `TypeSchema`
|
|
14
|
+
* (the TS type) can derive its data fields via `Schema.Schema.Type<typeof ...>`;
|
|
15
|
+
* runtime callers should use {@link TypeSchema} (the piped, branded entity).
|
|
16
|
+
*
|
|
17
|
+
* `typename` and `version` are NOT data fields — they live in `EntityMeta.key` /
|
|
18
|
+
* `EntityMeta.version` (the canonical registry-provenance pair, queryable via
|
|
19
|
+
* `Filter.key(...)`). The same `jsonSchema` payload also embeds them so a
|
|
20
|
+
* standalone JSON-Schema export remains self-describing, but the schema-registry
|
|
21
|
+
* reads/writes them through meta.
|
|
22
|
+
*/
|
|
23
|
+
const TypeSchemaStruct = Schema.Struct({
|
|
24
|
+
name: Schema.optional(Schema.String),
|
|
25
|
+
jsonSchema: JsonSchemaType,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Persistent representation of a schema.
|
|
30
|
+
*/
|
|
31
|
+
export const TypeSchema = TypeSchemaStruct.pipe(
|
|
32
|
+
LabelAnnotation.set(['name']),
|
|
33
|
+
IconAnnotation.set({
|
|
34
|
+
icon: 'ph--database--regular',
|
|
35
|
+
hue: 'green',
|
|
36
|
+
}),
|
|
37
|
+
EchoTypeKindSchema(TypeMetaSchemaDXN),
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Persistent representation of a schema — the runtime shape that
|
|
42
|
+
* `db.addType(Type.makeObjectFromJsonSchema(...))` produces
|
|
43
|
+
* and `Filter.type(Type.Type).run()` returns.
|
|
44
|
+
*
|
|
45
|
+
* Structurally identical to a static `Type.Type` entity: the entity-handler's
|
|
46
|
+
* `get` trap exposes `[SchemaKindId]` (derived from `system.kind` and
|
|
47
|
+
* `data.jsonSchema.entityKind`) and rebuilds `[StaticTypeSchemaSlot]` lazily
|
|
48
|
+
* from `jsonSchema`, so a persisted instance satisfies the public `Type<A>`
|
|
49
|
+
* interface without casting.
|
|
50
|
+
*/
|
|
51
|
+
export type TypeSchema = Schema.Schema.Type<typeof TypeSchemaStruct> & {
|
|
52
|
+
/** Object identifier — injected by `EchoTypeKindSchema` and stamped at construction. */
|
|
53
|
+
readonly id: string;
|
|
54
|
+
/** Entity-kind discriminator (object/relation/type) carried on every entity instance. */
|
|
55
|
+
readonly [KindId]: EntityKind.Type;
|
|
56
|
+
/** Kind of schema described by this meta-instance — always `EntityKind.Type` for `Type.Type` itself. */
|
|
57
|
+
readonly [SchemaKindId]: EntityKind.Type;
|
|
58
|
+
/** Effect Schema rebuilt lazily from `jsonSchema`; satisfies `Type.getSchema(...)` without an extra cast. */
|
|
59
|
+
readonly [StaticTypeSchemaSlot]: Schema.Schema.AnyNoContext;
|
|
60
|
+
};
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- [x] Unify FOUR different nests of test schema.
|
|
8
8
|
- [x] Remove @deprecated from internal methods and mark @internal (e.g., getSchemaDXN).
|
|
9
9
|
- NOTE: Internal methods should not use the import \* from Obj/Type APIs.
|
|
10
|
-
- [x] import
|
|
10
|
+
- [x] import EntityId => @dxos/keys
|
|
11
11
|
- [x] Entity.Any = Obj.Any | Relation.Any
|
|
12
12
|
- NOTE: Relation does not extend (in not polymorphic with) Obj.
|
|
13
13
|
- [x] import LabelAnnotation => Annotation.LabelAnnotation
|
|
@@ -99,4 +99,4 @@
|
|
|
99
99
|
- [ ] ReactiveObject should specify id property? Reconcile AnyProperties, ReactiveObject, HasId, WithId, etc.
|
|
100
100
|
- [ ] Can we us S.is(MyType) to detect objects with our types system? (Branding?)
|
|
101
101
|
- [ ] Type.Expando doesn't work with AtomQuery result type (have to use Obj.Any instead).
|
|
102
|
-
- [ ] Obj.Any doesn't work with Obj.
|
|
102
|
+
- [ ] Obj.Any doesn't work with Obj.update callback types (have to use `any` for the mutable parameter).
|
|
@@ -6,18 +6,21 @@ import type { ForeignKey } from '@dxos/echo-protocol';
|
|
|
6
6
|
import { assertArgument, invariant } from '@dxos/invariant';
|
|
7
7
|
import type { DeepReadonly } from '@dxos/util';
|
|
8
8
|
|
|
9
|
+
import type * as Tag from '../../../Tag';
|
|
10
|
+
import type { Ref } from '../../Ref/ref';
|
|
9
11
|
import { type Mutable } from '../proxy';
|
|
10
|
-
import { type AnyProperties
|
|
12
|
+
import { type AnyProperties } from '../types';
|
|
13
|
+
import { type EntityMeta, getMeta as getMeta$ } from '../types/meta';
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
|
-
* Deeply read-only version of
|
|
16
|
+
* Deeply read-only version of EntityMeta.
|
|
14
17
|
*/
|
|
15
|
-
export type ReadonlyMeta = DeepReadonly<
|
|
18
|
+
export type ReadonlyMeta = DeepReadonly<EntityMeta>;
|
|
16
19
|
|
|
17
20
|
/**
|
|
18
21
|
* Mutable meta type received in meta mutation callbacks.
|
|
19
22
|
*/
|
|
20
|
-
export type Meta = Mutable<
|
|
23
|
+
export type Meta = Mutable<EntityMeta>;
|
|
21
24
|
|
|
22
25
|
/**
|
|
23
26
|
* Get the metadata for an entity with validation.
|
|
@@ -48,7 +51,7 @@ export const getKeys = (entity: AnyProperties, source: string): ForeignKey[] =>
|
|
|
48
51
|
|
|
49
52
|
/**
|
|
50
53
|
* Delete all keys from the entity for the specified source.
|
|
51
|
-
* Must be called within an Obj.
|
|
54
|
+
* Must be called within an Obj.update or Relation.update callback.
|
|
52
55
|
*/
|
|
53
56
|
export const deleteKeys = (entity: Mutable<AnyProperties>, source: string) => {
|
|
54
57
|
const meta = getMetaChecked(entity);
|
|
@@ -61,26 +64,25 @@ export const deleteKeys = (entity: Mutable<AnyProperties>, source: string) => {
|
|
|
61
64
|
};
|
|
62
65
|
|
|
63
66
|
/**
|
|
64
|
-
* Add a tag to the entity.
|
|
65
|
-
* Must be called within an Obj.
|
|
67
|
+
* Add a tag (a reference to a {@link Tag} object) to the entity. Idempotent.
|
|
68
|
+
* Must be called within an Obj.update or Relation.update callback.
|
|
66
69
|
*/
|
|
67
|
-
export const addTag = (entity: Mutable<AnyProperties>, tag:
|
|
70
|
+
export const addTag = (entity: Mutable<AnyProperties>, tag: Ref<Tag.Tag>) => {
|
|
68
71
|
const meta = getMetaChecked(entity);
|
|
69
|
-
|
|
70
|
-
meta.tags.
|
|
72
|
+
// Two refs to the same target are not `===`; dedupe by URI.
|
|
73
|
+
if (!meta.tags.some((existing) => existing.uri === tag.uri)) {
|
|
74
|
+
meta.tags.push(tag);
|
|
75
|
+
}
|
|
71
76
|
};
|
|
72
77
|
|
|
73
78
|
/**
|
|
74
|
-
* Remove a tag from the entity.
|
|
75
|
-
* Must be called within an Obj.
|
|
79
|
+
* Remove a tag (a reference to a {@link Tag} object) from the entity. No-op when not present.
|
|
80
|
+
* Must be called within an Obj.update or Relation.update callback.
|
|
76
81
|
*/
|
|
77
|
-
export const removeTag = (entity: Mutable<AnyProperties>, tag:
|
|
82
|
+
export const removeTag = (entity: Mutable<AnyProperties>, tag: Ref<Tag.Tag>) => {
|
|
78
83
|
const meta = getMetaChecked(entity);
|
|
79
|
-
if (!meta.tags) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
84
|
for (let i = 0; i < meta.tags.length; i++) {
|
|
83
|
-
if (meta.tags[i] === tag) {
|
|
85
|
+
if (meta.tags[i].uri === tag.uri) {
|
|
84
86
|
meta.tags.splice(i, 1);
|
|
85
87
|
i--;
|
|
86
88
|
}
|
|
@@ -35,7 +35,7 @@ const pendingOwnerNotifications = new Set<object>();
|
|
|
35
35
|
/**
|
|
36
36
|
* Enter a change context for the given key.
|
|
37
37
|
* While in a change context, mutations are allowed on the associated object.
|
|
38
|
-
* Nested Obj.
|
|
38
|
+
* Nested Obj.update calls are not supported.
|
|
39
39
|
*
|
|
40
40
|
* @param key - The key to enter the change context for (target object or ObjectCore).
|
|
41
41
|
* @returns A cleanup function that exits the change context.
|