@dxos/echo 0.8.4-main.ef1bc66f44 → 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 +5 -5
- package/dist/lib/neutral/Annotation.mjs +7 -3
- package/dist/lib/neutral/Database.mjs +8 -4
- package/dist/lib/neutral/Entity.mjs +24 -14
- package/dist/lib/neutral/Err.mjs +3 -1
- package/dist/lib/neutral/Extension.mjs +18 -0
- package/dist/lib/neutral/Extension.mjs.map +7 -0
- package/dist/lib/neutral/Feed.mjs +52 -0
- package/dist/lib/neutral/Feed.mjs.map +7 -0
- package/dist/lib/neutral/Filter.mjs +23 -10
- package/dist/lib/neutral/Format.mjs +3 -3
- package/dist/lib/neutral/JsonSchema.mjs +9 -9
- package/dist/lib/neutral/Key.mjs +1 -1
- package/dist/lib/neutral/Migration.mjs +17 -0
- package/dist/lib/neutral/Migration.mjs.map +7 -0
- package/dist/lib/neutral/Obj.mjs +34 -17
- package/dist/lib/neutral/Order.mjs +1 -1
- package/dist/lib/neutral/Query.mjs +21 -9
- package/dist/lib/neutral/QueryResult.mjs +1 -1
- package/dist/lib/neutral/Ref.mjs +11 -7
- package/dist/lib/neutral/Relation.mjs +23 -13
- package/dist/lib/neutral/SchemaRegistry.mjs +1 -1
- package/dist/lib/neutral/Tag.mjs +14 -10
- package/dist/lib/neutral/Type.mjs +13 -23
- package/dist/lib/neutral/{chunk-N2QNHMT5.mjs → chunk-44HT3MEC.mjs} +2 -2
- package/dist/lib/neutral/{chunk-N2QNHMT5.mjs.map → chunk-44HT3MEC.mjs.map} +1 -1
- package/dist/lib/neutral/{chunk-XAJMXQ4H.mjs → chunk-5SL5LDLD.mjs} +6 -2
- package/dist/lib/neutral/chunk-5SL5LDLD.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ANHVGJI4.mjs → chunk-7RVZT53K.mjs} +1 -1
- package/dist/lib/neutral/chunk-APHSOTIX.mjs +34 -0
- package/dist/lib/neutral/chunk-APHSOTIX.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ZAHWXGK4.mjs → chunk-APJKDGFL.mjs} +85 -7
- package/dist/lib/neutral/chunk-APJKDGFL.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-4L6DOFXP.mjs → chunk-BICZKPQG.mjs} +1 -1
- package/dist/lib/neutral/{chunk-4L6DOFXP.mjs.map → chunk-BICZKPQG.mjs.map} +1 -1
- 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-LKFNEFHF.mjs → chunk-I2DARWPX.mjs} +18 -20
- 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-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-KB7RIVLK.mjs → chunk-N4B7FHQT.mjs} +4 -4
- package/dist/lib/neutral/{chunk-KB7RIVLK.mjs.map → chunk-N4B7FHQT.mjs.map} +2 -2
- package/dist/lib/neutral/{chunk-K5K3Z62A.mjs → chunk-N7VOEPSV.mjs} +11 -3
- 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-MTEHHY62.mjs → chunk-PT37DG2F.mjs} +77 -58
- package/dist/lib/neutral/chunk-PT37DG2F.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-DLPC7DHQ.mjs → chunk-Q2KKKJSV.mjs} +5 -5
- 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-QARLJVDB.mjs → chunk-QRZ2I3ZM.mjs} +8 -4
- package/dist/lib/neutral/chunk-QRZ2I3ZM.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-VUQGRDRI.mjs → chunk-SCPFDS2E.mjs} +40 -12
- package/dist/lib/neutral/chunk-SCPFDS2E.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-RIMHNJ3E.mjs → chunk-TNBK56IN.mjs} +98 -44
- package/dist/lib/neutral/chunk-TNBK56IN.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-7WE7SBA2.mjs → chunk-TRPZU2HV.mjs} +13 -13
- package/dist/lib/neutral/chunk-TRPZU2HV.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ROKO4RKJ.mjs → chunk-TTCSATUD.mjs} +2 -2
- package/dist/lib/neutral/chunk-TTCSATUD.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-OMUPQMLR.mjs → chunk-V72DY6LU.mjs} +1 -1
- package/dist/lib/neutral/chunk-ZFACXBY6.mjs +136 -0
- package/dist/lib/neutral/chunk-ZFACXBY6.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-RPB6V4BE.mjs → chunk-ZISMEVKD.mjs} +14 -1
- package/dist/lib/neutral/chunk-ZISMEVKD.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +51 -28
- package/dist/lib/neutral/internal/index.mjs +52 -38
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/testing/index.mjs +199 -136
- package/dist/lib/neutral/testing/index.mjs.map +3 -3
- package/dist/types/src/Annotation.d.ts +3 -3
- package/dist/types/src/Annotation.d.ts.map +1 -1
- package/dist/types/src/Collection.d.ts +16 -0
- package/dist/types/src/Collection.d.ts.map +1 -0
- package/dist/types/src/Database.d.ts +21 -36
- package/dist/types/src/Database.d.ts.map +1 -1
- 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 +54 -22
- package/dist/types/src/Entity.d.ts.map +1 -1
- package/dist/types/src/Err.d.ts +55 -12
- package/dist/types/src/Err.d.ts.map +1 -1
- package/dist/types/src/Extension.d.ts +80 -0
- package/dist/types/src/Extension.d.ts.map +1 -0
- package/dist/types/src/Extension.test.d.ts +2 -0
- package/dist/types/src/Extension.test.d.ts.map +1 -0
- package/dist/types/src/Feed.d.ts +206 -0
- package/dist/types/src/Feed.d.ts.map +1 -0
- package/dist/types/src/Filter.d.ts +55 -5
- package/dist/types/src/Filter.d.ts.map +1 -1
- package/dist/types/src/Filter.test.d.ts +2 -0
- package/dist/types/src/Filter.test.d.ts.map +1 -0
- package/dist/types/src/Format.d.ts +3 -3
- package/dist/types/src/Format.d.ts.map +1 -1
- package/dist/types/src/Hypergraph.d.ts +11 -6
- package/dist/types/src/Hypergraph.d.ts.map +1 -1
- package/dist/types/src/Json.d.ts +33 -0
- package/dist/types/src/Json.d.ts.map +1 -0
- package/dist/types/src/Json.test.d.ts +2 -0
- package/dist/types/src/Json.test.d.ts.map +1 -0
- package/dist/types/src/JsonSchema.d.ts +11 -4
- package/dist/types/src/JsonSchema.d.ts.map +1 -1
- package/dist/types/src/Migration.d.ts +69 -0
- package/dist/types/src/Migration.d.ts.map +1 -0
- package/dist/types/src/Obj.d.ts +163 -59
- 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 +105 -17
- package/dist/types/src/Query.d.ts.map +1 -1
- package/dist/types/src/Ref.d.ts +59 -10
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Relation.d.ts +86 -40
- 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 +2 -1
- 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/exemplars.test.d.ts +2 -0
- package/dist/types/src/exemplars.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +7 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/{annotations → Annotation}/annotations.d.ts +65 -2
- 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 +2 -2
- 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 +37 -37
- package/dist/types/src/internal/JsonSchema/json-schema-type.d.ts.map +1 -0
- package/dist/types/src/internal/{json-schema → JsonSchema}/json-schema.d.ts +1 -1
- 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/{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.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 +13 -5
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/json-serializer.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts +2 -0
- package/dist/types/src/internal/Obj/schema-validator.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/schema-validator.test.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/set-value.d.ts +2 -2
- package/dist/types/src/internal/Obj/set-value.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/set-value.test.d.ts.map +1 -0
- package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -0
- package/dist/types/src/internal/{object → Obj}/typed-object.d.ts +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/Query.d.ts +10 -0
- package/dist/types/src/internal/Query.d.ts.map +1 -0
- package/dist/types/src/internal/Ref/index.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref-array.d.ts +1 -1
- package/dist/types/src/internal/Ref/ref-array.d.ts.map +1 -0
- package/dist/types/src/internal/{ref → Ref}/ref.d.ts +15 -2
- 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 +7 -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/{api → common/api}/meta.d.ts +3 -3
- package/dist/types/src/internal/common/api/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/index.d.ts +4 -0
- package/dist/types/src/internal/common/index.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/change-context.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/change-context.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/change.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/define-hidden-property.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/errors.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/errors.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/event-batch.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/handler.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/index.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/ownership.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-types.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/proxy-utils.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/reactive-array.d.ts +1 -1
- package/dist/types/src/internal/common/proxy/reactive-array.d.ts.map +1 -0
- package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts +2 -2
- package/dist/types/src/internal/{proxy → common/proxy}/reactive.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/reactive.test.d.ts +2 -0
- package/dist/types/src/internal/common/proxy/reactive.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/schema-validator.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/schema.test.d.ts.map +1 -0
- package/dist/types/src/internal/common/proxy/symbols.d.ts.map +1 -0
- package/dist/types/src/internal/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 +5 -5
- package/dist/types/src/internal/common/types/entity.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/index.d.ts +1 -0
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -0
- package/dist/types/src/internal/{types → common/types}/meta.d.ts +12 -1
- package/dist/types/src/internal/common/types/meta.d.ts.map +1 -0
- package/dist/types/src/internal/common/types/model-symbols.d.ts +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.map +1 -0
- package/dist/types/src/internal/{types → common/types}/version.d.ts +2 -2
- package/dist/types/src/internal/common/types/version.d.ts.map +1 -0
- package/dist/types/src/internal/index.d.ts +9 -10
- package/dist/types/src/internal/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-data.d.ts +8 -8
- package/dist/types/src/testing/test-data.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +47 -46
- package/dist/types/src/testing/test-schema.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -15
- package/src/Annotation.ts +7 -3
- package/src/Collection.ts +37 -0
- package/src/Database.ts +64 -65
- package/src/Dataset.ts +26 -0
- package/src/Entity.ts +87 -61
- package/src/Err.ts +22 -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 +116 -7
- package/src/Format.ts +3 -3
- package/src/Hypergraph.ts +12 -7
- package/src/Json.test.ts +175 -0
- package/src/Json.ts +102 -0
- package/src/JsonSchema.ts +14 -4
- package/src/Migration.ts +106 -0
- package/src/Obj.test.ts +142 -15
- package/src/Obj.ts +382 -161
- package/src/Order.ts +3 -1
- package/src/Query.test.ts +372 -15
- package/src/Query.ts +274 -26
- package/src/Ref.ts +66 -11
- package/src/Relation.test.ts +8 -2
- package/src/Relation.ts +183 -147
- 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 +107 -0
- package/src/exemplars.test.ts +21 -0
- package/src/index.ts +8 -0
- package/src/internal/{annotations → Annotation}/annotations.test.ts +56 -7
- package/src/internal/{annotations → Annotation}/annotations.ts +122 -19
- package/src/internal/{annotations → Annotation}/index.ts +1 -0
- package/src/internal/{api → Annotation}/sorting.ts +2 -4
- package/src/internal/{annotations → Annotation}/util.ts +1 -1
- package/src/internal/{api/entity.ts → Entity/api.ts} +3 -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 +15 -42
- package/src/internal/{entities → Entity}/object.ts +2 -3
- package/src/internal/{entities → Entity}/relation.ts +19 -36
- package/src/internal/{api → Entity}/version.ts +2 -2
- package/src/internal/{formats → Format}/date.test.ts +1 -2
- package/src/internal/{formats → Format}/format.test.ts +1 -2
- package/src/internal/{formats → Format}/types.ts +2 -2
- package/src/internal/{json-schema → JsonSchema}/annotations.ts +3 -3
- package/src/internal/{json-schema → JsonSchema}/json-schema-type.ts +4 -4
- package/src/internal/{json-schema → JsonSchema}/json-schema.test.ts +48 -49
- package/src/internal/{json-schema → JsonSchema}/json-schema.ts +6 -5
- 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 +5 -7
- package/src/internal/{object → Obj}/create-object.ts +5 -6
- package/src/internal/{object → Obj}/deleted.ts +2 -2
- package/src/internal/{object → Obj}/ids.ts +1 -1
- package/src/internal/{object → Obj}/inspect.ts +2 -2
- package/src/internal/{object → Obj}/json-serializer.test.ts +31 -9
- package/src/internal/{object → Obj}/json-serializer.ts +60 -35
- package/src/internal/{object → Obj}/schema-validator.ts +1 -1
- package/src/internal/{object → Obj}/set-value.test.ts +24 -24
- package/src/internal/{object → Obj}/set-value.ts +3 -3
- package/src/internal/{object → Obj}/snapshot.ts +35 -23
- package/src/internal/{object → Obj}/typed-object.test.ts +3 -3
- package/src/internal/{object → Obj}/typed-object.ts +4 -4
- package/src/internal/Query.ts +156 -0
- package/src/internal/{ref → Ref}/ref-array.ts +1 -2
- package/src/internal/{ref → Ref}/ref.test.ts +4 -5
- package/src/internal/{ref → Ref}/ref.ts +20 -3
- package/src/internal/{schema → Type}/compose.test.ts +5 -6
- package/src/internal/{schema → Type}/compose.ts +1 -1
- package/src/internal/{schema → Type}/echo-schema.ts +9 -10
- package/src/internal/{schema → Type}/manipulation.ts +1 -1
- package/src/internal/{schema → Type}/persistent-schema.ts +9 -4
- package/src/internal/{README.md → common/README.md} +2 -2
- package/src/internal/{api → common/api}/index.ts +0 -4
- package/src/internal/{api → common/api}/meta.ts +3 -3
- package/src/internal/common/index.ts +7 -0
- package/src/internal/{proxy → common/proxy}/change-context.ts +1 -1
- package/src/internal/{proxy → common/proxy}/change.test.ts +97 -97
- package/src/internal/{proxy → common/proxy}/errors.ts +2 -2
- package/src/internal/{proxy → common/proxy}/handler.test.ts +2 -4
- package/src/internal/{proxy → common/proxy}/json-serializer.ts +6 -3
- package/src/internal/{proxy → common/proxy}/make-object.ts +1 -2
- package/src/internal/{proxy → common/proxy}/ownership.ts +0 -1
- package/src/internal/{proxy → common/proxy}/reactive-array.ts +1 -1
- package/src/internal/common/proxy/reactive.test.ts +54 -0
- package/src/internal/{proxy → common/proxy}/reactive.ts +12 -4
- package/src/internal/{proxy → common/proxy}/schema.test.ts +10 -10
- package/src/internal/{proxy → common/proxy}/typed-handler.test.ts +6 -7
- package/src/internal/{proxy → common/proxy}/typed-handler.ts +10 -13
- package/src/internal/{proxy → common/proxy}/typed-object.test.ts +5 -6
- 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 +15 -1
- package/src/internal/common/types/model-symbols.ts +69 -0
- package/src/internal/{types → common/types}/version.ts +2 -3
- package/src/internal/index.ts +9 -31
- package/src/testing/api.test.ts +4 -5
- package/src/testing/test-data.ts +157 -98
- package/src/testing/test-schema.ts +20 -18
- package/dist/lib/neutral/chunk-2AF5GMG6.mjs +0 -171
- package/dist/lib/neutral/chunk-2AF5GMG6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-7WE7SBA2.mjs.map +0 -7
- package/dist/lib/neutral/chunk-DLPC7DHQ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-EBUAT5ID.mjs +0 -229
- package/dist/lib/neutral/chunk-EBUAT5ID.mjs.map +0 -7
- package/dist/lib/neutral/chunk-K5K3Z62A.mjs.map +0 -7
- package/dist/lib/neutral/chunk-LKFNEFHF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-MTEHHY62.mjs.map +0 -7
- package/dist/lib/neutral/chunk-QARLJVDB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-RIMHNJ3E.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ROKO4RKJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-RPB6V4BE.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TLGNKUUG.mjs +0 -3905
- package/dist/lib/neutral/chunk-TLGNKUUG.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TQT6WTIJ.mjs +0 -142
- package/dist/lib/neutral/chunk-TQT6WTIJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-VUQGRDRI.mjs.map +0 -7
- package/dist/lib/neutral/chunk-X2MPMYYN.mjs +0 -13
- package/dist/lib/neutral/chunk-X2MPMYYN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XAJMXQ4H.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ZAHWXGK4.mjs.map +0 -7
- package/dist/types/src/internal/annotations/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/annotations.test.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/index.d.ts +0 -3
- package/dist/types/src/internal/annotations/index.d.ts.map +0 -1
- package/dist/types/src/internal/annotations/util.d.ts.map +0 -1
- package/dist/types/src/internal/api/annotations.d.ts +0 -23
- package/dist/types/src/internal/api/annotations.d.ts.map +0 -1
- package/dist/types/src/internal/api/entity.d.ts.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/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/dist/lib/neutral/{chunk-ANHVGJI4.mjs.map → chunk-7RVZT53K.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-OMUPQMLR.mjs.map → chunk-V72DY6LU.mjs.map} +0 -0
- /package/dist/types/src/internal/{annotations → Annotation}/annotations.test.d.ts +0 -0
- /package/dist/types/src/internal/{entities → Entity}/util.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/date.test.d.ts +0 -0
- /package/dist/types/src/internal/{formats → Format}/format.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.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}/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/{proxy → common/proxy}/change.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/define-hidden-property.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/event-batch.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/handler.test.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/index.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/json-serializer.d.ts +0 -0
- /package/dist/types/src/internal/{proxy → common/proxy}/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}/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.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/internal/{types → common/types}/typename.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}/index.ts +0 -0
- /package/src/internal/{object → Obj}/schema-validator.test.ts +0 -0
- /package/src/internal/{ref → Ref}/index.ts +0 -0
- /package/src/internal/{schema → Type}/index.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/define-hidden-property.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/event-batch.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/index.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-types.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/proxy-utils.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/schema-validator.ts +0 -0
- /package/src/internal/{proxy → common/proxy}/symbols.ts +0 -0
- /package/src/internal/{types → common/types}/typename.ts +0 -0
package/src/View.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import * as Schema from 'effect/Schema';
|
|
8
|
+
|
|
9
|
+
import { QueryAST } from '@dxos/echo-protocol';
|
|
10
|
+
import { JsonPath } from '@dxos/effect';
|
|
11
|
+
import { PublicKey } from '@dxos/keys';
|
|
12
|
+
|
|
13
|
+
import * as Annotation from './Annotation';
|
|
14
|
+
import * as Filter from './Filter';
|
|
15
|
+
import * as internal from './internal';
|
|
16
|
+
import * as Obj from './Obj';
|
|
17
|
+
import * as Query from './Query';
|
|
18
|
+
import * as Type from './Type';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Stored field metadata (e.g., for UX).
|
|
22
|
+
*/
|
|
23
|
+
export const FieldSchema = Schema.Struct({
|
|
24
|
+
id: Schema.String,
|
|
25
|
+
path: JsonPath,
|
|
26
|
+
visible: Schema.optional(Schema.Boolean),
|
|
27
|
+
|
|
28
|
+
// TODO(wittjosiah): Presentation-specific?
|
|
29
|
+
referencePath: Schema.optional(JsonPath),
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export type FieldType = Schema.Schema.Type<typeof FieldSchema>;
|
|
33
|
+
|
|
34
|
+
export const KeyValueProps = Schema.Record({ key: Schema.String, value: Schema.Any });
|
|
35
|
+
|
|
36
|
+
export const createFieldId = () => PublicKey.random().truncate();
|
|
37
|
+
|
|
38
|
+
export const Projection = Schema.Struct({
|
|
39
|
+
/**
|
|
40
|
+
* Optional schema override used to customize the underlying schema.
|
|
41
|
+
*/
|
|
42
|
+
schema: internal.JsonSchemaType.pipe(Schema.optional),
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* UX metadata associated with displayed fields (in table, form, etc.)
|
|
46
|
+
*/
|
|
47
|
+
// TODO(wittjosiah): Should this just be an array of JsonPath?
|
|
48
|
+
fields: Schema.Array(FieldSchema),
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The id for the field used to pivot the view.
|
|
52
|
+
* E.g., the field to use for kanban columns or the field to use for map coordinates.
|
|
53
|
+
*/
|
|
54
|
+
pivotFieldId: Schema.String.pipe(Schema.optional),
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
export type Projection = Schema.Schema.Type<typeof Projection>;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Views are generated or user-defined projections of a schema's properties.
|
|
61
|
+
* They are used to configure the visual representation of the data.
|
|
62
|
+
*/
|
|
63
|
+
const ViewSchema = Schema.Struct({
|
|
64
|
+
/**
|
|
65
|
+
* Query used to retrieve data.
|
|
66
|
+
* Can be a user-provided query grammar string or a query AST.
|
|
67
|
+
*/
|
|
68
|
+
query: Schema.Struct({
|
|
69
|
+
raw: Schema.optional(Schema.String),
|
|
70
|
+
ast: QueryAST.Query,
|
|
71
|
+
}),
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Projection of the data returned from the query.
|
|
75
|
+
*/
|
|
76
|
+
projection: Projection,
|
|
77
|
+
}).pipe(
|
|
78
|
+
Type.object({
|
|
79
|
+
typename: 'org.dxos.type.view',
|
|
80
|
+
version: '0.1.0',
|
|
81
|
+
}),
|
|
82
|
+
internal.SystemTypeAnnotation.set(true),
|
|
83
|
+
Annotation.IconAnnotation.set({
|
|
84
|
+
icon: 'ph--funnel--regular',
|
|
85
|
+
hue: 'green',
|
|
86
|
+
}),
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
export interface View extends Schema.Schema.Type<typeof ViewSchema> {}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* View instance type.
|
|
93
|
+
*/
|
|
94
|
+
// NOTE: This interface is explicitly defined rather than derived from the schema to avoid
|
|
95
|
+
// TypeScript "cannot be named" portability errors. The schema contains QueryAST.Query which
|
|
96
|
+
// references internal @dxos/echo-protocol module paths. Without this explicit interface,
|
|
97
|
+
// any schema using Ref.Ref(View) would inherit the non-portable type and fail to compile.
|
|
98
|
+
// TODO(wittjosiah): Find a better solution that doesn't require manually keeping the interface in sync.
|
|
99
|
+
export const View: Type.Obj<View> = ViewSchema as any;
|
|
100
|
+
|
|
101
|
+
export const make = (props: Partial<Obj.MakeProps<typeof View>>): View => {
|
|
102
|
+
return Obj.make(View, {
|
|
103
|
+
query: { ast: Query.select(Filter.nothing()).ast },
|
|
104
|
+
projection: { fields: [] },
|
|
105
|
+
...props,
|
|
106
|
+
});
|
|
107
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { describe, test } from 'vitest';
|
|
6
|
+
|
|
7
|
+
import * as Obj from './Obj';
|
|
8
|
+
import { TestSchema } from './testing';
|
|
9
|
+
import type * as Type from './Type';
|
|
10
|
+
|
|
11
|
+
describe('Exemplars', () => {
|
|
12
|
+
test('factory', ({ expect }) => {
|
|
13
|
+
const factory = <S extends Type.AnyObj>(schema: S) => {
|
|
14
|
+
return (props: Obj.MakeProps<S>) => Obj.make(schema, props);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const makePerson = factory(TestSchema.Person);
|
|
18
|
+
const person = makePerson({ name: 'John Doe' });
|
|
19
|
+
expect(person.name).toBe('John Doe');
|
|
20
|
+
});
|
|
21
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -9,12 +9,16 @@ export { DXN } from '@dxos/keys';
|
|
|
9
9
|
export * as Annotation from './Annotation';
|
|
10
10
|
export * as Database from './Database';
|
|
11
11
|
export * as Entity from './Entity';
|
|
12
|
+
// TODO(burdon): Rename to Error (less problematic than Obj/Object).
|
|
12
13
|
export * as Err from './Err';
|
|
14
|
+
export * as Feed from './Feed';
|
|
13
15
|
export * as Filter from './Filter';
|
|
14
16
|
export * as Format from './Format';
|
|
15
17
|
export * as Hypergraph from './Hypergraph';
|
|
18
|
+
export * as Json from './Json';
|
|
16
19
|
export * as JsonSchema from './JsonSchema';
|
|
17
20
|
export * as Key from './Key';
|
|
21
|
+
export * as Migration from './Migration';
|
|
18
22
|
export * as Obj from './Obj';
|
|
19
23
|
export * as Order from './Order';
|
|
20
24
|
export * as Query from './Query';
|
|
@@ -24,3 +28,7 @@ export * as Relation from './Relation';
|
|
|
24
28
|
export * as SchemaRegistry from './SchemaRegistry';
|
|
25
29
|
export * as Tag from './Tag';
|
|
26
30
|
export * as Type from './Type';
|
|
31
|
+
export * as Collection from './Collection';
|
|
32
|
+
export * as View from './View';
|
|
33
|
+
export * as Dataset from './Dataset';
|
|
34
|
+
export * as Extension from './Extension';
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
import { describe, test } from 'vitest';
|
|
7
7
|
|
|
8
|
-
import { EchoObjectSchema } from '../
|
|
9
|
-
|
|
8
|
+
import { EchoObjectSchema } from '../Entity';
|
|
10
9
|
import { LabelAnnotation, TypenameSchema, VersionSchema, getLabelWithSchema } from './annotations';
|
|
11
10
|
|
|
12
11
|
// TODO(dmaretskyi): Use one of the testing schemas.
|
|
@@ -20,7 +19,7 @@ type TestObject = Schema.Schema.Type<typeof TestObject>;
|
|
|
20
19
|
|
|
21
20
|
const TestEchoSchema = TestObject.pipe(
|
|
22
21
|
EchoObjectSchema({
|
|
23
|
-
typename: 'dxos.
|
|
22
|
+
typename: 'org.dxos.type.test',
|
|
24
23
|
version: '0.1.0',
|
|
25
24
|
}),
|
|
26
25
|
);
|
|
@@ -30,10 +29,10 @@ type TestEchoSchema = Schema.Schema.Type<typeof TestEchoSchema>;
|
|
|
30
29
|
describe('annotations', () => {
|
|
31
30
|
describe('Typename', () => {
|
|
32
31
|
test('should validate typename', ({ expect }) => {
|
|
33
|
-
// Valid.
|
|
34
|
-
expect(TypenameSchema.make('dxos.
|
|
35
|
-
expect(TypenameSchema.make('dxos.
|
|
36
|
-
expect(TypenameSchema.make('dxos.
|
|
32
|
+
// Valid (reverse-DNS format).
|
|
33
|
+
expect(TypenameSchema.make('org.dxos.type.foo')).to.exist;
|
|
34
|
+
expect(TypenameSchema.make('org.dxos.type.fooBar')).to.exist;
|
|
35
|
+
expect(TypenameSchema.make('org.dxos.type.foobar')).to.exist;
|
|
37
36
|
|
|
38
37
|
// Invalid.
|
|
39
38
|
expect(() => TypenameSchema.make('dxn:dxos.org')).to.throw();
|
|
@@ -82,6 +81,56 @@ describe('annotations', () => {
|
|
|
82
81
|
expect(getLabelWithSchema(TestObject, obj)).toBeUndefined();
|
|
83
82
|
});
|
|
84
83
|
|
|
84
|
+
test('should skip empty string and fallback to next path', ({ expect }) => {
|
|
85
|
+
const obj: TestObject = {
|
|
86
|
+
name: '',
|
|
87
|
+
fallbackName: 'Fallback Name',
|
|
88
|
+
other: 'Other',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
expect(getLabelWithSchema(TestObject, obj)).toEqual('Fallback Name');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
test('should skip whitespace-only string and fallback to next path', ({ expect }) => {
|
|
95
|
+
const obj: TestObject = {
|
|
96
|
+
name: ' ',
|
|
97
|
+
fallbackName: 'Fallback Name',
|
|
98
|
+
other: 'Other',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
expect(getLabelWithSchema(TestObject, obj)).toEqual('Fallback Name');
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
test('should return undefined if all paths are empty strings', ({ expect }) => {
|
|
105
|
+
const obj: TestObject = {
|
|
106
|
+
name: '',
|
|
107
|
+
fallbackName: '',
|
|
108
|
+
other: 'Other',
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
expect(getLabelWithSchema(TestObject, obj)).toBeUndefined();
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
test('should return undefined if all paths are whitespace-only', ({ expect }) => {
|
|
115
|
+
const obj: TestObject = {
|
|
116
|
+
name: ' ',
|
|
117
|
+
fallbackName: '\t\n',
|
|
118
|
+
other: 'Other',
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
expect(getLabelWithSchema(TestObject, obj)).toBeUndefined();
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
test('should preserve original string with leading/trailing whitespace when valid', ({ expect }) => {
|
|
125
|
+
const obj: TestObject = {
|
|
126
|
+
name: ' Valid Name ',
|
|
127
|
+
fallbackName: 'Fallback Name',
|
|
128
|
+
other: 'Other',
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
expect(getLabelWithSchema(TestObject, obj)).toEqual(' Valid Name ');
|
|
132
|
+
});
|
|
133
|
+
|
|
85
134
|
test('should return label from echo object', ({ expect }) => {
|
|
86
135
|
const obj: TestEchoSchema = {
|
|
87
136
|
id: 'test',
|
|
@@ -13,8 +13,8 @@ import { assertArgument, invariant } from '@dxos/invariant';
|
|
|
13
13
|
import { DXN } from '@dxos/keys';
|
|
14
14
|
import { type Primitive } from '@dxos/util';
|
|
15
15
|
|
|
16
|
-
import { type
|
|
17
|
-
|
|
16
|
+
import { type Mutable } from '../common/proxy';
|
|
17
|
+
import { type AnyProperties, EntityKind, TypeId, getSchema } from '../common/types';
|
|
18
18
|
import { type AnnotationHelper, createAnnotationHelper } from './util';
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -87,16 +87,17 @@ export const getTypeDXNFromSpecifier = (input: Schema.Schema.All | string): DXN
|
|
|
87
87
|
|
|
88
88
|
/**
|
|
89
89
|
* Fully qualified globally unique typename.
|
|
90
|
-
* Example: `dxos.
|
|
91
|
-
*/
|
|
92
|
-
// TODO(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
90
|
+
* Example: `org.dxos.type.message`
|
|
91
|
+
*/
|
|
92
|
+
// TODO(wittjosiah): Factor out to DXN spec.
|
|
93
|
+
export const TypenameSchema = Schema.String.pipe(
|
|
94
|
+
Schema.pattern(
|
|
95
|
+
/^[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(\.[a-zA-Z]([a-zA-Z0-9]{0,62})?)$/,
|
|
96
|
+
),
|
|
97
|
+
).annotations({
|
|
98
|
+
description: 'Fully qualified globally unique typename in reverse-DNS form.',
|
|
99
|
+
example: 'org.dxos.type.message',
|
|
100
|
+
});
|
|
100
101
|
|
|
101
102
|
/**
|
|
102
103
|
* Semantic version format: `major.minor.patch`
|
|
@@ -175,7 +176,7 @@ export const getSchemaVersion = (schema: Schema.Schema.All): string | undefined
|
|
|
175
176
|
/**
|
|
176
177
|
* Gets the typename of the object without the version.
|
|
177
178
|
* Returns only the name portion, not the DXN.
|
|
178
|
-
* @example "example.
|
|
179
|
+
* @example "org.example.type.contact"
|
|
179
180
|
*
|
|
180
181
|
* @internal (use Obj.getTypename)
|
|
181
182
|
*/
|
|
@@ -207,7 +208,7 @@ export const setTypename = (obj: any, typename: DXN): void => {
|
|
|
207
208
|
/**
|
|
208
209
|
* @returns Object type as {@link DXN}.
|
|
209
210
|
* @returns undefined if the object doesn't have a type.
|
|
210
|
-
* @example `dxn:example.
|
|
211
|
+
* @example `dxn:com.example.type.person:1.0.0`
|
|
211
212
|
*
|
|
212
213
|
* @internal (use Obj.getTypeDXN)
|
|
213
214
|
*/
|
|
@@ -337,6 +338,7 @@ export const LabelAnnotation = createAnnotationHelper<string[]>(LabelAnnotationI
|
|
|
337
338
|
/**
|
|
338
339
|
* Returns the label for a given object based on {@link LabelAnnotationId}.
|
|
339
340
|
* Lower-level version that requires explicit schema parameter.
|
|
341
|
+
* Skips empty strings and whitespace-only strings, continuing to the next field.
|
|
340
342
|
*/
|
|
341
343
|
// TODO(burdon): Convert to JsonPath?
|
|
342
344
|
export const getLabelWithSchema = <S extends Schema.Schema.Any>(
|
|
@@ -352,7 +354,13 @@ export const getLabelWithSchema = <S extends Schema.Schema.Any>(
|
|
|
352
354
|
);
|
|
353
355
|
const value = getField(object, accessor as JsonPath);
|
|
354
356
|
switch (typeof value) {
|
|
355
|
-
case 'string':
|
|
357
|
+
case 'string': {
|
|
358
|
+
const trimmed = value.trim();
|
|
359
|
+
if (trimmed.length > 0) {
|
|
360
|
+
return value;
|
|
361
|
+
}
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
356
364
|
case 'number':
|
|
357
365
|
case 'boolean':
|
|
358
366
|
case 'bigint':
|
|
@@ -435,7 +443,6 @@ export const setDescriptionWithSchema = <S extends Schema.Schema.Any>(
|
|
|
435
443
|
* Identifies if a property should be included in a form or not.
|
|
436
444
|
* By default, all properties are included in forms, so this is opt-out.
|
|
437
445
|
*/
|
|
438
|
-
// TODO(burdon): UI concern.
|
|
439
446
|
export const FormInputAnnotationId = Symbol.for('@dxos/schema/annotation/FormInput');
|
|
440
447
|
export const FormInputAnnotation = createAnnotationHelper<boolean>(FormInputAnnotationId);
|
|
441
448
|
|
|
@@ -467,14 +474,14 @@ interface MakeAnnoationsProps<T> {
|
|
|
467
474
|
// TODO(wittjosiah): Comment.
|
|
468
475
|
export const makeUserAnnotation = <T>(props: MakeAnnoationsProps<T>): AnnotationHelper<T> => {
|
|
469
476
|
assertArgument(
|
|
470
|
-
|
|
477
|
+
/^[a-z][a-z0-9]*(\.[a-z][a-z0-9-]*){2,}$/.test(props.id),
|
|
471
478
|
'id',
|
|
472
|
-
'Annotation id must be in the FQN format (dxos.
|
|
479
|
+
'Annotation id must be in the FQN format (org.dxos.annotation.example).',
|
|
473
480
|
);
|
|
474
481
|
|
|
475
482
|
const getFromAst = (ast: SchemaAST.AST) =>
|
|
476
483
|
SchemaAST.getAnnotation<PropertyMetaAnnotation>(PropertyMetaAnnotationId)(ast).pipe(
|
|
477
|
-
Option.
|
|
484
|
+
Option.flatMap((meta) => Option.fromNullable(meta[props.id])),
|
|
478
485
|
Option.map(Schema.decodeUnknownSync(props.schema)),
|
|
479
486
|
);
|
|
480
487
|
|
|
@@ -485,3 +492,99 @@ export const makeUserAnnotation = <T>(props: MakeAnnoationsProps<T>): Annotation
|
|
|
485
492
|
PropertyMeta(props.id, Schema.encodeSync(props.schema)(value)) as <S extends Schema.Schema.Any>(schema: S) => S,
|
|
486
493
|
};
|
|
487
494
|
};
|
|
495
|
+
|
|
496
|
+
const IconAnnotationSchema = Schema.Struct({
|
|
497
|
+
/**
|
|
498
|
+
* Phosphor icon name (e.g., 'ph--user--regular', 'ph--cube--regular', 'ph--link--regular ', etc.)
|
|
499
|
+
*/
|
|
500
|
+
icon: Schema.String.pipe(Schema.pattern(/^ph--[a-z-]+--[a-z]+$/)),
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Color name.
|
|
504
|
+
*
|
|
505
|
+
* List of colors:
|
|
506
|
+
* - 'red'
|
|
507
|
+
* - 'orange'
|
|
508
|
+
* - 'amber'
|
|
509
|
+
* - 'yellow'
|
|
510
|
+
* - 'lime'
|
|
511
|
+
* - 'green'
|
|
512
|
+
* - 'emerald'
|
|
513
|
+
* - 'teal'
|
|
514
|
+
* - 'cyan'
|
|
515
|
+
* - 'violet'
|
|
516
|
+
* - 'purple'
|
|
517
|
+
* - 'fuchsia'
|
|
518
|
+
* - 'pink'
|
|
519
|
+
* - 'rose'
|
|
520
|
+
*/
|
|
521
|
+
|
|
522
|
+
hue: Schema.optional(Schema.String),
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
export interface IconAnnotation extends Schema.Schema.Type<typeof IconAnnotationSchema> {}
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Icon to render in the UI.
|
|
529
|
+
*/
|
|
530
|
+
export const IconAnnotation = makeUserAnnotation<IconAnnotation>({
|
|
531
|
+
id: 'org.dxos.annotation.icon',
|
|
532
|
+
schema: IconAnnotationSchema,
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Indicates that this entity's icon should be resolved from a property whose value is a `Ref`
|
|
537
|
+
* to another entity. Consumers (e.g. graph node builders) resolve the ref target and use that
|
|
538
|
+
* target's schema `IconAnnotation` in place of the static one declared on this schema.
|
|
539
|
+
*
|
|
540
|
+
* Useful for wrapper schemas that delegate their visual identity to a referenced sub-entity
|
|
541
|
+
* (e.g. a generic `Game` whose icon should come from its `variant` ref's typed state).
|
|
542
|
+
*/
|
|
543
|
+
export const IconFromRefAnnotation = makeUserAnnotation<string>({
|
|
544
|
+
id: 'org.dxos.annotation.icon.from-ref',
|
|
545
|
+
schema: Schema.String,
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Get the label of an entity.
|
|
550
|
+
* Accepts both reactive entities and snapshots.
|
|
551
|
+
*/
|
|
552
|
+
export const getLabel = (entity: AnyProperties): string | undefined => {
|
|
553
|
+
const schema = getSchema(entity);
|
|
554
|
+
if (schema != null) {
|
|
555
|
+
return getLabelWithSchema(schema, entity);
|
|
556
|
+
}
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Set the label of an entity.
|
|
561
|
+
* Must be called within an Obj.update or Relation.update callback.
|
|
562
|
+
*/
|
|
563
|
+
export const setLabel = (entity: Mutable<AnyProperties>, label: string) => {
|
|
564
|
+
const schema = getSchema(entity);
|
|
565
|
+
if (schema != null) {
|
|
566
|
+
setLabelWithSchema(schema, entity, label);
|
|
567
|
+
}
|
|
568
|
+
};
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* Get the description of an entity.
|
|
572
|
+
* Accepts both reactive entities and snapshots.
|
|
573
|
+
*/
|
|
574
|
+
export const getDescription = (entity: AnyProperties): string | undefined => {
|
|
575
|
+
const schema = getSchema(entity);
|
|
576
|
+
if (schema != null) {
|
|
577
|
+
return getDescriptionWithSchema(schema, entity);
|
|
578
|
+
}
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* Set the description of an entity.
|
|
583
|
+
* Must be called within an Obj.update or Relation.update callback.
|
|
584
|
+
*/
|
|
585
|
+
export const setDescription = (entity: Mutable<AnyProperties>, description: string) => {
|
|
586
|
+
const schema = getSchema(entity);
|
|
587
|
+
if (schema != null) {
|
|
588
|
+
setDescriptionWithSchema(schema, entity, description);
|
|
589
|
+
}
|
|
590
|
+
};
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import { getLabel } from './annotations';
|
|
5
|
+
import type { AnyEntity } from '../common/types';
|
|
6
|
+
import { getLabel, getTypename } from './annotations';
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* String comparison helper for sorting.
|
|
@@ -9,7 +9,7 @@ import * as SchemaAST from 'effect/SchemaAST';
|
|
|
9
9
|
import { assertArgument } from '@dxos/invariant';
|
|
10
10
|
import { DXN } from '@dxos/keys';
|
|
11
11
|
|
|
12
|
-
import { EntityKind } from '../types';
|
|
12
|
+
import { EntityKind } from '../common/types';
|
|
13
13
|
|
|
14
14
|
export interface AnnotationHelper<T> {
|
|
15
15
|
/**
|
|
@@ -6,8 +6,9 @@ import { invariant } from '@dxos/invariant';
|
|
|
6
6
|
import { type DXN } from '@dxos/keys';
|
|
7
7
|
import { assumeType } from '@dxos/util';
|
|
8
8
|
|
|
9
|
-
import
|
|
10
|
-
import type
|
|
9
|
+
import type { AnyEntity } from '../common/types';
|
|
10
|
+
import { type InternalObjectProps, ObjectDatabaseId } from './model';
|
|
11
|
+
import { getObjectDXN } from './util';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Get the DXN of an entity.
|
|
@@ -8,8 +8,8 @@ import type * as Types from 'effect/Types';
|
|
|
8
8
|
|
|
9
9
|
import { type ToMutable } from '@dxos/util';
|
|
10
10
|
|
|
11
|
-
import { type TypeMeta } from '../
|
|
12
|
-
import { type AnyEntity, type EntityKind, SchemaKindId } from '../types';
|
|
11
|
+
import { type TypeMeta } from '../Annotation';
|
|
12
|
+
import { type AnyEntity, type EntityKind, SchemaKindId } from '../common/types';
|
|
13
13
|
|
|
14
14
|
// TODO(burdon): Define Schema type for `typename` and use consistently for all DXN-like properties.
|
|
15
15
|
|
|
@@ -22,7 +22,9 @@ export interface EchoTypeSchema<
|
|
|
22
22
|
ExtraFields = {},
|
|
23
23
|
K extends EntityKind = EntityKind,
|
|
24
24
|
Fields extends Schema.Struct.Fields = Schema.Struct.Fields,
|
|
25
|
-
>
|
|
25
|
+
>
|
|
26
|
+
extends
|
|
27
|
+
TypeMeta,
|
|
26
28
|
Schema.AnnotableClass<
|
|
27
29
|
EchoTypeSchema<Self, ExtraFields, K, Fields>,
|
|
28
30
|
EchoTypeSchemaProps<Schema.Schema.Type<Self>, ExtraFields>,
|
|
@@ -31,7 +33,7 @@ export interface EchoTypeSchema<
|
|
|
31
33
|
> {
|
|
32
34
|
/**
|
|
33
35
|
* Schema kind key that marks this as an ECHO schema and indicates its kind.
|
|
34
|
-
* Makes EchoTypeSchema satisfy the Type.
|
|
36
|
+
* Makes EchoTypeSchema satisfy the Type.AnyObj or Type.Relation.Any type.
|
|
35
37
|
*/
|
|
36
38
|
readonly [SchemaKindId]: K;
|
|
37
39
|
|
|
@@ -14,58 +14,29 @@ import {
|
|
|
14
14
|
type ATTR_META,
|
|
15
15
|
type ATTR_PARENT,
|
|
16
16
|
type ATTR_TYPE,
|
|
17
|
+
ATTR_DELETED,
|
|
18
|
+
ATTR_RELATION_SOURCE,
|
|
19
|
+
ATTR_RELATION_TARGET,
|
|
20
|
+
ATTR_SELF_DXN,
|
|
17
21
|
EntityKind,
|
|
18
22
|
KindId,
|
|
19
23
|
type MetaId,
|
|
24
|
+
ObjectDatabaseId,
|
|
25
|
+
ObjectDeletedId,
|
|
20
26
|
type ObjectMeta,
|
|
27
|
+
ObjectVersionId,
|
|
21
28
|
type ParentId,
|
|
22
|
-
type SchemaId,
|
|
23
|
-
TypeId,
|
|
24
|
-
type Version,
|
|
25
|
-
} from '../types';
|
|
26
|
-
|
|
27
|
-
import {
|
|
28
|
-
type ATTR_RELATION_SOURCE,
|
|
29
|
-
type ATTR_RELATION_TARGET,
|
|
30
29
|
RelationSourceDXNId,
|
|
31
30
|
RelationSourceId,
|
|
32
31
|
RelationTargetDXNId,
|
|
33
32
|
RelationTargetId,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Property name for self DXN when object is serialized to JSON.
|
|
42
|
-
*/
|
|
43
|
-
export const ATTR_SELF_DXN = '@dxn';
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* DXN to the object itself.
|
|
47
|
-
*/
|
|
48
|
-
export const SelfDXNId = Symbol.for('@dxos/echo/DXN');
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Property name for deleted when object is serialized to JSON.
|
|
52
|
-
*/
|
|
53
|
-
export const ATTR_DELETED = '@deleted';
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Deletion marker.
|
|
57
|
-
*/
|
|
58
|
-
export const ObjectDeletedId = Symbol.for('@dxos/echo/Deleted');
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Object version accessor symbol.
|
|
62
|
-
*/
|
|
63
|
-
export const ObjectVersionId: unique symbol = Symbol.for('@dxos/echo/Version');
|
|
33
|
+
type SchemaId,
|
|
34
|
+
SelfDXNId,
|
|
35
|
+
TypeId,
|
|
36
|
+
type Version,
|
|
37
|
+
} from '../common/types';
|
|
64
38
|
|
|
65
|
-
|
|
66
|
-
* Object database accessor symbol.
|
|
67
|
-
*/
|
|
68
|
-
export const ObjectDatabaseId = Symbol.for('@dxos/echo/Database');
|
|
39
|
+
export { ATTR_DELETED, ATTR_SELF_DXN, ObjectDatabaseId, ObjectDeletedId, ObjectVersionId, SelfDXNId };
|
|
69
40
|
|
|
70
41
|
/**
|
|
71
42
|
* Internal runtime representation of an object.
|
|
@@ -95,6 +66,8 @@ export interface InternalObjectProps {
|
|
|
95
66
|
export interface ObjectMetaJSON {
|
|
96
67
|
keys: ForeignKey[];
|
|
97
68
|
tags?: string[];
|
|
69
|
+
key?: string;
|
|
70
|
+
version?: string;
|
|
98
71
|
}
|
|
99
72
|
|
|
100
73
|
/**
|
|
@@ -7,9 +7,8 @@ import * as SchemaAST from 'effect/SchemaAST';
|
|
|
7
7
|
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
9
9
|
|
|
10
|
-
import { type TypeAnnotation, TypeAnnotationId, type TypeMeta, makeTypeJsonSchemaAnnotation } from '../
|
|
11
|
-
import { EntityKind } from '../types';
|
|
12
|
-
|
|
10
|
+
import { type TypeAnnotation, TypeAnnotationId, type TypeMeta, makeTypeJsonSchemaAnnotation } from '../Annotation';
|
|
11
|
+
import { EntityKind } from '../common/types';
|
|
13
12
|
import { type EchoTypeSchema, makeEchoTypeSchema } from './entity';
|
|
14
13
|
|
|
15
14
|
/**
|