@dxos/echo 0.8.4-main.ead640a → 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 +10 -11
- package/dist/lib/neutral/Annotation.mjs +39 -0
- package/dist/lib/neutral/Database.mjs +49 -0
- package/dist/lib/neutral/Entity.mjs +68 -0
- package/dist/lib/neutral/Err.mjs +12 -0
- package/dist/lib/neutral/Extension.mjs +18 -0
- package/dist/lib/neutral/Feed.mjs +54 -0
- package/dist/lib/neutral/Filter.mjs +74 -0
- package/dist/lib/neutral/Filter.mjs.map +7 -0
- package/dist/lib/neutral/Format.mjs +86 -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 +16 -0
- package/dist/lib/neutral/Key.mjs.map +7 -0
- package/dist/lib/neutral/Migration.mjs +18 -0
- package/dist/lib/neutral/Migration.mjs.map +7 -0
- package/dist/lib/neutral/Obj.mjs +114 -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 +26 -0
- package/dist/lib/neutral/Ref.mjs.map +7 -0
- package/dist/lib/neutral/Relation.mjs +95 -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 +63 -0
- package/dist/lib/neutral/Type.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4SYHDOQA.mjs +48 -0
- package/dist/lib/neutral/chunk-4SYHDOQA.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4U7OD55H.mjs +47 -0
- 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-A5HDDVKS.mjs +94 -0
- package/dist/lib/neutral/chunk-A5HDDVKS.mjs.map +7 -0
- package/dist/lib/neutral/chunk-EZ4XJFHJ.mjs +54 -0
- package/dist/lib/neutral/chunk-EZ4XJFHJ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-F625JEZB.mjs +365 -0
- 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-GOHDOJE3.mjs +51 -0
- 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-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.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-JTHNDGAR.mjs +27 -0
- 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-KHRAQDYX.mjs +343 -0
- 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-O2EOH7XQ.mjs +420 -0
- package/dist/lib/neutral/chunk-O2EOH7XQ.mjs.map +7 -0
- package/dist/lib/neutral/chunk-Q7ID37KF.mjs +278 -0
- 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-TTCSATUD.mjs +42 -0
- package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
- package/dist/lib/neutral/chunk-UEFRFUYC.mjs +25 -0
- 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-V5NE2X7Y.mjs +7 -0
- package/dist/lib/neutral/chunk-V5NE2X7Y.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-ZII2BGPM.mjs +269 -0
- package/dist/lib/neutral/chunk-ZII2BGPM.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ZM7VFIS2.mjs +93 -0
- package/dist/lib/neutral/chunk-ZM7VFIS2.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +111 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/internal/index.mjs +513 -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 +418 -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 +15 -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 +29 -0
- package/dist/types/src/Dataset.d.ts.map +1 -0
- package/dist/types/src/Entity.d.ts +236 -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 +229 -0
- package/dist/types/src/Feed.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +183 -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 +2 -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 +459 -107
- 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 +225 -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 +69 -11
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +316 -23
- 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 +83 -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 +378 -106
- 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 +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/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 +251 -0
- 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/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 +48 -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 +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/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 +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 +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.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 +6 -3
- 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/{formats → Format}/select.d.ts +6 -4
- package/dist/types/src/internal/Format/select.d.ts.map +1 -0
- package/dist/types/src/internal/{formats → Format}/string.d.ts +4 -0
- package/dist/types/src/internal/Format/string.d.ts.map +1 -0
- package/dist/types/src/internal/{formats → Format}/types.d.ts +14 -10
- package/dist/types/src/internal/Format/types.d.ts.map +1 -0
- package/dist/types/src/internal/{json → 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 +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.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +131 -30
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
- package/dist/types/src/internal/{json → JsonSchema}/json-schema.d.ts +6 -3
- 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 +8 -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/create.d.ts → Obj/create-object.d.ts} +13 -16
- 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/index.d.ts +10 -0
- package/dist/types/src/internal/Obj/index.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/inspect.d.ts.map +1 -0
- package/dist/types/src/internal/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.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/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.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 +4 -4
- package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref.d.ts +79 -31
- 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/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.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/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.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 +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 +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.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 +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 +64 -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.map +1 -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 +94 -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 +43 -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 +58 -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 +28 -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 +10 -14
- package/dist/types/src/internal/index.d.ts.map +1 -1
- package/dist/types/src/{test → testing}/api.test.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +3 -3
- 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 +298 -0
- package/dist/types/src/testing/test-schema.d.ts.map +1 -0
- package/dist/types/src/testing/util.d.ts +23 -0
- package/dist/types/src/testing/util.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +117 -66
- package/src/Annotation.ts +49 -0
- package/src/Collection.ts +36 -0
- package/src/Database.ts +356 -0
- package/src/Dataset.ts +34 -0
- package/src/Entity.test.ts +132 -0
- package/src/Entity.ts +332 -0
- package/src/Err.ts +40 -0
- 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 +507 -0
- package/src/Format.ts +9 -0
- package/src/Hypergraph.ts +79 -0
- package/src/Json.test.ts +175 -0
- package/src/Json.ts +103 -0
- package/src/JsonSchema.ts +26 -0
- package/src/Key.ts +4 -1
- package/src/Migration.ts +114 -0
- package/src/Obj.test.ts +550 -0
- package/src/Obj.ts +754 -267
- package/src/Order.ts +46 -0
- package/src/Query.test.ts +822 -0
- package/src/Query.ts +589 -0
- package/src/QueryResult.ts +106 -0
- package/src/Ref.ts +98 -10
- package/src/Relation.test.ts +88 -0
- package/src/Relation.ts +491 -67
- package/src/SchemaRegistry.ts +101 -0
- package/src/{query/tag.ts → Tag.ts} +15 -12
- package/src/Type.test.ts +197 -0
- package/src/Type.ts +605 -151
- package/src/View.ts +101 -0
- package/src/exemplars.test.ts +21 -0
- package/src/hierarchy.test.ts +33 -0
- package/src/index.ts +23 -6
- package/src/internal/Annotation/annotations.test.ts +165 -0
- package/src/internal/Annotation/annotations.ts +567 -0
- package/src/internal/Annotation/index.ts +7 -0
- package/src/internal/Annotation/sorting.ts +51 -0
- package/src/internal/Annotation/util.ts +93 -0
- package/src/internal/Entity/api.ts +30 -0
- package/src/internal/Entity/entity.ts +246 -0
- package/src/internal/Entity/index.ts +13 -0
- package/src/internal/Entity/model.ts +120 -0
- package/src/internal/Entity/object.ts +65 -0
- 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/Entity/version.ts +96 -0
- package/src/internal/{formats → Format}/date.test.ts +1 -2
- package/src/internal/{formats → Format}/date.ts +5 -9
- package/src/internal/{formats → Format}/format.test.ts +6 -7
- package/src/internal/{formats → Format}/format.ts +8 -6
- package/src/internal/{formats → Format}/index.ts +2 -3
- package/src/internal/{formats → Format}/number.ts +5 -5
- package/src/internal/{formats → Format}/object.ts +4 -4
- package/src/internal/{formats → Format}/select.ts +6 -4
- package/src/internal/{formats → Format}/string.ts +14 -9
- package/src/internal/{formats → Format}/types.ts +54 -43
- package/src/internal/{json → JsonSchema}/annotations.ts +3 -3
- package/src/internal/{json-schema → JsonSchema}/index.ts +2 -0
- package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +4 -2
- package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +36 -36
- package/src/internal/{json → JsonSchema}/json-schema.test.ts +92 -175
- package/src/internal/{json → JsonSchema}/json-schema.ts +69 -37
- package/src/internal/Obj/clone.ts +52 -0
- package/src/internal/{object → Obj}/common.ts +3 -4
- package/src/internal/{object/create.test.ts → Obj/create-object.test.ts} +34 -37
- package/src/internal/Obj/create-object.ts +135 -0
- package/src/internal/Obj/deleted.ts +19 -0
- package/src/internal/Obj/index.ts +13 -0
- package/src/internal/{object → Obj}/inspect.ts +5 -7
- package/src/internal/Obj/json-serializer.test.ts +185 -0
- package/src/internal/Obj/json-serializer.ts +260 -0
- package/src/internal/{object → Obj}/schema-validator.test.ts +3 -7
- package/src/internal/Obj/schema-validator.ts +6 -0
- package/src/internal/Obj/set-value.test.ts +258 -0
- package/src/internal/Obj/set-value.ts +165 -0
- package/src/internal/Obj/snapshot.ts +111 -0
- package/src/internal/Obj/typed-object.test.ts +32 -0
- package/src/internal/Obj/typed-object.ts +30 -0
- package/src/internal/Query.ts +156 -0
- package/src/internal/{ref → Ref}/ref-array.ts +4 -5
- package/src/internal/{ref → Ref}/ref.test.ts +21 -30
- package/src/internal/{ref → Ref}/ref.ts +209 -98
- package/src/internal/{projection → Type}/compose.test.ts +9 -9
- package/src/internal/{projection → Type}/compose.ts +14 -9
- 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/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/{testing → common}/index.ts +2 -1
- 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 +93 -0
- package/src/internal/common/proxy/make-object.ts +128 -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/{object → common/proxy}/schema-validator.ts +6 -3
- package/src/internal/common/proxy/schema.test.ts +107 -0
- package/src/internal/common/proxy/symbols.ts +7 -0
- package/src/internal/common/proxy/typed-handler.test.ts +314 -0
- package/src/internal/common/proxy/typed-handler.ts +507 -0
- package/src/internal/common/proxy/typed-object.test.ts +103 -0
- package/src/internal/common/types/base.ts +43 -0
- package/src/internal/common/types/entity.ts +133 -0
- package/src/internal/common/types/index.ts +10 -0
- package/src/internal/common/types/meta.ts +79 -0
- package/src/internal/common/types/model-symbols.ts +74 -0
- package/src/internal/common/types/typename.ts +91 -0
- package/src/internal/common/types/version.ts +19 -0
- package/src/internal/index.ts +12 -17
- package/src/testing/api.test.ts +129 -0
- package/src/testing/index.ts +3 -3
- package/src/testing/test-data.ts +189 -0
- package/src/testing/test-schema.ts +204 -0
- package/src/testing/util.ts +88 -0
- package/dist/lib/browser/chunk-HKFCK2GL.mjs +0 -175
- package/dist/lib/browser/chunk-HKFCK2GL.mjs.map +0 -7
- package/dist/lib/browser/chunk-MAAYELT7.mjs +0 -830
- package/dist/lib/browser/chunk-MAAYELT7.mjs.map +0 -7
- package/dist/lib/browser/chunk-MB6MMNFP.mjs +0 -3857
- package/dist/lib/browser/chunk-MB6MMNFP.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -35
- package/dist/lib/browser/internal/index.mjs +0 -332
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/query/index.mjs +0 -15
- package/dist/lib/browser/testing/index.mjs +0 -298
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5NWDGIBT.mjs +0 -830
- package/dist/lib/node-esm/chunk-5NWDGIBT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AUAH4E2J.mjs +0 -175
- package/dist/lib/node-esm/chunk-AUAH4E2J.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BQRA4VLX.mjs +0 -3857
- package/dist/lib/node-esm/chunk-BQRA4VLX.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -35
- package/dist/lib/node-esm/internal/index.mjs +0 -332
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/query/index.mjs +0 -15
- package/dist/lib/node-esm/testing/index.mjs +0 -298
- 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/internal/ast/annotation-helper.d.ts +0 -8
- package/dist/types/src/internal/ast/annotation-helper.d.ts.map +0 -1
- package/dist/types/src/internal/ast/annotations.d.ts +0 -125
- package/dist/types/src/internal/ast/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/ast/annotations.test.d.ts.map +0 -1
- package/dist/types/src/internal/ast/entity-kind.d.ts +0 -10
- package/dist/types/src/internal/ast/entity-kind.d.ts.map +0 -1
- package/dist/types/src/internal/ast/index.d.ts +0 -5
- package/dist/types/src/internal/ast/index.d.ts.map +0 -1
- package/dist/types/src/internal/ast/types.d.ts +0 -6
- package/dist/types/src/internal/ast/types.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/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/json/effect-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/json/index.d.ts +0 -2
- package/dist/types/src/internal/json/index.d.ts.map +0 -1
- package/dist/types/src/internal/json/json-schema.d.ts.map +0 -1
- package/dist/types/src/internal/json/json-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/index.d.ts +0 -3
- 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/object/accessors.d.ts +0 -37
- package/dist/types/src/internal/object/accessors.d.ts.map +0 -1
- package/dist/types/src/internal/object/common.d.ts.map +0 -1
- package/dist/types/src/internal/object/create.d.ts.map +0 -1
- package/dist/types/src/internal/object/create.test.d.ts +0 -2
- package/dist/types/src/internal/object/create.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/deleted.d.ts +0 -6
- package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
- package/dist/types/src/internal/object/entity.d.ts +0 -33
- package/dist/types/src/internal/object/entity.d.ts.map +0 -1
- package/dist/types/src/internal/object/expando.d.ts +0 -14
- package/dist/types/src/internal/object/expando.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 +0 -16
- 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 +0 -32
- 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/meta.d.ts +0 -31
- package/dist/types/src/internal/object/meta.d.ts.map +0 -1
- package/dist/types/src/internal/object/model.d.ts +0 -117
- package/dist/types/src/internal/object/model.d.ts.map +0 -1
- package/dist/types/src/internal/object/relation.d.ts +0 -17
- package/dist/types/src/internal/object/relation.d.ts.map +0 -1
- 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/typed-object.d.ts +0 -31
- 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/object/typename.d.ts +0 -15
- package/dist/types/src/internal/object/typename.d.ts.map +0 -1
- package/dist/types/src/internal/object/version.d.ts +0 -14
- package/dist/types/src/internal/object/version.d.ts.map +0 -1
- package/dist/types/src/internal/projection/compose.d.ts +0 -6
- package/dist/types/src/internal/projection/compose.d.ts.map +0 -1
- package/dist/types/src/internal/projection/compose.test.d.ts.map +0 -1
- package/dist/types/src/internal/projection/index.d.ts +0 -2
- package/dist/types/src/internal/projection/index.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/reactive-object.d.ts +0 -15
- package/dist/types/src/internal/proxy/reactive-object.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-handler.d.ts +0 -44
- 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/query/index.d.ts +0 -2
- package/dist/types/src/internal/query/index.d.ts.map +0 -1
- package/dist/types/src/internal/query/query.d.ts +0 -17
- package/dist/types/src/internal/query/query.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/echo-schema.d.ts +0 -168
- package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
- package/dist/types/src/internal/schema/index.d.ts +0 -7
- 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/runtime-schema-registry.d.ts +0 -18
- package/dist/types/src/internal/schema/runtime-schema-registry.d.ts.map +0 -1
- package/dist/types/src/internal/schema/snapshot.d.ts +0 -6
- package/dist/types/src/internal/schema/snapshot.d.ts.map +0 -1
- package/dist/types/src/internal/schema/stored-schema.d.ts +0 -13
- package/dist/types/src/internal/schema/stored-schema.d.ts.map +0 -1
- package/dist/types/src/internal/testing/index.d.ts +0 -3
- package/dist/types/src/internal/testing/index.d.ts.map +0 -1
- package/dist/types/src/internal/testing/types.d.ts +0 -455
- package/dist/types/src/internal/testing/types.d.ts.map +0 -1
- package/dist/types/src/internal/testing/utils.d.ts +0 -10
- package/dist/types/src/internal/testing/utils.d.ts.map +0 -1
- package/dist/types/src/internal/types/index.d.ts +0 -3
- package/dist/types/src/internal/types/index.d.ts.map +0 -1
- package/dist/types/src/internal/types/types.d.ts +0 -79
- package/dist/types/src/internal/types/types.d.ts.map +0 -1
- package/dist/types/src/internal/types/types.test.d.ts +0 -2
- package/dist/types/src/internal/types/types.test.d.ts.map +0 -1
- package/dist/types/src/internal/types/util.d.ts +0 -5
- package/dist/types/src/internal/types/util.d.ts.map +0 -1
- package/dist/types/src/query/index.d.ts +0 -3
- package/dist/types/src/query/index.d.ts.map +0 -1
- package/dist/types/src/query/query.d.ts +0 -248
- package/dist/types/src/query/query.d.ts.map +0 -1
- package/dist/types/src/query/query.test.d.ts +0 -2
- package/dist/types/src/query/query.test.d.ts.map +0 -1
- package/dist/types/src/query/tag.d.ts +0 -17
- package/dist/types/src/query/tag.d.ts.map +0 -1
- package/dist/types/src/testing/echo-schema.d.ts +0 -7
- package/dist/types/src/testing/echo-schema.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/internal/ast/annotation-helper.ts +0 -22
- package/src/internal/ast/annotations.test.ts +0 -98
- package/src/internal/ast/annotations.ts +0 -219
- package/src/internal/ast/entity-kind.ts +0 -15
- package/src/internal/ast/index.ts +0 -8
- package/src/internal/ast/types.ts +0 -17
- package/src/internal/json/index.ts +0 -5
- package/src/internal/object/accessors.ts +0 -153
- package/src/internal/object/create.ts +0 -96
- package/src/internal/object/deleted.ts +0 -19
- package/src/internal/object/entity.ts +0 -248
- package/src/internal/object/expando.ts +0 -21
- package/src/internal/object/ids.ts +0 -12
- package/src/internal/object/index.ts +0 -19
- package/src/internal/object/json-serializer.test.ts +0 -99
- package/src/internal/object/json-serializer.ts +0 -225
- package/src/internal/object/meta.ts +0 -61
- package/src/internal/object/model.ts +0 -170
- package/src/internal/object/relation.ts +0 -24
- package/src/internal/object/typed-object.test.ts +0 -34
- package/src/internal/object/typed-object.ts +0 -88
- package/src/internal/object/typename.ts +0 -61
- package/src/internal/object/version.ts +0 -22
- package/src/internal/projection/index.ts +0 -5
- package/src/internal/proxy/handler.test.ts +0 -163
- package/src/internal/proxy/reactive-object.ts +0 -108
- package/src/internal/proxy/schema.test.ts +0 -136
- package/src/internal/proxy/typed-handler.test.ts +0 -102
- package/src/internal/proxy/typed-handler.ts +0 -228
- package/src/internal/proxy/typed-object.test.ts +0 -100
- package/src/internal/query/index.ts +0 -5
- package/src/internal/query/query.ts +0 -23
- package/src/internal/schema/echo-schema.ts +0 -383
- package/src/internal/schema/index.ts +0 -10
- package/src/internal/schema/runtime-schema-registry.ts +0 -78
- package/src/internal/schema/snapshot.ts +0 -25
- package/src/internal/schema/stored-schema.ts +0 -26
- package/src/internal/testing/types.ts +0 -211
- package/src/internal/testing/utils.ts +0 -54
- package/src/internal/types/index.ts +0 -6
- package/src/internal/types/types.test.ts +0 -48
- package/src/internal/types/types.ts +0 -176
- package/src/internal/types/util.ts +0 -9
- package/src/query/index.ts +0 -6
- package/src/query/query.test.ts +0 -401
- package/src/query/query.ts +0 -789
- package/src/test/api.test.ts +0 -180
- package/src/testing/echo-schema.ts +0 -39
- package/src/testing/types.ts +0 -91
- /package/dist/lib/{browser/index.mjs.map → neutral/Annotation.mjs.map} +0 -0
- /package/dist/lib/{browser/internal/index.mjs.map → neutral/Database.mjs.map} +0 -0
- /package/dist/lib/{browser/query/index.mjs.map → neutral/Entity.mjs.map} +0 -0
- /package/dist/lib/{node-esm/index.mjs.map → neutral/Err.mjs.map} +0 -0
- /package/dist/lib/{node-esm/internal/index.mjs.map → neutral/Extension.mjs.map} +0 -0
- /package/dist/lib/{node-esm/query/index.mjs.map → neutral/Feed.mjs.map} +0 -0
- /package/dist/types/src/internal/{ast → Annotation}/annotations.test.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/{json → JsonSchema}/effect-schema.test.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 → JsonSchema}/json-schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/common.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}/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/{projection → Type}/compose.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → 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}/typed-handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
- /package/dist/types/src/{test → testing}/api.test.d.ts +0 -0
- /package/src/internal/{json → JsonSchema}/effect-schema.test.ts +0 -0
- /package/src/internal/{ref → Ref}/index.ts +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
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
|
+
// Type-only imports (erased at runtime — no import cycle); `internal` may depend
|
|
13
|
+
// on the top-level `Obj` / `Type` API at the type level only.
|
|
14
|
+
import type * as Obj from '../../Obj';
|
|
15
|
+
import type * as Type from '../../Type';
|
|
16
|
+
import {
|
|
17
|
+
type TypeAnnotation,
|
|
18
|
+
TypeAnnotationId,
|
|
19
|
+
getEntityKind,
|
|
20
|
+
getSchemaTypename,
|
|
21
|
+
getTypeIdentifierAnnotation,
|
|
22
|
+
makeTypeJsonSchemaAnnotation,
|
|
23
|
+
} from '../Annotation';
|
|
24
|
+
import {
|
|
25
|
+
ATTR_RELATION_SOURCE,
|
|
26
|
+
ATTR_RELATION_TARGET,
|
|
27
|
+
EntityKind,
|
|
28
|
+
RelationSourceDXNId,
|
|
29
|
+
RelationSourceId,
|
|
30
|
+
RelationTargetDXNId,
|
|
31
|
+
RelationTargetId,
|
|
32
|
+
type UnknownTypeSchema,
|
|
33
|
+
getStaticTypeSchema,
|
|
34
|
+
} from '../common/types';
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
ATTR_RELATION_SOURCE,
|
|
38
|
+
ATTR_RELATION_TARGET,
|
|
39
|
+
RelationSourceDXNId,
|
|
40
|
+
RelationSourceId,
|
|
41
|
+
RelationTargetDXNId,
|
|
42
|
+
RelationTargetId,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
import { toJsonSchema } from '../JsonSchema';
|
|
46
|
+
import { type EchoTypeSchema, makeEchoTypeSchema } from './entity';
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Source and target props on relations.
|
|
50
|
+
*/
|
|
51
|
+
// TODO(burdon): any?
|
|
52
|
+
export type RelationSourceTargetRefs<Source = any, Target = any> = {
|
|
53
|
+
/**
|
|
54
|
+
* Source ECHO live object.
|
|
55
|
+
*/
|
|
56
|
+
[RelationSourceId]: Source;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Target ECHO live object.
|
|
60
|
+
*/
|
|
61
|
+
[RelationTargetId]: Target;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export type RelationSource<R> = R extends RelationSourceTargetRefs<infer Source, infer _Target> ? Source : never;
|
|
65
|
+
export type RelationTarget<R> = R extends RelationSourceTargetRefs<infer _Source, infer Target> ? Target : never;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Accepted relation endpoint: an object-kind `Type.Type` entity (slot-backed)
|
|
69
|
+
* or the branded `Obj.Unknown` schema. Source/target are constrained to these
|
|
70
|
+
* — relations only connect object-kind entities.
|
|
71
|
+
*/
|
|
72
|
+
export type RelationEndpoint = Type.AnyObj | UnknownTypeSchema<any, EntityKind.Object>;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Resolves a relation endpoint to the instance type it describes — the source /
|
|
76
|
+
* target instance recorded on the relation's `RelationSourceTargetRefs`.
|
|
77
|
+
*/
|
|
78
|
+
export type RelationEndpointInstance<S> =
|
|
79
|
+
S extends UnknownTypeSchema<infer A, any> ? A : S extends Type.AnyObj ? Type.InstanceType<S> : unknown;
|
|
80
|
+
|
|
81
|
+
export type EchoRelationSchemaOptions<TSource extends RelationEndpoint, TTarget extends RelationEndpoint> = {
|
|
82
|
+
dxn: DXN.DXN;
|
|
83
|
+
source: TSource;
|
|
84
|
+
target: TTarget;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Relation schema type with kind marker. `SourceInstance` / `TargetInstance`
|
|
89
|
+
* are the resolved endpoint instance types (see {@link RelationEndpointInstance}).
|
|
90
|
+
*/
|
|
91
|
+
export type EchoRelationSchema<
|
|
92
|
+
Self extends Schema.Schema.Any,
|
|
93
|
+
SourceInstance extends Obj.Unknown,
|
|
94
|
+
TargetInstance extends Obj.Unknown,
|
|
95
|
+
Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
|
|
96
|
+
> = EchoTypeSchema<Self, RelationSourceTargetRefs<SourceInstance, TargetInstance>, EntityKind.Relation, Fields>;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Schema for Relation entity types.
|
|
100
|
+
*/
|
|
101
|
+
export const EchoRelationSchema = <Source extends RelationEndpoint, Target extends RelationEndpoint>({
|
|
102
|
+
dxn,
|
|
103
|
+
source,
|
|
104
|
+
target,
|
|
105
|
+
}: EchoRelationSchemaOptions<Source, Target>) => {
|
|
106
|
+
// `source` / `target` are `Type.Type` entities (slot-backed) or the branded
|
|
107
|
+
// `Obj.Unknown` schema (used directly); resolve each to its Effect Schema for
|
|
108
|
+
// the schema-side machinery (DXN ref + entity-kind checks).
|
|
109
|
+
const sourceSchema = source != null ? (getStaticTypeSchema(source) ?? source) : source;
|
|
110
|
+
const targetSchema = target != null ? (getStaticTypeSchema(target) ?? target) : target;
|
|
111
|
+
assertArgument(Schema.isSchema(sourceSchema), 'source');
|
|
112
|
+
assertArgument(Schema.isSchema(targetSchema), 'target');
|
|
113
|
+
const typename = DXN.getName(dxn);
|
|
114
|
+
const version = DXN.getVersion(dxn);
|
|
115
|
+
invariant(version, `Type.makeRelation requires a versioned DXN: ${dxn}`);
|
|
116
|
+
const sourceDXN = getDXNForRelationSchemaRef(sourceSchema);
|
|
117
|
+
const targetDXN = getDXNForRelationSchemaRef(targetSchema);
|
|
118
|
+
if (getEntityKind(sourceSchema) !== EntityKind.Object) {
|
|
119
|
+
raise(new Error('Source schema must be an echo object schema.'));
|
|
120
|
+
}
|
|
121
|
+
if (getEntityKind(targetSchema) !== EntityKind.Object) {
|
|
122
|
+
raise(new Error('Target schema must be an echo object schema.'));
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return <Self extends Schema.Schema.Any, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>(
|
|
126
|
+
self: Self & { fields?: Fields },
|
|
127
|
+
): EchoRelationSchema<Self, RelationEndpointInstance<Source>, RelationEndpointInstance<Target>, Fields> => {
|
|
128
|
+
invariant(SchemaAST.isTypeLiteral(self.ast), 'Schema must be a TypeLiteral.');
|
|
129
|
+
|
|
130
|
+
// Extract fields from the schema if available (Struct schemas have .fields).
|
|
131
|
+
const fields = ((self as any).fields ?? {}) as Fields;
|
|
132
|
+
|
|
133
|
+
const schemaWithId = Schema.extend(self, Schema.Struct({ id: Schema.String }));
|
|
134
|
+
const ast = SchemaAST.annotations(schemaWithId.ast, {
|
|
135
|
+
// TODO(dmaretskyi): `extend` kills the annotations.
|
|
136
|
+
...self.ast.annotations,
|
|
137
|
+
[TypeAnnotationId]: {
|
|
138
|
+
kind: EntityKind.Relation,
|
|
139
|
+
typename,
|
|
140
|
+
version,
|
|
141
|
+
sourceSchema: sourceDXN,
|
|
142
|
+
targetSchema: targetDXN,
|
|
143
|
+
} satisfies TypeAnnotation,
|
|
144
|
+
// TODO(dmaretskyi): TypeIdentifierAnnotationId?
|
|
145
|
+
|
|
146
|
+
[SchemaAST.JSONSchemaAnnotationId]: makeTypeJsonSchemaAnnotation({
|
|
147
|
+
kind: EntityKind.Relation,
|
|
148
|
+
typename,
|
|
149
|
+
version,
|
|
150
|
+
relationSource: sourceDXN,
|
|
151
|
+
relationTarget: targetDXN,
|
|
152
|
+
}),
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
return makeEchoTypeSchema<Self, EntityKind.Relation, Fields>(
|
|
156
|
+
fields,
|
|
157
|
+
ast,
|
|
158
|
+
typename,
|
|
159
|
+
version,
|
|
160
|
+
EntityKind.Relation,
|
|
161
|
+
() => toJsonSchema(Schema.make(ast)),
|
|
162
|
+
);
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
export const getDXNForRelationSchemaRef = (schema: Schema.Schema.Any): DXN.DXN => {
|
|
167
|
+
assertArgument(Schema.isSchema(schema), 'schema');
|
|
168
|
+
const identifier = getTypeIdentifierAnnotation(schema);
|
|
169
|
+
if (identifier) {
|
|
170
|
+
return DXN.tryMake(identifier) ?? raise(new Error(`Invalid schema identifier: ${identifier}`));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const typename = getSchemaTypename(schema);
|
|
174
|
+
if (!typename) {
|
|
175
|
+
throw new Error('Schema must have a typename');
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return DXN.make(typename);
|
|
179
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
|
+
|
|
8
|
+
import { invariant } from '@dxos/invariant';
|
|
9
|
+
import { DXN } from '@dxos/keys';
|
|
10
|
+
|
|
11
|
+
import { type TypeAnnotation, TypeAnnotationId, makeTypeJsonSchemaAnnotation } from '../Annotation';
|
|
12
|
+
import { EntityKind } from '../common/types';
|
|
13
|
+
import { toJsonSchema } from '../JsonSchema';
|
|
14
|
+
import { type EchoTypeSchema, makeEchoTypeSchema } from './entity';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Type-kind schema marker — produced by {@link EchoTypeKindSchema}.
|
|
18
|
+
*
|
|
19
|
+
* Distinguishes meta-schemas (entities of `EntityKind.Type`, such as the
|
|
20
|
+
* built-in `Type.Type` TypeSchema) from object and relation types.
|
|
21
|
+
*/
|
|
22
|
+
export type EchoTypeKindSchema<
|
|
23
|
+
Self extends Schema.Schema.Any,
|
|
24
|
+
Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
|
|
25
|
+
> = EchoTypeSchema<Self, {}, EntityKind.Type, Fields>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Pipeable that brands a schema as a type-kind ECHO entity. Mirrors
|
|
29
|
+
* {@link EchoObjectSchema} / {@link EchoRelationSchema}, but stamps the
|
|
30
|
+
* resulting entity with `[SchemaKindId]: EntityKind.Type` and a matching
|
|
31
|
+
* `TypeAnnotation.kind = 'type'` so meta-schemas surface uniformly through
|
|
32
|
+
* `Type.isTypeKindSchema`, `Filter.type`, etc.
|
|
33
|
+
*/
|
|
34
|
+
export const EchoTypeKindSchema: {
|
|
35
|
+
(
|
|
36
|
+
dxn: DXN.DXN,
|
|
37
|
+
): <Self extends Schema.Schema.Any, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>(
|
|
38
|
+
self: Self & { fields?: Fields },
|
|
39
|
+
) => EchoTypeKindSchema<Self, Fields>;
|
|
40
|
+
} = (dxn) => {
|
|
41
|
+
const typename = DXN.getName(dxn);
|
|
42
|
+
const version = DXN.getVersion(dxn);
|
|
43
|
+
invariant(version, `Type-kind schemas require a versioned DXN: ${dxn}`);
|
|
44
|
+
|
|
45
|
+
return <Self extends Schema.Schema.Any, Fields extends Schema.Struct.Fields = Schema.Struct.Fields>(
|
|
46
|
+
self: Self & { fields?: Fields },
|
|
47
|
+
): EchoTypeKindSchema<Self, Fields> => {
|
|
48
|
+
invariant(SchemaAST.isTypeLiteral(self.ast), 'Schema must be a TypeLiteral.');
|
|
49
|
+
|
|
50
|
+
const fields = ((self as any).fields ?? {}) as Fields;
|
|
51
|
+
|
|
52
|
+
const schemaWithId = Schema.extend(self, Schema.Struct({ id: Schema.String }));
|
|
53
|
+
const ast = SchemaAST.annotations(schemaWithId.ast, {
|
|
54
|
+
...self.ast.annotations,
|
|
55
|
+
[TypeAnnotationId]: { kind: EntityKind.Type, typename, version } satisfies TypeAnnotation,
|
|
56
|
+
[SchemaAST.JSONSchemaAnnotationId]: makeTypeJsonSchemaAnnotation({
|
|
57
|
+
kind: EntityKind.Type,
|
|
58
|
+
typename,
|
|
59
|
+
version,
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return makeEchoTypeSchema<Self, EntityKind.Type, Fields>(fields, ast, typename, version, EntityKind.Type, () =>
|
|
64
|
+
toJsonSchema(Schema.make(ast)),
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
|
|
7
|
+
import { raise } from '@dxos/debug';
|
|
8
|
+
import { assertArgument } from '@dxos/invariant';
|
|
9
|
+
import { DXN, URI } from '@dxos/keys';
|
|
10
|
+
|
|
11
|
+
import { getSchemaURI, getTypename } from '../Annotation';
|
|
12
|
+
import { type AnyEntity, InstancePhantomId, KindId, TypeId, getStaticTypeSchema } from '../common/types';
|
|
13
|
+
import { getUri as getUriFromEntity } from './api';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @param input schema, `Type.Type` entity, or a typename string.
|
|
17
|
+
* @return type identifier URI — see {@link getSchemaURI}. For a typename string,
|
|
18
|
+
* always a DXN. For a `Type.Type` entity, the URI of the schema it declares,
|
|
19
|
+
* symmetric with what `Obj.make(typeEntity, ...)` stamps on `system.type`: a
|
|
20
|
+
* static declaration resolves to its typename DXN, a persisted entity to its
|
|
21
|
+
* local `echo:/<objectId>`.
|
|
22
|
+
*/
|
|
23
|
+
export const getTypeURIFromSpecifier = (input: Schema.Schema.All | AnyEntity | string): URI.URI => {
|
|
24
|
+
if (Schema.isSchema(input)) {
|
|
25
|
+
return getSchemaURI(input) ?? raise(new TypeError('Schema has no URI'));
|
|
26
|
+
}
|
|
27
|
+
if (typeof input === 'object' && input !== null && KindId in input) {
|
|
28
|
+
// `Type.Type` entity. Both in-memory and persisted forms expose the schema
|
|
29
|
+
// they declare via `StaticTypeSchemaSlot`, whose URI is exactly what
|
|
30
|
+
// `Obj.make` stamps on `system.type` — a static declaration carries
|
|
31
|
+
// `TypeAnnotation` (→ typename DXN), a persisted entity's rebuilt schema
|
|
32
|
+
// carries `TypeIdentifierAnnotation` (→ local `echo:/<objectId>`).
|
|
33
|
+
const schema = getStaticTypeSchema(input);
|
|
34
|
+
if (schema != null) {
|
|
35
|
+
return getSchemaURI(schema) ?? raise(new TypeError('Type entity has no URI'));
|
|
36
|
+
}
|
|
37
|
+
return getUriFromEntity(input as AnyEntity);
|
|
38
|
+
}
|
|
39
|
+
assertArgument(typeof input === 'string', 'input');
|
|
40
|
+
assertArgument(!input.startsWith('dxn:'), 'input');
|
|
41
|
+
return DXN.make(input);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Checks if the object is an instance of the schema.
|
|
46
|
+
* Only typename is compared, the schema version is ignored.
|
|
47
|
+
*
|
|
48
|
+
* The following cases are considered to mean that the object is an instance of the schema:
|
|
49
|
+
* - Object was created with this exact schema.
|
|
50
|
+
* - Object was created with a different version of this schema.
|
|
51
|
+
* - Object was created with a different schema (maybe dynamic) that has the same typename.
|
|
52
|
+
*/
|
|
53
|
+
// TODO(burdon): Can we use `Schema.is`?
|
|
54
|
+
export const isInstanceOf = <S>(
|
|
55
|
+
schemaOrType: S extends Schema.Schema.AnyNoContext ? S : Schema.Schema.AnyNoContext | AnyEntity,
|
|
56
|
+
object: any,
|
|
57
|
+
): object is S extends Schema.Schema.AnyNoContext
|
|
58
|
+
? Schema.Schema.Type<S>
|
|
59
|
+
: S extends { readonly [InstancePhantomId]?: infer A }
|
|
60
|
+
? A
|
|
61
|
+
: unknown => {
|
|
62
|
+
if (object == null) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const schemaURI = getTypeURIFromSpecifier(schemaOrType);
|
|
67
|
+
|
|
68
|
+
// `object` is arbitrary input — read TypeId directly (it may be missing on
|
|
69
|
+
// non-entities) rather than via `getTypeURI` which asserts the URI is set.
|
|
70
|
+
const type = (object as any)[TypeId];
|
|
71
|
+
if (URI.isURI(type) && type === schemaURI) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const typename = getTypename(object);
|
|
76
|
+
if (!typename) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (!DXN.isDXN(schemaURI)) {
|
|
81
|
+
// EchoURI-based schema URI — no typename match possible.
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const parsed = DXN.tryMake(schemaURI);
|
|
86
|
+
return parsed != null && DXN.getName(parsed) === typename;
|
|
87
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
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 { EchoURI, ObjectId } from '@dxos/keys';
|
|
9
|
+
import { assumeType } from '@dxos/util';
|
|
10
|
+
|
|
11
|
+
import { type InternalObjectProps, SelfURIId } from './model';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Returns the EchoURI of an object.
|
|
15
|
+
* Normalizes any legacy `dxn:echo:` / `dxn:queue:` form stored in `SelfURIId`.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export const getObjectEchoUri = (object: any): EchoURI.EchoURI | undefined => {
|
|
20
|
+
invariant(!Schema.isSchema(object), 'schema not allowed in this function');
|
|
21
|
+
assertArgument(typeof object === 'object' && object != null, 'object', 'expected object');
|
|
22
|
+
assumeType<InternalObjectProps>(object);
|
|
23
|
+
|
|
24
|
+
if (object[SelfURIId]) {
|
|
25
|
+
invariant(EchoURI.isEchoURI(object[SelfURIId]), 'Invalid object model: invalid self dxn');
|
|
26
|
+
return EchoURI.parse(object[SelfURIId]);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (!ObjectId.isValid(object.id)) {
|
|
30
|
+
throw new TypeError('Object id is not valid.');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return EchoURI.make({ objectId: object.id });
|
|
34
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { assertArgument } from '@dxos/invariant';
|
|
6
|
+
|
|
7
|
+
import { type AnyEntity, VersionTypeId } from '../common/types';
|
|
8
|
+
import { ObjectVersionId } from './model';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represent entity version.
|
|
12
|
+
* May be backed by Automerge.
|
|
13
|
+
* Entities with no history are not versioned.
|
|
14
|
+
* Named EntityVersion to avoid conflict with types/version.ts.
|
|
15
|
+
*/
|
|
16
|
+
export interface EntityVersion {
|
|
17
|
+
[VersionTypeId]: {};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Whether the entity is versioned.
|
|
21
|
+
*/
|
|
22
|
+
versioned: boolean;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Automerge heads.
|
|
26
|
+
*/
|
|
27
|
+
automergeHeads?: string[];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const unversioned: EntityVersion = {
|
|
31
|
+
[VersionTypeId]: {},
|
|
32
|
+
versioned: false,
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Checks that `obj` is a version object.
|
|
37
|
+
*/
|
|
38
|
+
export const isVersion = (entity: unknown): entity is EntityVersion => {
|
|
39
|
+
return entity != null && typeof entity === 'object' && VersionTypeId in entity;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Returns the version of an entity.
|
|
44
|
+
* Accepts both reactive entities and snapshots.
|
|
45
|
+
*/
|
|
46
|
+
export const version = (entity: AnyEntity): EntityVersion => {
|
|
47
|
+
const ver = (entity as any)[ObjectVersionId];
|
|
48
|
+
if (ver === undefined) {
|
|
49
|
+
return unversioned;
|
|
50
|
+
}
|
|
51
|
+
return ver;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Checks that `version` is a valid version object.
|
|
56
|
+
*/
|
|
57
|
+
export const versionValid = (ver: EntityVersion): boolean => {
|
|
58
|
+
assertArgument(isVersion(ver), 'version', 'Invalid version object');
|
|
59
|
+
return !!ver.versioned;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export type VersionCompareResult = 'unversioned' | 'equal' | 'different';
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Compares two versions.
|
|
66
|
+
* @param version1
|
|
67
|
+
* @param version2
|
|
68
|
+
* @returns 'unversioned' if either entity is unversioned, 'equal' if the versions are equal, 'different' if the versions are different.
|
|
69
|
+
*/
|
|
70
|
+
export const compareVersions = (version1: EntityVersion, version2: EntityVersion): VersionCompareResult => {
|
|
71
|
+
assertArgument(isVersion(version1), 'version1', 'Invalid version object');
|
|
72
|
+
assertArgument(isVersion(version2), 'version2', 'Invalid version object');
|
|
73
|
+
|
|
74
|
+
if (!versionValid(version1) || !versionValid(version2)) {
|
|
75
|
+
return 'unversioned';
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (version1.automergeHeads?.length !== version2.automergeHeads?.length) {
|
|
79
|
+
return 'different';
|
|
80
|
+
}
|
|
81
|
+
if (version1.automergeHeads?.some((head) => !version2.automergeHeads?.includes(head))) {
|
|
82
|
+
return 'different';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return 'equal';
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const encodeVersion = (ver: EntityVersion): string => {
|
|
89
|
+
return JSON.stringify(ver);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const decodeVersion = (ver: string): EntityVersion => {
|
|
93
|
+
const parsed = JSON.parse(ver);
|
|
94
|
+
parsed[VersionTypeId] = {};
|
|
95
|
+
return parsed;
|
|
96
|
+
};
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
7
|
|
|
8
|
-
import { FormatAnnotation,
|
|
8
|
+
import { FormatAnnotation, TypeFormat } from './types';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Datetime values should be stored as ISO strings or unix numbers (ms) in UTC.
|
|
@@ -102,9 +102,8 @@ export const DateOnly = /* Schema.transformOrFail(Schema.String, SimpleDate, {
|
|
|
102
102
|
);
|
|
103
103
|
},
|
|
104
104
|
}) */ Schema.String.pipe(
|
|
105
|
-
FormatAnnotation.set(
|
|
105
|
+
FormatAnnotation.set(TypeFormat.Date),
|
|
106
106
|
Schema.annotations({
|
|
107
|
-
title: 'Date',
|
|
108
107
|
description: 'Valid date in ISO format',
|
|
109
108
|
}),
|
|
110
109
|
);
|
|
@@ -132,9 +131,8 @@ export const TimeOnly = /* Schema.transformOrFail(Schema.String, SimpleTime, {
|
|
|
132
131
|
);
|
|
133
132
|
},
|
|
134
133
|
}) */ Schema.String.pipe(
|
|
135
|
-
FormatAnnotation.set(
|
|
134
|
+
FormatAnnotation.set(TypeFormat.Time),
|
|
136
135
|
Schema.annotations({
|
|
137
|
-
title: 'Time',
|
|
138
136
|
description: 'Valid time in ISO format',
|
|
139
137
|
}),
|
|
140
138
|
);
|
|
@@ -177,9 +175,8 @@ export const DateTime = /* Schema.transformOrFail(Schema.String, SimpleDateTime,
|
|
|
177
175
|
);
|
|
178
176
|
},
|
|
179
177
|
}) */ Schema.String.pipe(
|
|
180
|
-
FormatAnnotation.set(
|
|
178
|
+
FormatAnnotation.set(TypeFormat.DateTime),
|
|
181
179
|
Schema.annotations({
|
|
182
|
-
title: 'DateTime',
|
|
183
180
|
description: 'Valid date and time in ISO format',
|
|
184
181
|
}),
|
|
185
182
|
);
|
|
@@ -189,9 +186,8 @@ export const DateTime = /* Schema.transformOrFail(Schema.String, SimpleDateTime,
|
|
|
189
186
|
*/
|
|
190
187
|
// TODO(burdon): Define duration type.
|
|
191
188
|
export const Duration = Schema.String.pipe(
|
|
192
|
-
FormatAnnotation.set(
|
|
189
|
+
FormatAnnotation.set(TypeFormat.Duration),
|
|
193
190
|
Schema.annotations({
|
|
194
|
-
title: 'Duration',
|
|
195
191
|
description: 'Duration in ISO 8601 format',
|
|
196
192
|
[SchemaAST.ExamplesAnnotationId]: ['1h', '3D'],
|
|
197
193
|
}),
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
import { describe, test } from 'vitest';
|
|
7
7
|
|
|
8
|
-
import { toJsonSchema } from '../
|
|
9
|
-
|
|
8
|
+
import { toJsonSchema } from '../JsonSchema';
|
|
10
9
|
import { Format } from './format';
|
|
11
|
-
import {
|
|
10
|
+
import { TypeEnum, TypeFormat, getTypeEnum } from './types';
|
|
12
11
|
|
|
13
12
|
describe('formats', () => {
|
|
14
13
|
test('annotations', ({ expect }) => {
|
|
@@ -20,7 +19,7 @@ describe('formats', () => {
|
|
|
20
19
|
birthday: Schema.optional(Format.Date),
|
|
21
20
|
started: Schema.optional(Format.DateTime),
|
|
22
21
|
active: Schema.optional(Schema.Boolean),
|
|
23
|
-
})
|
|
22
|
+
});
|
|
24
23
|
|
|
25
24
|
type TestType = Schema.Schema.Type<typeof TestSchema>;
|
|
26
25
|
|
|
@@ -48,7 +47,7 @@ describe('formats', () => {
|
|
|
48
47
|
expect(getTypeEnum(prop)).to.eq(TypeEnum.String);
|
|
49
48
|
expect(prop).includes({
|
|
50
49
|
type: TypeEnum.String,
|
|
51
|
-
format:
|
|
50
|
+
format: TypeFormat.Email,
|
|
52
51
|
title: 'Email',
|
|
53
52
|
});
|
|
54
53
|
}
|
|
@@ -58,7 +57,7 @@ describe('formats', () => {
|
|
|
58
57
|
expect(getTypeEnum(prop)).to.eq(TypeEnum.Number);
|
|
59
58
|
expect(prop).includes({
|
|
60
59
|
type: TypeEnum.Number,
|
|
61
|
-
format:
|
|
60
|
+
format: TypeFormat.Currency,
|
|
62
61
|
title: 'Currency',
|
|
63
62
|
multipleOf: 0.01,
|
|
64
63
|
currency: 'USD',
|
|
@@ -70,7 +69,7 @@ describe('formats', () => {
|
|
|
70
69
|
expect(getTypeEnum(prop)).to.eq(TypeEnum.String);
|
|
71
70
|
expect(prop).includes({
|
|
72
71
|
type: TypeEnum.String,
|
|
73
|
-
format:
|
|
72
|
+
format: TypeFormat.Date,
|
|
74
73
|
});
|
|
75
74
|
}
|
|
76
75
|
});
|
|
@@ -10,10 +10,10 @@ import * as DateUtil from './date';
|
|
|
10
10
|
import * as NumberUtil from './number';
|
|
11
11
|
import * as ObjectUtil from './object';
|
|
12
12
|
import * as StringUtil from './string';
|
|
13
|
+
import { TypeFormat as TypeFormat$ } from './types';
|
|
13
14
|
|
|
14
|
-
// TODO(burdon): Consider factoring out to separate `@dxos/json-schema`
|
|
15
15
|
// TODO(burdon): Media encoding.
|
|
16
|
-
//
|
|
16
|
+
// - https://json-schema.org/understanding-json-schema/reference/non_json_data
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Formats.
|
|
@@ -22,7 +22,9 @@ import * as StringUtil from './string';
|
|
|
22
22
|
*/
|
|
23
23
|
// TODO(burdon): Add fields for `examples`, `message`, etc.
|
|
24
24
|
export namespace Format {
|
|
25
|
-
|
|
25
|
+
export import TypeFormat = TypeFormat$;
|
|
26
|
+
|
|
27
|
+
// String
|
|
26
28
|
export const DXN = Keys.DXN.Schema;
|
|
27
29
|
export const Email = StringUtil.Email;
|
|
28
30
|
export const Formula = StringUtil.Formula;
|
|
@@ -41,12 +43,12 @@ export namespace Format {
|
|
|
41
43
|
export const Timestamp = NumberUtil.Timestamp;
|
|
42
44
|
|
|
43
45
|
// Dates and times
|
|
44
|
-
export const DateTime = DateUtil.DateTime;
|
|
45
46
|
export const Date = DateUtil.DateOnly;
|
|
46
|
-
export const
|
|
47
|
+
export const DateTime = DateUtil.DateTime;
|
|
47
48
|
export const Duration = DateUtil.Duration;
|
|
49
|
+
export const Time = DateUtil.TimeOnly;
|
|
48
50
|
|
|
49
51
|
// Objects
|
|
50
52
|
export const GeoPoint = ObjectUtil.GeoPoint;
|
|
51
|
-
export type GeoPoint = ObjectUtil.GeoPoint;
|
|
53
|
+
export type GeoPoint = ObjectUtil.GeoPoint; // TODO(burdon): Export types.
|
|
52
54
|
}
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export
|
|
5
|
+
export * from './date';
|
|
6
|
+
export * from './format';
|
|
6
7
|
export { CurrencyAnnotationId, DecimalPrecision, Currency } from './number';
|
|
7
8
|
export { GeoPoint, GeoLocation } from './object';
|
|
8
|
-
|
|
9
|
-
export * from './format';
|
|
10
9
|
export * from './select';
|
|
11
10
|
export * from './string';
|
|
12
11
|
export * from './types';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
|
-
import { FormatAnnotation,
|
|
7
|
+
import { FormatAnnotation, TypeFormat } from './types';
|
|
8
8
|
|
|
9
9
|
const encodeMultipleOf = (divisor: number) => 1 / Math.pow(10, divisor);
|
|
10
10
|
|
|
@@ -37,7 +37,7 @@ export type CurrencyAnnotation = {
|
|
|
37
37
|
export const Currency = ({ decimals, code }: CurrencyAnnotation = { decimals: 2 }) =>
|
|
38
38
|
Schema.Number.pipe(
|
|
39
39
|
encodeMultiple(decimals),
|
|
40
|
-
FormatAnnotation.set(
|
|
40
|
+
FormatAnnotation.set(TypeFormat.Currency),
|
|
41
41
|
Schema.annotations({
|
|
42
42
|
title: 'Currency',
|
|
43
43
|
description: 'Currency value',
|
|
@@ -55,7 +55,7 @@ export type PercentAnnotation = {
|
|
|
55
55
|
export const Integer = () =>
|
|
56
56
|
Schema.Number.pipe(
|
|
57
57
|
Schema.int(),
|
|
58
|
-
FormatAnnotation.set(
|
|
58
|
+
FormatAnnotation.set(TypeFormat.Integer),
|
|
59
59
|
Schema.annotations({
|
|
60
60
|
title: 'Integer',
|
|
61
61
|
description: 'Integer value',
|
|
@@ -69,7 +69,7 @@ export const Integer = () =>
|
|
|
69
69
|
export const Percent = ({ decimals }: PercentAnnotation = { decimals: 2 }) =>
|
|
70
70
|
Schema.Number.pipe(
|
|
71
71
|
encodeMultiple(decimals),
|
|
72
|
-
FormatAnnotation.set(
|
|
72
|
+
FormatAnnotation.set(TypeFormat.Percent),
|
|
73
73
|
Schema.annotations({
|
|
74
74
|
title: 'Percent',
|
|
75
75
|
description: 'Percentage value',
|
|
@@ -81,7 +81,7 @@ export const Percent = ({ decimals }: PercentAnnotation = { decimals: 2 }) =>
|
|
|
81
81
|
* https://en.wikipedia.org/wiki/Unix_time
|
|
82
82
|
*/
|
|
83
83
|
export const Timestamp = Schema.Number.pipe(
|
|
84
|
-
FormatAnnotation.set(
|
|
84
|
+
FormatAnnotation.set(TypeFormat.Timestamp),
|
|
85
85
|
Schema.annotations({
|
|
86
86
|
title: 'Timestamp',
|
|
87
87
|
description: 'Unix timestamp',
|