@dxos/echo 0.8.4-main.ef1bc66f44 → 0.8.4-main.effb148878
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 +9 -9
- package/dist/lib/neutral/Annotation.mjs +7 -3
- package/dist/lib/neutral/Database.mjs +8 -4
- package/dist/lib/neutral/Entity.mjs +35 -18
- package/dist/lib/neutral/Err.mjs +3 -1
- package/dist/lib/neutral/Extension.mjs +18 -0
- package/dist/lib/neutral/Extension.mjs.map +7 -0
- package/dist/lib/neutral/Feed.mjs +54 -0
- package/dist/lib/neutral/Feed.mjs.map +7 -0
- package/dist/lib/neutral/Filter.mjs +25 -12
- package/dist/lib/neutral/Format.mjs +23 -3
- package/dist/lib/neutral/JsonSchema.mjs +9 -9
- package/dist/lib/neutral/Key.mjs +7 -3
- package/dist/lib/neutral/Migration.mjs +18 -0
- package/dist/lib/neutral/Migration.mjs.map +7 -0
- package/dist/lib/neutral/Obj.mjs +41 -23
- package/dist/lib/neutral/Order.mjs +1 -1
- package/dist/lib/neutral/Query.mjs +21 -9
- package/dist/lib/neutral/QueryResult.mjs +1 -1
- package/dist/lib/neutral/Ref.mjs +13 -9
- package/dist/lib/neutral/Relation.mjs +34 -23
- package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
- package/dist/lib/neutral/Tag.mjs +14 -10
- package/dist/lib/neutral/Type.mjs +52 -36
- package/dist/lib/neutral/{chunk-K5K3Z62A.mjs → chunk-4SYHDOQA.mjs} +14 -6
- package/dist/lib/neutral/chunk-4SYHDOQA.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-XAJMXQ4H.mjs → chunk-4U7OD55H.mjs} +6 -2
- package/dist/lib/neutral/chunk-4U7OD55H.mjs.map +7 -0
- package/dist/lib/neutral/chunk-52NG2XEE.mjs +34 -0
- package/dist/lib/neutral/chunk-52NG2XEE.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-KB7RIVLK.mjs → chunk-A5HDDVKS.mjs} +33 -6
- package/dist/lib/neutral/chunk-A5HDDVKS.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-DLPC7DHQ.mjs → chunk-EZ4XJFHJ.mjs} +9 -11
- package/dist/lib/neutral/chunk-EZ4XJFHJ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ZAHWXGK4.mjs → chunk-F625JEZB.mjs} +97 -19
- package/dist/lib/neutral/chunk-F625JEZB.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FFCN66OF.mjs +420 -0
- package/dist/lib/neutral/chunk-FFCN66OF.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-RPB6V4BE.mjs → chunk-GOHDOJE3.mjs} +16 -3
- package/dist/lib/neutral/chunk-GOHDOJE3.mjs.map +7 -0
- package/dist/lib/neutral/chunk-GWFFC34K.mjs +50 -0
- package/dist/lib/neutral/chunk-GWFFC34K.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J7QWJQQV.mjs +318 -0
- package/dist/lib/neutral/chunk-J7QWJQQV.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-QARLJVDB.mjs → chunk-JTHNDGAR.mjs} +8 -4
- package/dist/lib/neutral/chunk-JTHNDGAR.mjs.map +7 -0
- package/dist/lib/neutral/chunk-K5RH2PBH.mjs +361 -0
- package/dist/lib/neutral/chunk-K5RH2PBH.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-RIMHNJ3E.mjs → chunk-KHRAQDYX.mjs} +138 -91
- package/dist/lib/neutral/chunk-KHRAQDYX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-L65CW5EI.mjs +156 -0
- package/dist/lib/neutral/chunk-L65CW5EI.mjs.map +7 -0
- package/dist/lib/neutral/chunk-LNZIPZX6.mjs +2186 -0
- package/dist/lib/neutral/chunk-LNZIPZX6.mjs.map +7 -0
- package/dist/lib/neutral/chunk-MPXUNTME.mjs +41 -0
- package/dist/lib/neutral/chunk-MPXUNTME.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-7WE7SBA2.mjs → chunk-O2EOH7XQ.mjs} +152 -134
- package/dist/lib/neutral/chunk-O2EOH7XQ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-MTEHHY62.mjs → chunk-Q7ID37KF.mjs} +121 -94
- package/dist/lib/neutral/chunk-Q7ID37KF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QLYEQ5VA.mjs +205 -0
- package/dist/lib/neutral/chunk-QLYEQ5VA.mjs.map +7 -0
- package/dist/lib/neutral/chunk-SSDGRJ3A.mjs +747 -0
- package/dist/lib/neutral/chunk-SSDGRJ3A.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ROKO4RKJ.mjs → chunk-TTCSATUD.mjs} +2 -2
- package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-UEFRFUYC.mjs} +8 -4
- package/dist/lib/neutral/chunk-UEFRFUYC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-UN7K472Q.mjs +132 -0
- package/dist/lib/neutral/chunk-UN7K472Q.mjs.map +7 -0
- package/dist/lib/neutral/chunk-UQAMAXDU.mjs +243 -0
- package/dist/lib/neutral/chunk-UQAMAXDU.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-4L6DOFXP.mjs → chunk-V5NE2X7Y.mjs} +1 -1
- package/dist/lib/neutral/chunk-V5NE2X7Y.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-V72DY6LU.mjs} +1 -1
- package/dist/lib/neutral/chunk-ZII2BGPM.mjs +269 -0
- package/dist/lib/neutral/chunk-ZII2BGPM.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-N2QNHMT5.mjs → chunk-ZM7VFIS2.mjs} +22 -2
- package/dist/lib/neutral/chunk-ZM7VFIS2.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +56 -29
- package/dist/lib/neutral/internal/index.mjs +128 -77
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/testing/index.mjs +226 -174
- package/dist/lib/neutral/testing/index.mjs.map +3 -3
- package/dist/types/src/Annotation.d.ts +3 -3
- package/dist/types/src/Annotation.d.ts.map +1 -1
- package/dist/types/src/Collection.d.ts +15 -0
- package/dist/types/src/Collection.d.ts.map +1 -0
- package/dist/types/src/Database.d.ts +27 -42
- package/dist/types/src/Database.d.ts.map +1 -1
- package/dist/types/src/Dataset.d.ts +29 -0
- package/dist/types/src/Dataset.d.ts.map +1 -0
- package/dist/types/src/Entity.d.ts +123 -29
- package/dist/types/src/Entity.d.ts.map +1 -1
- package/dist/types/src/Err.d.ts +56 -13
- package/dist/types/src/Err.d.ts.map +1 -1
- package/dist/types/src/Extension.d.ts +80 -0
- package/dist/types/src/Extension.d.ts.map +1 -0
- package/dist/types/src/Extension.test.d.ts +2 -0
- package/dist/types/src/Extension.test.d.ts.map +1 -0
- package/dist/types/src/Feed.d.ts +229 -0
- package/dist/types/src/Feed.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +74 -11
- package/dist/types/src/Filter.d.ts.map +1 -1
- package/dist/types/src/Filter.test.d.ts +2 -0
- package/dist/types/src/Filter.test.d.ts.map +1 -0
- package/dist/types/src/Format.d.ts +3 -3
- package/dist/types/src/Format.d.ts.map +1 -1
- package/dist/types/src/Hypergraph.d.ts +15 -10
- 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 +11 -4
- 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 +72 -0
- package/dist/types/src/Migration.d.ts.map +1 -0
- package/dist/types/src/Obj.d.ts +201 -77
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Order.d.ts.map +1 -1
- package/dist/types/src/Query.d.ts +117 -17
- package/dist/types/src/Query.d.ts.map +1 -1
- package/dist/types/src/Ref.d.ts +66 -10
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +127 -54
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/SchemaRegistry.d.ts +12 -13
- package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
- package/dist/types/src/Tag.d.ts +4 -3
- package/dist/types/src/Tag.d.ts.map +1 -1
- package/dist/types/src/Type.d.ts +337 -218
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/View.d.ts +65 -0
- package/dist/types/src/View.d.ts.map +1 -0
- 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 +8 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +98 -24
- package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/index.d.ts +4 -0
- package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
- package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
- package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
- package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +15 -6
- package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/api.d.ts +13 -0
- package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/entity.d.ts +67 -0
- package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/index.d.ts +10 -0
- package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/model.d.ts +57 -0
- package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/object.d.ts +3 -3
- package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/relation.d.ts +51 -0
- package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
- 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 +25 -0
- package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
- package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
- package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
- package/dist/types/src/internal/{formats → Format}/format.d.ts +2 -1
- package/dist/types/src/internal/Format/format.d.ts.map +1 -0
- package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
- package/dist/types/src/internal/{formats → Format}/index.d.ts +2 -2
- package/dist/types/src/internal/Format/index.d.ts.map +1 -0
- package/dist/types/src/internal/Format/number.d.ts.map +1 -0
- package/dist/types/src/internal/Format/object.d.ts.map +1 -0
- package/dist/types/src/internal/Format/select.d.ts.map +1 -0
- package/dist/types/src/internal/Format/string.d.ts.map +1 -0
- package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
- package/dist/types/src/internal/Format/types.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
- package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +37 -37
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +3 -2
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/create-object.d.ts +10 -12
- package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
- package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -1
- package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/json-serializer.d.ts +16 -8
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/set-value.d.ts +2 -2
- package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +5 -5
- package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/typed-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/Query.d.ts +10 -0
- package/dist/types/src/internal/Query.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
- package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref.d.ts +42 -19
- package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
- package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
- package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
- package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
- package/dist/types/src/internal/Type/index.d.ts +3 -0
- package/dist/types/src/internal/Type/index.d.ts.map +1 -0
- package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -1
- package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
- 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/{api → common/api}/index.d.ts +0 -4
- package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
- package/dist/types/src/internal/{api → common/api}/meta.d.ts +3 -3
- package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/index.d.ts +4 -0
- package/dist/types/src/internal/common/index.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/make-object.d.ts +19 -0
- package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +2 -2
- package/dist/types/src/internal/{proxy → 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 -0
- package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +18 -2
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
- package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/entity.d.ts +94 -0
- package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/meta.d.ts +12 -1
- package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts +58 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/typename.d.ts +7 -0
- package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
- package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
- package/dist/types/src/internal/index.d.ts +9 -10
- package/dist/types/src/internal/index.d.ts.map +1 -1
- 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 +77 -82
- 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 +30 -15
- package/src/Annotation.ts +7 -3
- package/src/Collection.ts +36 -0
- package/src/Database.ts +80 -77
- package/src/Dataset.ts +34 -0
- package/src/Entity.test.ts +116 -6
- package/src/Entity.ts +181 -66
- package/src/Err.ts +25 -3
- package/src/Extension.test.ts +235 -0
- package/src/Extension.ts +122 -0
- package/src/Feed.ts +356 -0
- package/src/Filter.test.ts +90 -0
- package/src/Filter.ts +152 -21
- package/src/Format.ts +3 -3
- package/src/Hypergraph.ts +16 -11
- package/src/Json.test.ts +175 -0
- package/src/Json.ts +103 -0
- package/src/JsonSchema.ts +14 -4
- package/src/Key.ts +1 -1
- package/src/Migration.ts +114 -0
- package/src/Obj.test.ts +158 -20
- package/src/Obj.ts +451 -183
- package/src/Order.ts +3 -1
- package/src/Query.test.ts +446 -89
- package/src/Query.ts +300 -35
- package/src/Ref.ts +83 -12
- package/src/Relation.test.ts +16 -10
- package/src/Relation.ts +236 -165
- package/src/SchemaRegistry.ts +13 -17
- package/src/Tag.ts +9 -9
- package/src/Type.test.ts +169 -24
- package/src/Type.ts +561 -354
- package/src/View.ts +101 -0
- package/src/exemplars.test.ts +21 -0
- package/src/index.ts +9 -2
- package/src/internal/Annotation/annotations.test.ts +165 -0
- package/src/internal/{annotations → Annotation}/annotations.ts +181 -101
- package/src/internal/{annotations → Annotation}/index.ts +1 -0
- package/src/internal/{api → Annotation}/sorting.ts +2 -4
- package/src/internal/{annotations → Annotation}/util.ts +17 -9
- package/src/internal/{api/entity.ts → Entity/api.ts} +9 -8
- package/src/internal/Entity/entity.ts +246 -0
- package/src/internal/{entities → Entity}/index.ts +4 -0
- package/src/internal/{entities → Entity}/model.ts +42 -60
- package/src/internal/{entities → Entity}/object.ts +13 -6
- package/src/internal/Entity/relation.ts +179 -0
- package/src/internal/Entity/type-kind.ts +67 -0
- package/src/internal/Entity/type-uri.ts +87 -0
- package/src/internal/Entity/util.ts +34 -0
- package/src/internal/{api → Entity}/version.ts +2 -2
- package/src/internal/{formats → Format}/date.test.ts +1 -2
- package/src/internal/{formats → Format}/date.ts +0 -4
- package/src/internal/{formats → Format}/format.test.ts +1 -2
- package/src/internal/{formats → Format}/index.ts +2 -3
- package/src/internal/{formats → Format}/types.ts +2 -2
- package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
- package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
- package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +64 -151
- package/src/internal/{json-schema → JsonSchema}/json-schema.ts +47 -28
- package/src/internal/{object → Obj}/clone.ts +10 -6
- package/src/internal/{object → Obj}/common.ts +2 -2
- package/src/internal/{object → Obj}/create-object.test.ts +13 -14
- package/src/internal/Obj/create-object.ts +135 -0
- package/src/internal/{object → Obj}/deleted.ts +2 -2
- package/src/internal/{object → Obj}/index.ts +0 -1
- package/src/internal/{object → Obj}/inspect.ts +3 -3
- package/src/internal/Obj/json-serializer.test.ts +185 -0
- package/src/internal/{object → Obj}/json-serializer.ts +108 -45
- package/src/internal/{object → Obj}/schema-validator.ts +1 -1
- package/src/internal/{object → Obj}/set-value.test.ts +31 -54
- package/src/internal/{object → Obj}/set-value.ts +3 -3
- package/src/internal/{object → Obj}/snapshot.ts +41 -23
- package/src/internal/Obj/typed-object.test.ts +32 -0
- package/src/internal/{object → Obj}/typed-object.ts +5 -5
- package/src/internal/Query.ts +156 -0
- package/src/internal/{ref → Ref}/ref-array.ts +1 -2
- package/src/internal/{ref → Ref}/ref.test.ts +16 -26
- package/src/internal/{ref → Ref}/ref.ts +117 -57
- package/src/internal/{schema → Type}/compose.test.ts +6 -5
- package/src/internal/{schema → Type}/compose.ts +1 -1
- package/src/internal/Type/index.ts +6 -0
- package/src/internal/{schema → Type}/manipulation.ts +0 -25
- package/src/internal/Type/type-schema.ts +60 -0
- package/src/internal/{README.md → common/README.md} +2 -2
- package/src/internal/{api → common/api}/index.ts +0 -4
- package/src/internal/{api → common/api}/meta.ts +3 -3
- package/src/internal/common/index.ts +7 -0
- package/src/internal/{proxy → common/proxy}/change-context.ts +1 -1
- package/src/internal/{proxy → common/proxy}/change.test.ts +97 -97
- package/src/internal/{proxy → common/proxy}/errors.ts +2 -2
- package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
- package/src/internal/{proxy → common/proxy}/json-serializer.ts +20 -14
- package/src/internal/{proxy → common/proxy}/make-object.ts +37 -15
- package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
- package/src/internal/{proxy → common/proxy}/reactive-array.ts +1 -1
- package/src/internal/common/proxy/reactive.test.ts +54 -0
- package/src/internal/{proxy → common/proxy}/reactive.ts +12 -4
- package/src/internal/common/proxy/schema.test.ts +107 -0
- package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +15 -15
- package/src/internal/{proxy → common/proxy}/typed-handler.ts +75 -18
- package/src/internal/{proxy → common/proxy}/typed-object.test.ts +17 -30
- package/src/internal/{types → common/types}/base.ts +1 -1
- package/src/internal/common/types/entity.ts +133 -0
- package/src/internal/{types → common/types}/index.ts +1 -0
- package/src/internal/{types → common/types}/meta.ts +15 -1
- package/src/internal/common/types/model-symbols.ts +74 -0
- package/src/internal/common/types/typename.ts +91 -0
- package/src/internal/{types → common/types}/version.ts +2 -3
- package/src/internal/index.ts +9 -31
- package/src/testing/api.test.ts +15 -12
- package/src/testing/test-data.ts +158 -99
- package/src/testing/test-schema.ts +33 -67
- package/src/testing/util.ts +14 -11
- package/dist/lib/neutral/chunk-2AF5GMG6.mjs +0 -171
- package/dist/lib/neutral/chunk-2AF5GMG6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-4L6DOFXP.mjs.map +0 -7
- package/dist/lib/neutral/chunk-7WE7SBA2.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ANHVGJI4.mjs.map +0 -7
- package/dist/lib/neutral/chunk-DLPC7DHQ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-EBUAT5ID.mjs +0 -229
- package/dist/lib/neutral/chunk-EBUAT5ID.mjs.map +0 -7
- package/dist/lib/neutral/chunk-K5K3Z62A.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KB7RIVLK.mjs.map +0 -7
- package/dist/lib/neutral/chunk-LKFNEFHF.mjs +0 -130
- package/dist/lib/neutral/chunk-LKFNEFHF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-MTEHHY62.mjs.map +0 -7
- package/dist/lib/neutral/chunk-N2QNHMT5.mjs.map +0 -7
- package/dist/lib/neutral/chunk-QARLJVDB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-RIMHNJ3E.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ROKO4RKJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-RPB6V4BE.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TLGNKUUG.mjs +0 -3905
- package/dist/lib/neutral/chunk-TLGNKUUG.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TQT6WTIJ.mjs +0 -142
- package/dist/lib/neutral/chunk-TQT6WTIJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-VUQGRDRI.mjs +0 -97
- package/dist/lib/neutral/chunk-VUQGRDRI.mjs.map +0 -7
- package/dist/lib/neutral/chunk-X2MPMYYN.mjs +0 -13
- package/dist/lib/neutral/chunk-X2MPMYYN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XAJMXQ4H.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ZAHWXGK4.mjs.map +0 -7
- package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/index.d.ts +0 -3
- package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
- package/dist/types/src/internal/api/annotations.d.ts +0 -23
- package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/api/entity.d.ts +0 -13
- package/dist/types/src/internal/api/entity.d.ts.map +0 -1
- package/dist/types/src/internal/api/index.d.ts.map +0 -1
- package/dist/types/src/internal/api/meta.d.ts.map +0 -1
- package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
- package/dist/types/src/internal/api/version.d.ts.map +0 -1
- package/dist/types/src/internal/entities/entity.d.ts +0 -20
- package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
- package/dist/types/src/internal/entities/index.d.ts +0 -6
- package/dist/types/src/internal/entities/index.d.ts.map +0 -1
- package/dist/types/src/internal/entities/model.d.ts +0 -79
- package/dist/types/src/internal/entities/model.d.ts.map +0 -1
- package/dist/types/src/internal/entities/object.d.ts.map +0 -1
- package/dist/types/src/internal/entities/relation.d.ts +0 -62
- package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
- package/dist/types/src/internal/entities/util.d.ts.map +0 -1
- package/dist/types/src/internal/formats/date.d.ts.map +0 -1
- package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
- package/dist/types/src/internal/formats/format.d.ts.map +0 -1
- package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
- package/dist/types/src/internal/formats/index.d.ts.map +0 -1
- package/dist/types/src/internal/formats/number.d.ts.map +0 -1
- package/dist/types/src/internal/formats/object.d.ts.map +0 -1
- package/dist/types/src/internal/formats/select.d.ts.map +0 -1
- package/dist/types/src/internal/formats/string.d.ts.map +0 -1
- package/dist/types/src/internal/formats/types.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/clone.d.ts.map +0 -1
- package/dist/types/src/internal/object/common.d.ts.map +0 -1
- package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
- package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
- package/dist/types/src/internal/object/ids.d.ts +0 -6
- package/dist/types/src/internal/object/ids.d.ts.map +0 -1
- package/dist/types/src/internal/object/index.d.ts.map +0 -1
- package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
- package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
- package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
- package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
- package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
- package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
- package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
- package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/make-object.d.ts +0 -14
- package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/ref/index.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
- package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
- package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
- package/dist/types/src/internal/schema/echo-schema.d.ts +0 -181
- package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
- package/dist/types/src/internal/schema/index.d.ts +0 -4
- package/dist/types/src/internal/schema/index.d.ts.map +0 -1
- package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
- package/dist/types/src/internal/schema/persistent-schema.d.ts +0 -20
- package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
- package/dist/types/src/internal/types/base.d.ts.map +0 -1
- package/dist/types/src/internal/types/entity.d.ts +0 -37
- package/dist/types/src/internal/types/entity.d.ts.map +0 -1
- package/dist/types/src/internal/types/index.d.ts.map +0 -1
- package/dist/types/src/internal/types/meta.d.ts.map +0 -1
- package/dist/types/src/internal/types/typename.d.ts.map +0 -1
- package/dist/types/src/internal/types/version.d.ts.map +0 -1
- package/src/internal/annotations/annotations.test.ts +0 -96
- package/src/internal/api/annotations.ts +0 -60
- package/src/internal/entities/entity.ts +0 -126
- package/src/internal/entities/relation.ts +0 -171
- package/src/internal/entities/util.ts +0 -33
- package/src/internal/object/create-object.ts +0 -95
- package/src/internal/object/ids.ts +0 -12
- package/src/internal/object/json-serializer.test.ts +0 -98
- package/src/internal/object/typed-object.test.ts +0 -34
- package/src/internal/proxy/schema.test.ts +0 -145
- package/src/internal/schema/echo-schema.ts +0 -424
- package/src/internal/schema/index.ts +0 -7
- package/src/internal/schema/persistent-schema.ts +0 -28
- package/src/internal/types/entity.ts +0 -54
- package/src/internal/types/typename.ts +0 -55
- /package/dist/lib/neutral/{chunk-OMUPQMLR.mjs.map → chunk-V72DY6LU.mjs.map} +0 -0
- /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
- /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/format.test.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/number.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/object.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/select.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
- /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
- /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
- /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
- /package/src/internal/{formats → Format}/format.ts +0 -0
- /package/src/internal/{formats → Format}/number.ts +0 -0
- /package/src/internal/{formats → Format}/object.ts +0 -0
- /package/src/internal/{formats → Format}/select.ts +0 -0
- /package/src/internal/{formats → Format}/string.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
- /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
- /package/src/internal/{ref → Ref}/index.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as Schema from 'effect/Schema';
|
|
2
|
-
import { EchoObjectSchema } from '../entities';
|
|
3
|
-
import { JsonSchemaType } from '../json-schema';
|
|
4
|
-
/**
|
|
5
|
-
* Persistent representation of a schema.
|
|
6
|
-
*/
|
|
7
|
-
export declare const PersistentSchema: EchoObjectSchema<Schema.Struct<{
|
|
8
|
-
name: Schema.optional<typeof Schema.String>;
|
|
9
|
-
typename: Schema.refine<string, typeof Schema.String>;
|
|
10
|
-
version: Schema.refine<string, typeof Schema.String>;
|
|
11
|
-
jsonSchema: Schema.Schema<JsonSchemaType, JsonSchemaType, never>;
|
|
12
|
-
}>, Readonly<{
|
|
13
|
-
name: Schema.optional<typeof Schema.String>;
|
|
14
|
-
typename: Schema.refine<string, typeof Schema.String>;
|
|
15
|
-
version: Schema.refine<string, typeof Schema.String>;
|
|
16
|
-
jsonSchema: Schema.Schema<JsonSchemaType, JsonSchemaType, never>;
|
|
17
|
-
}>>;
|
|
18
|
-
export interface PersistentSchema extends Schema.Schema.Type<typeof PersistentSchema> {
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=persistent-schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"persistent-schema.d.ts","sourceRoot":"","sources":["../../../../../src/internal/schema/persistent-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;GAW5B,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC;CAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/internal/types/base.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzD;;;;GAIG;AAGH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEhD;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,aAAa,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAE/D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,aAAa,IAAI,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAGvF,KAAK,QAAQ,GAAG;IAAE,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,YAAY,EAC5D,QAAQ,CAAC,KACR,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAErF,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import * as Schema from 'effect/Schema';
|
|
2
|
-
/**
|
|
3
|
-
* String key used to identify the kind of an entity instance (object or relation).
|
|
4
|
-
*/
|
|
5
|
-
export declare const KindId: "~@dxos/echo/Kind";
|
|
6
|
-
export type KindId = typeof KindId;
|
|
7
|
-
/**
|
|
8
|
-
* String key used to identify the kind of a schema (object schema or relation schema).
|
|
9
|
-
* Parallels KindId which identifies instance kinds.
|
|
10
|
-
*/
|
|
11
|
-
export declare const SchemaKindId: "~@dxos/echo/SchemaKind";
|
|
12
|
-
export type SchemaKindId = typeof SchemaKindId;
|
|
13
|
-
/**
|
|
14
|
-
* String key used to brand snapshot types.
|
|
15
|
-
* Snapshots have SnapshotKindId instead of KindId, making them
|
|
16
|
-
* distinguishable from reactive objects at the type level.
|
|
17
|
-
*/
|
|
18
|
-
export declare const SnapshotKindId: "~@dxos/echo/SnapshotKind";
|
|
19
|
-
export type SnapshotKindId = typeof SnapshotKindId;
|
|
20
|
-
/**
|
|
21
|
-
* Kinds of entities stored in ECHO: objects and relations.
|
|
22
|
-
*/
|
|
23
|
-
export declare enum EntityKind {
|
|
24
|
-
Object = "object",
|
|
25
|
-
Relation = "relation"
|
|
26
|
-
}
|
|
27
|
-
export declare const EntityKindSchema: Schema.Enums<typeof EntityKind>;
|
|
28
|
-
/**
|
|
29
|
-
* Typename for generic object references (Type.Obj / Type.Ref(Type.Obj)).
|
|
30
|
-
* Used when referencing any object without a specific schema.
|
|
31
|
-
*/
|
|
32
|
-
export declare const ANY_OBJECT_TYPENAME = "dxos.org/schema/AnyObject";
|
|
33
|
-
/**
|
|
34
|
-
* Version for generic object references.
|
|
35
|
-
*/
|
|
36
|
-
export declare const ANY_OBJECT_VERSION = "0.0.0";
|
|
37
|
-
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../../../src/internal/types/entity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AASxC;;GAEG;AACH,eAAO,MAAM,MAAM,EAAG,kBAA2B,CAAC;AAClD,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAG,wBAAiC,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAG,0BAAmC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;GAEG;AACH,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,gBAAgB,iCAA2B,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../../../src/internal/types/meta.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,SAAS,UAAU,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,MAAM,eAAgC,CAAC;AAOpD,eAAO,MAAM,gBAAgB;;;;;;;;IAG3B;;;;OAIG;;EAIH,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAmBrE,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,IAAI,MAAM,KAAG,UAA8B,CAAC;AACvF,eAAO,MAAM,gBAAgB,GAAI,GAAG,UAAU,EAAE,GAAG,UAAU,YAA2C,CAAC;AAGzG,eAAO,MAAM,kBAAkB,EAAE,UAAU,CAAC,aAAa,CACoB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typename.d.ts","sourceRoot":"","sources":["../../../../../src/internal/types/typename.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,SAAS,UAAU,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,MAAM,eAAgC,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,QAAQ,eAAkC,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,QAAQ,eAAkC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../../src/internal/types/version.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,MAA+C,CAAC;AAEnF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import * as Schema from 'effect/Schema';
|
|
6
|
-
import { describe, test } from 'vitest';
|
|
7
|
-
|
|
8
|
-
import { EchoObjectSchema } from '../entities';
|
|
9
|
-
|
|
10
|
-
import { LabelAnnotation, TypenameSchema, VersionSchema, getLabelWithSchema } from './annotations';
|
|
11
|
-
|
|
12
|
-
// TODO(dmaretskyi): Use one of the testing schemas.
|
|
13
|
-
const TestObject = Schema.Struct({
|
|
14
|
-
name: Schema.optional(Schema.String),
|
|
15
|
-
fallbackName: Schema.optional(Schema.String),
|
|
16
|
-
other: Schema.String,
|
|
17
|
-
}).pipe(LabelAnnotation.set(['name', 'fallbackName']));
|
|
18
|
-
|
|
19
|
-
type TestObject = Schema.Schema.Type<typeof TestObject>;
|
|
20
|
-
|
|
21
|
-
const TestEchoSchema = TestObject.pipe(
|
|
22
|
-
EchoObjectSchema({
|
|
23
|
-
typename: 'dxos.org/type/Test',
|
|
24
|
-
version: '0.1.0',
|
|
25
|
-
}),
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
type TestEchoSchema = Schema.Schema.Type<typeof TestEchoSchema>;
|
|
29
|
-
|
|
30
|
-
describe('annotations', () => {
|
|
31
|
-
describe('Typename', () => {
|
|
32
|
-
test('should validate typename', ({ expect }) => {
|
|
33
|
-
// Valid.
|
|
34
|
-
expect(TypenameSchema.make('dxos.org/type/foo')).to.exist;
|
|
35
|
-
expect(TypenameSchema.make('dxos.org/type/foo-bar')).to.exist;
|
|
36
|
-
expect(TypenameSchema.make('dxos.org/type/foo_bar')).to.exist;
|
|
37
|
-
|
|
38
|
-
// Invalid.
|
|
39
|
-
expect(() => TypenameSchema.make('dxn:dxos.org')).to.throw();
|
|
40
|
-
expect(() => TypenameSchema.make('2dxos.org')).to.throw();
|
|
41
|
-
expect(() => TypenameSchema.make('dxos org')).to.throw();
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test('should validate version', ({ expect }) => {
|
|
45
|
-
// Valid.
|
|
46
|
-
expect(VersionSchema.make('0.1.0')).to.exist;
|
|
47
|
-
|
|
48
|
-
// Invalid.
|
|
49
|
-
expect(() => VersionSchema.make('0.1.x')).to.throw();
|
|
50
|
-
expect(() => VersionSchema.make('0.1.0-alpha')).to.throw();
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
describe('getLabelWithSchema', () => {
|
|
55
|
-
test('should return first available label value', ({ expect }) => {
|
|
56
|
-
const obj: TestObject = {
|
|
57
|
-
name: 'Primary Name',
|
|
58
|
-
fallbackName: 'Fallback Name',
|
|
59
|
-
other: 'Other',
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
expect(getLabelWithSchema(TestObject, obj)).toEqual('Primary Name');
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
test('should fallback to second path if first is undefined', ({ expect }) => {
|
|
66
|
-
const obj: TestObject = {
|
|
67
|
-
name: undefined,
|
|
68
|
-
fallbackName: 'Fallback Name',
|
|
69
|
-
other: 'Other',
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
expect(getLabelWithSchema(TestObject, obj)).toEqual('Fallback Name');
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
test('should return undefined if no label paths resolve', ({ expect }) => {
|
|
76
|
-
const obj: TestObject = {
|
|
77
|
-
name: undefined,
|
|
78
|
-
fallbackName: undefined,
|
|
79
|
-
other: 'Other',
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
expect(getLabelWithSchema(TestObject, obj)).toBeUndefined();
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
test('should return label from echo object', ({ expect }) => {
|
|
86
|
-
const obj: TestEchoSchema = {
|
|
87
|
-
id: 'test',
|
|
88
|
-
name: 'Primary Name',
|
|
89
|
-
fallbackName: 'Fallback Name',
|
|
90
|
-
other: 'Other',
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
expect(getLabelWithSchema(TestEchoSchema, obj)).toEqual('Primary Name');
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Common annotation helpers shared by Obj and Relation modules.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
getDescriptionWithSchema,
|
|
11
|
-
getLabelWithSchema,
|
|
12
|
-
setDescriptionWithSchema,
|
|
13
|
-
setLabelWithSchema,
|
|
14
|
-
} from '../annotations';
|
|
15
|
-
import { type Mutable } from '../proxy';
|
|
16
|
-
import { type AnyProperties, getSchema as getSchema$ } from '../types';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Get the label of an entity.
|
|
20
|
-
* Accepts both reactive entities and snapshots.
|
|
21
|
-
*/
|
|
22
|
-
export const getLabel = (entity: AnyProperties): string | undefined => {
|
|
23
|
-
const schema = getSchema$(entity);
|
|
24
|
-
if (schema != null) {
|
|
25
|
-
return getLabelWithSchema(schema, entity);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Set the label of an entity.
|
|
31
|
-
* Must be called within an Obj.change or Relation.change callback.
|
|
32
|
-
*/
|
|
33
|
-
export const setLabel = (entity: Mutable<AnyProperties>, label: string) => {
|
|
34
|
-
const schema = getSchema$(entity);
|
|
35
|
-
if (schema != null) {
|
|
36
|
-
setLabelWithSchema(schema, entity, label);
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Get the description of an entity.
|
|
42
|
-
* Accepts both reactive entities and snapshots.
|
|
43
|
-
*/
|
|
44
|
-
export const getDescription = (entity: AnyProperties): string | undefined => {
|
|
45
|
-
const schema = getSchema$(entity);
|
|
46
|
-
if (schema != null) {
|
|
47
|
-
return getDescriptionWithSchema(schema, entity);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Set the description of an entity.
|
|
53
|
-
* Must be called within an Obj.change or Relation.change callback.
|
|
54
|
-
*/
|
|
55
|
-
export const setDescription = (entity: Mutable<AnyProperties>, description: string) => {
|
|
56
|
-
const schema = getSchema$(entity);
|
|
57
|
-
if (schema != null) {
|
|
58
|
-
setDescriptionWithSchema(schema, entity, description);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import * as Schema from 'effect/Schema';
|
|
6
|
-
import type * as SchemaAST from 'effect/SchemaAST';
|
|
7
|
-
import type * as Types from 'effect/Types';
|
|
8
|
-
|
|
9
|
-
import { type ToMutable } from '@dxos/util';
|
|
10
|
-
|
|
11
|
-
import { type TypeMeta } from '../annotations';
|
|
12
|
-
import { type AnyEntity, type EntityKind, SchemaKindId } from '../types';
|
|
13
|
-
|
|
14
|
-
// TODO(burdon): Define Schema type for `typename` and use consistently for all DXN-like properties.
|
|
15
|
-
|
|
16
|
-
// type RequiredKeys<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? never : K }[keyof T];
|
|
17
|
-
export type EchoTypeSchemaProps<T, ExtraFields = {}> = Types.Simplify<AnyEntity & ToMutable<T> & ExtraFields>;
|
|
18
|
-
|
|
19
|
-
// TODO(burdon): Rename EchoEntitySchema.
|
|
20
|
-
export interface EchoTypeSchema<
|
|
21
|
-
Self extends Schema.Schema.Any,
|
|
22
|
-
ExtraFields = {},
|
|
23
|
-
K extends EntityKind = EntityKind,
|
|
24
|
-
Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
|
|
25
|
-
> extends TypeMeta,
|
|
26
|
-
Schema.AnnotableClass<
|
|
27
|
-
EchoTypeSchema<Self, ExtraFields, K, Fields>,
|
|
28
|
-
EchoTypeSchemaProps<Schema.Schema.Type<Self>, ExtraFields>,
|
|
29
|
-
EchoTypeSchemaProps<Schema.Schema.Encoded<Self>, ExtraFields>,
|
|
30
|
-
Schema.Schema.Context<Self>
|
|
31
|
-
> {
|
|
32
|
-
/**
|
|
33
|
-
* Schema kind key that marks this as an ECHO schema and indicates its kind.
|
|
34
|
-
* Makes EchoTypeSchema satisfy the Type.Obj.Any or Type.Relation.Any type.
|
|
35
|
-
*/
|
|
36
|
-
readonly [SchemaKindId]: K;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* The fields defined in the original struct schema.
|
|
40
|
-
* Allows accessing field definitions for introspection.
|
|
41
|
-
*/
|
|
42
|
-
readonly fields: Fields;
|
|
43
|
-
|
|
44
|
-
instanceOf(value: unknown): boolean;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// type MakeProps =
|
|
48
|
-
// | boolean
|
|
49
|
-
// | {
|
|
50
|
-
// readonly disableValidation?: boolean;
|
|
51
|
-
// };
|
|
52
|
-
|
|
53
|
-
// NOTE: Utils copied from Effect `Schema.ts`.
|
|
54
|
-
// const _ownKeys = (o: object): Array<PropertyKey> =>
|
|
55
|
-
// (Object.keys(o) as Array<PropertyKey>).concat(Object.getOwnPropertySymbols(o));
|
|
56
|
-
|
|
57
|
-
// const _lazilyMergeDefaults = (
|
|
58
|
-
// fields: Schema.Struct.Fields,
|
|
59
|
-
// out: Record<PropertyKey, unknown>,
|
|
60
|
-
// ): { [x: string | symbol]: unknown } => {
|
|
61
|
-
// const ownKeys = _ownKeys(fields);
|
|
62
|
-
// for (const key of ownKeys) {
|
|
63
|
-
// const field = fields[key];
|
|
64
|
-
// if (out[key] === undefined && Schema.isPropertySignature(field)) {
|
|
65
|
-
// const ast = field.ast;
|
|
66
|
-
// const defaultValue = ast._tag === 'PropertySignatureDeclaration' ? ast.defaultValue : ast.to.defaultValue;
|
|
67
|
-
// if (defaultValue !== undefined) {
|
|
68
|
-
// out[key] = defaultValue();
|
|
69
|
-
// }
|
|
70
|
-
// }
|
|
71
|
-
// }
|
|
72
|
-
// return out;
|
|
73
|
-
// };
|
|
74
|
-
|
|
75
|
-
// const _getDisableValidationMakeOption = (options: MakeProps | undefined): boolean =>
|
|
76
|
-
// Predicate.isBoolean(options) ? options : options?.disableValidation ?? false;
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @internal
|
|
80
|
-
*/
|
|
81
|
-
export const makeEchoTypeSchema = <
|
|
82
|
-
Self extends Schema.Schema.Any,
|
|
83
|
-
K extends EntityKind = EntityKind,
|
|
84
|
-
// TODO(wittjosiah): Can this be inferred from the schema?
|
|
85
|
-
Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
|
|
86
|
-
>(
|
|
87
|
-
fields: Fields,
|
|
88
|
-
ast: SchemaAST.AST,
|
|
89
|
-
typename: string,
|
|
90
|
-
version: string,
|
|
91
|
-
kind: K,
|
|
92
|
-
): EchoTypeSchema<Self, {}, K, Fields> => {
|
|
93
|
-
return class EchoObjectSchemaClass extends Schema.make<
|
|
94
|
-
EchoTypeSchemaProps<Schema.Schema.Type<Self>>,
|
|
95
|
-
EchoTypeSchemaProps<Schema.Schema.Encoded<Self>>,
|
|
96
|
-
Schema.Schema.Context<Self>
|
|
97
|
-
>(ast) {
|
|
98
|
-
static readonly typename = typename;
|
|
99
|
-
static readonly version = version;
|
|
100
|
-
static readonly [SchemaKindId] = kind;
|
|
101
|
-
static readonly fields = fields;
|
|
102
|
-
|
|
103
|
-
static override annotations(
|
|
104
|
-
annotations: Schema.Annotations.GenericSchema<EchoTypeSchemaProps<Schema.Schema.Type<Self>>>,
|
|
105
|
-
): EchoTypeSchema<Self, {}, K, Fields> {
|
|
106
|
-
const schema = Schema.make<EchoTypeSchemaProps<Schema.Schema.Type<Self>>>(ast).annotations(annotations);
|
|
107
|
-
return makeEchoTypeSchema<Self, K, Fields>(fields, schema.ast, typename, version, kind);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// static make(
|
|
111
|
-
// props: RequiredKeys<Schema.TypeLiteral.Constructor<Fields, []>> extends never
|
|
112
|
-
// ? void | Simplify<Schema.TypeLiteral.Constructor<Fields, []>>
|
|
113
|
-
// : Simplify<Schema.TypeLiteral.Constructor<Fields, []>>,
|
|
114
|
-
// options?: MakeProps,
|
|
115
|
-
// ): Simplify<Schema.TypeLiteral.Type<Fields, []>> {
|
|
116
|
-
// const propsWithDefaults: any = _lazilyMergeDefaults(fields, { ...(props as any) });
|
|
117
|
-
// return _getDisableValidationMakeOption(options)
|
|
118
|
-
// ? propsWithDefaults
|
|
119
|
-
// : ParseResult.validateSync(this)(propsWithDefaults);
|
|
120
|
-
// }
|
|
121
|
-
|
|
122
|
-
static instanceOf(value: unknown): boolean {
|
|
123
|
-
return Schema.is(this)(value);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
};
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import * as Schema from 'effect/Schema';
|
|
6
|
-
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
|
-
|
|
8
|
-
import { raise } from '@dxos/debug';
|
|
9
|
-
import { assertArgument, invariant } from '@dxos/invariant';
|
|
10
|
-
import { DXN } from '@dxos/keys';
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
type TypeAnnotation,
|
|
14
|
-
TypeAnnotationId,
|
|
15
|
-
type TypeMeta,
|
|
16
|
-
getEntityKind,
|
|
17
|
-
getSchemaTypename,
|
|
18
|
-
getTypeIdentifierAnnotation,
|
|
19
|
-
makeTypeJsonSchemaAnnotation,
|
|
20
|
-
} from '../annotations';
|
|
21
|
-
import { EntityKind } from '../types';
|
|
22
|
-
|
|
23
|
-
import { type EchoTypeSchema, makeEchoTypeSchema } from './entity';
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Property name for relation source when object is serialized to JSON.
|
|
27
|
-
*/
|
|
28
|
-
export const ATTR_RELATION_SOURCE = '@relationSource';
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Used to access relation source ref on live ECHO objects.
|
|
32
|
-
* Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
|
|
33
|
-
*/
|
|
34
|
-
export const RelationSourceId: unique symbol = Symbol.for('@dxos/echo/RelationSource');
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Used to access relation source ref on live ECHO objects.
|
|
38
|
-
* Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
|
|
39
|
-
*/
|
|
40
|
-
export const RelationSourceDXNId: unique symbol = Symbol.for('@dxos/echo/RelationSourceDXN');
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Property name for relation target when object is serialized to JSON.
|
|
44
|
-
*/
|
|
45
|
-
export const ATTR_RELATION_TARGET = '@relationTarget';
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Used to access relation target ref on live ECHO objects.
|
|
49
|
-
* Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
|
|
50
|
-
*/
|
|
51
|
-
export const RelationTargetId: unique symbol = Symbol.for('@dxos/echo/RelationTarget');
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Used to access relation target ref on live ECHO objects.
|
|
55
|
-
* Reading this symbol must return `Live<EchoObjectSchema<any>>` or a DXN.
|
|
56
|
-
*/
|
|
57
|
-
export const RelationTargetDXNId: unique symbol = Symbol.for('@dxos/echo/RelationTargetDXN');
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Source and target props on relations.
|
|
61
|
-
*/
|
|
62
|
-
// TODO(burdon): any?
|
|
63
|
-
export type RelationSourceTargetRefs<Source = any, Target = any> = {
|
|
64
|
-
/**
|
|
65
|
-
* Source ECHO live object.
|
|
66
|
-
*/
|
|
67
|
-
[RelationSourceId]: Source;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Target ECHO live object.
|
|
71
|
-
*/
|
|
72
|
-
[RelationTargetId]: Target;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
export type RelationSource<R> = R extends RelationSourceTargetRefs<infer Source, infer _Target> ? Source : never;
|
|
76
|
-
export type RelationTarget<R> = R extends RelationSourceTargetRefs<infer _Source, infer Target> ? Target : never;
|
|
77
|
-
|
|
78
|
-
export type EchoRelationSchemaOptions<
|
|
79
|
-
TSource extends Schema.Schema.AnyNoContext,
|
|
80
|
-
TTarget extends Schema.Schema.AnyNoContext,
|
|
81
|
-
> = TypeMeta & {
|
|
82
|
-
source: TSource;
|
|
83
|
-
target: TTarget;
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Relation schema type with kind marker.
|
|
88
|
-
*/
|
|
89
|
-
export type EchoRelationSchema<
|
|
90
|
-
Self extends Schema.Schema.Any,
|
|
91
|
-
Source extends Schema.Schema.AnyNoContext,
|
|
92
|
-
Target extends Schema.Schema.AnyNoContext,
|
|
93
|
-
Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
|
|
94
|
-
> = EchoTypeSchema<
|
|
95
|
-
Self,
|
|
96
|
-
RelationSourceTargetRefs<Schema.Schema.Type<Source>, Schema.Schema.Type<Target>>,
|
|
97
|
-
EntityKind.Relation,
|
|
98
|
-
Fields
|
|
99
|
-
>;
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Schema for Relation entity types.
|
|
103
|
-
*/
|
|
104
|
-
export const EchoRelationSchema = <
|
|
105
|
-
Source extends Schema.Schema.AnyNoContext,
|
|
106
|
-
Target extends Schema.Schema.AnyNoContext,
|
|
107
|
-
>({
|
|
108
|
-
source,
|
|
109
|
-
target,
|
|
110
|
-
typename,
|
|
111
|
-
version,
|
|
112
|
-
}: EchoRelationSchemaOptions<Source, Target>) => {
|
|
113
|
-
assertArgument(Schema.isSchema(source), 'source');
|
|
114
|
-
assertArgument(Schema.isSchema(target), 'target');
|
|
115
|
-
const sourceDXN = getDXNForRelationSchemaRef(source);
|
|
116
|
-
const targetDXN = getDXNForRelationSchemaRef(target);
|
|
117
|
-
if (getEntityKind(source) !== EntityKind.Object) {
|
|
118
|
-
raise(new Error('Source schema must be an echo object schema.'));
|
|
119
|
-
}
|
|
120
|
-
if (getEntityKind(target) !== EntityKind.Object) {
|
|
121
|
-
raise(new Error('Target schema must be an echo object schema.'));
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return <Self extends Schema.Schema.Any, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>(
|
|
125
|
-
self: Self & { fields?: Fields },
|
|
126
|
-
): EchoRelationSchema<Self, Source, Target, Fields> => {
|
|
127
|
-
invariant(SchemaAST.isTypeLiteral(self.ast), 'Schema must be a TypeLiteral.');
|
|
128
|
-
|
|
129
|
-
// Extract fields from the schema if available (Struct schemas have .fields).
|
|
130
|
-
const fields = ((self as any).fields ?? {}) as Fields;
|
|
131
|
-
|
|
132
|
-
const schemaWithId = Schema.extend(self, Schema.Struct({ id: Schema.String }));
|
|
133
|
-
const ast = SchemaAST.annotations(schemaWithId.ast, {
|
|
134
|
-
// TODO(dmaretskyi): `extend` kills the annotations.
|
|
135
|
-
...self.ast.annotations,
|
|
136
|
-
[TypeAnnotationId]: {
|
|
137
|
-
kind: EntityKind.Relation,
|
|
138
|
-
typename,
|
|
139
|
-
version,
|
|
140
|
-
sourceSchema: sourceDXN,
|
|
141
|
-
targetSchema: targetDXN,
|
|
142
|
-
} satisfies TypeAnnotation,
|
|
143
|
-
// TODO(dmaretskyi): TypeIdentifierAnnotationId?
|
|
144
|
-
|
|
145
|
-
[SchemaAST.JSONSchemaAnnotationId]: makeTypeJsonSchemaAnnotation({
|
|
146
|
-
kind: EntityKind.Relation,
|
|
147
|
-
typename,
|
|
148
|
-
version,
|
|
149
|
-
relationSource: sourceDXN,
|
|
150
|
-
relationTarget: targetDXN,
|
|
151
|
-
}),
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
return makeEchoTypeSchema<Self, EntityKind.Relation, Fields>(fields, ast, typename, version, EntityKind.Relation);
|
|
155
|
-
};
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
const getDXNForRelationSchemaRef = (schema: Schema.Schema.Any): string => {
|
|
159
|
-
assertArgument(Schema.isSchema(schema), 'schema');
|
|
160
|
-
const identifier = getTypeIdentifierAnnotation(schema);
|
|
161
|
-
if (identifier) {
|
|
162
|
-
return identifier;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
const typename = getSchemaTypename(schema);
|
|
166
|
-
if (!typename) {
|
|
167
|
-
throw new Error('Schema must have a typename');
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return DXN.fromTypename(typename).toString();
|
|
171
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import * as Schema from 'effect/Schema';
|
|
6
|
-
|
|
7
|
-
import { assertArgument, invariant } from '@dxos/invariant';
|
|
8
|
-
import { DXN, ObjectId } from '@dxos/keys';
|
|
9
|
-
import { assumeType } from '@dxos/util';
|
|
10
|
-
|
|
11
|
-
import { type InternalObjectProps, SelfDXNId } from './model';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Returns a DXN for an object or schema.
|
|
15
|
-
*
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
export const getObjectDXN = (object: any): DXN | undefined => {
|
|
19
|
-
invariant(!Schema.isSchema(object), 'schema not allowed in this function');
|
|
20
|
-
assertArgument(typeof object === 'object' && object != null, 'object', 'expected object');
|
|
21
|
-
assumeType<InternalObjectProps>(object);
|
|
22
|
-
|
|
23
|
-
if (object[SelfDXNId]) {
|
|
24
|
-
invariant(object[SelfDXNId] instanceof DXN, 'Invalid object model: invalid self dxn');
|
|
25
|
-
return object[SelfDXNId];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (!ObjectId.isValid(object.id)) {
|
|
29
|
-
throw new TypeError('Object id is not valid.');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return DXN.fromLocalObjectId(object.id);
|
|
33
|
-
};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import type * as Schema from 'effect/Schema';
|
|
6
|
-
|
|
7
|
-
import { raise } from '@dxos/debug';
|
|
8
|
-
import { assertArgument, failedInvariant } from '@dxos/invariant';
|
|
9
|
-
import { ObjectId } from '@dxos/keys';
|
|
10
|
-
|
|
11
|
-
import { getSchemaDXN, getTypeAnnotation, setTypename } from '../annotations';
|
|
12
|
-
import {
|
|
13
|
-
RelationSourceDXNId,
|
|
14
|
-
RelationSourceId,
|
|
15
|
-
RelationTargetDXNId,
|
|
16
|
-
RelationTargetId,
|
|
17
|
-
assertObjectModel,
|
|
18
|
-
getObjectDXN,
|
|
19
|
-
} from '../entities';
|
|
20
|
-
import { defineHiddenProperty } from '../proxy';
|
|
21
|
-
import { EntityKind, KindId, MetaId, setSchema } from '../types';
|
|
22
|
-
|
|
23
|
-
import { attachedTypedObjectInspector } from './inspect';
|
|
24
|
-
import { attachTypedJsonSerializer } from './json-serializer';
|
|
25
|
-
|
|
26
|
-
export type CreateObjectProps<T> = T extends { id: string } ? Omit<T, 'id' | KindId> & { id?: string } : T;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Creates a new object instance from a schema and data, without signal reactivity.
|
|
30
|
-
* This static version creates plain JavaScript objects that are not reactive/observable.
|
|
31
|
-
* For reactive objects that automatically update UI when changed, use the regular live() function.
|
|
32
|
-
*
|
|
33
|
-
* @param schema - The Effect schema that defines the object's structure and type, piped into EchoObjectSchema
|
|
34
|
-
* @param data - The data to initialize the object with. The id and @type fields are handled automatically.
|
|
35
|
-
* @returns A new non-reactive object instance conforming to the schema
|
|
36
|
-
* @throws {Error} If the schema is not an object schema
|
|
37
|
-
* @throws {TypeError} If data contains an @type field
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* const Contact = Schema.Struct({
|
|
42
|
-
* name: Schema.String,
|
|
43
|
-
* email: Schema.String,
|
|
44
|
-
* }).pipe(Type.object({
|
|
45
|
-
* typename: 'example.com/type/Person',
|
|
46
|
-
* version: '0.1.0',
|
|
47
|
-
* }))
|
|
48
|
-
*
|
|
49
|
-
* const contact = createObject(Contact, {
|
|
50
|
-
* name: "John",
|
|
51
|
-
* email: "john@example.com",
|
|
52
|
-
* })
|
|
53
|
-
* ```
|
|
54
|
-
*/
|
|
55
|
-
// TODO(burdon): Make internal.
|
|
56
|
-
export const createObject = <S extends Schema.Schema.AnyNoContext>(
|
|
57
|
-
schema: S,
|
|
58
|
-
props: CreateObjectProps<Schema.Schema.Type<S>>,
|
|
59
|
-
): CreateObjectProps<Schema.Schema.Type<S>> & { id: string; [KindId]: EntityKind } => {
|
|
60
|
-
const annotation = getTypeAnnotation(schema);
|
|
61
|
-
if (!annotation) {
|
|
62
|
-
throw new Error('Schema is not an ECHO schema');
|
|
63
|
-
}
|
|
64
|
-
assertArgument(!('@type' in props), 'data', '@type is not allowed');
|
|
65
|
-
assertArgument(!(RelationSourceDXNId in props), 'data', 'Relation source DXN is not allowed in the constructor');
|
|
66
|
-
assertArgument(!(RelationTargetDXNId in props), 'data', 'Relation target DXN is not allowed in the constructor');
|
|
67
|
-
assertArgument(
|
|
68
|
-
RelationSourceId in props === RelationTargetId in props,
|
|
69
|
-
'data',
|
|
70
|
-
'Relation source and target must be provided together',
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
// Raw object.
|
|
74
|
-
const obj = { ...props, id: props.id ?? ObjectId.random() };
|
|
75
|
-
|
|
76
|
-
// Metadata.
|
|
77
|
-
const kind = RelationSourceId in props ? EntityKind.Relation : EntityKind.Object;
|
|
78
|
-
defineHiddenProperty(obj, KindId, kind);
|
|
79
|
-
defineHiddenProperty(obj, MetaId, { keys: [] });
|
|
80
|
-
setSchema(obj, schema);
|
|
81
|
-
setTypename(obj, getSchemaDXN(schema) ?? failedInvariant('Missing schema DXN'));
|
|
82
|
-
attachTypedJsonSerializer(obj);
|
|
83
|
-
attachedTypedObjectInspector(obj);
|
|
84
|
-
|
|
85
|
-
// Relation.
|
|
86
|
-
if (kind === EntityKind.Relation) {
|
|
87
|
-
const sourceDXN = getObjectDXN(props[RelationSourceId]) ?? raise(new Error('Unresolved relation source'));
|
|
88
|
-
const targetDXN = getObjectDXN(props[RelationTargetId]) ?? raise(new Error('Unresolved relation target'));
|
|
89
|
-
defineHiddenProperty(obj, RelationSourceDXNId, sourceDXN);
|
|
90
|
-
defineHiddenProperty(obj, RelationTargetDXNId, targetDXN);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
assertObjectModel(obj);
|
|
94
|
-
return obj;
|
|
95
|
-
};
|