@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
|
@@ -1,42 +1,90 @@
|
|
|
1
1
|
import {
|
|
2
2
|
select
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AFANXSGV.mjs";
|
|
4
4
|
import {
|
|
5
5
|
Feed
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
object
|
|
9
|
-
} from "./chunk-ROG4RXXL.mjs";
|
|
6
|
+
} from "./chunk-5GAIWRQB.mjs";
|
|
10
7
|
import {
|
|
11
8
|
nothing
|
|
12
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NOL7O3BL.mjs";
|
|
13
10
|
import {
|
|
14
11
|
Unknown,
|
|
15
12
|
instanceOf,
|
|
16
13
|
make
|
|
17
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6CEISA3V.mjs";
|
|
18
15
|
import {
|
|
19
16
|
Ref
|
|
20
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-TF5BSLF6.mjs";
|
|
18
|
+
import {
|
|
19
|
+
getSchema,
|
|
20
|
+
makeObject
|
|
21
|
+
} from "./chunk-HGWQR5KH.mjs";
|
|
21
22
|
import {
|
|
22
23
|
JsonSchemaType
|
|
23
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-K3S7D5PR.mjs";
|
|
24
25
|
import {
|
|
25
26
|
FormInputAnnotation,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
} from "./chunk-
|
|
27
|
+
HiddenAnnotation,
|
|
28
|
+
IconAnnotation
|
|
29
|
+
} from "./chunk-WZ32BF53.mjs";
|
|
29
30
|
import {
|
|
30
31
|
__export
|
|
31
32
|
} from "./chunk-J5LGTIGS.mjs";
|
|
32
33
|
|
|
33
34
|
// src/index.ts
|
|
34
35
|
import { QueryAST as QueryAST2 } from "@dxos/echo-protocol";
|
|
35
|
-
import { DXN } from "@dxos/keys";
|
|
36
|
+
import { DXN as DXN3, EID as EID2, URI } from "@dxos/keys";
|
|
36
37
|
|
|
37
38
|
// src/Hypergraph.ts
|
|
38
39
|
var Hypergraph_exports = {};
|
|
39
40
|
|
|
41
|
+
// src/Json.ts
|
|
42
|
+
var Json_exports = {};
|
|
43
|
+
__export(Json_exports, {
|
|
44
|
+
createRefReplacer: () => createRefReplacer
|
|
45
|
+
});
|
|
46
|
+
import { EID } from "@dxos/keys";
|
|
47
|
+
var isEncodedRef = (value) => typeof value === "object" && value !== null && Object.keys(value).length === 1 && typeof value["/"] === "string";
|
|
48
|
+
var toJson = (obj) => typeof obj.toJSON === "function" ? obj.toJSON() : obj;
|
|
49
|
+
var createRefReplacer = ({ db, depth = 1 }) => {
|
|
50
|
+
const hops = /* @__PURE__ */ new WeakMap();
|
|
51
|
+
return function(key, value) {
|
|
52
|
+
const parentHops = this && typeof this === "object" ? hops.get(this) ?? 0 : 0;
|
|
53
|
+
if (isEncodedRef(value)) {
|
|
54
|
+
if (parentHops >= depth) {
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
const dxnString = value["/"];
|
|
58
|
+
if (!dxnString.startsWith("dxn:") && !dxnString.startsWith("echo:")) {
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
let echoUri;
|
|
62
|
+
try {
|
|
63
|
+
const parsed = EID.tryParse(dxnString);
|
|
64
|
+
echoUri = parsed ? EID.getEntityId(parsed) : void 0;
|
|
65
|
+
} catch {
|
|
66
|
+
return value;
|
|
67
|
+
}
|
|
68
|
+
if (!echoUri) {
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
const target = db.getObjectById(echoUri);
|
|
72
|
+
if (!target) {
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
const encoded = toJson(target);
|
|
76
|
+
if (encoded != null && typeof encoded === "object") {
|
|
77
|
+
hops.set(encoded, parentHops + 1);
|
|
78
|
+
}
|
|
79
|
+
return encoded;
|
|
80
|
+
}
|
|
81
|
+
if (value != null && typeof value === "object") {
|
|
82
|
+
hops.set(value, parentHops);
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
40
88
|
// src/Collection.ts
|
|
41
89
|
var Collection_exports = {};
|
|
42
90
|
__export(Collection_exports, {
|
|
@@ -45,16 +93,14 @@ __export(Collection_exports, {
|
|
|
45
93
|
make: () => make2
|
|
46
94
|
});
|
|
47
95
|
import * as Schema from "effect/Schema";
|
|
96
|
+
import { DXN } from "@dxos/keys";
|
|
48
97
|
var Collection = Schema.Struct({
|
|
49
98
|
name: Schema.String.pipe(Schema.optional),
|
|
50
99
|
objects: Schema.Array(Ref(Unknown)).pipe(FormInputAnnotation.set(false))
|
|
51
|
-
}).pipe(
|
|
52
|
-
typename: "org.dxos.type.collection",
|
|
53
|
-
version: "0.1.0"
|
|
54
|
-
}), IconAnnotation.set({
|
|
100
|
+
}).pipe(IconAnnotation.set({
|
|
55
101
|
icon: "ph--folder--regular",
|
|
56
|
-
hue: "
|
|
57
|
-
}));
|
|
102
|
+
hue: "amber"
|
|
103
|
+
}), makeObject(DXN.make("org.dxos.type.collection", "0.1.0")));
|
|
58
104
|
var make2 = (props = {}) => make(Collection, {
|
|
59
105
|
objects: [],
|
|
60
106
|
...props
|
|
@@ -73,14 +119,14 @@ __export(View_exports, {
|
|
|
73
119
|
});
|
|
74
120
|
import * as Schema2 from "effect/Schema";
|
|
75
121
|
import { QueryAST } from "@dxos/echo-protocol";
|
|
76
|
-
import {
|
|
77
|
-
import { PublicKey } from "@dxos/keys";
|
|
122
|
+
import { SchemaEx } from "@dxos/effect";
|
|
123
|
+
import { DXN as DXN2, PublicKey } from "@dxos/keys";
|
|
78
124
|
var FieldSchema = Schema2.Struct({
|
|
79
125
|
id: Schema2.String,
|
|
80
|
-
path: JsonPath,
|
|
126
|
+
path: SchemaEx.JsonPath,
|
|
81
127
|
visible: Schema2.optional(Schema2.Boolean),
|
|
82
128
|
// TODO(wittjosiah): Presentation-specific?
|
|
83
|
-
referencePath: Schema2.optional(JsonPath)
|
|
129
|
+
referencePath: Schema2.optional(SchemaEx.JsonPath)
|
|
84
130
|
});
|
|
85
131
|
var KeyValueProps = Schema2.Record({
|
|
86
132
|
key: Schema2.String,
|
|
@@ -95,7 +141,7 @@ var Projection = Schema2.Struct({
|
|
|
95
141
|
/**
|
|
96
142
|
* UX metadata associated with displayed fields (in table, form, etc.)
|
|
97
143
|
*/
|
|
98
|
-
// TODO(wittjosiah): Should this just be an array of JsonPath?
|
|
144
|
+
// TODO(wittjosiah): Should this just be an array of SchemaEx.JsonPath?
|
|
99
145
|
fields: Schema2.Array(FieldSchema),
|
|
100
146
|
/**
|
|
101
147
|
* The id for the field used to pivot the view.
|
|
@@ -116,13 +162,10 @@ var ViewSchema = Schema2.Struct({
|
|
|
116
162
|
* Projection of the data returned from the query.
|
|
117
163
|
*/
|
|
118
164
|
projection: Projection
|
|
119
|
-
}).pipe(
|
|
120
|
-
typename: "org.dxos.type.view",
|
|
121
|
-
version: "0.1.0"
|
|
122
|
-
}), SystemTypeAnnotation.set(true), IconAnnotation.set({
|
|
165
|
+
}).pipe(HiddenAnnotation.set(true), IconAnnotation.set({
|
|
123
166
|
icon: "ph--funnel--regular",
|
|
124
167
|
hue: "green"
|
|
125
|
-
}));
|
|
168
|
+
}), makeObject(DXN2.make("org.dxos.type.view", "0.1.0")));
|
|
126
169
|
var View = ViewSchema;
|
|
127
170
|
var make3 = (props) => {
|
|
128
171
|
return make(View, {
|
|
@@ -145,15 +188,18 @@ __export(Dataset_exports, {
|
|
|
145
188
|
import { pipe } from "effect/Function";
|
|
146
189
|
import * as Predicate from "effect/Predicate";
|
|
147
190
|
import * as Schema3 from "effect/Schema";
|
|
148
|
-
var Dataset = Schema3.Union(Feed, Collection, View);
|
|
191
|
+
var Dataset = Schema3.Union(getSchema(Feed), getSchema(Collection), getSchema(View));
|
|
149
192
|
var isDataset = pipe(instanceOf(Feed), Predicate.or(instanceOf(Collection)), Predicate.or(instanceOf(View)));
|
|
150
193
|
|
|
151
194
|
export {
|
|
152
195
|
Hypergraph_exports,
|
|
196
|
+
Json_exports,
|
|
153
197
|
Collection_exports,
|
|
154
198
|
View_exports,
|
|
155
199
|
Dataset_exports,
|
|
156
200
|
QueryAST2 as QueryAST,
|
|
157
|
-
DXN
|
|
201
|
+
DXN3 as DXN,
|
|
202
|
+
EID2 as EID,
|
|
203
|
+
URI
|
|
158
204
|
};
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
205
|
+
//# sourceMappingURL=chunk-3JXQUMUI.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/index.ts", "../../../src/Hypergraph.ts", "../../../src/Json.ts", "../../../src/Collection.ts", "../../../src/View.ts", "../../../src/Dataset.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport { QueryAST } from '@dxos/echo-protocol';\nexport { DXN, EID, URI } from '@dxos/keys';\n\nexport * as Annotation from './Annotation';\nexport * as Database from './Database';\nexport * as Entity from './Entity';\n// TODO(burdon): Rename to Error (less problematic than Obj/Object).\nexport * as Err from './Err';\nexport * as Feed from './Feed';\nexport * as Filter from './Filter';\nexport * as Format from './Format';\nexport * as Hypergraph from './Hypergraph';\nexport * as Json from './Json';\nexport * as JsonSchema from './JsonSchema';\nexport * as Key from './Key';\nexport * as Migration from './Migration';\nexport * as Obj from './Obj';\nexport * as Order from './Order';\nexport * as Query from './Query';\nexport * as QueryResult from './QueryResult';\nexport * as Ref from './Ref';\nexport * as Registry from './Registry';\nexport * as Relation from './Relation';\nexport * as Scope from './Scope';\nexport * as Tag from './Tag';\nexport * as Type from './Type';\nexport * as Collection from './Collection';\nexport * as View from './View';\nexport * as Dataset from './Dataset';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type URI } from '@dxos/keys';\n\nimport type * as Database from './Database';\nimport type * as Entity from './Entity';\nimport type * as internal from './internal';\nimport type * as Key from './Key';\nimport type * as Ref from './Ref';\nimport type * as Registry from './Registry';\n\n/**\n * Resolution context.\n * Affects how non-absolute DXNs are resolved.\n */\nexport interface RefResolutionContext {\n /**\n * Space that the resolution is happening from.\n */\n space?: Key.SpaceId;\n\n /**\n * Feed that the resolution is happening from.\n * This feed will be searched first, and then the space it belongs to.\n */\n feed?: URI.URI;\n}\n\nexport interface RefResolverOptions {\n /**\n * Resolution context.\n * Affects how non-absolute DXNs are resolved.\n */\n context?: RefResolutionContext;\n\n /**\n * Middleware to change the resolved object before returning it.\n * @deprecated On track to be removed.\n */\n middleware?: (obj: internal.AnyProperties) => internal.AnyProperties;\n}\n\n/**\n * Manages cross-space database interactions.\n */\nexport interface Hypergraph extends Database.Queryable {\n /**\n * In-process registry of keyed objects and static schema types.\n * Populated at startup via `registry.add(objects)` / `registry.add(schemas)`.\n * Queries that include no explicit from() clause will fan out to this registry automatically.\n */\n get registry(): Registry.Registry;\n\n /**\n * Query objects.\n */\n query: Database.QueryFn;\n\n /**\n * Creates a reference to an existing object in the database.\n *\n * NOTE: The reference may be dangling if the object is not present in the database.\n * NOTE: Difference from `Ref.fromURI`\n * `Ref.fromURI(dxn)` returns an unhydrated reference. The `.load` and `.target` APIs will not work.\n * `db.makeRef(dxn)` is preferable in cases with access to the database.\n */\n makeRef<T extends Entity.Unknown = Entity.Unknown>(uri: URI.URI): Ref.Ref<T>;\n\n /**\n * @param hostDb Host database for reference resolution.\n * @param middleware Called with the loaded object. The caller may change the object.\n * @returns Result of `onLoad`.\n */\n // TODO(dmaretskyi): Restructure API: Remove middleware.\n createRefResolver(options: RefResolverOptions): Ref.Resolver;\n\n /**\n * Get a database by space ID.\n * @returns The database for the given space ID, or undefined if not found.\n */\n getDatabase(spaceId: Key.SpaceId): Database.Database | undefined;\n}\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { EID } from '@dxos/keys';\n\nimport * as Database from './Database';\nimport * as Obj from './Obj';\n\n/**\n * `JSON.stringify` replacer signature.\n *\n * Defined here (rather than re-imported from a UI package) so other ECHO-aware utilities can\n * share a stable signature without creating a dependency edge into the UI tree.\n */\nexport type JsonReplacer = (key: string, value: any) => any;\n\nexport type CreateRefReplacerOptions = {\n db: Database.Database;\n /** How many ref hops to follow. `0` leaves all refs as-is. Default: `1`. */\n depth?: number;\n};\n\nconst isEncodedRef = (value: unknown): value is { '/': string } =>\n typeof value === 'object' &&\n value !== null &&\n Object.keys(value as object).length === 1 &&\n typeof (value as { '/': unknown })['/'] === 'string';\n\nconst toJson = (obj: Obj.Any): unknown => (typeof (obj as any).toJSON === 'function' ? (obj as any).toJSON() : obj);\n\n/**\n * Returns a {@link JsonReplacer} that inlines ECHO ref objects (`{ \"/\": \"echo:...\" }`) up to\n * `depth` ref hops. Beyond that depth refs are left in their encoded form.\n *\n * Implemented as a per-call `JSON.stringify` replacer (not a one-shot tree walk at root) so it\n * composes with wrappers like `safeStringify` that intercept the root call. JSON.stringify\n * already drives the recursion; we only need to (a) detect a ref at the current callback,\n * (b) resolve and return the target if hop budget remains, and (c) tag the returned object\n * with its hop count so children know how far in they are.\n *\n * The hop count is tracked per-object via a `WeakMap`: a ref-resolved target's children inherit\n * `parentHops + 1`; a regular intermediate object's children inherit `parentHops`. This makes the\n * budget count *ref hops*, not tree depth — a ref deep in a tree still resolves once when\n * `depth >= 1`.\n *\n * Note: ECHO objects' `toJSON` runs before the replacer is invoked, so by the time we see a\n * value refs are already encoded as `{ \"/\": \"dxn:...\" }`.\n */\nexport const createRefReplacer = ({ db, depth = 1 }: CreateRefReplacerOptions): JsonReplacer => {\n // Per-object hop count. Set when we return an object (via ref resolution or pass-through) so\n // the child callbacks (which carry that object as `this`) can read it.\n const hops = new WeakMap<object, number>();\n\n return function (this: any, key: string, value: any) {\n // Hop count for this call: hops at the parent, or 0 for the root.\n const parentHops = this && typeof this === 'object' ? (hops.get(this) ?? 0) : 0;\n if (isEncodedRef(value)) {\n if (parentHops >= depth) {\n return value;\n }\n\n // The `{ '/': string }` shape is shared with non-DXN IPLD-style refs (e.g. CIDs);\n // an unparseable string would otherwise crash the whole `JSON.stringify`.\n // Treat any parse miss as \"leave as-is\" rather than propagating.\n const dxnString = value['/'];\n if (!dxnString.startsWith('dxn:') && !dxnString.startsWith('echo:')) {\n return value;\n }\n\n let echoUri: string | undefined;\n try {\n const parsed = EID.tryParse(dxnString);\n echoUri = parsed ? EID.getEntityId(parsed) : undefined;\n } catch {\n return value;\n }\n\n if (!echoUri) {\n return value;\n }\n const target = db.getObjectById(echoUri);\n if (!target) {\n return value;\n }\n\n const encoded = toJson(target);\n if (encoded != null && typeof encoded === 'object') {\n // Children of the resolved target are one hop deeper.\n hops.set(encoded as object, parentHops + 1);\n }\n return encoded;\n }\n\n // Pass-through object: children inherit the parent's hop count (this branch doesn't burn\n // budget).\n if (value != null && typeof value === 'object') {\n hops.set(value, parentHops);\n }\n\n return value;\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nimport * as Annotation from './Annotation';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport * as Ref from './Ref';\nimport * as Type from './Type';\n\n/**\n * A an ordered set of objects.\n */\nexport const Collection = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n objects: Schema.Array(Ref.Ref(Obj.Unknown)).pipe(internal.FormInputAnnotation.set(false)),\n}).pipe(\n Annotation.IconAnnotation.set({ icon: 'ph--folder--regular', hue: 'amber' }),\n Type.makeObject(DXN.make('org.dxos.type.collection', '0.1.0')),\n);\n\nexport type Collection = Type.InstanceType<typeof Collection>;\n\nexport const make = (props: Partial<Obj.MakeProps<typeof Collection>> = {}): Collection =>\n Obj.make(Collection, { objects: [], ...props });\n\nexport const isCollection: (value: unknown) => value is Collection = Obj.instanceOf(Collection);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { QueryAST } from '@dxos/echo-protocol';\nimport { SchemaEx } from '@dxos/effect';\nimport { DXN, PublicKey } from '@dxos/keys';\n\nimport * as Annotation from './Annotation';\nimport * as Filter from './Filter';\nimport * as internal from './internal';\nimport * as Obj from './Obj';\nimport * as Query from './Query';\nimport * as Type from './Type';\n\n/**\n * Stored field metadata (e.g., for UX).\n */\nexport const FieldSchema = Schema.Struct({\n id: Schema.String,\n path: SchemaEx.JsonPath,\n visible: Schema.optional(Schema.Boolean),\n\n // TODO(wittjosiah): Presentation-specific?\n referencePath: Schema.optional(SchemaEx.JsonPath),\n});\n\nexport type FieldType = Schema.Schema.Type<typeof FieldSchema>;\n\nexport const KeyValueProps = Schema.Record({ key: Schema.String, value: Schema.Any });\n\nexport const createFieldId = () => PublicKey.random().truncate();\n\nexport const Projection = Schema.Struct({\n /**\n * Optional schema override used to customize the underlying schema.\n */\n schema: internal.JsonSchemaType.pipe(Schema.optional),\n\n /**\n * UX metadata associated with displayed fields (in table, form, etc.)\n */\n // TODO(wittjosiah): Should this just be an array of SchemaEx.JsonPath?\n fields: Schema.Array(FieldSchema),\n\n /**\n * The id for the field used to pivot the view.\n * E.g., the field to use for kanban columns or the field to use for map coordinates.\n */\n pivotFieldId: Schema.String.pipe(Schema.optional),\n});\n\nexport type Projection = Schema.Schema.Type<typeof Projection>;\n\n/**\n * Views are generated or user-defined projections of a schema's properties.\n * They are used to configure the visual representation of the data.\n */\nconst ViewSchema = Schema.Struct({\n /**\n * Query used to retrieve data.\n * Can be a user-provided query grammar string or a query AST.\n */\n query: Schema.Struct({\n raw: Schema.optional(Schema.String),\n ast: QueryAST.Query,\n }),\n\n /**\n * Projection of the data returned from the query.\n */\n projection: Projection,\n}).pipe(\n internal.HiddenAnnotation.set(true),\n Annotation.IconAnnotation.set({ icon: 'ph--funnel--regular', hue: 'green' }),\n Type.makeObject(DXN.make('org.dxos.type.view', '0.1.0')),\n);\n\n// NOTE: Declared as a named interface and the `View` const is annotated `Type.Obj<View>` so\n// downstream consumers see a named `View` type instead of the inlined `QueryAST.Query` union.\n// Without the named interface, embedding `Type.getSchema(View.View)` in a downstream\n// `Schema.Struct` triggers TS2742 portability errors (e.g. plugin-kanban, plugin-table).\n// TODO(wittjosiah): Find a better solution that doesn't require manually keeping the interface in sync.\nexport interface View extends Type.InstanceType<typeof ViewSchema> {}\n\nexport const View: Type.Obj<View> = ViewSchema as any;\n\nexport const make = (props: Partial<Obj.MakeProps<typeof View>>): View => {\n return Obj.make(View, {\n query: { ast: Query.select(Filter.nothing()).ast },\n projection: { fields: [] },\n ...props,\n });\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { pipe } from 'effect/Function';\nimport * as Predicate from 'effect/Predicate';\nimport * as Schema from 'effect/Schema';\n\nimport * as Collection from './Collection';\nimport * as Feed from './Feed';\nimport * as Obj from './Obj';\nimport * as Type from './Type';\nimport * as View from './View';\n\n/**\n * Abstract set of objects, represented by a view, feed, or collection.\n * Schema-level union of the underlying type entities (rebuilt via\n * `Type.getSchema`) so this can still be consumed by Schema-side APIs such\n * as `Filter.type(...)` on a union.\n */\nexport type Dataset = Feed.Feed | Collection.Collection | View.View;\nexport const Dataset = Schema.Union(\n Type.getSchema(Feed.Feed),\n Type.getSchema(Collection.Collection),\n Type.getSchema(View.View),\n);\n\nexport const isDataset: (value: unknown) => value is Dataset = pipe(\n Obj.instanceOf(Feed.Feed),\n Predicate.or(Obj.instanceOf(Collection.Collection)),\n Predicate.or(Obj.instanceOf(View.View)),\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["QueryAST", "DXN", "EID", "URI", "EID", "isEncodedRef", "value", "Object", "keys", "length", "toJson", "obj", "toJSON", "createRefReplacer", "db", "depth", "hops", "WeakMap", "key", "parentHops", "get", "dxnString", "startsWith", "echoUri", "parsed", "tryParse", "getEntityId", "undefined", "target", "getObjectById", "encoded", "set", "make", "Schema", "DXN", "Collection", "Struct", "name", "String", "pipe", "optional", "objects", "Array", "Ref", "Unknown", "FormInputAnnotation", "set", "IconAnnotation", "icon", "hue", "makeObject", "DXN", "make", "props", "isCollection", "instanceOf", "make", "Schema", "QueryAST", "SchemaEx", "DXN", "PublicKey", "FieldSchema", "Struct", "id", "String", "path", "SchemaEx", "JsonPath", "visible", "optional", "Boolean", "referencePath", "KeyValueProps", "Record", "key", "value", "Any", "createFieldId", "PublicKey", "random", "truncate", "Projection", "schema", "JsonSchemaType", "pipe", "fields", "Array", "pivotFieldId", "ViewSchema", "query", "raw", "ast", "QueryAST", "Query", "projection", "HiddenAnnotation", "set", "IconAnnotation", "icon", "hue", "makeObject", "DXN", "make", "View", "props", "select", "nothing", "pipe", "Predicate", "Schema", "Dataset", "Union", "getSchema", "Feed", "Collection", "View", "isDataset", "pipe", "instanceOf", "or"]
|
|
7
|
+
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Service
|
|
3
|
-
} from "./chunk-PHU22NLC.mjs";
|
|
4
1
|
import {
|
|
5
2
|
ReferenceAnnotationId,
|
|
6
|
-
|
|
3
|
+
Service,
|
|
4
|
+
getSchemaURI,
|
|
7
5
|
getTypeAnnotation,
|
|
8
6
|
getTypeIdentifierAnnotation
|
|
9
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WZ32BF53.mjs";
|
|
8
|
+
import {
|
|
9
|
+
getStaticTypeSchema
|
|
10
|
+
} from "./chunk-O6BH7EPN.mjs";
|
|
10
11
|
|
|
11
12
|
// src/internal/Ref/ref.ts
|
|
12
13
|
import * as Effect from "effect/Effect";
|
|
@@ -21,15 +22,49 @@ import { Event } from "@dxos/async";
|
|
|
21
22
|
import { inspectCustom } from "@dxos/debug";
|
|
22
23
|
import { EncodedReference } from "@dxos/echo-protocol";
|
|
23
24
|
import { assertArgument, invariant } from "@dxos/invariant";
|
|
24
|
-
import { DXN,
|
|
25
|
+
import { DXN, EID, EntityId } from "@dxos/keys";
|
|
26
|
+
|
|
27
|
+
// src/internal/Ref/atoms.ts
|
|
28
|
+
import * as Atom from "@effect-atom/atom/Atom";
|
|
29
|
+
|
|
30
|
+
// src/internal/Ref/utils.ts
|
|
31
|
+
var loadRefTarget = (ref, get, onTargetAvailable) => {
|
|
32
|
+
const currentTarget = ref.target;
|
|
33
|
+
if (currentTarget) {
|
|
34
|
+
return onTargetAvailable(currentTarget);
|
|
35
|
+
}
|
|
36
|
+
const unsubscribe = ref.onResolved(() => {
|
|
37
|
+
const target = ref.target;
|
|
38
|
+
if (target) {
|
|
39
|
+
get.setSelf(onTargetAvailable(target));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
get.addFinalizer(unsubscribe);
|
|
43
|
+
void ref.load().then((loadedTarget) => {
|
|
44
|
+
get.setSelf(onTargetAvailable(loadedTarget));
|
|
45
|
+
}).catch(() => {
|
|
46
|
+
});
|
|
47
|
+
return void 0;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// src/internal/Ref/atoms.ts
|
|
51
|
+
var refSimpleFamily = Atom.family((ref) => {
|
|
52
|
+
return Atom.make((get) => {
|
|
53
|
+
return loadRefTarget(ref, get, (target) => target);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// src/internal/Ref/ref.ts
|
|
25
58
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Ref/ref.ts";
|
|
26
59
|
var JSON_SCHEMA_ECHO_REF_ID = "/schemas/echo/ref";
|
|
27
60
|
var getSchemaReference = (property) => {
|
|
28
61
|
const { $id, reference: { schema: { $ref } = {} } = {} } = property;
|
|
29
62
|
if ($id === JSON_SCHEMA_ECHO_REF_ID && $ref) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
63
|
+
const parsed = DXN.tryMake($ref);
|
|
64
|
+
const typename = parsed ? DXN.getName(parsed) : void 0;
|
|
65
|
+
return typename ? {
|
|
66
|
+
typename
|
|
67
|
+
} : void 0;
|
|
33
68
|
}
|
|
34
69
|
};
|
|
35
70
|
var createSchemaReference = (typename) => {
|
|
@@ -37,7 +72,7 @@ var createSchemaReference = (typename) => {
|
|
|
37
72
|
$id: JSON_SCHEMA_ECHO_REF_ID,
|
|
38
73
|
reference: {
|
|
39
74
|
schema: {
|
|
40
|
-
$ref: DXN.
|
|
75
|
+
$ref: DXN.make(typename)
|
|
41
76
|
}
|
|
42
77
|
}
|
|
43
78
|
};
|
|
@@ -51,8 +86,9 @@ var getReferenceAst = (ast) => {
|
|
|
51
86
|
version: ast.annotations[ReferenceAnnotationId].version
|
|
52
87
|
};
|
|
53
88
|
};
|
|
54
|
-
var RefTypeId = /* @__PURE__ */ Symbol("@dxos/echo/internal/Ref");
|
|
55
|
-
var Ref = (
|
|
89
|
+
var RefTypeId = /* @__PURE__ */ Symbol.for("@dxos/echo/internal/Ref");
|
|
90
|
+
var Ref = (input) => {
|
|
91
|
+
const schema = getStaticTypeSchema(input) ?? input;
|
|
56
92
|
assertArgument(Schema.isSchema(schema), "schema", "Must call with an instance of effect-schema");
|
|
57
93
|
const annotation = getTypeAnnotation(schema);
|
|
58
94
|
if (annotation == null) {
|
|
@@ -61,9 +97,12 @@ var Ref = (schema) => {
|
|
|
61
97
|
return createEchoReferenceSchema(getTypeIdentifierAnnotation(schema), annotation.typename, annotation.version);
|
|
62
98
|
};
|
|
63
99
|
Ref.isRef = (obj) => {
|
|
64
|
-
return obj && typeof obj === "object" && RefTypeId in obj;
|
|
100
|
+
return obj != null && typeof obj === "object" && RefTypeId in obj;
|
|
101
|
+
};
|
|
102
|
+
Ref.hasEntityId = (id) => (ref) => {
|
|
103
|
+
const uri = EID.tryParse(ref.uri);
|
|
104
|
+
return uri !== void 0 && EID.isLocal(uri) && EID.getEntityId(uri) === id;
|
|
65
105
|
};
|
|
66
|
-
Ref.hasObjectId = (id) => (ref) => ref.dxn.isLocalObjectId() && ref.dxn.parts[1] === id;
|
|
67
106
|
Ref.isRefSchema = (schema) => {
|
|
68
107
|
return Ref.isRefSchemaAST(schema.ast);
|
|
69
108
|
};
|
|
@@ -75,30 +114,25 @@ Ref.make = (obj) => {
|
|
|
75
114
|
throw new TypeError("Expected: ECHO object.");
|
|
76
115
|
}
|
|
77
116
|
const id = obj.id;
|
|
78
|
-
invariant(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
S: void 0,
|
|
82
|
-
A: [
|
|
83
|
-
"ObjectId.isValid(id)",
|
|
84
|
-
"'Invalid object ID'"
|
|
85
|
-
]
|
|
117
|
+
invariant(EntityId.isValid(id), "Invalid object ID", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 87, S: void 0, A: ["EntityId.isValid(id)", "'Invalid object ID'"] });
|
|
118
|
+
const uri = EID.make({
|
|
119
|
+
entityId: id
|
|
86
120
|
});
|
|
87
|
-
const
|
|
88
|
-
return
|
|
121
|
+
const ref = new RefImpl(uri, obj);
|
|
122
|
+
return ref;
|
|
89
123
|
};
|
|
90
|
-
Ref.
|
|
91
|
-
assertArgument(
|
|
92
|
-
return new RefImpl(
|
|
124
|
+
Ref.fromURI = (uri) => {
|
|
125
|
+
assertArgument(typeof uri === "string", "uri", "Expected URI string");
|
|
126
|
+
return new RefImpl(uri);
|
|
93
127
|
};
|
|
94
|
-
var createEchoReferenceSchema = (
|
|
95
|
-
if (!
|
|
96
|
-
throw new TypeError("Either
|
|
128
|
+
var createEchoReferenceSchema = (echoUri, typename, version) => {
|
|
129
|
+
if (!echoUri && !typename) {
|
|
130
|
+
throw new TypeError("Either echoUri or typename must be provided.");
|
|
97
131
|
}
|
|
98
132
|
const referenceInfo = {
|
|
99
133
|
schema: {
|
|
100
134
|
// TODO(dmaretskyi): Include version?
|
|
101
|
-
$ref:
|
|
135
|
+
$ref: echoUri ?? DXN.make(typename)
|
|
102
136
|
},
|
|
103
137
|
schemaVersion: version
|
|
104
138
|
};
|
|
@@ -106,7 +140,7 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
|
|
|
106
140
|
encode: () => {
|
|
107
141
|
return (value) => Effect.gen(function* () {
|
|
108
142
|
if (Ref.isRef(value)) {
|
|
109
|
-
return EncodedReference.
|
|
143
|
+
return EncodedReference.fromURI(value.uri);
|
|
110
144
|
} else if (EncodedReference.isEncodedReference(value)) {
|
|
111
145
|
return value;
|
|
112
146
|
}
|
|
@@ -118,7 +152,7 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
|
|
|
118
152
|
const dbService = yield* Effect.serviceOption(Service);
|
|
119
153
|
if (Ref.isRef(value)) {
|
|
120
154
|
if (Option.isSome(dbService)) {
|
|
121
|
-
return dbService.value.db.makeRef(value.
|
|
155
|
+
return dbService.value.db.makeRef(value.uri);
|
|
122
156
|
} else {
|
|
123
157
|
return value;
|
|
124
158
|
}
|
|
@@ -127,9 +161,9 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
|
|
|
127
161
|
return yield* Effect.fail(new ParseResult.Unexpected(value, "reference"));
|
|
128
162
|
}
|
|
129
163
|
if (Option.isSome(dbService)) {
|
|
130
|
-
return dbService.value.db.makeRef(EncodedReference.
|
|
164
|
+
return dbService.value.db.makeRef(EncodedReference.toURI(value));
|
|
131
165
|
} else {
|
|
132
|
-
return Ref.
|
|
166
|
+
return Ref.fromURI(EncodedReference.toURI(value));
|
|
133
167
|
}
|
|
134
168
|
});
|
|
135
169
|
}
|
|
@@ -147,8 +181,16 @@ var createEchoReferenceSchema = (echoId, typename, version) => {
|
|
|
147
181
|
});
|
|
148
182
|
return refSchema;
|
|
149
183
|
};
|
|
184
|
+
var makeSettledRequest = (state, result) => ({
|
|
185
|
+
state,
|
|
186
|
+
stateChanged: new Event(),
|
|
187
|
+
getResult: () => state === "ready" ? result : void 0,
|
|
188
|
+
wait: async () => state === "ready" ? result : void 0,
|
|
189
|
+
abort: () => {
|
|
190
|
+
}
|
|
191
|
+
});
|
|
150
192
|
var RefImpl = class _RefImpl {
|
|
151
|
-
#
|
|
193
|
+
#uri;
|
|
152
194
|
#resolver = void 0;
|
|
153
195
|
#resolved = new Event();
|
|
154
196
|
/**
|
|
@@ -162,15 +204,15 @@ var RefImpl = class _RefImpl {
|
|
|
162
204
|
#resolverCallback = () => {
|
|
163
205
|
this.#resolved.emit();
|
|
164
206
|
};
|
|
165
|
-
constructor(
|
|
166
|
-
this.#
|
|
207
|
+
constructor(uri, target) {
|
|
208
|
+
this.#uri = uri;
|
|
167
209
|
this.#target = target;
|
|
168
210
|
}
|
|
169
211
|
/**
|
|
170
212
|
* @inheritdoc
|
|
171
213
|
*/
|
|
172
|
-
get
|
|
173
|
-
return this.#
|
|
214
|
+
get uri() {
|
|
215
|
+
return this.#uri;
|
|
174
216
|
}
|
|
175
217
|
/**
|
|
176
218
|
* @inheritdoc
|
|
@@ -185,16 +227,8 @@ var RefImpl = class _RefImpl {
|
|
|
185
227
|
if (this.#target) {
|
|
186
228
|
return this.#target;
|
|
187
229
|
}
|
|
188
|
-
invariant(this.#resolver, "Resolver is not set", {
|
|
189
|
-
|
|
190
|
-
L: 393,
|
|
191
|
-
S: this,
|
|
192
|
-
A: [
|
|
193
|
-
"this.#resolver",
|
|
194
|
-
"'Resolver is not set'"
|
|
195
|
-
]
|
|
196
|
-
});
|
|
197
|
-
return this.#resolver.resolveSync(this.#dxn, true, this.#resolverCallback);
|
|
230
|
+
invariant(this.#resolver, "Resolver is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 205, S: this, A: ["this.#resolver", "'Resolver is not set'"] });
|
|
231
|
+
return this.#resolver.resolveSync(this.#uri, true, this.#resolverCallback);
|
|
198
232
|
}
|
|
199
233
|
/**
|
|
200
234
|
* @inheritdoc
|
|
@@ -203,16 +237,8 @@ var RefImpl = class _RefImpl {
|
|
|
203
237
|
if (this.#target) {
|
|
204
238
|
return this.#target;
|
|
205
239
|
}
|
|
206
|
-
invariant(this.#resolver, "Resolver is not set", {
|
|
207
|
-
|
|
208
|
-
L: 404,
|
|
209
|
-
S: this,
|
|
210
|
-
A: [
|
|
211
|
-
"this.#resolver",
|
|
212
|
-
"'Resolver is not set'"
|
|
213
|
-
]
|
|
214
|
-
});
|
|
215
|
-
const obj = await this.#resolver.resolve(this.#dxn);
|
|
240
|
+
invariant(this.#resolver, "Resolver is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 214, S: this, A: ["this.#resolver", "'Resolver is not set'"] });
|
|
241
|
+
const obj = await this.#resolver.resolveLegacy(this.#uri);
|
|
216
242
|
if (obj == null) {
|
|
217
243
|
throw new Error("Object not found");
|
|
218
244
|
}
|
|
@@ -225,16 +251,14 @@ var RefImpl = class _RefImpl {
|
|
|
225
251
|
if (this.#target) {
|
|
226
252
|
return this.#target;
|
|
227
253
|
}
|
|
228
|
-
invariant(this.#resolver, "Resolver is not set", {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
});
|
|
237
|
-
return await this.#resolver.resolve(this.#dxn);
|
|
254
|
+
invariant(this.#resolver, "Resolver is not set", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 227, S: this, A: ["this.#resolver", "'Resolver is not set'"] });
|
|
255
|
+
return await this.#resolver.resolveLegacy(this.#uri);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* @inheritdoc
|
|
259
|
+
*/
|
|
260
|
+
onResolved(callback) {
|
|
261
|
+
return this.#resolved.on(callback);
|
|
238
262
|
}
|
|
239
263
|
/**
|
|
240
264
|
* Do not inline the target object in the reference.
|
|
@@ -242,13 +266,13 @@ var RefImpl = class _RefImpl {
|
|
|
242
266
|
* Clones the reference object.
|
|
243
267
|
*/
|
|
244
268
|
noInline() {
|
|
245
|
-
const ref = new _RefImpl(this.#
|
|
269
|
+
const ref = new _RefImpl(this.#uri, void 0);
|
|
246
270
|
ref.#resolver = this.#resolver;
|
|
247
271
|
return ref;
|
|
248
272
|
}
|
|
249
273
|
encode() {
|
|
250
274
|
return {
|
|
251
|
-
"/": this.#
|
|
275
|
+
"/": this.#uri,
|
|
252
276
|
...this.#target ? {
|
|
253
277
|
target: this.#target
|
|
254
278
|
} : {}
|
|
@@ -267,7 +291,7 @@ var RefImpl = class _RefImpl {
|
|
|
267
291
|
if (this.#target) {
|
|
268
292
|
return `Ref(${this.#target.toString()})`;
|
|
269
293
|
}
|
|
270
|
-
return `Ref(${this.#
|
|
294
|
+
return `Ref(${this.#uri.toString()})`;
|
|
271
295
|
}
|
|
272
296
|
[inspectCustom] = (depth, options, inspect) => {
|
|
273
297
|
return this.toString();
|
|
@@ -280,11 +304,14 @@ var RefImpl = class _RefImpl {
|
|
|
280
304
|
* so without this, each access would create a separate cache entry.
|
|
281
305
|
*/
|
|
282
306
|
[Hash.symbol]() {
|
|
283
|
-
return Hash.hash(this.#
|
|
307
|
+
return Hash.hash(this.#uri.toString());
|
|
284
308
|
}
|
|
285
309
|
/** Effect Equal trait. See {@link Hash.symbol} for rationale. */
|
|
286
310
|
[Equal.symbol](that) {
|
|
287
|
-
return that instanceof _RefImpl && this.#
|
|
311
|
+
return that instanceof _RefImpl && this.#uri === that.uri;
|
|
312
|
+
}
|
|
313
|
+
get atom() {
|
|
314
|
+
return refSimpleFamily(this);
|
|
288
315
|
}
|
|
289
316
|
/**
|
|
290
317
|
* Internal method to set the resolver.
|
|
@@ -305,35 +332,19 @@ var RefImpl = class _RefImpl {
|
|
|
305
332
|
}
|
|
306
333
|
};
|
|
307
334
|
var setRefResolver = (ref, resolver) => {
|
|
308
|
-
invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
|
|
309
|
-
F: __dxlog_file,
|
|
310
|
-
L: 506,
|
|
311
|
-
S: void 0,
|
|
312
|
-
A: [
|
|
313
|
-
"ref instanceof RefImpl",
|
|
314
|
-
"'Ref is not an instance of RefImpl'"
|
|
315
|
-
]
|
|
316
|
-
});
|
|
335
|
+
invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 304, S: void 0, A: ["ref instanceof RefImpl", "'Ref is not an instance of RefImpl'"] });
|
|
317
336
|
ref._setResolver(resolver);
|
|
318
337
|
};
|
|
319
338
|
var getRefSavedTarget = (ref) => {
|
|
320
|
-
invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", {
|
|
321
|
-
F: __dxlog_file,
|
|
322
|
-
L: 514,
|
|
323
|
-
S: void 0,
|
|
324
|
-
A: [
|
|
325
|
-
"ref instanceof RefImpl",
|
|
326
|
-
"'Ref is not an instance of RefImpl'"
|
|
327
|
-
]
|
|
328
|
-
});
|
|
339
|
+
invariant(ref instanceof RefImpl, "Ref is not an instance of RefImpl", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 310, S: void 0, A: ["ref instanceof RefImpl", "'Ref is not an instance of RefImpl'"] });
|
|
329
340
|
return ref._getSavedTarget();
|
|
330
341
|
};
|
|
331
342
|
var refVariance = {
|
|
332
343
|
_T: null
|
|
333
344
|
};
|
|
334
345
|
var refFromEncodedReference = (encodedReference, resolver) => {
|
|
335
|
-
const
|
|
336
|
-
const ref = new RefImpl(
|
|
346
|
+
const uri = EncodedReference.toURI(encodedReference);
|
|
347
|
+
const ref = new RefImpl(uri);
|
|
337
348
|
if (resolver) {
|
|
338
349
|
setRefResolver(ref, resolver);
|
|
339
350
|
}
|
|
@@ -346,40 +357,39 @@ var StaticRefResolver = class {
|
|
|
346
357
|
this.objects.set(obj.id, obj);
|
|
347
358
|
return this;
|
|
348
359
|
}
|
|
349
|
-
addSchema(
|
|
350
|
-
const
|
|
351
|
-
invariant(
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
A: [
|
|
356
|
-
"dxn",
|
|
357
|
-
"'Schema has no DXN'"
|
|
358
|
-
]
|
|
359
|
-
});
|
|
360
|
-
this.schemas.set(dxn.toString(), schema);
|
|
360
|
+
addSchema(input) {
|
|
361
|
+
const schema = getStaticTypeSchema(input);
|
|
362
|
+
invariant(schema, "Type entity is missing its source schema", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 335, S: this, A: ["schema", "'Type entity is missing its source schema'"] });
|
|
363
|
+
const uri = getSchemaURI(schema);
|
|
364
|
+
invariant(uri, "Schema has no URI", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 337, S: this, A: ["uri", "'Schema has no URI'"] });
|
|
365
|
+
this.schemas.set(uri, schema);
|
|
361
366
|
return this;
|
|
362
367
|
}
|
|
363
|
-
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
return void 0;
|
|
367
|
-
}
|
|
368
|
-
return this.objects.get(id);
|
|
368
|
+
resolve(uri, _options) {
|
|
369
|
+
const obj = this.#lookup(uri);
|
|
370
|
+
return makeSettledRequest(obj ? "ready" : "unavailable", obj);
|
|
369
371
|
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
+
resolveSync(uri, _load, _onLoad) {
|
|
373
|
+
return this.#lookup(uri);
|
|
374
|
+
}
|
|
375
|
+
async resolveLegacy(uri) {
|
|
376
|
+
return this.#lookup(uri);
|
|
377
|
+
}
|
|
378
|
+
async resolveSchema(uri) {
|
|
379
|
+
return this.schemas.get(uri);
|
|
380
|
+
}
|
|
381
|
+
#lookup(uri) {
|
|
382
|
+
const echoUri = EID.tryParse(uri);
|
|
383
|
+
const id = echoUri ? EID.getEntityId(echoUri) : void 0;
|
|
372
384
|
if (id == null) {
|
|
373
385
|
return void 0;
|
|
374
386
|
}
|
|
375
387
|
return this.objects.get(id);
|
|
376
388
|
}
|
|
377
|
-
async resolveSchema(dxn) {
|
|
378
|
-
return this.schemas.get(dxn.toString());
|
|
379
|
-
}
|
|
380
389
|
};
|
|
381
390
|
|
|
382
391
|
export {
|
|
392
|
+
loadRefTarget,
|
|
383
393
|
JSON_SCHEMA_ECHO_REF_ID,
|
|
384
394
|
getSchemaReference,
|
|
385
395
|
createSchemaReference,
|
|
@@ -387,10 +397,11 @@ export {
|
|
|
387
397
|
RefTypeId,
|
|
388
398
|
Ref,
|
|
389
399
|
createEchoReferenceSchema,
|
|
400
|
+
makeSettledRequest,
|
|
390
401
|
RefImpl,
|
|
391
402
|
setRefResolver,
|
|
392
403
|
getRefSavedTarget,
|
|
393
404
|
refFromEncodedReference,
|
|
394
405
|
StaticRefResolver
|
|
395
406
|
};
|
|
396
|
-
//# sourceMappingURL=chunk-
|
|
407
|
+
//# sourceMappingURL=chunk-4TPQZPLY.mjs.map
|