@dxos/echo 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/dist/lib/neutral/Annotation.mjs +37 -0
- package/dist/lib/neutral/Database.mjs +49 -0
- package/dist/lib/neutral/Entity.mjs +61 -0
- package/dist/lib/neutral/Entity.mjs.map +7 -0
- package/dist/lib/neutral/Err.mjs +12 -0
- package/dist/lib/neutral/Err.mjs.map +7 -0
- package/dist/lib/neutral/Extension.mjs +18 -0
- package/dist/lib/neutral/Extension.mjs.map +7 -0
- package/dist/lib/neutral/Feed.mjs +50 -0
- package/dist/lib/neutral/Feed.mjs.map +7 -0
- package/dist/lib/neutral/Filter.mjs +72 -0
- package/dist/lib/neutral/Filter.mjs.map +7 -0
- package/dist/lib/neutral/Format.mjs +66 -0
- package/dist/lib/neutral/Format.mjs.map +7 -0
- package/dist/lib/neutral/JsonSchema.mjs +19 -0
- package/dist/lib/neutral/JsonSchema.mjs.map +7 -0
- package/dist/lib/neutral/Key.mjs +12 -0
- package/dist/lib/neutral/Key.mjs.map +7 -0
- package/dist/lib/neutral/Migration.mjs +17 -0
- package/dist/lib/neutral/Migration.mjs.map +7 -0
- package/dist/lib/neutral/Obj.mjs +113 -0
- package/dist/lib/neutral/Obj.mjs.map +7 -0
- package/dist/lib/neutral/Order.mjs +12 -0
- package/dist/lib/neutral/Order.mjs.map +7 -0
- package/dist/lib/neutral/Query.mjs +38 -0
- package/dist/lib/neutral/Query.mjs.map +7 -0
- package/dist/lib/neutral/QueryResult.mjs +2 -0
- package/dist/lib/neutral/QueryResult.mjs.map +7 -0
- package/dist/lib/neutral/Ref.mjs +24 -0
- package/dist/lib/neutral/Ref.mjs.map +7 -0
- package/dist/lib/neutral/Relation.mjs +94 -0
- package/dist/lib/neutral/Relation.mjs.map +7 -0
- package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
- package/dist/lib/neutral/SchemaRegistry.mjs.map +7 -0
- package/dist/lib/neutral/Tag.mjs +29 -0
- package/dist/lib/neutral/Tag.mjs.map +7 -0
- package/dist/lib/neutral/Type.mjs +37 -0
- package/dist/lib/neutral/Type.mjs.map +7 -0
- package/dist/lib/neutral/chunk-2T22UGGN.mjs +206 -0
- package/dist/lib/neutral/chunk-2T22UGGN.mjs.map +7 -0
- package/dist/lib/neutral/chunk-44HT3MEC.mjs +73 -0
- package/dist/lib/neutral/chunk-44HT3MEC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-6VC3FI5E.mjs +125 -0
- package/dist/lib/neutral/chunk-6VC3FI5E.mjs.map +7 -0
- package/dist/lib/neutral/chunk-7JFW72MX.mjs +132 -0
- package/dist/lib/neutral/chunk-7JFW72MX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-7RVZT53K.mjs +21 -0
- package/dist/lib/neutral/chunk-7RVZT53K.mjs.map +7 -0
- package/dist/lib/neutral/chunk-BICZKPQG.mjs +7 -0
- package/dist/lib/neutral/chunk-BICZKPQG.mjs.map +7 -0
- package/dist/lib/neutral/chunk-CIWZ5MHQ.mjs +36 -0
- package/dist/lib/neutral/chunk-CIWZ5MHQ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-DUNXPKAC.mjs +56 -0
- package/dist/lib/neutral/chunk-DUNXPKAC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FAW7PJRO.mjs +34 -0
- package/dist/lib/neutral/chunk-FAW7PJRO.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FAYW32CW.mjs +27 -0
- package/dist/lib/neutral/chunk-FAYW32CW.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-I2MFJ76N.mjs +354 -0
- package/dist/lib/neutral/chunk-I2MFJ76N.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/neutral/chunk-JALF2CVV.mjs +345 -0
- package/dist/lib/neutral/chunk-JALF2CVV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-KQUQZ3CB.mjs +128 -0
- package/dist/lib/neutral/chunk-KQUQZ3CB.mjs.map +7 -0
- package/dist/lib/neutral/chunk-LOTZLYHB.mjs +420 -0
- package/dist/lib/neutral/chunk-LOTZLYHB.mjs.map +7 -0
- package/dist/lib/neutral/chunk-N4B7FHQT.mjs +67 -0
- package/dist/lib/neutral/chunk-N4B7FHQT.mjs.map +7 -0
- package/dist/lib/neutral/chunk-NKXEKBP5.mjs +81 -0
- package/dist/lib/neutral/chunk-NKXEKBP5.mjs.map +7 -0
- package/dist/lib/neutral/chunk-NSMLBSFS.mjs +270 -0
- package/dist/lib/neutral/chunk-NSMLBSFS.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QBIGOSRF.mjs +45 -0
- package/dist/lib/neutral/chunk-QBIGOSRF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QBLYZ4IV.mjs +734 -0
- package/dist/lib/neutral/chunk-QBLYZ4IV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QEVM3JUP.mjs +318 -0
- package/dist/lib/neutral/chunk-QEVM3JUP.mjs.map +7 -0
- package/dist/lib/neutral/chunk-REP7WWAQ.mjs +346 -0
- package/dist/lib/neutral/chunk-REP7WWAQ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-TRPZU2HV.mjs +402 -0
- package/dist/lib/neutral/chunk-TRPZU2HV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-TTCSATUD.mjs +42 -0
- package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
- package/dist/lib/neutral/chunk-TW76K7H5.mjs +45 -0
- package/dist/lib/neutral/chunk-TW76K7H5.mjs.map +7 -0
- package/dist/lib/neutral/chunk-UYJYDSD7.mjs +2436 -0
- package/dist/lib/neutral/chunk-UYJYDSD7.mjs.map +7 -0
- package/dist/lib/neutral/chunk-V72DY6LU.mjs +7 -0
- package/dist/lib/neutral/chunk-V72DY6LU.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ZISMEVKD.mjs +51 -0
- package/dist/lib/neutral/chunk-ZISMEVKD.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +107 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/internal/index.mjs +474 -0
- package/dist/lib/neutral/internal/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/testing/index.mjs +375 -0
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/Annotation.d.ts +24 -0
- package/dist/types/src/Annotation.d.ts.map +1 -0
- package/dist/types/src/Collection.d.ts +16 -0
- package/dist/types/src/Collection.d.ts.map +1 -0
- package/dist/types/src/Database.d.ts +201 -0
- package/dist/types/src/Database.d.ts.map +1 -0
- package/dist/types/src/Dataset.d.ts +19 -0
- package/dist/types/src/Dataset.d.ts.map +1 -0
- package/dist/types/src/Entity.d.ts +174 -0
- package/dist/types/src/Entity.d.ts.map +1 -0
- package/dist/types/src/Entity.test.d.ts +2 -0
- package/dist/types/src/Entity.test.d.ts.map +1 -0
- package/dist/types/src/Err.d.ts +107 -0
- package/dist/types/src/Err.d.ts.map +1 -0
- 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 +182 -0
- package/dist/types/src/Feed.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +149 -0
- package/dist/types/src/Filter.d.ts.map +1 -0
- 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 +4 -0
- package/dist/types/src/Format.d.ts.map +1 -0
- package/dist/types/src/Hypergraph.d.ts +65 -0
- package/dist/types/src/Hypergraph.d.ts.map +1 -0
- 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 +16 -0
- package/dist/types/src/JsonSchema.d.ts.map +1 -0
- package/dist/types/src/Key.d.ts +1 -0
- package/dist/types/src/Key.d.ts.map +1 -1
- package/dist/types/src/Migration.d.ts +57 -0
- package/dist/types/src/Migration.d.ts.map +1 -0
- package/dist/types/src/Obj.d.ts +442 -98
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Obj.test.d.ts +2 -0
- package/dist/types/src/Obj.test.d.ts.map +1 -0
- package/dist/types/src/Order.d.ts +16 -0
- package/dist/types/src/Order.d.ts.map +1 -0
- package/dist/types/src/Query.d.ts +213 -0
- package/dist/types/src/Query.d.ts.map +1 -0
- package/dist/types/src/Query.test.d.ts +2 -0
- package/dist/types/src/Query.test.d.ts.map +1 -0
- package/dist/types/src/QueryResult.d.ts +80 -0
- package/dist/types/src/QueryResult.d.ts.map +1 -0
- package/dist/types/src/Ref.d.ts +61 -11
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +288 -22
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/Relation.test.d.ts +2 -0
- package/dist/types/src/Relation.test.d.ts.map +1 -0
- package/dist/types/src/SchemaRegistry.d.ts +84 -0
- package/dist/types/src/SchemaRegistry.d.ts.map +1 -0
- package/dist/types/src/Tag.d.ts +18 -0
- package/dist/types/src/Tag.d.ts.map +1 -0
- package/dist/types/src/Type.d.ts +123 -100
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/Type.test.d.ts +2 -0
- package/dist/types/src/Type.test.d.ts.map +1 -0
- package/dist/types/src/View.d.ts +68 -0
- package/dist/types/src/View.d.ts.map +1 -0
- package/dist/types/src/hierarchy.test.d.ts +2 -0
- package/dist/types/src/hierarchy.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +22 -5
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/annotations.d.ts +231 -0
- package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/annotations.test.d.ts +2 -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/Annotation/sorting.d.ts +24 -0
- package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/util.d.ts +39 -0
- 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 +20 -0
- package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/index.d.ts +8 -0
- package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/model.d.ts +55 -0
- package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/object.d.ts +18 -0
- package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/relation.d.ts +35 -0
- package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/util.d.ts +2 -0
- package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/version.d.ts +42 -0
- package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.d.ts +63 -0
- package/dist/types/src/internal/Format/date.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.test.d.ts +2 -0
- package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
- package/dist/types/src/internal/Format/format.d.ts +32 -0
- package/dist/types/src/internal/Format/format.d.ts.map +1 -0
- package/dist/types/src/internal/Format/format.test.d.ts +2 -0
- package/dist/types/src/internal/Format/format.test.d.ts.map +1 -0
- package/dist/types/src/internal/Format/index.d.ts +8 -0
- package/dist/types/src/internal/Format/index.d.ts.map +1 -0
- package/dist/types/src/internal/Format/number.d.ts +31 -0
- package/dist/types/src/internal/Format/number.d.ts.map +1 -0
- package/dist/types/src/internal/Format/object.d.ts +35 -0
- package/dist/types/src/internal/Format/object.d.ts.map +1 -0
- package/dist/types/src/internal/Format/select.d.ts +13 -0
- package/dist/types/src/internal/Format/select.d.ts.map +1 -0
- package/dist/types/src/internal/Format/string.d.ts +42 -0
- package/dist/types/src/internal/Format/string.d.ts.map +1 -0
- package/dist/types/src/internal/Format/types.d.ts +72 -0
- package/dist/types/src/internal/Format/types.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/annotations.d.ts +19 -0
- package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts +2 -0
- package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/index.d.ts +5 -0
- package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts +7 -0
- package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts +351 -0
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts +30 -0
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts +2 -0
- package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/clone.d.ts +8 -0
- package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/common.d.ts +18 -0
- package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/create-object.d.ts +39 -0
- package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/create-object.test.d.ts +2 -0
- package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/deleted.d.ts +6 -0
- package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/ids.d.ts +6 -0
- package/dist/types/src/internal/Obj/ids.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/index.d.ts +11 -0
- package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/inspect.d.ts +2 -0
- package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/json-serializer.d.ts +45 -0
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/json-serializer.test.d.ts +2 -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 +2 -0
- package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/set-value.d.ts +7 -0
- package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/set-value.test.d.ts +2 -0
- package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/snapshot.d.ts +6 -0
- package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/typed-object.d.ts +25 -0
- package/dist/types/src/internal/Obj/typed-object.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/typed-object.test.d.ts +2 -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 +3 -0
- package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/ref-array.d.ts +21 -0
- package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/ref.d.ts +244 -0
- package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/ref.test.d.ts +2 -0
- package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
- package/dist/types/src/internal/Type/compose.d.ts +7 -0
- package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
- package/dist/types/src/internal/Type/compose.test.d.ts +2 -0
- package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
- package/dist/types/src/internal/Type/echo-schema.d.ts +181 -0
- package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -0
- package/dist/types/src/internal/Type/index.d.ts +4 -0
- package/dist/types/src/internal/Type/index.d.ts.map +1 -0
- package/dist/types/src/internal/Type/manipulation.d.ts +10 -0
- package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -0
- package/dist/types/src/internal/Type/persistent-schema.d.ts +20 -0
- package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
- package/dist/types/src/internal/common/api/index.d.ts +11 -0
- package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/api/meta.d.ts +42 -0
- package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/index.d.ts +4 -0
- package/dist/types/src/internal/common/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/change-context.d.ts +55 -0
- package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/change.test.d.ts +2 -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 +5 -0
- package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/errors.d.ts +19 -0
- package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/event-batch.d.ts +10 -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 +2 -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 +14 -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 +6 -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 +14 -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 +57 -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 +18 -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 +47 -0
- package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/reactive-array.d.ts +8 -0
- package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/reactive.d.ts +39 -0
- package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
- 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 +15 -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 +2 -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 +3 -0
- package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts +48 -0
- 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 +2 -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 +2 -0
- package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/base.d.ts +27 -0
- package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/entity.d.ts +37 -0
- package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/index.d.ts +7 -0
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/meta.d.ts +33 -0
- package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/typename.d.ts +21 -0
- package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/version.d.ts +15 -0
- package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
- package/dist/types/src/internal/index.d.ts +11 -0
- package/dist/types/src/internal/index.d.ts.map +1 -0
- package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +3 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-data.d.ts +18 -0
- package/dist/types/src/testing/test-data.d.ts.map +1 -0
- package/dist/types/src/testing/test-schema.d.ts +304 -0
- package/dist/types/src/testing/test-schema.d.ts.map +1 -0
- package/dist/types/src/testing/util.d.ts +21 -0
- package/dist/types/src/testing/util.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +119 -57
- package/src/Annotation.ts +48 -0
- package/src/Collection.ts +37 -0
- package/src/Database.ts +352 -0
- package/src/Dataset.ts +26 -0
- package/src/Entity.test.ts +22 -0
- package/src/Entity.ts +243 -0
- package/src/Err.ts +40 -0
- package/src/Extension.test.ts +235 -0
- package/src/Extension.ts +122 -0
- package/src/Feed.ts +304 -0
- package/src/Filter.test.ts +90 -0
- package/src/Filter.ts +454 -0
- package/src/Format.ts +9 -0
- package/src/Hypergraph.ts +79 -0
- package/src/Json.test.ts +175 -0
- package/src/Json.ts +102 -0
- package/src/JsonSchema.ts +26 -0
- package/src/Key.ts +3 -0
- package/src/Migration.ts +94 -0
- package/src/Obj.test.ts +539 -0
- package/src/Obj.ts +713 -244
- package/src/Order.ts +46 -0
- package/src/Query.test.ts +822 -0
- package/src/Query.ts +567 -0
- package/src/QueryResult.ts +106 -0
- package/src/Ref.ts +78 -9
- package/src/Relation.test.ts +88 -0
- package/src/Relation.ts +450 -60
- package/src/SchemaRegistry.ts +106 -0
- package/src/Tag.ts +41 -0
- package/src/Type.test.ts +52 -0
- package/src/Type.ts +168 -155
- package/src/View.ts +107 -0
- package/src/hierarchy.test.ts +33 -0
- package/src/index.ts +24 -6
- package/src/internal/Annotation/annotations.test.ts +145 -0
- package/src/internal/Annotation/annotations.ts +577 -0
- package/src/internal/Annotation/index.ts +7 -0
- package/src/internal/Annotation/sorting.ts +51 -0
- package/src/internal/Annotation/util.ts +85 -0
- package/src/internal/Entity/api.ts +30 -0
- package/src/internal/Entity/entity.ts +128 -0
- package/src/internal/Entity/index.ts +11 -0
- package/src/internal/Entity/model.ts +109 -0
- package/src/internal/Entity/object.ts +57 -0
- package/src/internal/Entity/relation.ts +154 -0
- package/src/internal/Entity/util.ts +33 -0
- package/src/internal/Entity/version.ts +96 -0
- package/src/internal/Format/date.test.ts +55 -0
- package/src/internal/Format/date.ts +217 -0
- package/src/internal/Format/format.test.ts +76 -0
- package/src/internal/Format/format.ts +54 -0
- package/src/internal/Format/index.ts +12 -0
- package/src/internal/Format/number.ts +89 -0
- package/src/internal/Format/object.ts +80 -0
- package/src/internal/Format/select.ts +18 -0
- package/src/internal/Format/string.ts +81 -0
- package/src/internal/Format/types.ts +186 -0
- package/src/internal/JsonSchema/annotations.ts +50 -0
- package/src/internal/JsonSchema/effect-schema.test.ts +143 -0
- package/src/internal/JsonSchema/index.ts +8 -0
- package/src/internal/JsonSchema/json-schema-normalize.ts +111 -0
- package/src/internal/JsonSchema/json-schema-type.ts +403 -0
- package/src/internal/JsonSchema/json-schema.test.ts +860 -0
- package/src/internal/JsonSchema/json-schema.ts +533 -0
- package/src/internal/Obj/clone.ts +48 -0
- package/src/internal/Obj/common.ts +75 -0
- package/src/internal/Obj/create-object.test.ts +114 -0
- package/src/internal/Obj/create-object.ts +94 -0
- package/src/internal/Obj/deleted.ts +19 -0
- package/src/internal/Obj/ids.ts +12 -0
- package/src/internal/Obj/index.ts +14 -0
- package/src/internal/Obj/inspect.ts +46 -0
- package/src/internal/Obj/json-serializer.test.ts +120 -0
- package/src/internal/Obj/json-serializer.ts +222 -0
- package/src/internal/Obj/schema-validator.test.ts +182 -0
- package/src/internal/Obj/schema-validator.ts +6 -0
- package/src/internal/Obj/set-value.test.ts +281 -0
- package/src/internal/Obj/set-value.ts +165 -0
- package/src/internal/Obj/snapshot.ts +105 -0
- package/src/internal/Obj/typed-object.test.ts +34 -0
- package/src/internal/Obj/typed-object.ts +30 -0
- package/src/internal/Query.ts +137 -0
- package/src/internal/Ref/index.ts +6 -0
- package/src/internal/Ref/ref-array.ts +38 -0
- package/src/internal/Ref/ref.test.ts +100 -0
- package/src/internal/Ref/ref.ts +589 -0
- package/src/internal/Type/compose.test.ts +41 -0
- package/src/internal/Type/compose.ts +41 -0
- package/src/internal/Type/echo-schema.ts +423 -0
- package/src/internal/Type/index.ts +7 -0
- package/src/internal/Type/manipulation.ts +92 -0
- package/src/internal/Type/persistent-schema.ts +33 -0
- package/src/internal/common/README.md +102 -0
- package/src/internal/common/api/index.ts +15 -0
- package/src/internal/common/api/meta.ts +88 -0
- package/src/internal/common/index.ts +7 -0
- package/src/internal/common/proxy/change-context.ts +138 -0
- package/src/internal/common/proxy/change.test.ts +519 -0
- package/src/internal/common/proxy/define-hidden-property.ts +14 -0
- package/src/internal/common/proxy/errors.ts +42 -0
- package/src/internal/common/proxy/event-batch.ts +44 -0
- package/src/internal/common/proxy/handler.test.ts +121 -0
- package/src/internal/common/proxy/index.ts +17 -0
- package/src/internal/common/proxy/json-serializer.ts +90 -0
- package/src/internal/common/proxy/make-object.ts +105 -0
- package/src/internal/common/proxy/ownership.ts +252 -0
- package/src/internal/common/proxy/proxy-types.ts +23 -0
- package/src/internal/common/proxy/proxy-utils.ts +150 -0
- package/src/internal/common/proxy/reactive-array.ts +71 -0
- package/src/internal/common/proxy/reactive.test.ts +54 -0
- package/src/internal/common/proxy/reactive.ts +77 -0
- package/src/internal/common/proxy/schema-validator.ts +244 -0
- package/src/internal/common/proxy/schema.test.ts +145 -0
- package/src/internal/common/proxy/symbols.ts +7 -0
- package/src/internal/common/proxy/typed-handler.test.ts +313 -0
- package/src/internal/common/proxy/typed-handler.ts +447 -0
- package/src/internal/common/proxy/typed-object.test.ts +115 -0
- package/src/internal/common/types/base.ts +43 -0
- package/src/internal/common/types/entity.ts +54 -0
- package/src/internal/common/types/index.ts +10 -0
- package/src/internal/common/types/meta.ts +67 -0
- package/src/internal/common/types/model-symbols.ts +69 -0
- package/src/internal/common/types/typename.ts +55 -0
- package/src/internal/common/types/version.ts +19 -0
- package/src/internal/index.ts +17 -0
- package/src/testing/api.test.ts +125 -0
- package/src/testing/index.ts +3 -1
- package/src/testing/test-data.ts +129 -0
- package/src/testing/test-schema.ts +240 -0
- package/src/testing/util.ts +85 -0
- package/dist/lib/browser/chunk-I4YEWYJA.mjs +0 -882
- package/dist/lib/browser/chunk-I4YEWYJA.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -30
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/testing/index.mjs +0 -70
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AWWFAF75.mjs +0 -882
- package/dist/lib/node-esm/chunk-AWWFAF75.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -30
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs +0 -70
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/errors.d.ts +0 -72
- package/dist/types/src/errors.d.ts.map +0 -1
- package/dist/types/src/experimental/database.d.ts +0 -8
- package/dist/types/src/experimental/database.d.ts.map +0 -1
- package/dist/types/src/experimental/index.d.ts +0 -1
- package/dist/types/src/experimental/index.d.ts.map +0 -1
- package/dist/types/src/experimental/queue.d.ts +0 -8
- package/dist/types/src/experimental/queue.d.ts.map +0 -1
- package/dist/types/src/experimental/space.d.ts +0 -8
- package/dist/types/src/experimental/space.d.ts.map +0 -1
- package/dist/types/src/query/dsl.d.ts +0 -245
- package/dist/types/src/query/dsl.d.ts.map +0 -1
- package/dist/types/src/query/dsl.test.d.ts +0 -2
- package/dist/types/src/query/dsl.test.d.ts.map +0 -1
- package/dist/types/src/query/index.d.ts +0 -2
- package/dist/types/src/query/index.d.ts.map +0 -1
- package/dist/types/src/testing/types.d.ts +0 -113
- package/dist/types/src/testing/types.d.ts.map +0 -1
- package/src/errors.ts +0 -18
- package/src/experimental/database.ts +0 -11
- package/src/experimental/index.ts +0 -7
- package/src/experimental/queue.ts +0 -11
- package/src/experimental/space.ts +0 -11
- package/src/query/dsl.test.ts +0 -362
- package/src/query/dsl.ts +0 -759
- package/src/query/index.ts +0 -5
- package/src/test/api.test.ts +0 -180
- package/src/testing/types.ts +0 -91
- /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
- /package/dist/lib/{node-esm/index.mjs.map → neutral/Database.mjs.map} +0 -0
- /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import type * as Types from 'effect/Types';
|
|
6
|
+
|
|
7
|
+
import type * as JsonSchema from './JsonSchema';
|
|
8
|
+
import type * as Key from './Key';
|
|
9
|
+
import type * as QueryResult from './QueryResult';
|
|
10
|
+
import type * as Type from './Type';
|
|
11
|
+
|
|
12
|
+
// TODO(wittjosiah): Replace w/ Query.Query.
|
|
13
|
+
export type Query = {
|
|
14
|
+
/**
|
|
15
|
+
* Filter by schema ID.
|
|
16
|
+
* Schema id is a DXN with `echo` or `type` kind.
|
|
17
|
+
*/
|
|
18
|
+
id?: string | string[];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Id of the backing ECHO object.
|
|
22
|
+
*/
|
|
23
|
+
backingObjectId?: Key.ObjectId | Key.ObjectId[];
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* One or more typenames to filter by.
|
|
27
|
+
*/
|
|
28
|
+
typename?: string | string[];
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* [Semver Range](https://docs.npmjs.com/cli/v6/using-npm/semver#ranges) for the schema version.
|
|
32
|
+
*/
|
|
33
|
+
version?: string;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Where to look for the schema.
|
|
37
|
+
*
|
|
38
|
+
* Database schema are stored in the database of the current space.
|
|
39
|
+
* Runtime schema are registered in the runtime.
|
|
40
|
+
*
|
|
41
|
+
* @default ['database']
|
|
42
|
+
*/
|
|
43
|
+
location?: ('database' | 'runtime')[];
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Include system schemas.
|
|
47
|
+
* @default false
|
|
48
|
+
*
|
|
49
|
+
* The system schema include but are not limited to:
|
|
50
|
+
* - org.dxos.type.schema
|
|
51
|
+
*/
|
|
52
|
+
includeSystem?: boolean;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Input for schema registration.
|
|
57
|
+
* The typename, version and schema mutability metadata is read from the schema annotations.
|
|
58
|
+
*
|
|
59
|
+
* Accepts:
|
|
60
|
+
* - Branded ECHO schemas created with Type.Obj() or Type.Relation()
|
|
61
|
+
* - JSON schema with typename and version
|
|
62
|
+
*/
|
|
63
|
+
export type RegisterSchemaInput =
|
|
64
|
+
| Type.AnyEntity
|
|
65
|
+
| {
|
|
66
|
+
typename: string;
|
|
67
|
+
version: string;
|
|
68
|
+
jsonSchema: JsonSchema.JsonSchema;
|
|
69
|
+
/**
|
|
70
|
+
* Display name of the schema.
|
|
71
|
+
*/
|
|
72
|
+
name?: string;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export type ExtractQueryResult<Query> = Query extends { location: ('database' | 'runtime')[] }
|
|
76
|
+
? Type.AnyEntity
|
|
77
|
+
: Type.RuntimeType;
|
|
78
|
+
|
|
79
|
+
// TODO(dmaretskyi): Rename TypeRegistry
|
|
80
|
+
export interface SchemaRegistry {
|
|
81
|
+
/**
|
|
82
|
+
* Checks if the provided schema is registered.
|
|
83
|
+
*/
|
|
84
|
+
// TODO(burdon): Type?
|
|
85
|
+
hasSchema(schema: Type.AnyEntity): boolean;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Registers the provided schema.
|
|
89
|
+
*
|
|
90
|
+
* @returns Mutable runtime instances of schemas that were registered.
|
|
91
|
+
*
|
|
92
|
+
* The behavior of this method depends on the state of the database.
|
|
93
|
+
* The general principle is that the schema will be upserted into the space.
|
|
94
|
+
* If an equivalent schema with the same name and version already exists, the method does nothing.
|
|
95
|
+
* If a different schema with the same name and version exists, the method throws an error.
|
|
96
|
+
* If no schema with the same name and version exists, a new schema will be inserted based on semantic versioning rules.
|
|
97
|
+
*/
|
|
98
|
+
register(input: RegisterSchemaInput[]): Promise<Type.RuntimeType[]>;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
*/
|
|
103
|
+
query<Q extends Types.NoExcessProperties<Query, Q>>(
|
|
104
|
+
query?: Q & Query,
|
|
105
|
+
): QueryResult.QueryResult<ExtractQueryResult<Q>>;
|
|
106
|
+
}
|
package/src/Tag.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import * as Schema from 'effect/Schema';
|
|
8
|
+
|
|
9
|
+
import * as internal from './internal';
|
|
10
|
+
import * as Obj from './Obj';
|
|
11
|
+
import * as Type from './Type';
|
|
12
|
+
|
|
13
|
+
export const Tag = Schema.Struct({
|
|
14
|
+
label: Schema.String,
|
|
15
|
+
hue: Schema.optional(Schema.String), // TODO(burdon): Color name?
|
|
16
|
+
}).pipe(
|
|
17
|
+
Type.object({
|
|
18
|
+
typename: 'org.dxos.type.tag',
|
|
19
|
+
version: '0.1.0',
|
|
20
|
+
}),
|
|
21
|
+
internal.LabelAnnotation.set(['label']),
|
|
22
|
+
internal.SystemTypeAnnotation.set(true),
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
export type Tag = Schema.Schema.Type<typeof Tag>;
|
|
26
|
+
|
|
27
|
+
export const make = (props: Obj.MakeProps<typeof Tag>) => Obj.make(Tag, props);
|
|
28
|
+
|
|
29
|
+
export type Map = Record<string, Tag>;
|
|
30
|
+
|
|
31
|
+
export const sortTags = ({ label: a }: Tag, { label: b }: Tag) => a.localeCompare(b);
|
|
32
|
+
|
|
33
|
+
export const createTagList = (tags: Map): Tag[] =>
|
|
34
|
+
Object.entries(tags)
|
|
35
|
+
.map(([id, tag]) => ({ ...tag, id }))
|
|
36
|
+
.sort(sortTags);
|
|
37
|
+
|
|
38
|
+
export const findTagByLabel = (tags: Map | undefined, name: string): Tag | undefined => {
|
|
39
|
+
const entry = Object.entries(tags ?? {}).find(([_, tag]) => tag.label.toLowerCase() === name.toLowerCase());
|
|
40
|
+
return entry ? { ...entry[1], id: entry[0] } : undefined;
|
|
41
|
+
};
|
package/src/Type.test.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
import { describe, test } from 'vitest';
|
|
7
|
+
|
|
8
|
+
import * as Obj from './Obj';
|
|
9
|
+
import * as Relation from './Relation';
|
|
10
|
+
import { TestSchema } from './testing';
|
|
11
|
+
import * as Type from './Type';
|
|
12
|
+
|
|
13
|
+
describe('Type', () => {
|
|
14
|
+
describe('Obj.Unknown schema', () => {
|
|
15
|
+
test('has SchemaKindId for schema type checking', ({ expect }) => {
|
|
16
|
+
// Type.isObjectSchema uses SchemaKindId to check if a schema is an object schema.
|
|
17
|
+
expect(Type.isObjectSchema(Obj.Unknown)).toBe(true);
|
|
18
|
+
expect(Type.isObjectSchema(TestSchema.Person)).toBe(true);
|
|
19
|
+
expect(Type.isObjectSchema(Relation.Unknown)).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('Schema.is validates structural compatibility only', ({ expect }) => {
|
|
23
|
+
// Schema.is does structural validation (has id field).
|
|
24
|
+
// It accepts both ECHO objects and plain objects with compatible structure.
|
|
25
|
+
expect(Schema.is(Obj.Unknown)({ id: 'plain-object' })).toBe(true);
|
|
26
|
+
const obj = Obj.make(TestSchema.Person, { name: 'Test' });
|
|
27
|
+
expect(Schema.is(Obj.Unknown)(obj)).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('Relation.Unknown schema', () => {
|
|
32
|
+
test('has SchemaKindId for schema type checking', ({ expect }) => {
|
|
33
|
+
// Type.isRelationSchema uses SchemaKindId to check if a schema is a relation schema.
|
|
34
|
+
expect(Type.isRelationSchema(Relation.Unknown)).toBe(true);
|
|
35
|
+
expect(Type.isRelationSchema(TestSchema.HasManager)).toBe(true);
|
|
36
|
+
expect(Type.isRelationSchema(Obj.Unknown)).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('Schema.is validates structural compatibility only', ({ expect }) => {
|
|
40
|
+
// Schema.is does structural validation (has id field).
|
|
41
|
+
// It accepts both ECHO relations and plain objects with compatible structure.
|
|
42
|
+
expect(Schema.is(Relation.Unknown)({ id: 'plain-object' })).toBe(true);
|
|
43
|
+
const obj1 = Obj.make(TestSchema.Person, { name: 'Alice' });
|
|
44
|
+
const obj2 = Obj.make(TestSchema.Person, { name: 'Bob' });
|
|
45
|
+
const rel = Relation.make(TestSchema.HasManager, {
|
|
46
|
+
[Relation.Source]: obj1,
|
|
47
|
+
[Relation.Target]: obj2,
|
|
48
|
+
});
|
|
49
|
+
expect(Schema.is(Relation.Unknown)(rel)).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
package/src/Type.ts
CHANGED
|
@@ -2,213 +2,231 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import type * as Schema from 'effect/Schema';
|
|
7
8
|
|
|
8
9
|
import { type EncodedReference } from '@dxos/echo-protocol';
|
|
9
|
-
import * as EchoSchema from '@dxos/echo-schema';
|
|
10
|
-
import { type ToMutable } from '@dxos/echo-schema';
|
|
11
10
|
import { invariant } from '@dxos/invariant';
|
|
12
|
-
import type
|
|
11
|
+
import { type DXN } from '@dxos/keys';
|
|
12
|
+
import { type ToMutable } from '@dxos/util';
|
|
13
13
|
|
|
14
|
+
import type * as Entity from './Entity';
|
|
15
|
+
import * as internal from './internal';
|
|
16
|
+
import * as typeInternal from './internal/Type';
|
|
17
|
+
import type * as ObjModule from './Obj';
|
|
14
18
|
import type * as RelationModule from './Relation';
|
|
15
19
|
|
|
16
|
-
//
|
|
17
|
-
// Kind
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
export const KindId: unique symbol = EchoSchema.EntityKindId as any;
|
|
21
|
-
export type KindId = typeof KindId;
|
|
22
|
-
|
|
23
|
-
export const Kind = EchoSchema.EntityKind;
|
|
24
|
-
|
|
25
20
|
/**
|
|
26
|
-
*
|
|
21
|
+
* Dynamic type that can be constructed, mutated, and persisted in the ECHO database.
|
|
27
22
|
*/
|
|
28
|
-
|
|
29
|
-
export interface OfKind<Kind extends EchoSchema.EntityKind> {
|
|
30
|
-
readonly id: Keys.ObjectId;
|
|
31
|
-
readonly [KindId]: Kind;
|
|
32
|
-
}
|
|
23
|
+
export const RuntimeType = typeInternal.EchoSchema;
|
|
33
24
|
|
|
34
25
|
/**
|
|
35
|
-
*
|
|
26
|
+
* Dynamic type that can be constructed, mutated, and persisted in the ECHO database.
|
|
36
27
|
*/
|
|
37
|
-
export type
|
|
28
|
+
export type RuntimeType = typeInternal.EchoSchema;
|
|
29
|
+
|
|
30
|
+
//
|
|
31
|
+
// Internal types (not exported)
|
|
32
|
+
//
|
|
38
33
|
|
|
39
34
|
/**
|
|
40
|
-
*
|
|
35
|
+
* Type that marks a schema as an ECHO schema.
|
|
36
|
+
* The value indicates the entity kind (Object or Relation).
|
|
41
37
|
*/
|
|
42
|
-
|
|
38
|
+
type EchoSchemaKind<K extends internal.EntityKind = internal.EntityKind> = {
|
|
39
|
+
readonly [internal.SchemaKindId]: K;
|
|
40
|
+
};
|
|
43
41
|
|
|
44
42
|
//
|
|
45
|
-
// Obj
|
|
43
|
+
// Obj - Runtime schema for any ECHO object
|
|
46
44
|
//
|
|
47
45
|
|
|
48
|
-
interface ObjJsonProps {
|
|
49
|
-
id: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
46
|
/**
|
|
53
|
-
*
|
|
47
|
+
* TypeScript type for an ECHO object schema.
|
|
48
|
+
* `T` is the instance type produced by the schema.
|
|
49
|
+
* `Fields` is the optional struct fields type for introspection.
|
|
54
50
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* const PersonSchema: Type.Obj<Person> = Schema.Struct({
|
|
54
|
+
* name: Schema.String,
|
|
55
|
+
* }).pipe(Type.object({ typename: 'Person', version: '0.1.0' }));
|
|
56
|
+
*
|
|
57
|
+
* // Access fields for introspection:
|
|
58
|
+
* Object.keys(PersonSchema.fields); // ['name']
|
|
59
|
+
* ```
|
|
57
60
|
*/
|
|
58
|
-
export interface
|
|
59
|
-
extends
|
|
61
|
+
export interface Obj<T, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>
|
|
62
|
+
extends
|
|
63
|
+
internal.TypeMeta,
|
|
64
|
+
EchoSchemaKind<internal.EntityKind.Object>,
|
|
60
65
|
Schema.AnnotableClass<
|
|
61
|
-
|
|
62
|
-
OfKind<
|
|
63
|
-
Simplify<
|
|
64
|
-
|
|
65
|
-
> {
|
|
66
|
+
Obj<T, Fields>,
|
|
67
|
+
Entity.OfKind<typeof Entity.Kind.Object> & T,
|
|
68
|
+
Schema.Simplify<ObjModule.BaseObjJson & ToMutable<T>>,
|
|
69
|
+
never
|
|
70
|
+
> {
|
|
71
|
+
/**
|
|
72
|
+
* The fields defined in the original struct schema.
|
|
73
|
+
* Allows accessing field definitions for introspection.
|
|
74
|
+
*/
|
|
75
|
+
readonly fields: Fields;
|
|
76
|
+
}
|
|
66
77
|
|
|
67
78
|
/**
|
|
68
|
-
*
|
|
79
|
+
* Structural base type for any ECHO object schema.
|
|
80
|
+
* Accepts both static schemas (created with Type.object()) and EchoSchema.
|
|
81
|
+
* NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.
|
|
82
|
+
* Use Type.isObjectSchema() for runtime type guards.
|
|
69
83
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
84
|
+
type ObjectSchemaBase = Schema.Schema.AnyNoContext & {
|
|
85
|
+
readonly typename: string;
|
|
86
|
+
readonly version: string;
|
|
87
|
+
};
|
|
73
88
|
|
|
74
89
|
/**
|
|
75
|
-
*
|
|
90
|
+
* Type that represents any ECHO object schema.
|
|
91
|
+
* Accepts both static schemas (Type.object()) and mutable schemas (EchoSchema).
|
|
76
92
|
*/
|
|
77
|
-
export
|
|
78
|
-
/**
|
|
79
|
-
* Type that represents an arbitrary schema type of an object.
|
|
80
|
-
* NOTE: This is not an instance type.
|
|
81
|
-
*/
|
|
82
|
-
// TODO(dmaretskyi): If schema was covariant, we could specify props in here, like `id: ObjectId`.
|
|
83
|
-
// TODO(burdon): This erases the ECHO type info (e.g., id, typename).
|
|
84
|
-
export type Any = Schema.Schema.AnyNoContext;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
//
|
|
88
|
-
// Expando
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
// TODO(burdon): We're using Expando in many places as a base type.
|
|
92
|
-
export interface Expando extends OfKind<EchoSchema.EntityKind.Object> {
|
|
93
|
-
[key: string]: any;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
type ExpandoEncoded = Simplify<ObjJsonProps & { [key: string]: any }>;
|
|
93
|
+
export type AnyObj = ObjectSchemaBase;
|
|
97
94
|
|
|
98
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Factory function to create an ECHO object schema.
|
|
97
|
+
* Adds object metadata annotations to an Effect schema.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* const Person = Schema.Struct({
|
|
102
|
+
* name: Schema.String,
|
|
103
|
+
* }).pipe(Type.object({ typename: 'com.example.type.person', version: '0.1.0' }));
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export const object: {
|
|
107
|
+
(opts: internal.TypeMeta): <Self extends Schema.Schema.Any>(self: Self) => Obj<Schema.Schema.Type<Self>>;
|
|
108
|
+
} = internal.EchoObjectSchema as any;
|
|
99
109
|
|
|
100
110
|
//
|
|
101
|
-
//
|
|
111
|
+
// PersistentType (Schema stored in database)
|
|
102
112
|
//
|
|
103
113
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
[EchoSchema.ATTR_RELATION_TARGET]: string;
|
|
108
|
-
}
|
|
114
|
+
export const PersistentType: Obj<typeInternal.PersistentSchema> = typeInternal.PersistentSchema as any;
|
|
115
|
+
|
|
116
|
+
export interface PersistentType extends Schema.Schema.Type<typeof PersistentType> {}
|
|
109
117
|
|
|
110
118
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*/
|
|
116
|
-
export interface
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
> extends EchoSchema.TypeMeta,
|
|
119
|
+
* TypeScript type for an ECHO relation schema.
|
|
120
|
+
* `T` is the instance type produced by the schema (excluding source/target).
|
|
121
|
+
* `Source` and `Target` are the endpoint types.
|
|
122
|
+
* `Fields` is the optional struct fields type for introspection.
|
|
123
|
+
*/
|
|
124
|
+
export interface Relation<T, Source, Target, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>
|
|
125
|
+
extends
|
|
126
|
+
internal.TypeMeta,
|
|
127
|
+
EchoSchemaKind<internal.EntityKind.Relation>,
|
|
121
128
|
Schema.AnnotableClass<
|
|
122
|
-
|
|
123
|
-
OfKind<
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
+
Relation<T, Source, Target, Fields>,
|
|
130
|
+
Entity.OfKind<typeof Entity.Kind.Relation> & RelationModule.Endpoints<Source, Target> & T,
|
|
131
|
+
Schema.Simplify<RelationModule.BaseRelationJson & ToMutable<T>>,
|
|
132
|
+
never
|
|
133
|
+
> {
|
|
134
|
+
/**
|
|
135
|
+
* The fields defined in the original struct schema.
|
|
136
|
+
* Allows accessing field definitions for introspection.
|
|
137
|
+
*/
|
|
138
|
+
readonly fields: Fields;
|
|
139
|
+
}
|
|
129
140
|
|
|
130
141
|
/**
|
|
131
|
-
*
|
|
142
|
+
* Structural base type for any ECHO relation schema.
|
|
143
|
+
* Accepts static schemas (created with Type.relation()).
|
|
144
|
+
* NOTE: Does not include the brand symbol to avoid TS4053 declaration portability issues.
|
|
145
|
+
* Use Type.isRelationSchema() for runtime type guards.
|
|
132
146
|
*/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
): <Self extends Schema.Schema.Any>(self: Self) => relation<Self, Source, Target>;
|
|
138
|
-
} = EchoSchema.EchoRelation as any;
|
|
147
|
+
type RelationSchemaBase = Schema.Schema.AnyNoContext & {
|
|
148
|
+
readonly typename: string;
|
|
149
|
+
readonly version: string;
|
|
150
|
+
};
|
|
139
151
|
|
|
140
152
|
/**
|
|
141
|
-
*
|
|
153
|
+
* Type that represents any ECHO relation schema.
|
|
154
|
+
* Accepts static schemas (Type.relation()).
|
|
142
155
|
*/
|
|
143
|
-
export
|
|
144
|
-
/**
|
|
145
|
-
* Type that represents an arbitrary schema type of a relation.
|
|
146
|
-
* NOTE: This is not an instance type.
|
|
147
|
-
*/
|
|
148
|
-
// TODO(dmaretskyi): If schema was covariant, we could specify props in here, like `id: ObjectId`.
|
|
149
|
-
export type Any = Schema.Schema.AnyNoContext;
|
|
156
|
+
export type AnyRelation = RelationSchemaBase;
|
|
150
157
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
158
|
+
/**
|
|
159
|
+
* Factory function to create an ECHO relation schema.
|
|
160
|
+
* Adds relation metadata annotations to an Effect schema.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```ts
|
|
164
|
+
* const WorksFor = Schema.Struct({
|
|
165
|
+
* role: Schema.String,
|
|
166
|
+
* }).pipe(Type.relation({
|
|
167
|
+
* typename: 'com.example.type.works-for',
|
|
168
|
+
* version: '0.1.0',
|
|
169
|
+
* source: Person,
|
|
170
|
+
* target: Company,
|
|
171
|
+
* }));
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
export const relation: {
|
|
175
|
+
<SourceSchema extends Schema.Schema.AnyNoContext, TargetSchema extends Schema.Schema.AnyNoContext>(
|
|
176
|
+
opts: internal.EchoRelationSchemaOptions<SourceSchema, TargetSchema>,
|
|
177
|
+
): <Self extends Schema.Schema.Any>(
|
|
178
|
+
self: Self,
|
|
179
|
+
) => Relation<Schema.Schema.Type<Self>, Schema.Schema.Type<SourceSchema>, Schema.Schema.Type<TargetSchema>>;
|
|
180
|
+
} = internal.EchoRelationSchema as any;
|
|
166
181
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
182
|
+
/**
|
|
183
|
+
* Type alias for any ECHO entity schema (object or relation).
|
|
184
|
+
* Use this in type annotations for schema parameters.
|
|
185
|
+
*/
|
|
186
|
+
export type AnyEntity = AnyObj | AnyRelation;
|
|
170
187
|
|
|
171
188
|
/**
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* This typedef avoids `TS4023` error (name from external module cannot be used named).
|
|
175
|
-
* See Effect's note on interface types.
|
|
189
|
+
* Type guard to check if a schema is an object schema.
|
|
190
|
+
* NOTE: This checks SCHEMAS, not instances. Use Obj.isObject for instances.
|
|
176
191
|
*/
|
|
177
|
-
export
|
|
178
|
-
|
|
192
|
+
export const isObjectSchema = (schema: AnyEntity): schema is AnyObj => {
|
|
193
|
+
return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Object;
|
|
194
|
+
};
|
|
179
195
|
|
|
180
196
|
/**
|
|
181
|
-
*
|
|
197
|
+
* Type guard to check if a schema is a relation schema.
|
|
198
|
+
* NOTE: This checks SCHEMAS, not instances. Use Relation.isRelation for instances.
|
|
182
199
|
*/
|
|
183
|
-
export const
|
|
200
|
+
export const isRelationSchema = (schema: AnyEntity): schema is AnyRelation => {
|
|
201
|
+
return (schema as any)[internal.SchemaKindId] === internal.EntityKind.Relation;
|
|
202
|
+
};
|
|
184
203
|
|
|
185
|
-
|
|
204
|
+
/**
|
|
205
|
+
* Type that represents any Ref schema (with unknown target type).
|
|
206
|
+
* This is a schema type, not an instance type.
|
|
207
|
+
*/
|
|
208
|
+
export type AnyRef = Schema.Schema<internal.Ref<any>, EncodedReference>;
|
|
186
209
|
|
|
187
|
-
//
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
* Type that represents an arbitrary schema type of a reference.
|
|
191
|
-
* NOTE: This is not an instance type.
|
|
192
|
-
*/
|
|
193
|
-
export type Any = Schema.Schema<EchoSchema.Ref<any>, EncodedReference>;
|
|
194
|
-
}
|
|
210
|
+
//
|
|
211
|
+
// Schema utility functions
|
|
212
|
+
//
|
|
195
213
|
|
|
196
214
|
/**
|
|
197
215
|
* Gets the full DXN of the schema.
|
|
198
216
|
* Will include the version if it's a `type` DXN.
|
|
199
|
-
* @example "dxn:example.
|
|
217
|
+
* @example "dxn:com.example.type.person:0.1.0"
|
|
200
218
|
* @example "dxn:echo:SSSSSSSSSS:XXXXXXXXXXXXX"
|
|
201
219
|
*/
|
|
202
|
-
export const getDXN = (schema:
|
|
203
|
-
return
|
|
220
|
+
export const getDXN = (schema: AnyEntity): DXN | undefined => {
|
|
221
|
+
return internal.getSchemaDXN(schema);
|
|
204
222
|
};
|
|
205
223
|
|
|
206
224
|
/**
|
|
207
225
|
* @param schema - Schema to get the typename from.
|
|
208
|
-
* @returns The typename of the schema. Example: `example.
|
|
226
|
+
* @returns The typename of the schema. Example: `com.example.type.person`.
|
|
209
227
|
*/
|
|
210
|
-
export const getTypename = (schema:
|
|
211
|
-
const typename =
|
|
228
|
+
export const getTypename = (schema: AnyEntity): string => {
|
|
229
|
+
const typename = internal.getSchemaTypename(schema);
|
|
212
230
|
invariant(typeof typename === 'string' && !typename.startsWith('dxn:'), 'Invalid typename');
|
|
213
231
|
return typename;
|
|
214
232
|
};
|
|
@@ -217,8 +235,8 @@ export const getTypename = (schema: Obj.Any | Relation.Any): string => {
|
|
|
217
235
|
* Gets the version of the schema.
|
|
218
236
|
* @example 0.1.0
|
|
219
237
|
*/
|
|
220
|
-
export const getVersion = (schema:
|
|
221
|
-
const version =
|
|
238
|
+
export const getVersion = (schema: AnyEntity): string => {
|
|
239
|
+
const version = internal.getSchemaVersion(schema);
|
|
222
240
|
invariant(typeof version === 'string' && version.match(/^\d+\.\d+\.\d+$/), 'Invalid version');
|
|
223
241
|
return version;
|
|
224
242
|
};
|
|
@@ -226,21 +244,16 @@ export const getVersion = (schema: Obj.Any | Relation.Any): string => {
|
|
|
226
244
|
/**
|
|
227
245
|
* @returns True if the schema is mutable.
|
|
228
246
|
*/
|
|
229
|
-
export const isMutable =
|
|
247
|
+
export const isMutable = typeInternal.isMutable;
|
|
230
248
|
|
|
231
249
|
/**
|
|
232
250
|
* ECHO type metadata.
|
|
233
251
|
*/
|
|
234
|
-
export type Meta =
|
|
252
|
+
export type Meta = internal.TypeAnnotation;
|
|
235
253
|
|
|
236
254
|
/**
|
|
237
255
|
* Gets the meta data of the schema.
|
|
238
256
|
*/
|
|
239
|
-
export const getMeta = (schema:
|
|
240
|
-
return
|
|
257
|
+
export const getMeta = (schema: AnyEntity): Meta | undefined => {
|
|
258
|
+
return internal.getTypeAnnotation(schema);
|
|
241
259
|
};
|
|
242
|
-
|
|
243
|
-
// TODO(dmaretskyi): Remove re-exports.
|
|
244
|
-
export { SpaceId, ObjectId, DXN } from '@dxos/keys';
|
|
245
|
-
|
|
246
|
-
export { Format, JsonSchemaType as JsonSchema, toEffectSchema, toJsonSchema } from '@dxos/echo-schema';
|