@dxos/echo 0.8.4-main.ead640a → 0.8.4-main.f466a3d56e
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 +6 -7
- package/dist/lib/neutral/Annotation.mjs +39 -0
- package/dist/lib/neutral/Database.mjs +49 -0
- package/dist/lib/neutral/Entity.mjs +61 -0
- package/dist/lib/neutral/Err.mjs +12 -0
- package/dist/lib/neutral/Extension.mjs +18 -0
- package/dist/lib/neutral/Feed.mjs +52 -0
- package/dist/lib/neutral/Filter.mjs +74 -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 +26 -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-44HT3MEC.mjs +73 -0
- package/dist/lib/neutral/chunk-44HT3MEC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-5SL5LDLD.mjs +47 -0
- package/dist/lib/neutral/chunk-5SL5LDLD.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-APHSOTIX.mjs +34 -0
- package/dist/lib/neutral/chunk-APHSOTIX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-APJKDGFL.mjs +365 -0
- package/dist/lib/neutral/chunk-APJKDGFL.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-BMB7IHGB.mjs +346 -0
- package/dist/lib/neutral/chunk-BMB7IHGB.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FIWO2FZK.mjs +36 -0
- package/dist/lib/neutral/chunk-FIWO2FZK.mjs.map +7 -0
- package/dist/lib/neutral/chunk-G54OX4IX.mjs +2452 -0
- package/dist/lib/neutral/chunk-G54OX4IX.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-I2DARWPX.mjs +128 -0
- package/dist/lib/neutral/chunk-I2DARWPX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J54QMAKF.mjs +421 -0
- package/dist/lib/neutral/chunk-J54QMAKF.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-MGSQGHOD.mjs +206 -0
- package/dist/lib/neutral/chunk-MGSQGHOD.mjs.map +7 -0
- package/dist/lib/neutral/chunk-MLS7U7AT.mjs +734 -0
- package/dist/lib/neutral/chunk-MLS7U7AT.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-N7VOEPSV.mjs +48 -0
- package/dist/lib/neutral/chunk-N7VOEPSV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-PSZBLH53.mjs +81 -0
- package/dist/lib/neutral/chunk-PSZBLH53.mjs.map +7 -0
- package/dist/lib/neutral/chunk-PT37DG2F.mjs +270 -0
- package/dist/lib/neutral/chunk-PT37DG2F.mjs.map +7 -0
- package/dist/lib/neutral/chunk-Q2KKKJSV.mjs +56 -0
- package/dist/lib/neutral/chunk-Q2KKKJSV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-Q7ZL2P5H.mjs +320 -0
- package/dist/lib/neutral/chunk-Q7ZL2P5H.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QRZ2I3ZM.mjs +27 -0
- package/dist/lib/neutral/chunk-QRZ2I3ZM.mjs.map +7 -0
- package/dist/lib/neutral/chunk-SCPFDS2E.mjs +125 -0
- package/dist/lib/neutral/chunk-SCPFDS2E.mjs.map +7 -0
- package/dist/lib/neutral/chunk-TNBK56IN.mjs +350 -0
- package/dist/lib/neutral/chunk-TNBK56IN.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-V72DY6LU.mjs +7 -0
- package/dist/lib/neutral/chunk-V72DY6LU.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ZFACXBY6.mjs +136 -0
- package/dist/lib/neutral/chunk-ZFACXBY6.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/{node-esm → neutral}/internal/index.mjs +292 -148
- 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 +429 -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 +206 -0
- package/dist/types/src/Feed.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +170 -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 +69 -0
- package/dist/types/src/Migration.d.ts.map +1 -0
- package/dist/types/src/Obj.d.ts +434 -102
- 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 +62 -11
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +287 -21
- 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 -99
- 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/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 +240 -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 +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 +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 +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.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 +4 -2
- 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/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 +5 -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} +10 -11
- 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/{object → Obj}/ids.d.ts +1 -1
- 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.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 +57 -19
- package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
- package/dist/types/src/internal/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/{schema → Type}/echo-schema.d.ts +27 -14
- 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.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.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.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/{proxy → common/proxy}/typed-handler.d.ts +16 -12
- 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 +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 +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 +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 +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 +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 +117 -66
- package/src/Annotation.ts +49 -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 +335 -0
- package/src/Filter.test.ts +90 -0
- package/src/Filter.ts +485 -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 +106 -0
- package/src/Obj.test.ts +539 -0
- package/src/Obj.ts +702 -262
- package/src/Order.ts +46 -0
- package/src/Query.test.ts +822 -0
- package/src/Query.ts +572 -0
- package/src/QueryResult.ts +106 -0
- package/src/Ref.ts +81 -9
- package/src/Relation.test.ts +88 -0
- package/src/Relation.ts +449 -60
- package/src/SchemaRegistry.ts +106 -0
- package/src/{query/tag.ts → Tag.ts} +13 -9
- package/src/Type.test.ts +52 -0
- package/src/Type.ts +167 -153
- package/src/View.ts +107 -0
- package/src/exemplars.test.ts +21 -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 +590 -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 +111 -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/{formats → Format}/date.test.ts +1 -2
- package/src/internal/{formats → Format}/date.ts +5 -5
- package/src/internal/{formats → Format}/format.test.ts +6 -7
- package/src/internal/{formats → Format}/format.ts +8 -6
- 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 +98 -95
- package/src/internal/{json → JsonSchema}/json-schema.ts +29 -15
- package/src/internal/Obj/clone.ts +48 -0
- package/src/internal/{object → Obj}/common.ts +3 -4
- package/src/internal/{object/create.test.ts → Obj/create-object.test.ts} +32 -36
- package/src/internal/{object/create.ts → Obj/create-object.ts} +35 -37
- package/src/internal/Obj/deleted.ts +19 -0
- package/src/internal/{object → Obj}/ids.ts +2 -2
- package/src/internal/Obj/index.ts +14 -0
- package/src/internal/{object → Obj}/inspect.ts +5 -7
- package/src/internal/Obj/json-serializer.test.ts +120 -0
- package/src/internal/Obj/json-serializer.ts +222 -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 +281 -0
- package/src/internal/Obj/set-value.ts +165 -0
- package/src/internal/Obj/snapshot.ts +105 -0
- package/src/internal/{object → Obj}/typed-object.test.ts +12 -12
- 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 +11 -11
- package/src/internal/{ref → Ref}/ref.ts +125 -57
- package/src/internal/{projection → Type}/compose.test.ts +8 -10
- package/src/internal/{projection → Type}/compose.ts +14 -9
- package/src/internal/{schema → Type}/echo-schema.ts +74 -34
- package/src/internal/Type/index.ts +7 -0
- package/src/internal/{schema → Type}/manipulation.ts +1 -1
- 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/{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 +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/{object → common/proxy}/schema-validator.ts +6 -3
- package/src/internal/{proxy → common/proxy}/schema.test.ts +31 -22
- 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 +79 -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 +12 -17
- package/src/testing/api.test.ts +125 -0
- package/src/testing/index.ts +3 -3
- package/src/testing/test-data.ts +189 -0
- package/src/testing/test-schema.ts +240 -0
- package/src/testing/util.ts +85 -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/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.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.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.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/deleted.ts +0 -19
- package/src/internal/object/entity.ts +0 -248
- package/src/internal/object/expando.ts +0 -21
- 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.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/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/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}/index.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/{schema → Type}/manipulation.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/{formats → Format}/index.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,150 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { invariant } from '@dxos/invariant';
|
|
6
|
+
|
|
7
|
+
import { type ReactiveHandler } from './proxy-types';
|
|
8
|
+
|
|
9
|
+
export const symbolIsProxy = Symbol.for('@dxos/schema/Proxy');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal api.
|
|
13
|
+
*/
|
|
14
|
+
export const isProxy = (value: unknown) => !!(value as any)?.[symbolIsProxy];
|
|
15
|
+
|
|
16
|
+
export const isValidProxyTarget = (value: any): value is object => {
|
|
17
|
+
if (value == null || value[symbolIsProxy]) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return typeof value === 'object' && Object.getPrototypeOf(value) === Object.prototype;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated
|
|
29
|
+
*/
|
|
30
|
+
export const getProxySlot = <T extends object>(proxy: any): ProxyHandlerSlot<T> => {
|
|
31
|
+
const value = (proxy as any)[symbolIsProxy];
|
|
32
|
+
invariant(value instanceof ProxyHandlerSlot);
|
|
33
|
+
return value;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const getProxyTarget = <T extends object>(proxy: any): T => {
|
|
37
|
+
return getProxySlot<T>(proxy).target;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const getProxyHandler = <T extends object>(proxy: any): ReactiveHandler<T> => {
|
|
41
|
+
return getProxySlot<T>(proxy).handler;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Unsafe method to override id for debugging/testing and migration purposes.
|
|
46
|
+
* @deprecated
|
|
47
|
+
*/
|
|
48
|
+
export const dangerouslySetProxyId = <T>(obj: T, id: string) => {
|
|
49
|
+
(getProxySlot(obj).target as any).id = id;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Create a reactive proxy object.
|
|
54
|
+
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
|
|
55
|
+
*
|
|
56
|
+
* @param target Object or array. Passing in array will enable array methods.
|
|
57
|
+
* @param handler ReactiveHandler instance.
|
|
58
|
+
*/
|
|
59
|
+
// TODO(burdon): Document.
|
|
60
|
+
// TODO(burdon): Tests for low-level functions.
|
|
61
|
+
export const createProxy = <T extends object>(target: T, handler: ReactiveHandler<T>): T => {
|
|
62
|
+
const existingProxy = handler._proxyMap.get(target);
|
|
63
|
+
if (existingProxy) {
|
|
64
|
+
return existingProxy;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// TODO(dmaretskyi): In the future this should be mutable to allow replacing the handler on-the-fly while maintaining the proxy identity.
|
|
68
|
+
const proxy = new Proxy(target, new ProxyHandlerSlot<T>(target, handler));
|
|
69
|
+
handler.init(target);
|
|
70
|
+
|
|
71
|
+
// TODO(dmaretskyi): Check if this will actually work; maybe a global WeakMap is better?
|
|
72
|
+
handler._proxyMap.set(target, proxy);
|
|
73
|
+
return proxy;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Passed as the handler to the Proxy constructor.
|
|
78
|
+
* Maintains a mutable slot for the actual handler.
|
|
79
|
+
*/
|
|
80
|
+
class ProxyHandlerSlot<T extends object> implements ProxyHandler<T> {
|
|
81
|
+
/**
|
|
82
|
+
* @param target Original object.
|
|
83
|
+
* @param _handler Handles intercepted operations.
|
|
84
|
+
*/
|
|
85
|
+
constructor(
|
|
86
|
+
readonly target: T,
|
|
87
|
+
private _handler: ReactiveHandler<T>,
|
|
88
|
+
) {}
|
|
89
|
+
|
|
90
|
+
get handler() {
|
|
91
|
+
invariant(this._handler);
|
|
92
|
+
return this._handler;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// TODO(burdon): Requires comment.
|
|
96
|
+
setHandler(handler: ReactiveHandler<T>): void {
|
|
97
|
+
this._handler = handler;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Get value.
|
|
102
|
+
*/
|
|
103
|
+
get(target: T, prop: string | symbol, receiver: any): any {
|
|
104
|
+
if (prop === symbolIsProxy) {
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (!this._handler || !this._handler.get) {
|
|
109
|
+
return Reflect.get(target, prop, receiver);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return this._handler.get(target, prop, receiver);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
static {
|
|
116
|
+
const TRAPS: (keyof ProxyHandler<any>)[] = [
|
|
117
|
+
'apply',
|
|
118
|
+
'construct',
|
|
119
|
+
'defineProperty',
|
|
120
|
+
'deleteProperty',
|
|
121
|
+
'get',
|
|
122
|
+
'getOwnPropertyDescriptor',
|
|
123
|
+
'getPrototypeOf',
|
|
124
|
+
'has',
|
|
125
|
+
'isExtensible',
|
|
126
|
+
'ownKeys',
|
|
127
|
+
'preventExtensions',
|
|
128
|
+
'set',
|
|
129
|
+
'setPrototypeOf',
|
|
130
|
+
];
|
|
131
|
+
|
|
132
|
+
for (const trap of TRAPS) {
|
|
133
|
+
if (trap === 'get') {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
Object.defineProperty(this.prototype, trap, {
|
|
138
|
+
enumerable: false,
|
|
139
|
+
value: function (this: ProxyHandlerSlot<any>, ...args: any[]) {
|
|
140
|
+
// log.info('trap', { trap, args });
|
|
141
|
+
if (!this._handler || !this._handler[trap]) {
|
|
142
|
+
return (Reflect[trap] as Function)(...args);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return (this._handler[trap] as Function).apply(this._handler, args);
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { isInChangeContext } from './change-context';
|
|
6
|
+
import { createArrayMethodError } from './errors';
|
|
7
|
+
import { batchEvents } from './event-batch';
|
|
8
|
+
import { getEchoRoot } from './ownership';
|
|
9
|
+
import { getProxyTarget, isProxy } from './proxy-utils';
|
|
10
|
+
import { ChangeId, EventId } from './symbols';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Check if array mutation is allowed (inside a change context).
|
|
14
|
+
* Throws a descriptive error if not.
|
|
15
|
+
*/
|
|
16
|
+
const checkArrayMutationAllowed = (arr: any, method: string): void => {
|
|
17
|
+
// Get the raw target - if arr is a proxy, get its underlying target.
|
|
18
|
+
const target = isProxy(arr) ? getProxyTarget(arr) : arr;
|
|
19
|
+
|
|
20
|
+
// Find the root ECHO object.
|
|
21
|
+
const echoRoot = getEchoRoot(target);
|
|
22
|
+
|
|
23
|
+
// Check if initialized (has ChangeId marker or EventId).
|
|
24
|
+
const isInitialized = (echoRoot as any)[ChangeId] === true || EventId in echoRoot;
|
|
25
|
+
if (!isInitialized) {
|
|
26
|
+
// Array is still being initialized, allow mutations.
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (!isInChangeContext(echoRoot)) {
|
|
31
|
+
throw createArrayMethodError(method);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Extends the native array to make sure that arrays methods are correctly reactive.
|
|
37
|
+
* Enforces that mutations only happen within Obj.update() context.
|
|
38
|
+
*/
|
|
39
|
+
export class ReactiveArray<T> extends Array<T> {
|
|
40
|
+
static override get [Symbol.species]() {
|
|
41
|
+
return Array;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static {
|
|
45
|
+
/**
|
|
46
|
+
* These methods will trigger proxy traps like `set` and `defineProperty` and emit event notifications.
|
|
47
|
+
* We wrap them in a batch to avoid unnecessary event notifications.
|
|
48
|
+
* Change context is checked before allowing mutations.
|
|
49
|
+
*
|
|
50
|
+
* Note: When called on a proxy, `this` will be the proxy, so array mutations
|
|
51
|
+
* go through the proxy's set trap which handles event emission.
|
|
52
|
+
*/
|
|
53
|
+
const BATCHED_METHODS = ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'] as const;
|
|
54
|
+
|
|
55
|
+
for (const method of BATCHED_METHODS) {
|
|
56
|
+
Object.defineProperty(this.prototype, method, {
|
|
57
|
+
enumerable: false,
|
|
58
|
+
value: function (this: ReactiveArray<any>, ...args: any[]) {
|
|
59
|
+
// Check change context before allowing mutation.
|
|
60
|
+
checkArrayMutationAllowed(this, method);
|
|
61
|
+
|
|
62
|
+
let result!: any;
|
|
63
|
+
batchEvents(() => {
|
|
64
|
+
result = Array.prototype[method].apply(this, args);
|
|
65
|
+
});
|
|
66
|
+
return result;
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { describe, expect, test } from 'vitest';
|
|
6
|
+
|
|
7
|
+
import * as Obj from '../../../Obj';
|
|
8
|
+
import { TestSchema } from '../../../testing';
|
|
9
|
+
|
|
10
|
+
describe('Obj.subscribe', () => {
|
|
11
|
+
test('subscribes and fires for reactive proxies', () => {
|
|
12
|
+
const obj = Obj.make(TestSchema.Person, { name: 'Test' });
|
|
13
|
+
let calls = 0;
|
|
14
|
+
const unsubscribe = Obj.subscribe(obj, () => {
|
|
15
|
+
calls++;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
Obj.update(obj, (obj) => {
|
|
19
|
+
obj.name = 'Updated';
|
|
20
|
+
});
|
|
21
|
+
expect(calls).toBeGreaterThan(0);
|
|
22
|
+
|
|
23
|
+
unsubscribe();
|
|
24
|
+
const seen = calls;
|
|
25
|
+
Obj.update(obj, (obj) => {
|
|
26
|
+
obj.name = 'After unsubscribe';
|
|
27
|
+
});
|
|
28
|
+
expect(calls).toBe(seen);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Regression: queue-stored typed objects (e.g. AiContext.Binding) and other Obj-shaped values
|
|
32
|
+
// satisfy `Obj.isObject` (KindId is set) but are not wrapped in a reactive Proxy. Earlier
|
|
33
|
+
// versions invariant'd inside `getProxyTarget` when an atom body did `Obj.subscribe(obj)` on
|
|
34
|
+
// such an input. The contract is "no-op for non-reactive inputs"; verify the function
|
|
35
|
+
// returns gracefully instead of throwing.
|
|
36
|
+
test('returns a no-op unsubscribe for non-proxy inputs', () => {
|
|
37
|
+
const queueShaped: any = {
|
|
38
|
+
id: '01KQ5NKXJWSKMRPVTVG2GHV8V3',
|
|
39
|
+
blueprints: { added: [], removed: [] },
|
|
40
|
+
objects: { added: [], removed: [] },
|
|
41
|
+
};
|
|
42
|
+
const unsubscribe = Obj.subscribe(queueShaped, () => {});
|
|
43
|
+
expect(typeof unsubscribe).toBe('function');
|
|
44
|
+
expect(() => unsubscribe()).not.toThrow();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('returns a no-op unsubscribe for primitives, null, and undefined', () => {
|
|
48
|
+
for (const value of [null, undefined, 42, 'string', true]) {
|
|
49
|
+
const unsubscribe = Obj.subscribe(value as any, () => {});
|
|
50
|
+
expect(typeof unsubscribe).toBe('function');
|
|
51
|
+
expect(() => unsubscribe()).not.toThrow();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { type RefTypeId } from '../../Ref/ref';
|
|
6
|
+
import { getProxyTarget, isProxy } from './proxy-utils';
|
|
7
|
+
import { ChangeId, EventId } from './symbols';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Subscribe to changes on a reactive object.
|
|
11
|
+
* @param obj - The reactive object to subscribe to.
|
|
12
|
+
* @param callback - Called when the object changes.
|
|
13
|
+
* @returns Unsubscribe function.
|
|
14
|
+
*/
|
|
15
|
+
// TODO(wittjosiah): Consider throwing if obj doesn't have EventId instead of returning no-op.
|
|
16
|
+
export const subscribe = (obj: unknown, callback: () => void): (() => void) => {
|
|
17
|
+
// Guard against non-reactive inputs (queue-stored typed objects, snapshots, plain shapes
|
|
18
|
+
// with branded symbols) before `getProxyTarget`'s `ProxyHandlerSlot` invariant kicks in.
|
|
19
|
+
// `Obj.isObject` (KindId-based) is satisfied by these inputs, so callers like
|
|
20
|
+
// `Atom.family((obj) => Atom.make((get) => Obj.subscribe(obj, ...)))` legitimately reach
|
|
21
|
+
// here with a non-proxy. Falling back to a no-op preserves the documented contract that
|
|
22
|
+
// values without subscription support get a no-op unsubscribe.
|
|
23
|
+
if (!isProxy(obj)) {
|
|
24
|
+
return () => {};
|
|
25
|
+
}
|
|
26
|
+
const target = getProxyTarget(obj as any);
|
|
27
|
+
if (target && EventId in target) {
|
|
28
|
+
return (target as any)[EventId].on(callback);
|
|
29
|
+
}
|
|
30
|
+
return () => {};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Deeply removes readonly modifiers from all properties of T.
|
|
35
|
+
* Inside Obj.update, all properties are fully mutable regardless of schema definition.
|
|
36
|
+
* Ref types are preserved as-is since they are value-like objects that are replaced, not mutated.
|
|
37
|
+
* Primitive types (including branded primitives) are preserved as-is.
|
|
38
|
+
*/
|
|
39
|
+
export type Mutable<T> = T extends string | number | boolean | bigint | symbol | null | undefined
|
|
40
|
+
? T // Primitives (including branded primitives like JsonPath) stay as-is.
|
|
41
|
+
: T extends { [RefTypeId]: any }
|
|
42
|
+
? T // Keep Ref types as-is (they're value-like, not mutated in place).
|
|
43
|
+
: T extends object
|
|
44
|
+
? T extends readonly (infer U)[]
|
|
45
|
+
? Mutable<U>[]
|
|
46
|
+
: { -readonly [K in keyof T]: Mutable<T[K]> }
|
|
47
|
+
: T;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Callback type for the change function.
|
|
51
|
+
*/
|
|
52
|
+
export type ChangeCallback<T> = (mutableObj: Mutable<T>) => void;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Perform mutations on a reactive object within a change context.
|
|
56
|
+
*
|
|
57
|
+
* If the object has a change handler (via ChangeId), it will be called with the callback.
|
|
58
|
+
* This allows handlers to implement features like:
|
|
59
|
+
* - Readonly enforcement (mutations only allowed within change context)
|
|
60
|
+
* - Batched notifications (single notification for all mutations in the callback)
|
|
61
|
+
* - Transaction semantics
|
|
62
|
+
*
|
|
63
|
+
* If the object doesn't have a change handler, the callback is called directly.
|
|
64
|
+
*
|
|
65
|
+
* @param obj - The reactive object to mutate.
|
|
66
|
+
* @param callback - Callback that receives a mutable view of the object.
|
|
67
|
+
*/
|
|
68
|
+
export const change = <T>(obj: T, callback: ChangeCallback<T>): void => {
|
|
69
|
+
// Check proxy first (allows handler to intercept), then fall back to target.
|
|
70
|
+
// This order is important for EchoReactiveHandler which handles ChangeId in the proxy trap.
|
|
71
|
+
const changeFn = (obj as any)[ChangeId];
|
|
72
|
+
if (changeFn) {
|
|
73
|
+
changeFn(callback);
|
|
74
|
+
} else {
|
|
75
|
+
callback(obj as Mutable<T>);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
@@ -6,8 +6,9 @@ import * as Schema from 'effect/Schema';
|
|
|
6
6
|
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
7
|
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
9
|
+
import { log } from '@dxos/log';
|
|
9
10
|
|
|
10
|
-
import { SchemaId } from '
|
|
11
|
+
import { SchemaId } from '../types';
|
|
11
12
|
|
|
12
13
|
// TODO(burdon): Reconcile with @dxos/effect visit().
|
|
13
14
|
|
|
@@ -46,7 +47,7 @@ export class SchemaValidator {
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
return type.ast.annotations[annotation] != null;
|
|
49
|
-
} catch
|
|
50
|
+
} catch {
|
|
50
51
|
return false;
|
|
51
52
|
}
|
|
52
53
|
}
|
|
@@ -67,7 +68,8 @@ export class SchemaValidator {
|
|
|
67
68
|
getProperty([...propertyPath.slice(0, i), propertyName]),
|
|
68
69
|
);
|
|
69
70
|
if (propertyType == null) {
|
|
70
|
-
|
|
71
|
+
log.warn('unknown property', { path: propertyPath, property: propertyName });
|
|
72
|
+
continue;
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
schema = Schema.make(propertyType).annotations(propertyType.annotations);
|
|
@@ -238,4 +240,5 @@ export const checkIdNotPresentOnSchema = (schema: Schema.Schema<any, any, any>)
|
|
|
238
240
|
}
|
|
239
241
|
};
|
|
240
242
|
|
|
243
|
+
// TODO(burdon): Reconcile with JsonPath.
|
|
241
244
|
type KeyPath = readonly (string | number)[];
|
|
@@ -6,24 +6,31 @@ import * as Schema from 'effect/Schema';
|
|
|
6
6
|
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
7
|
import { describe, expect, test } from 'vitest';
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { createEchoSchema } from '../../../testing';
|
|
10
|
+
import { PropertyMeta, getPropertyMetaAnnotation, getTypeAnnotation } from '../../Annotation';
|
|
11
|
+
import { EchoObjectSchema } from '../../Entity';
|
|
11
12
|
|
|
12
13
|
// TODO(dmaretskyi): Comment.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
const EmptySchemaType = Schema.Struct({}).pipe(
|
|
15
|
+
EchoObjectSchema({
|
|
16
|
+
typename: 'com.example.type.empty',
|
|
17
|
+
version: '0.1.0',
|
|
18
|
+
}),
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
interface EmptySchemaType extends Schema.Schema.Type<typeof EmptySchemaType> {}
|
|
17
22
|
|
|
18
23
|
describe('dynamic schema', () => {
|
|
19
24
|
test('getProperties filters out id and unwraps optionality', async () => {
|
|
20
|
-
|
|
21
|
-
typename: 'example.com/type/Test',
|
|
22
|
-
version: '0.1.0',
|
|
23
|
-
})({
|
|
25
|
+
const TestSchema = Schema.Struct({
|
|
24
26
|
field1: Schema.String,
|
|
25
27
|
field2: Schema.Boolean,
|
|
26
|
-
})
|
|
28
|
+
}).pipe(
|
|
29
|
+
EchoObjectSchema({
|
|
30
|
+
typename: 'com.example.type.test',
|
|
31
|
+
version: '0.1.0',
|
|
32
|
+
}),
|
|
33
|
+
);
|
|
27
34
|
|
|
28
35
|
const registered = createEchoSchema(TestSchema);
|
|
29
36
|
expect(registered.getProperties().map((p) => [p.name, p.type])).to.deep.eq([
|
|
@@ -33,12 +40,14 @@ describe('dynamic schema', () => {
|
|
|
33
40
|
});
|
|
34
41
|
|
|
35
42
|
test('addColumns', async () => {
|
|
36
|
-
|
|
37
|
-
typename: 'example.com/type/Test',
|
|
38
|
-
version: '0.1.0',
|
|
39
|
-
})({
|
|
43
|
+
const TestSchema = Schema.Struct({
|
|
40
44
|
field1: Schema.String,
|
|
41
|
-
})
|
|
45
|
+
}).pipe(
|
|
46
|
+
EchoObjectSchema({
|
|
47
|
+
typename: 'com.example.type.test',
|
|
48
|
+
version: '0.1.0',
|
|
49
|
+
}),
|
|
50
|
+
);
|
|
42
51
|
|
|
43
52
|
const registered = createEchoSchema(TestSchema);
|
|
44
53
|
registered.addFields({ field2: Schema.Boolean });
|
|
@@ -86,7 +95,7 @@ describe('dynamic schema', () => {
|
|
|
86
95
|
registered.updateFields({ field3: Schema.Boolean });
|
|
87
96
|
registered.removeFields(['field2']);
|
|
88
97
|
expect(getTypeAnnotation(registered)).to.deep.contain({
|
|
89
|
-
typename: 'example.
|
|
98
|
+
typename: 'com.example.type.empty',
|
|
90
99
|
version: '0.1.0',
|
|
91
100
|
});
|
|
92
101
|
expect(getPropertyMetaAnnotation(registered.getProperties()[0], metaNamespace)).to.deep.eq(metaInfo);
|
|
@@ -95,14 +104,14 @@ describe('dynamic schema', () => {
|
|
|
95
104
|
test('updates typename', async ({ expect }) => {
|
|
96
105
|
// Create schema with some fields and annotations.
|
|
97
106
|
const registered = createEchoSchema(EmptySchemaType);
|
|
98
|
-
const originalVersion = registered.
|
|
107
|
+
const originalVersion = registered.persistentSchema.version;
|
|
99
108
|
registered.addFields({
|
|
100
109
|
name: Schema.String.pipe(PropertyMeta('test', { maxLength: 10 })),
|
|
101
110
|
age: Schema.Number,
|
|
102
111
|
});
|
|
103
112
|
|
|
104
113
|
// First update.
|
|
105
|
-
const newTypename1 = 'example.
|
|
114
|
+
const newTypename1 = 'com.example.type.individual';
|
|
106
115
|
registered.updateTypename(newTypename1);
|
|
107
116
|
|
|
108
117
|
// Basic typename update checks.
|
|
@@ -111,7 +120,7 @@ describe('dynamic schema', () => {
|
|
|
111
120
|
expect(registered.jsonSchema.typename).toBe(newTypename1);
|
|
112
121
|
|
|
113
122
|
// Version preservation check.
|
|
114
|
-
expect(registered.
|
|
123
|
+
expect(registered.persistentSchema.version).toBe(originalVersion);
|
|
115
124
|
|
|
116
125
|
// Field preservation check.
|
|
117
126
|
const properties = registered.getProperties();
|
|
@@ -123,13 +132,13 @@ describe('dynamic schema', () => {
|
|
|
123
132
|
expect(nameMeta).toEqual({ maxLength: 10 });
|
|
124
133
|
|
|
125
134
|
// Second update to ensure multiple updates work.
|
|
126
|
-
const newTypename2 = 'example.
|
|
135
|
+
const newTypename2 = 'com.example.type.person';
|
|
127
136
|
registered.updateTypename(newTypename2);
|
|
128
137
|
expect(registered.typename).toBe(newTypename2);
|
|
129
138
|
expect(registered.jsonSchema.$id).toBe(`dxn:type:${newTypename2}`);
|
|
130
139
|
expect(registered.jsonSchema.typename).toBe(newTypename2);
|
|
131
140
|
expect(getTypeAnnotation(registered)).to.deep.contain({
|
|
132
|
-
typename: 'example.
|
|
141
|
+
typename: 'com.example.type.person',
|
|
133
142
|
version: '0.1.0',
|
|
134
143
|
});
|
|
135
144
|
});
|