@dxos/echo 0.8.4-main.69d29f4 → 0.8.4-main.6fa680abb7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/lib/{browser → neutral}/Annotation.mjs +9 -5
- package/dist/lib/neutral/Database.mjs +45 -0
- package/dist/lib/{browser → neutral}/Entity.mjs +19 -12
- package/dist/lib/{browser → neutral}/Err.mjs +4 -3
- package/dist/lib/neutral/Feed.mjs +46 -0
- package/dist/lib/{node-esm → neutral}/Filter.mjs +12 -10
- package/dist/lib/{browser → neutral}/Format.mjs +4 -5
- package/dist/lib/neutral/JsonSchema.mjs +19 -0
- package/dist/lib/{browser → neutral}/Key.mjs +2 -3
- package/dist/lib/{browser → neutral}/Obj.mjs +36 -17
- package/dist/lib/{browser → neutral}/Order.mjs +2 -3
- package/dist/lib/neutral/Query.mjs +35 -0
- package/dist/lib/neutral/QueryResult.mjs +2 -0
- package/dist/lib/neutral/Ref.mjs +24 -0
- package/dist/lib/{browser → neutral}/Relation.mjs +21 -13
- package/dist/lib/neutral/SchemaRegistry.mjs +2 -0
- package/dist/lib/neutral/Tag.mjs +28 -0
- package/dist/lib/neutral/Type.mjs +37 -0
- package/dist/lib/{browser/chunk-AFGYYVVQ.mjs → neutral/chunk-2FK7XCDV.mjs} +6 -7
- package/dist/lib/neutral/chunk-2FK7XCDV.mjs.map +7 -0
- package/dist/lib/neutral/chunk-2Z72D23W.mjs +787 -0
- package/dist/lib/neutral/chunk-2Z72D23W.mjs.map +7 -0
- package/dist/lib/neutral/chunk-35FDO7WH.mjs +396 -0
- package/dist/lib/neutral/chunk-35FDO7WH.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4HWWKURH.mjs +34 -0
- package/dist/lib/neutral/chunk-4HWWKURH.mjs.map +7 -0
- package/dist/lib/{browser/chunk-73M2G455.mjs → neutral/chunk-7VLKWC6T.mjs} +33 -10
- package/dist/lib/neutral/chunk-7VLKWC6T.mjs.map +7 -0
- package/dist/lib/{browser/chunk-INHXFXY5.mjs → neutral/chunk-ANHVGJI4.mjs} +2 -3
- package/dist/lib/{node-esm/chunk-AJEMYSIR.mjs.map → neutral/chunk-ANHVGJI4.mjs.map} +1 -1
- package/dist/lib/{browser/chunk-R3S54KRI.mjs → neutral/chunk-B5OXLWZL.mjs} +14 -15
- package/dist/lib/neutral/chunk-B5OXLWZL.mjs.map +7 -0
- package/dist/lib/{browser/chunk-TPIL3G6Y.mjs → neutral/chunk-BESZGRPL.mjs} +17 -6
- package/dist/lib/neutral/chunk-BESZGRPL.mjs.map +7 -0
- package/dist/lib/{browser/chunk-ZHXZGIXD.mjs → neutral/chunk-BNCCGLJN.mjs} +1 -3
- package/dist/lib/{browser/chunk-ZHXZGIXD.mjs.map → neutral/chunk-BNCCGLJN.mjs.map} +2 -2
- package/dist/lib/{browser/chunk-QIWDIPLR.mjs → neutral/chunk-EK7UOJ3R.mjs} +9 -5
- package/dist/lib/neutral/chunk-EK7UOJ3R.mjs.map +7 -0
- package/dist/lib/neutral/chunk-ETOQXZHC.mjs +130 -0
- package/dist/lib/neutral/chunk-ETOQXZHC.mjs.map +7 -0
- package/dist/lib/neutral/chunk-EV3A23AS.mjs +283 -0
- package/dist/lib/neutral/chunk-EV3A23AS.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-OZEDKT4R.mjs → neutral/chunk-FUGL645K.mjs} +135 -26
- package/dist/lib/neutral/chunk-FUGL645K.mjs.map +7 -0
- package/dist/lib/{browser/chunk-5RDNDPMX.mjs → neutral/chunk-FZO7LQO7.mjs} +3 -4
- package/dist/lib/neutral/chunk-FZO7LQO7.mjs.map +7 -0
- package/dist/lib/{browser/chunk-CGS2ULMK.mjs → neutral/chunk-J5LGTIGS.mjs} +1 -2
- package/dist/lib/neutral/chunk-LDHKQDXR.mjs +27 -0
- package/dist/lib/neutral/chunk-LDHKQDXR.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-5U5F4AWK.mjs → neutral/chunk-MFJPOZDU.mjs} +1579 -2717
- package/dist/lib/neutral/chunk-MFJPOZDU.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-NBWL7UCZ.mjs → neutral/chunk-OENWMTE6.mjs} +9 -4
- package/dist/lib/neutral/chunk-OENWMTE6.mjs.map +7 -0
- package/dist/lib/{browser/chunk-IXVWLTG7.mjs → neutral/chunk-OMUPQMLR.mjs} +1 -3
- package/dist/lib/{node-esm/chunk-UKGVOINP.mjs.map → neutral/chunk-OMUPQMLR.mjs.map} +1 -1
- package/dist/lib/{browser/chunk-2RMVRVOB.mjs → neutral/chunk-PH5RST5U.mjs} +73 -25
- package/dist/lib/neutral/chunk-PH5RST5U.mjs.map +7 -0
- package/dist/lib/neutral/chunk-PKD2L7XO.mjs +152 -0
- package/dist/lib/neutral/chunk-PKD2L7XO.mjs.map +7 -0
- package/dist/lib/{browser/chunk-L4RXUJHJ.mjs → neutral/chunk-QLALBCSA.mjs} +12 -58
- package/dist/lib/neutral/chunk-QLALBCSA.mjs.map +7 -0
- package/dist/lib/neutral/chunk-QTUBE4DR.mjs +102 -0
- package/dist/lib/neutral/chunk-QTUBE4DR.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-YOLH5KS4.mjs → neutral/chunk-SEMVAGBM.mjs} +97 -25
- package/dist/lib/neutral/chunk-SEMVAGBM.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-YQ2NWGL5.mjs → neutral/chunk-UBEZSGXY.mjs} +15 -3
- package/dist/lib/neutral/chunk-UBEZSGXY.mjs.map +7 -0
- package/dist/lib/{browser/chunk-JMKVF2YQ.mjs → neutral/chunk-UI6MWK5W.mjs} +3 -4
- package/dist/lib/neutral/chunk-UI6MWK5W.mjs.map +7 -0
- package/dist/lib/{browser/chunk-YKTSSMDS.mjs → neutral/chunk-WYOKA6AE.mjs} +4 -6
- package/dist/lib/neutral/chunk-WYOKA6AE.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +97 -0
- package/dist/lib/{node-esm → neutral}/internal/index.mjs +53 -40
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/{node-esm → neutral}/testing/index.mjs +43 -37
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/types/src/Annotation.d.ts +23 -1
- package/dist/types/src/Annotation.d.ts.map +1 -1
- 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 +78 -83
- package/dist/types/src/Database.d.ts.map +1 -1
- package/dist/types/src/Dataset.d.ts +18 -0
- package/dist/types/src/Dataset.d.ts.map +1 -0
- package/dist/types/src/Entity.d.ts +38 -12
- package/dist/types/src/Entity.d.ts.map +1 -1
- package/dist/types/src/Err.d.ts +43 -0
- package/dist/types/src/Err.d.ts.map +1 -1
- package/dist/types/src/Feed.d.ts +165 -0
- package/dist/types/src/Feed.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +1 -1
- package/dist/types/src/Filter.d.ts.map +1 -1
- package/dist/types/src/Format.d.ts +3 -3
- package/dist/types/src/Format.d.ts.map +1 -1
- package/dist/types/src/Hypergraph.d.ts +2 -2
- package/dist/types/src/Hypergraph.d.ts.map +1 -1
- package/dist/types/src/JsonSchema.d.ts +11 -4
- package/dist/types/src/JsonSchema.d.ts.map +1 -1
- package/dist/types/src/Obj.d.ts +149 -36
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Order.d.ts.map +1 -1
- package/dist/types/src/Query.d.ts +101 -14
- package/dist/types/src/Query.d.ts.map +1 -1
- package/dist/types/src/Ref.d.ts +58 -10
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +73 -26
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/SchemaRegistry.d.ts +4 -4
- package/dist/types/src/SchemaRegistry.d.ts.map +1 -1
- package/dist/types/src/Tag.d.ts +4 -3
- package/dist/types/src/Tag.d.ts.map +1 -1
- package/dist/types/src/Type.d.ts +51 -180
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/View.d.ts +68 -0
- package/dist/types/src/View.d.ts.map +1 -0
- package/dist/types/src/hierarchy.test.d.ts +2 -0
- package/dist/types/src/hierarchy.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +4 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +68 -8
- package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/annotations.test.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/index.d.ts +4 -0
- package/dist/types/src/internal/Annotation/index.d.ts.map +1 -0
- package/dist/types/src/internal/{api → Annotation}/sorting.d.ts +1 -1
- package/dist/types/src/internal/Annotation/sorting.d.ts.map +1 -0
- package/dist/types/src/internal/{annotations → Annotation}/util.d.ts +13 -1
- package/dist/types/src/internal/Annotation/util.d.ts.map +1 -0
- package/dist/types/src/internal/{api/entity.d.ts → Entity/api.d.ts} +2 -2
- package/dist/types/src/internal/Entity/api.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/entity.d.ts +3 -3
- package/dist/types/src/internal/Entity/entity.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/index.d.ts +2 -0
- package/dist/types/src/internal/Entity/index.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/model.d.ts +4 -26
- package/dist/types/src/internal/Entity/model.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/object.d.ts +2 -2
- package/dist/types/src/internal/Entity/object.d.ts.map +1 -0
- package/dist/types/src/internal/{entities → Entity}/relation.d.ts +3 -30
- package/dist/types/src/internal/Entity/relation.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/util.d.ts.map +1 -0
- package/dist/types/src/internal/{api → Entity}/version.d.ts +1 -1
- package/dist/types/src/internal/Entity/version.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.test.d.ts.map +1 -0
- package/dist/types/src/internal/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/Format/select.d.ts.map +1 -0
- package/dist/types/src/internal/Format/string.d.ts.map +1 -0
- package/dist/types/src/internal/{formats → Format}/types.d.ts +1 -1
- package/dist/types/src/internal/Format/types.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/annotations.d.ts +1 -1
- package/dist/types/src/internal/JsonSchema/annotations.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/effect-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/index.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema-normalize.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-type.d.ts +19 -19
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -0
- package/dist/types/src/internal/JsonSchema/json-schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/clone.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/common.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/create-object.d.ts +2 -2
- package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/create-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/deleted.d.ts +1 -1
- package/dist/types/src/internal/Obj/deleted.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/ids.d.ts.map +1 -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/{object → Obj}/json-serializer.d.ts +4 -4
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/set-value.d.ts +1 -1
- package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +4 -4
- 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/Ref/index.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
- package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref.d.ts +16 -3
- package/dist/types/src/internal/Ref/ref.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/ref.test.d.ts.map +1 -0
- package/dist/types/src/internal/{schema → Type}/compose.d.ts +1 -1
- package/dist/types/src/internal/Type/compose.d.ts.map +1 -0
- package/dist/types/src/internal/Type/compose.test.d.ts.map +1 -0
- package/dist/types/src/internal/{schema → Type}/echo-schema.d.ts +8 -7
- package/dist/types/src/internal/Type/echo-schema.d.ts.map +1 -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/{schema → Type}/persistent-schema.d.ts +2 -2
- package/dist/types/src/internal/Type/persistent-schema.d.ts.map +1 -0
- package/dist/types/src/internal/{api → common/api}/index.d.ts +0 -4
- package/dist/types/src/internal/common/api/index.d.ts.map +1 -0
- package/dist/types/src/internal/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.map +1 -0
- package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/reactive.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.d.ts +2 -1
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/typed-handler.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/typed-object.test.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/base.d.ts +1 -0
- package/dist/types/src/internal/common/types/base.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/entity.d.ts +2 -2
- package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/meta.d.ts +2 -1
- package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts +54 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/typename.d.ts +8 -0
- package/dist/types/src/internal/common/types/typename.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
- package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
- package/dist/types/src/internal/index.d.ts +8 -10
- package/dist/types/src/internal/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +19 -18
- package/dist/types/src/testing/test-schema.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +39 -113
- package/src/Annotation.ts +31 -1
- package/src/Collection.ts +32 -0
- package/src/Database.ts +153 -172
- package/src/Dataset.ts +26 -0
- package/src/Entity.ts +71 -51
- package/src/Err.ts +22 -0
- package/src/Feed.ts +257 -0
- package/src/Filter.ts +19 -4
- package/src/Format.ts +3 -3
- package/src/Hypergraph.ts +2 -2
- package/src/JsonSchema.ts +14 -4
- package/src/Obj.test.ts +63 -2
- package/src/Obj.ts +274 -132
- package/src/Order.ts +3 -1
- package/src/Query.test.ts +181 -14
- package/src/Query.ts +249 -23
- package/src/Ref.ts +64 -11
- package/src/Relation.test.ts +8 -2
- package/src/Relation.ts +163 -129
- package/src/SchemaRegistry.ts +5 -4
- package/src/Tag.ts +6 -5
- package/src/Type.test.ts +10 -10
- package/src/Type.ts +70 -303
- package/src/View.ts +102 -0
- package/src/hierarchy.test.ts +33 -0
- package/src/index.ts +4 -0
- package/src/internal/{annotations → Annotation}/annotations.test.ts +6 -6
- package/src/internal/{annotations → Annotation}/annotations.ts +120 -9
- package/src/internal/{annotations → Annotation}/index.ts +1 -0
- package/src/internal/{api → Annotation}/sorting.ts +2 -3
- package/src/internal/{annotations → Annotation}/util.ts +14 -1
- package/src/internal/{api/entity.ts → Entity/api.ts} +4 -2
- package/src/internal/{entities → Entity}/entity.ts +6 -4
- package/src/internal/{entities → Entity}/index.ts +2 -0
- package/src/internal/{entities → Entity}/model.ts +17 -42
- package/src/internal/{entities → Entity}/object.ts +2 -2
- package/src/internal/{entities → Entity}/relation.ts +19 -36
- package/src/internal/{api → Entity}/version.ts +3 -2
- package/src/internal/{formats → Format}/date.test.ts +1 -1
- package/src/internal/{formats → Format}/format.test.ts +1 -1
- package/src/internal/{formats → Format}/types.ts +3 -3
- package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
- package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
- package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -48
- package/src/internal/{json-schema → JsonSchema}/json-schema.ts +6 -4
- package/src/internal/{object → Obj}/clone.ts +3 -3
- package/src/internal/{object → Obj}/common.ts +2 -2
- package/src/internal/{object → Obj}/create-object.test.ts +4 -4
- package/src/internal/{object → Obj}/create-object.ts +5 -5
- package/src/internal/{object → Obj}/deleted.ts +2 -2
- package/src/internal/{object → Obj}/inspect.ts +2 -2
- package/src/internal/{object → Obj}/json-serializer.test.ts +29 -6
- package/src/internal/{object → Obj}/json-serializer.ts +30 -14
- package/src/internal/{object → Obj}/schema-validator.ts +1 -1
- package/src/internal/{object → Obj}/set-value.ts +2 -2
- package/src/internal/Obj/snapshot.ts +105 -0
- package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
- package/src/internal/{object → Obj}/typed-object.ts +4 -4
- package/src/internal/{ref → Ref}/ref-array.ts +1 -1
- package/src/internal/{ref → Ref}/ref.test.ts +4 -4
- package/src/internal/{ref → Ref}/ref.ts +27 -4
- package/src/internal/{schema → Type}/compose.test.ts +5 -5
- package/src/internal/{schema → Type}/compose.ts +1 -1
- package/src/internal/{schema → Type}/echo-schema.ts +11 -10
- package/src/internal/{schema → Type}/manipulation.ts +1 -1
- package/src/internal/{schema → Type}/persistent-schema.ts +10 -4
- package/src/internal/{README.md → common/README.md} +1 -1
- package/src/internal/{api → common/api}/index.ts +0 -4
- package/src/internal/common/index.ts +7 -0
- package/src/internal/{proxy → common/proxy}/change.test.ts +3 -3
- package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -2
- package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
- package/src/internal/{proxy → common/proxy}/make-object.ts +13 -3
- package/src/internal/{proxy → common/proxy}/reactive.ts +1 -1
- package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
- package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -6
- package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -3
- package/src/internal/{proxy → common/proxy}/typed-object.test.ts +4 -4
- package/src/internal/{types → common/types}/base.ts +1 -1
- package/src/internal/{types → common/types}/entity.ts +2 -2
- package/src/internal/{types → common/types}/index.ts +1 -0
- package/src/internal/{types → common/types}/meta.ts +4 -1
- package/src/internal/common/types/model-symbols.ts +69 -0
- package/src/internal/{types → common/types}/typename.ts +10 -0
- package/src/internal/{types → common/types}/version.ts +2 -3
- package/src/internal/index.ts +8 -31
- package/src/testing/api.test.ts +4 -4
- package/src/testing/test-schema.ts +20 -18
- package/dist/lib/browser/Database.mjs +0 -18
- package/dist/lib/browser/Filter.mjs +0 -62
- package/dist/lib/browser/JsonSchema.mjs +0 -20
- package/dist/lib/browser/Query.mjs +0 -27
- package/dist/lib/browser/QueryResult.mjs +0 -3
- package/dist/lib/browser/Ref.mjs +0 -23
- package/dist/lib/browser/SchemaRegistry.mjs +0 -3
- package/dist/lib/browser/Tag.mjs +0 -26
- package/dist/lib/browser/Type.mjs +0 -48
- package/dist/lib/browser/chunk-2RMVRVOB.mjs.map +0 -7
- package/dist/lib/browser/chunk-5RDNDPMX.mjs.map +0 -7
- package/dist/lib/browser/chunk-73M2G455.mjs.map +0 -7
- package/dist/lib/browser/chunk-7STIBCP7.mjs +0 -133
- package/dist/lib/browser/chunk-7STIBCP7.mjs.map +0 -7
- package/dist/lib/browser/chunk-AFGYYVVQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-BC6R4CAF.mjs +0 -24
- package/dist/lib/browser/chunk-BC6R4CAF.mjs.map +0 -7
- package/dist/lib/browser/chunk-BPYFLHWO.mjs +0 -158
- package/dist/lib/browser/chunk-BPYFLHWO.mjs.map +0 -7
- package/dist/lib/browser/chunk-CBPFF3ZO.mjs +0 -204
- package/dist/lib/browser/chunk-CBPFF3ZO.mjs.map +0 -7
- package/dist/lib/browser/chunk-CJ5YELTO.mjs +0 -39
- package/dist/lib/browser/chunk-CJ5YELTO.mjs.map +0 -7
- package/dist/lib/browser/chunk-FPOISFQK.mjs +0 -40
- package/dist/lib/browser/chunk-FPOISFQK.mjs.map +0 -7
- package/dist/lib/browser/chunk-INHXFXY5.mjs.map +0 -7
- package/dist/lib/browser/chunk-IXVWLTG7.mjs.map +0 -7
- package/dist/lib/browser/chunk-JMKVF2YQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-L4RXUJHJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-MYCCGG2T.mjs +0 -15
- package/dist/lib/browser/chunk-MYCCGG2T.mjs.map +0 -7
- package/dist/lib/browser/chunk-PAM4KEXE.mjs +0 -3847
- package/dist/lib/browser/chunk-PAM4KEXE.mjs.map +0 -7
- package/dist/lib/browser/chunk-QIWDIPLR.mjs.map +0 -7
- package/dist/lib/browser/chunk-R3S54KRI.mjs.map +0 -7
- package/dist/lib/browser/chunk-RK4Z4JUZ.mjs +0 -283
- package/dist/lib/browser/chunk-RK4Z4JUZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-TPIL3G6Y.mjs.map +0 -7
- package/dist/lib/browser/chunk-YKTSSMDS.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -85
- package/dist/lib/browser/internal/index.mjs +0 -457
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/testing/index.mjs +0 -367
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/Annotation.mjs +0 -33
- package/dist/lib/node-esm/Annotation.mjs.map +0 -7
- package/dist/lib/node-esm/Database.mjs +0 -18
- package/dist/lib/node-esm/Database.mjs.map +0 -7
- package/dist/lib/node-esm/Entity.mjs +0 -52
- package/dist/lib/node-esm/Entity.mjs.map +0 -7
- package/dist/lib/node-esm/Err.mjs +0 -11
- package/dist/lib/node-esm/Err.mjs.map +0 -7
- package/dist/lib/node-esm/Format.mjs +0 -67
- package/dist/lib/node-esm/Format.mjs.map +0 -7
- package/dist/lib/node-esm/JsonSchema.mjs +0 -20
- package/dist/lib/node-esm/JsonSchema.mjs.map +0 -7
- package/dist/lib/node-esm/Key.mjs +0 -13
- package/dist/lib/node-esm/Key.mjs.map +0 -7
- package/dist/lib/node-esm/Obj.mjs +0 -91
- package/dist/lib/node-esm/Obj.mjs.map +0 -7
- package/dist/lib/node-esm/Order.mjs +0 -13
- package/dist/lib/node-esm/Order.mjs.map +0 -7
- package/dist/lib/node-esm/Query.mjs +0 -27
- package/dist/lib/node-esm/Query.mjs.map +0 -7
- package/dist/lib/node-esm/QueryResult.mjs +0 -3
- package/dist/lib/node-esm/QueryResult.mjs.map +0 -7
- package/dist/lib/node-esm/Ref.mjs +0 -23
- package/dist/lib/node-esm/Ref.mjs.map +0 -7
- package/dist/lib/node-esm/Relation.mjs +0 -85
- package/dist/lib/node-esm/Relation.mjs.map +0 -7
- package/dist/lib/node-esm/SchemaRegistry.mjs +0 -3
- package/dist/lib/node-esm/SchemaRegistry.mjs.map +0 -7
- package/dist/lib/node-esm/Tag.mjs +0 -26
- package/dist/lib/node-esm/Tag.mjs.map +0 -7
- package/dist/lib/node-esm/Type.mjs +0 -48
- package/dist/lib/node-esm/Type.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2RIFBW3A.mjs +0 -250
- package/dist/lib/node-esm/chunk-2RIFBW3A.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5CB2ZW74.mjs +0 -57
- package/dist/lib/node-esm/chunk-5CB2ZW74.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5U5F4AWK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AJEMYSIR.mjs +0 -22
- package/dist/lib/node-esm/chunk-BKYE5IW6.mjs +0 -158
- package/dist/lib/node-esm/chunk-BKYE5IW6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BYOD7EVP.mjs +0 -98
- package/dist/lib/node-esm/chunk-BYOD7EVP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FWTSPIFF.mjs +0 -133
- package/dist/lib/node-esm/chunk-FWTSPIFF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-K37NA7PO.mjs +0 -43
- package/dist/lib/node-esm/chunk-K37NA7PO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LIXUCQJM.mjs +0 -41
- package/dist/lib/node-esm/chunk-LIXUCQJM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MOLNWFNL.mjs +0 -9
- package/dist/lib/node-esm/chunk-MOLNWFNL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MOWUEW5P.mjs +0 -15
- package/dist/lib/node-esm/chunk-MOWUEW5P.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NBWL7UCZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OZEDKT4R.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PW3VCWL5.mjs +0 -24
- package/dist/lib/node-esm/chunk-PW3VCWL5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TSTKBFST.mjs +0 -403
- package/dist/lib/node-esm/chunk-TSTKBFST.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UKGVOINP.mjs +0 -9
- package/dist/lib/node-esm/chunk-UV63HEHQ.mjs +0 -143
- package/dist/lib/node-esm/chunk-UV63HEHQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WXLVPCRJ.mjs +0 -288
- package/dist/lib/node-esm/chunk-WXLVPCRJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WZ6YBELW.mjs +0 -74
- package/dist/lib/node-esm/chunk-WZ6YBELW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XHJRMQZD.mjs +0 -69
- package/dist/lib/node-esm/chunk-XHJRMQZD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YOLH5KS4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YQ2NWGL5.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -85
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/internal/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/index.d.ts +0 -3
- package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
- package/dist/types/src/internal/api/annotations.d.ts +0 -23
- package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/api/entity.d.ts.map +0 -1
- package/dist/types/src/internal/api/index.d.ts.map +0 -1
- package/dist/types/src/internal/api/meta.d.ts.map +0 -1
- package/dist/types/src/internal/api/sorting.d.ts.map +0 -1
- package/dist/types/src/internal/api/version.d.ts.map +0 -1
- package/dist/types/src/internal/entities/entity.d.ts.map +0 -1
- package/dist/types/src/internal/entities/index.d.ts.map +0 -1
- package/dist/types/src/internal/entities/model.d.ts.map +0 -1
- package/dist/types/src/internal/entities/object.d.ts.map +0 -1
- package/dist/types/src/internal/entities/relation.d.ts.map +0 -1
- package/dist/types/src/internal/entities/util.d.ts.map +0 -1
- package/dist/types/src/internal/formats/date.d.ts.map +0 -1
- package/dist/types/src/internal/formats/date.test.d.ts.map +0 -1
- package/dist/types/src/internal/formats/format.d.ts.map +0 -1
- package/dist/types/src/internal/formats/format.test.d.ts.map +0 -1
- package/dist/types/src/internal/formats/index.d.ts.map +0 -1
- package/dist/types/src/internal/formats/number.d.ts.map +0 -1
- package/dist/types/src/internal/formats/object.d.ts.map +0 -1
- package/dist/types/src/internal/formats/select.d.ts.map +0 -1
- package/dist/types/src/internal/formats/string.d.ts.map +0 -1
- package/dist/types/src/internal/formats/types.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/effect-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/index.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema-normalize.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema-type.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema.d.ts.map +0 -1
- package/dist/types/src/internal/json-schema/json-schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/clone.d.ts.map +0 -1
- package/dist/types/src/internal/object/common.d.ts.map +0 -1
- package/dist/types/src/internal/object/create-object.d.ts.map +0 -1
- package/dist/types/src/internal/object/create-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/deleted.d.ts.map +0 -1
- package/dist/types/src/internal/object/ids.d.ts.map +0 -1
- package/dist/types/src/internal/object/index.d.ts.map +0 -1
- package/dist/types/src/internal/object/inspect.d.ts.map +0 -1
- package/dist/types/src/internal/object/json-serializer.d.ts.map +0 -1
- package/dist/types/src/internal/object/json-serializer.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/schema-validator.d.ts +0 -2
- package/dist/types/src/internal/object/schema-validator.d.ts.map +0 -1
- package/dist/types/src/internal/object/schema-validator.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/set-value.d.ts.map +0 -1
- package/dist/types/src/internal/object/set-value.test.d.ts.map +0 -1
- package/dist/types/src/internal/object/snapshot.d.ts.map +0 -1
- package/dist/types/src/internal/object/typed-object.d.ts.map +0 -1
- package/dist/types/src/internal/object/typed-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/change-context.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/change.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/define-hidden-property.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/errors.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/event-batch.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/handler.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/index.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/json-serializer.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/make-object.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/ownership.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/proxy-types.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/proxy-utils.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/reactive-array.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/reactive.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/schema-validator.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/schema.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/symbols.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-handler.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-handler.test.d.ts.map +0 -1
- package/dist/types/src/internal/proxy/typed-object.test.d.ts.map +0 -1
- package/dist/types/src/internal/ref/index.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref-array.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref.d.ts.map +0 -1
- package/dist/types/src/internal/ref/ref.test.d.ts.map +0 -1
- package/dist/types/src/internal/schema/compose.d.ts.map +0 -1
- package/dist/types/src/internal/schema/compose.test.d.ts.map +0 -1
- package/dist/types/src/internal/schema/echo-schema.d.ts.map +0 -1
- package/dist/types/src/internal/schema/index.d.ts.map +0 -1
- package/dist/types/src/internal/schema/manipulation.d.ts.map +0 -1
- package/dist/types/src/internal/schema/persistent-schema.d.ts.map +0 -1
- package/dist/types/src/internal/types/base.d.ts.map +0 -1
- package/dist/types/src/internal/types/entity.d.ts.map +0 -1
- package/dist/types/src/internal/types/index.d.ts.map +0 -1
- package/dist/types/src/internal/types/meta.d.ts.map +0 -1
- package/dist/types/src/internal/types/typename.d.ts.map +0 -1
- package/dist/types/src/internal/types/version.d.ts.map +0 -1
- package/src/internal/api/annotations.ts +0 -60
- package/src/internal/object/snapshot.ts +0 -70
- /package/dist/lib/{browser → neutral}/Annotation.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Database.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Entity.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Err.mjs.map +0 -0
- /package/dist/lib/{browser/Filter.mjs.map → neutral/Feed.mjs.map} +0 -0
- /package/dist/lib/{node-esm → neutral}/Filter.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Format.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/JsonSchema.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Key.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Obj.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Order.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Query.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/QueryResult.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Ref.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Relation.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/SchemaRegistry.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Tag.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/Type.mjs.map +0 -0
- /package/dist/lib/{browser/chunk-CGS2ULMK.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{browser → neutral}/index.mjs.map +0 -0
- /package/dist/lib/{browser → neutral}/internal/index.mjs.map +0 -0
- /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
- /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/format.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/{formats → Format}/select.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/string.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/effect-schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/index.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema-normalize.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +0 -0
- /package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/clone.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/common.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/create-object.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/ids.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/index.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/inspect.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/json-serializer.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/schema-validator.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/set-value.test.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/snapshot.d.ts +0 -0
- /package/dist/types/src/internal/{object → Obj}/typed-object.test.d.ts +0 -0
- /package/dist/types/src/internal/{ref → Ref}/index.d.ts +0 -0
- /package/dist/types/src/internal/{ref → Ref}/ref.test.d.ts +0 -0
- /package/dist/types/src/internal/{schema → Type}/compose.test.d.ts +0 -0
- /package/dist/types/src/internal/{schema → Type}/index.d.ts +0 -0
- /package/dist/types/src/internal/{schema → Type}/manipulation.d.ts +0 -0
- /package/dist/types/src/internal/{api → common/api}/meta.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/change.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/make-object.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/ownership.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/proxy-types.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/proxy-utils.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/schema-validator.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/schema.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/symbols.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/typed-handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/typed-object.test.d.ts +0 -0
- /package/src/internal/{entities → Entity}/util.ts +0 -0
- /package/src/internal/{formats → Format}/date.ts +0 -0
- /package/src/internal/{formats → Format}/format.ts +0 -0
- /package/src/internal/{formats → Format}/index.ts +0 -0
- /package/src/internal/{formats → Format}/number.ts +0 -0
- /package/src/internal/{formats → Format}/object.ts +0 -0
- /package/src/internal/{formats → Format}/select.ts +0 -0
- /package/src/internal/{formats → Format}/string.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/effect-schema.test.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/index.ts +0 -0
- /package/src/internal/{json-schema → JsonSchema}/json-schema-normalize.ts +0 -0
- /package/src/internal/{object → Obj}/ids.ts +0 -0
- /package/src/internal/{object → Obj}/index.ts +0 -0
- /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
- /package/src/internal/{object → Obj}/set-value.test.ts +0 -0
- /package/src/internal/{ref → Ref}/index.ts +0 -0
- /package/src/internal/{schema → Type}/index.ts +0 -0
- /package/src/internal/{api → common/api}/meta.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/change-context.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/errors.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/ownership.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/reactive-array.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
package/src/Feed.ts
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import * as Context from 'effect/Context';
|
|
8
|
+
import * as Effect from 'effect/Effect';
|
|
9
|
+
import * as Layer from 'effect/Layer';
|
|
10
|
+
import type * as Option from 'effect/Option';
|
|
11
|
+
import * as Schema from 'effect/Schema';
|
|
12
|
+
|
|
13
|
+
import { DXN } from '@dxos/keys';
|
|
14
|
+
|
|
15
|
+
import type * as Entity from './Entity';
|
|
16
|
+
import type * as Filter from './Filter';
|
|
17
|
+
import * as internal from './internal';
|
|
18
|
+
import * as Obj from './Obj';
|
|
19
|
+
import type * as Query from './Query';
|
|
20
|
+
import type * as QueryResult from './QueryResult';
|
|
21
|
+
import * as Type from './Type';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Runtime schema for a Feed object.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const feed = Obj.make(Feed.Feed, { name: 'notifications', kind: 'org.dxos.plugin.notifications.v1' });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export const Feed = Schema.Struct({
|
|
32
|
+
/** User-facing display name. */
|
|
33
|
+
name: Schema.String.pipe(Schema.optional),
|
|
34
|
+
/** Identifier for the feed's kind (e.g., plugin id). */
|
|
35
|
+
kind: Schema.String.pipe(internal.FormInputAnnotation.set(false), Schema.optional),
|
|
36
|
+
}).pipe(
|
|
37
|
+
Type.object({
|
|
38
|
+
typename: 'org.dxos.type.feed',
|
|
39
|
+
version: '0.1.0',
|
|
40
|
+
}),
|
|
41
|
+
internal.SystemTypeAnnotation.set(true),
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* TypeScript instance type for a Feed object.
|
|
46
|
+
*/
|
|
47
|
+
export interface Feed extends Schema.Schema.Type<typeof Feed> {}
|
|
48
|
+
|
|
49
|
+
//
|
|
50
|
+
// Types
|
|
51
|
+
//
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Meta key source for storing the backing DXN bound to a feed object.
|
|
55
|
+
*/
|
|
56
|
+
// TODO(dmaretskyi): Enforce that Feed ObjectId = feed storage ID. And remove this key.
|
|
57
|
+
export const DXN_KEY = 'org.dxos.key.feed';
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Opaque cursor for iterating over feed items.
|
|
61
|
+
*/
|
|
62
|
+
// TODO(dmaretskyi): T needs to be referenced in the type structure for typescript to respect it during inference and type-checking.
|
|
63
|
+
export interface Cursor<T = Obj.Snapshot> {
|
|
64
|
+
readonly _tag: 'Cursor';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Retention options for a feed.
|
|
69
|
+
*/
|
|
70
|
+
export interface RetentionOptions {
|
|
71
|
+
/** Retain items after this cursor position. */
|
|
72
|
+
// TODO(wittjosiah): Use FeedCursor from @dxos/feed?
|
|
73
|
+
cursor?: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//
|
|
77
|
+
// Factory
|
|
78
|
+
//
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Creates a new feed object.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* const feed = Feed.make({ name: 'notifications', kind: 'org.dxos.plugin.notifications.v1' });
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
// TODO(wittjosiah): How to control the feed namespace (data/trace)? Why do feeds have namespaces?
|
|
89
|
+
export const make = (props: Obj.MakeProps<typeof Feed> = {}): Feed => Obj.make(Feed, props);
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Reads the queue DXN from feed metadata.
|
|
93
|
+
*
|
|
94
|
+
* @deprecated
|
|
95
|
+
*/
|
|
96
|
+
// TODO(wittjosiah): Align backing feed dxn's with object DXN.
|
|
97
|
+
export const getQueueDxn = (feed: Feed): DXN | undefined => {
|
|
98
|
+
const keys = Obj.getKeys(feed, DXN_KEY);
|
|
99
|
+
return keys.length === 0 ? undefined : DXN.parse(keys[0].id);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
//
|
|
103
|
+
// Service
|
|
104
|
+
//
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Effect service for feed operations.
|
|
108
|
+
* Provides the bridge to the underlying storage implementation.
|
|
109
|
+
* Must be provided by the application layer (e.g., echo-db).
|
|
110
|
+
*/
|
|
111
|
+
export class Service extends Context.Tag('@dxos/echo/Feed/Service')<
|
|
112
|
+
Service,
|
|
113
|
+
{
|
|
114
|
+
/**
|
|
115
|
+
* Appends items to a feed.
|
|
116
|
+
*/
|
|
117
|
+
append(feed: Feed, items: Entity.Unknown[]): Promise<void>;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Removes items from a feed by ID.
|
|
121
|
+
*/
|
|
122
|
+
// TODO(dmaretskyi): Change type to ObjectId.
|
|
123
|
+
remove(feed: Feed, ids: string[]): Promise<void>;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Queries items in a feed.
|
|
127
|
+
*/
|
|
128
|
+
query: {
|
|
129
|
+
<Q extends Query.Any>(feed: Feed, query: Q): QueryResult.QueryResult<Query.Type<Q>>;
|
|
130
|
+
<F extends Filter.Any>(feed: Feed, filter: F): QueryResult.QueryResult<Filter.Type<F>>;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
>() {}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Layer that provides a Feed service that throws when accessed.
|
|
137
|
+
* Useful as a default layer when no feed service is available.
|
|
138
|
+
*/
|
|
139
|
+
export const notAvailable: Layer.Layer<Service> = Layer.succeed(Service, {
|
|
140
|
+
append: () => {
|
|
141
|
+
throw new Error('Feed.Service not available');
|
|
142
|
+
},
|
|
143
|
+
remove: () => {
|
|
144
|
+
throw new Error('Feed.Service not available');
|
|
145
|
+
},
|
|
146
|
+
query: () => {
|
|
147
|
+
throw new Error('Feed.Service not available');
|
|
148
|
+
},
|
|
149
|
+
} as Context.Tag.Service<Service>);
|
|
150
|
+
|
|
151
|
+
//
|
|
152
|
+
// Operations
|
|
153
|
+
//
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Appends items to a feed.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* yield* Feed.append(feed, [Obj.make(Notification, { title: 'Hello' })]);
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export const append = (feed: Feed, items: Entity.Unknown[]): Effect.Effect<void, never, Service> =>
|
|
164
|
+
Effect.gen(function* () {
|
|
165
|
+
const service = yield* Service;
|
|
166
|
+
yield* Effect.promise(() => service.append(feed, items));
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Removes items from a feed.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* yield* Feed.remove(feed, [item]);
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
// TODO(dmaretskyi): Should we allow snapshots here? - what does it mean to remove a snapshot?
|
|
178
|
+
export const remove = (feed: Feed, items: (Entity.Unknown | Obj.Snapshot)[]): Effect.Effect<void, never, Service> =>
|
|
179
|
+
Effect.gen(function* () {
|
|
180
|
+
const service = yield* Service;
|
|
181
|
+
const ids = items.map((item) => item.id);
|
|
182
|
+
yield* Effect.promise(() => service.remove(feed, ids));
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Creates a reactive query over items in a feed.
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```ts
|
|
190
|
+
* const result = yield* Feed.query(feed, Filter.type(Person));
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
// TODO(dmaretskyi): Suport chained queries:
|
|
194
|
+
// const result = yield* feed.pipe(Feed.query(Filter.type(Person))); result.subscribe(...)
|
|
195
|
+
// const objects = yield* feed.pipe(Feed.query(Filter.type(Person))).run;
|
|
196
|
+
// const object = yield* feed.pipe(Feed.query(Filter.type(Person))).first;
|
|
197
|
+
// ... unify for Database and schema queries.
|
|
198
|
+
export const query: {
|
|
199
|
+
<Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<QueryResult.QueryResult<Query.Type<Q>>, never, Service>;
|
|
200
|
+
<F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<QueryResult.QueryResult<Filter.Type<F>>, never, Service>;
|
|
201
|
+
} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>
|
|
202
|
+
Service.pipe(Effect.map((service) => service.query(feed, queryOrFilter as any) as QueryResult.QueryResult<any>));
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Executes a feed query once and returns the results.
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```ts
|
|
209
|
+
* const items = yield* Feed.runQuery(feed, Filter.type(Person));
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export const runQuery: {
|
|
213
|
+
<Q extends Query.Any>(feed: Feed, query: Q): Effect.Effect<Query.Type<Q>[], never, Service>;
|
|
214
|
+
<F extends Filter.Any>(feed: Feed, filter: F): Effect.Effect<Filter.Type<F>[], never, Service>;
|
|
215
|
+
} = (feed: Feed, queryOrFilter: Query.Any | Filter.Any) =>
|
|
216
|
+
query(feed, queryOrFilter as any).pipe(Effect.flatMap((queryResult) => Effect.promise(() => queryResult.run())));
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Creates a cursor for iterating over feed items.
|
|
220
|
+
* Currently stubbed — cursor operations are not yet implemented.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```ts
|
|
224
|
+
* const cursor = yield* Feed.cursor<Person>(feed);
|
|
225
|
+
* const item = yield* Feed.next(cursor);
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
// TODO(wittjosiah): Implement cursor operations. Use Effect streams?
|
|
229
|
+
export const cursor = <T = Obj.Snapshot>(_feed: Feed): Effect.Effect<Cursor<T>, never, Service> =>
|
|
230
|
+
Effect.succeed({ _tag: 'Cursor' } as Cursor<T>);
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Returns the next item from a feed cursor.
|
|
234
|
+
* Currently stubbed — cursor operations are not yet implemented.
|
|
235
|
+
*/
|
|
236
|
+
export const next = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<T, never, Service> =>
|
|
237
|
+
Effect.die('Feed.next is not yet implemented');
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Returns the next item from a feed cursor as an Option.
|
|
241
|
+
* Currently stubbed — cursor operations are not yet implemented.
|
|
242
|
+
*/
|
|
243
|
+
export const nextOption = <T = Obj.Snapshot>(_cursor: Cursor<T>): Effect.Effect<Option.Option<T>, never, Service> =>
|
|
244
|
+
Effect.die('Feed.nextOption is not yet implemented');
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Sets the local retention policy for a feed.
|
|
248
|
+
* Currently stubbed — queues do not yet support retention.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```ts
|
|
252
|
+
* yield* Feed.setRetention(feed, { count: 1000 });
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
// TODO(feed): Implement when queue retention is supported.
|
|
256
|
+
export const setRetention = (_feed: Feed, _options: RetentionOptions): Effect.Effect<void, never, Service> =>
|
|
257
|
+
Effect.void;
|
package/src/Filter.ts
CHANGED
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
5
7
|
import * as Match from 'effect/Match';
|
|
6
8
|
import * as Schema from 'effect/Schema';
|
|
9
|
+
import * as SchemaAST from 'effect/SchemaAST';
|
|
7
10
|
import type * as Types from 'effect/Types';
|
|
8
11
|
|
|
9
12
|
import { type ForeignKey, type QueryAST } from '@dxos/echo-protocol';
|
|
10
13
|
import { assertArgument } from '@dxos/invariant';
|
|
11
14
|
import { DXN, ObjectId } from '@dxos/keys';
|
|
12
15
|
|
|
13
|
-
import
|
|
16
|
+
import * as internal from './internal';
|
|
14
17
|
import * as Ref from './Ref';
|
|
15
18
|
|
|
16
19
|
export interface Filter<T> {
|
|
@@ -30,7 +33,7 @@ export type Any = Filter<any>;
|
|
|
30
33
|
export type Type<F extends Any> = F extends Filter<infer T> ? T : never;
|
|
31
34
|
|
|
32
35
|
class FilterClass implements Any {
|
|
33
|
-
private static variance: Any['~Filter'] = {} as Any['~Filter'];
|
|
36
|
+
private static 'variance': Any['~Filter'] = {} as Any['~Filter'];
|
|
34
37
|
|
|
35
38
|
constructor(public readonly ast: QueryAST.Filter) {}
|
|
36
39
|
|
|
@@ -101,7 +104,19 @@ export const type = <S extends Schema.Schema.All>(
|
|
|
101
104
|
schema: S | string,
|
|
102
105
|
props?: Props<Schema.Schema.Type<S>>,
|
|
103
106
|
): Filter<Schema.Schema.Type<S>> => {
|
|
104
|
-
|
|
107
|
+
if (Schema.isSchema(schema) && SchemaAST.isUnion(schema.ast)) {
|
|
108
|
+
const typenames = schema.ast.types.map((type) => internal.getTypeDXNFromSpecifier(Schema.make(type)));
|
|
109
|
+
return new FilterClass({
|
|
110
|
+
type: 'or',
|
|
111
|
+
filters: typenames.map((typename) => ({
|
|
112
|
+
type: 'object',
|
|
113
|
+
typename: typename.toString(),
|
|
114
|
+
props: {},
|
|
115
|
+
})),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const dxn = internal.getTypeDXNFromSpecifier(schema);
|
|
105
120
|
return new FilterClass({
|
|
106
121
|
type: 'object',
|
|
107
122
|
typename: dxn.toString(),
|
|
@@ -180,7 +195,7 @@ export const foreignKeys = <S extends Schema.Schema.All>(
|
|
|
180
195
|
schema: S | string,
|
|
181
196
|
keys: ForeignKey[],
|
|
182
197
|
): Filter<Schema.Schema.Type<S>> => {
|
|
183
|
-
const dxn = getTypeDXNFromSpecifier(schema);
|
|
198
|
+
const dxn = internal.getTypeDXNFromSpecifier(schema);
|
|
184
199
|
return new FilterClass({
|
|
185
200
|
type: 'object',
|
|
186
201
|
typename: dxn.toString(),
|
package/src/Format.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import type * as internal from './internal';
|
|
6
6
|
|
|
7
|
-
export * from './internal/
|
|
7
|
+
export * from './internal/Format';
|
|
8
8
|
|
|
9
|
-
export type
|
|
9
|
+
export type Format = internal.TypeFormat;
|
package/src/Hypergraph.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type DXN } from '@dxos/keys';
|
|
|
6
6
|
|
|
7
7
|
import type * as Database from './Database';
|
|
8
8
|
import type * as Entity from './Entity';
|
|
9
|
-
import
|
|
9
|
+
import type * as internal from './internal';
|
|
10
10
|
import type * as Key from './Key';
|
|
11
11
|
import type * as Ref from './Ref';
|
|
12
12
|
import type * as SchemaRegistry from './SchemaRegistry';
|
|
@@ -39,7 +39,7 @@ export interface RefResolverOptions {
|
|
|
39
39
|
* Middleware to change the resolved object before returning it.
|
|
40
40
|
* @deprecated On track to be removed.
|
|
41
41
|
*/
|
|
42
|
-
middleware?: (obj: AnyProperties) => AnyProperties;
|
|
42
|
+
middleware?: (obj: internal.AnyProperties) => internal.AnyProperties;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
/**
|
package/src/JsonSchema.ts
CHANGED
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
5
7
|
import type * as Schema from 'effect/Schema';
|
|
6
8
|
|
|
7
|
-
import
|
|
9
|
+
import * as jsonSchemaInternal from './internal/JsonSchema';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Decode JSON Schema to Effect Schema.
|
|
13
|
+
*/
|
|
14
|
+
export const toEffectSchema = jsonSchemaInternal.toEffectSchema;
|
|
8
15
|
|
|
9
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Encode Effect Schema to JSON Schema.
|
|
18
|
+
*/
|
|
19
|
+
export const toJsonSchema = jsonSchemaInternal.toJsonSchema;
|
|
10
20
|
|
|
11
21
|
/**
|
|
12
22
|
* Serializable JsonSchema type definition.
|
|
13
23
|
*/
|
|
14
|
-
export type JsonSchema = JsonSchemaType;
|
|
24
|
+
export type JsonSchema = jsonSchemaInternal.JsonSchemaType;
|
|
15
25
|
|
|
16
|
-
export const JsonSchema: Schema.Schema<JsonSchemaType> = JsonSchemaType;
|
|
26
|
+
export const JsonSchema: Schema.Schema<jsonSchemaInternal.JsonSchemaType> = jsonSchemaInternal.JsonSchemaType;
|
package/src/Obj.test.ts
CHANGED
|
@@ -8,6 +8,7 @@ import * as Entity from './Entity';
|
|
|
8
8
|
import { SnapshotKindId } from './internal';
|
|
9
9
|
import * as Obj from './Obj';
|
|
10
10
|
import * as Ref from './Ref';
|
|
11
|
+
import * as Relation from './Relation';
|
|
11
12
|
import { TestSchema } from './testing';
|
|
12
13
|
|
|
13
14
|
describe('Obj', () => {
|
|
@@ -19,6 +20,10 @@ describe('Obj', () => {
|
|
|
19
20
|
// Snapshot has SnapshotKindId, not KindId.
|
|
20
21
|
expect(snapshot[SnapshotKindId]).toBe(Entity.Kind.Object);
|
|
21
22
|
expect((snapshot as any)[Entity.KindId]).toBeUndefined();
|
|
23
|
+
expect(Obj.isSnapshot(snapshot)).toBe(true);
|
|
24
|
+
expect(Relation.isSnapshot(snapshot)).toBe(false);
|
|
25
|
+
expect(Entity.isEntity(snapshot)).toBe(false);
|
|
26
|
+
expect(Entity.isSnapshot(snapshot)).toBe(true);
|
|
22
27
|
|
|
23
28
|
// Snapshot has same id and properties.
|
|
24
29
|
expect(snapshot.id).toBe(obj.id);
|
|
@@ -41,8 +46,8 @@ describe('Obj', () => {
|
|
|
41
46
|
expect(Obj.getDXN(snapshot)).toBeDefined();
|
|
42
47
|
|
|
43
48
|
// getTypename - works with both.
|
|
44
|
-
expect(Obj.getTypename(obj)).toBe('example.
|
|
45
|
-
expect(Obj.getTypename(snapshot)).toBe('example.
|
|
49
|
+
expect(Obj.getTypename(obj)).toBe('com.example.type.person');
|
|
50
|
+
expect(Obj.getTypename(snapshot)).toBe('com.example.type.person');
|
|
46
51
|
|
|
47
52
|
// getMeta - works with both.
|
|
48
53
|
expect(Obj.getMeta(obj)).toBeDefined();
|
|
@@ -77,6 +82,62 @@ describe('Obj', () => {
|
|
|
77
82
|
});
|
|
78
83
|
});
|
|
79
84
|
|
|
85
|
+
describe('snapshotOf', () => {
|
|
86
|
+
test('returns true for snapshot of matching schema', ({ expect }) => {
|
|
87
|
+
const obj = Obj.make(TestSchema.Person, { name: 'Test' });
|
|
88
|
+
const snapshot = Obj.getSnapshot(obj);
|
|
89
|
+
|
|
90
|
+
expect(Obj.snapshotOf(TestSchema.Person, snapshot)).toBe(true);
|
|
91
|
+
expect(Obj.snapshotOf(TestSchema.Organization, snapshot)).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
test('returns false for reactive object', ({ expect }) => {
|
|
95
|
+
const obj = Obj.make(TestSchema.Person, { name: 'Test' });
|
|
96
|
+
|
|
97
|
+
expect(Obj.snapshotOf(TestSchema.Person, obj)).toBe(false);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
test('returns false for plain object with matching shape', ({ expect }) => {
|
|
101
|
+
const plain = { id: 'test', name: 'Test' };
|
|
102
|
+
|
|
103
|
+
expect(Obj.snapshotOf(TestSchema.Person, plain)).toBe(false);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test('curried form works', ({ expect }) => {
|
|
107
|
+
const snapshot = Obj.getSnapshot(Obj.make(TestSchema.Person, { name: 'Test' }));
|
|
108
|
+
const isPersonSnapshot = Obj.snapshotOf(TestSchema.Person);
|
|
109
|
+
|
|
110
|
+
expect(isPersonSnapshot(snapshot)).toBe(true);
|
|
111
|
+
expect(isPersonSnapshot({})).toBe(false);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
describe('getKeys', () => {
|
|
116
|
+
const SOURCE = 'test-source';
|
|
117
|
+
|
|
118
|
+
test('returns keys from reactive object and snapshot', ({ expect }) => {
|
|
119
|
+
const obj = Obj.make(TestSchema.Person, { name: 'Test' });
|
|
120
|
+
Obj.change(obj, (o) => {
|
|
121
|
+
const meta = Obj.getMeta(o);
|
|
122
|
+
meta.keys.push({ source: SOURCE, id: 'key-1' });
|
|
123
|
+
meta.keys.push({ source: SOURCE, id: 'key-2' });
|
|
124
|
+
meta.keys.push({ source: 'other', id: 'key-3' });
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
expect(Obj.getKeys(obj, SOURCE)).toHaveLength(2);
|
|
128
|
+
expect(Obj.getKeys(obj, SOURCE).map((k) => k.id)).toEqual(['key-1', 'key-2']);
|
|
129
|
+
|
|
130
|
+
const snapshot = Obj.getSnapshot(obj);
|
|
131
|
+
expect(Obj.getKeys(snapshot, SOURCE)).toHaveLength(2);
|
|
132
|
+
expect(Obj.getKeys(snapshot, SOURCE).map((k) => k.id)).toEqual(['key-1', 'key-2']);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
test('throws for plain object without metadata', ({ expect }) => {
|
|
136
|
+
const plain = { id: 'plain-1', name: 'Plain' };
|
|
137
|
+
expect(() => Obj.getKeys(plain as any, SOURCE)).toThrow(/ObjectMeta not found/);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
|
|
80
141
|
describe('clone', () => {
|
|
81
142
|
test('clones object with same properties', ({ expect }) => {
|
|
82
143
|
const original = Obj.make(TestSchema.Person, {
|