@dxos/echo 0.8.4-main.d05539e30a → 0.8.4-main.d9fc60f731
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 +4 -4
- package/dist/lib/neutral/Annotation.mjs +27 -6
- package/dist/lib/neutral/Database.mjs +6 -11
- package/dist/lib/neutral/Entity.mjs +25 -16
- package/dist/lib/neutral/Err.mjs +3 -3
- package/dist/lib/neutral/Feed.mjs +19 -17
- package/dist/lib/neutral/Filter.mjs +13 -13
- package/dist/lib/neutral/Format.mjs +23 -3
- package/dist/lib/neutral/JsonSchema.mjs +7 -8
- package/dist/lib/neutral/Key.mjs +9 -5
- package/dist/lib/neutral/Migration.mjs +11 -10
- package/dist/lib/neutral/Obj.mjs +21 -18
- package/dist/lib/neutral/Query.mjs +17 -17
- package/dist/lib/neutral/QueryResult.mjs +1 -1
- package/dist/lib/neutral/Ref.mjs +10 -11
- package/dist/lib/neutral/Registry.mjs +14 -0
- package/dist/lib/neutral/Relation.mjs +24 -23
- package/dist/lib/neutral/Scope.mjs +12 -0
- package/dist/lib/neutral/Tag.mjs +17 -14
- package/dist/lib/neutral/Type.mjs +52 -26
- package/dist/lib/neutral/chunk-3DKP2EIN.mjs +31 -0
- package/dist/lib/neutral/chunk-3DKP2EIN.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4BB4MFCN.mjs +154 -0
- package/dist/lib/neutral/chunk-4BB4MFCN.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-PT37DG2F.mjs → chunk-4SFPZJVA.mjs} +82 -74
- package/dist/lib/neutral/chunk-4SFPZJVA.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-APHSOTIX.mjs → chunk-4Z6GET2X.mjs} +3 -3
- package/dist/lib/neutral/{chunk-APHSOTIX.mjs.map → chunk-4Z6GET2X.mjs.map} +2 -2
- package/dist/lib/neutral/{chunk-7RVZT53K.mjs → chunk-7LOUAPYZ.mjs} +9 -5
- package/dist/lib/neutral/chunk-7LOUAPYZ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-BMB7IHGB.mjs → chunk-7OAFN3OX.mjs} +70 -57
- package/dist/lib/neutral/chunk-7OAFN3OX.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-MLS7U7AT.mjs → chunk-7PRCIDHH.mjs} +41 -28
- package/dist/lib/neutral/chunk-7PRCIDHH.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ZISMEVKD.mjs → chunk-BBFJWWAV.mjs} +6 -6
- package/dist/lib/neutral/chunk-BBFJWWAV.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ZFACXBY6.mjs → chunk-BDQGMDIX.mjs} +30 -34
- package/dist/lib/neutral/chunk-BDQGMDIX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-CGTI5MXO.mjs +36 -0
- package/dist/lib/neutral/chunk-CGTI5MXO.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-V72DY6LU.mjs → chunk-DKLUHO4T.mjs} +1 -1
- package/dist/lib/neutral/chunk-DKLUHO4T.mjs.map +7 -0
- package/dist/lib/neutral/chunk-DMN2CKPX.mjs +93 -0
- package/dist/lib/neutral/chunk-DMN2CKPX.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-QRZ2I3ZM.mjs → chunk-G6CFWUYH.mjs} +2 -2
- package/dist/lib/neutral/chunk-H26LSXVJ.mjs +653 -0
- package/dist/lib/neutral/chunk-H26LSXVJ.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-N7VOEPSV.mjs → chunk-J3MNM65T.mjs} +9 -9
- package/dist/lib/neutral/chunk-J3MNM65T.mjs.map +7 -0
- package/dist/lib/neutral/chunk-JE7AOSWF.mjs +247 -0
- package/dist/lib/neutral/chunk-JE7AOSWF.mjs.map +7 -0
- package/dist/lib/neutral/chunk-LAF3LSWI.mjs +379 -0
- package/dist/lib/neutral/chunk-LAF3LSWI.mjs.map +7 -0
- package/dist/lib/neutral/chunk-LMNRFOVB.mjs +108 -0
- package/dist/lib/neutral/chunk-LMNRFOVB.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-N4B7FHQT.mjs → chunk-O6BH7EPN.mjs} +30 -3
- package/dist/lib/neutral/chunk-O6BH7EPN.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-Q7ZL2P5H.mjs → chunk-OIYW7R2G.mjs} +62 -46
- package/dist/lib/neutral/chunk-OIYW7R2G.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-G54OX4IX.mjs → chunk-OYUG4FHF.mjs} +527 -847
- package/dist/lib/neutral/chunk-OYUG4FHF.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-J54QMAKF.mjs → chunk-Q5FKCVBC.mjs} +64 -59
- package/dist/lib/neutral/chunk-Q5FKCVBC.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-FIWO2FZK.mjs → chunk-Q62IHV2N.mjs} +12 -7
- package/dist/lib/neutral/chunk-Q62IHV2N.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-SCPFDS2E.mjs → chunk-QVJDDG44.mjs} +65 -34
- package/dist/lib/neutral/chunk-QVJDDG44.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-TRPZU2HV.mjs → chunk-TFEWTY5A.mjs} +155 -129
- package/dist/lib/neutral/chunk-TFEWTY5A.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-44HT3MEC.mjs → chunk-VKWOFXT2.mjs} +22 -2
- package/dist/lib/neutral/{chunk-44HT3MEC.mjs.map → chunk-VKWOFXT2.mjs.map} +1 -1
- package/dist/lib/neutral/{chunk-APJKDGFL.mjs → chunk-ZACMEAYV.mjs} +24 -24
- package/dist/lib/neutral/chunk-ZACMEAYV.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +50 -40
- package/dist/lib/neutral/internal/index.mjs +125 -64
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/testing/index.mjs +88 -99
- package/dist/lib/neutral/testing/index.mjs.map +3 -3
- package/dist/types/src/Annotation.d.ts +108 -4
- package/dist/types/src/Annotation.d.ts.map +1 -1
- package/dist/types/src/Annotation.test.d.ts +2 -0
- package/dist/types/src/Annotation.test.d.ts.map +1 -0
- package/dist/types/src/Collection.d.ts +2 -3
- package/dist/types/src/Collection.d.ts.map +1 -1
- package/dist/types/src/Database.d.ts +50 -30
- package/dist/types/src/Database.d.ts.map +1 -1
- package/dist/types/src/Dataset.d.ts +16 -6
- package/dist/types/src/Dataset.d.ts.map +1 -1
- package/dist/types/src/Entity.d.ts +89 -19
- package/dist/types/src/Entity.d.ts.map +1 -1
- package/dist/types/src/Err.d.ts +9 -9
- package/dist/types/src/Err.d.ts.map +1 -1
- package/dist/types/src/Feed.d.ts +35 -12
- package/dist/types/src/Feed.d.ts.map +1 -1
- package/dist/types/src/Filter.d.ts +21 -8
- package/dist/types/src/Filter.d.ts.map +1 -1
- package/dist/types/src/Hypergraph.d.ts +13 -8
- package/dist/types/src/Hypergraph.d.ts.map +1 -1
- package/dist/types/src/Json.d.ts.map +1 -1
- package/dist/types/src/JsonSchema.d.ts +1 -1
- package/dist/types/src/JsonSchema.d.ts.map +1 -1
- package/dist/types/src/Key.d.ts +1 -1
- package/dist/types/src/Key.d.ts.map +1 -1
- package/dist/types/src/Migration.d.ts +15 -12
- package/dist/types/src/Migration.d.ts.map +1 -1
- package/dist/types/src/Obj.d.ts +69 -40
- package/dist/types/src/Obj.d.ts.map +1 -1
- package/dist/types/src/Query.d.ts +24 -10
- package/dist/types/src/Query.d.ts.map +1 -1
- package/dist/types/src/QueryResult.d.ts +9 -0
- package/dist/types/src/QueryResult.d.ts.map +1 -1
- package/dist/types/src/Ref.d.ts +15 -8
- package/dist/types/src/Ref.d.ts.map +1 -1
- package/dist/types/src/Registry.d.ts +131 -0
- package/dist/types/src/Registry.d.ts.map +1 -0
- package/dist/types/src/Relation.d.ts +55 -26
- package/dist/types/src/Relation.d.ts.map +1 -1
- package/dist/types/src/Scope.d.ts +34 -0
- package/dist/types/src/Scope.d.ts.map +1 -0
- package/dist/types/src/StateMap.d.ts +32 -0
- package/dist/types/src/StateMap.d.ts.map +1 -0
- package/dist/types/src/StateMap.test.d.ts +2 -0
- package/dist/types/src/StateMap.test.d.ts.map +1 -0
- package/dist/types/src/Tag.d.ts +19 -3
- package/dist/types/src/Tag.d.ts.map +1 -1
- package/dist/types/src/TagIndex.d.ts +36 -0
- package/dist/types/src/TagIndex.d.ts.map +1 -0
- package/dist/types/src/TagIndex.test.d.ts +2 -0
- package/dist/types/src/TagIndex.test.d.ts.map +1 -0
- package/dist/types/src/Tagging.d.ts +31 -0
- package/dist/types/src/Tagging.d.ts.map +1 -0
- package/dist/types/src/Type.d.ts +356 -95
- package/dist/types/src/Type.d.ts.map +1 -1
- package/dist/types/src/View.d.ts +1 -4
- package/dist/types/src/View.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +6 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/annotations.d.ts +68 -36
- package/dist/types/src/internal/Annotation/annotations.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/dictionary.d.ts +24 -0
- package/dist/types/src/internal/Annotation/dictionary.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/entity-dictionary.d.ts +14 -0
- package/dist/types/src/internal/Annotation/entity-dictionary.d.ts.map +1 -0
- package/dist/types/src/internal/Annotation/index.d.ts +4 -2
- package/dist/types/src/internal/Annotation/index.d.ts.map +1 -1
- package/dist/types/src/internal/Annotation/util.d.ts +13 -4
- package/dist/types/src/internal/Annotation/util.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/api.d.ts +3 -3
- package/dist/types/src/internal/Entity/api.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/entity.d.ts +72 -8
- package/dist/types/src/internal/Entity/entity.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/guard.d.ts +10 -0
- package/dist/types/src/internal/Entity/guard.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/index.d.ts +2 -0
- package/dist/types/src/internal/Entity/index.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/model.d.ts +18 -17
- package/dist/types/src/internal/Entity/model.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/object.d.ts +3 -3
- package/dist/types/src/internal/Entity/object.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/relation.d.ts +30 -7
- package/dist/types/src/internal/Entity/relation.d.ts.map +1 -1
- package/dist/types/src/internal/Entity/type-kind.d.ts +24 -0
- package/dist/types/src/internal/Entity/type-kind.d.ts.map +1 -0
- package/dist/types/src/internal/Entity/type-uri.d.ts +25 -0
- package/dist/types/src/internal/Entity/type-uri.d.ts.map +1 -0
- package/dist/types/src/internal/Format/date.d.ts.map +1 -1
- package/dist/types/src/internal/Format/format.d.ts +3 -2
- package/dist/types/src/internal/Format/format.d.ts.map +1 -1
- package/dist/types/src/internal/Format/index.d.ts +2 -2
- package/dist/types/src/internal/Format/index.d.ts.map +1 -1
- package/dist/types/src/internal/Format/object.d.ts +3 -1
- package/dist/types/src/internal/Format/object.d.ts.map +1 -1
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts +2 -1
- package/dist/types/src/internal/JsonSchema/json-schema.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/clone.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/create-object.d.ts +11 -12
- package/dist/types/src/internal/Obj/create-object.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/index.d.ts +0 -1
- package/dist/types/src/internal/Obj/index.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/json-serializer.d.ts +8 -8
- package/dist/types/src/internal/Obj/json-serializer.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/snapshot.d.ts.map +1 -1
- package/dist/types/src/internal/Obj/typed-object.d.ts +1 -1
- package/dist/types/src/internal/Query.d.ts.map +1 -1
- package/dist/types/src/internal/Ref/ref-array.d.ts +2 -2
- package/dist/types/src/internal/Ref/ref.d.ts +29 -19
- package/dist/types/src/internal/Ref/ref.d.ts.map +1 -1
- package/dist/types/src/internal/Type/index.d.ts +1 -2
- package/dist/types/src/internal/Type/index.d.ts.map +1 -1
- package/dist/types/src/internal/Type/manipulation.d.ts +0 -1
- package/dist/types/src/internal/Type/manipulation.d.ts.map +1 -1
- package/dist/types/src/internal/Type/type-schema.d.ts +52 -0
- package/dist/types/src/internal/Type/type-schema.d.ts.map +1 -0
- package/dist/types/src/internal/common/api/meta.d.ts +11 -8
- package/dist/types/src/internal/common/api/meta.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/json-serializer.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/make-object.d.ts +11 -5
- package/dist/types/src/internal/common/proxy/make-object.d.ts.map +1 -1
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts +18 -2
- package/dist/types/src/internal/common/proxy/typed-handler.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/base.d.ts +4 -4
- package/dist/types/src/internal/common/types/entity.d.ts +59 -2
- package/dist/types/src/internal/common/types/entity.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/index.d.ts +1 -1
- package/dist/types/src/internal/common/types/index.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/meta.d.ts +13 -7
- package/dist/types/src/internal/common/types/meta.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/model-symbols.d.ts +8 -4
- package/dist/types/src/internal/common/types/model-symbols.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/typename.d.ts +7 -0
- package/dist/types/src/internal/common/types/typename.d.ts.map +1 -1
- package/dist/types/src/internal/common/types/well-known-types.d.ts +11 -0
- package/dist/types/src/internal/common/types/well-known-types.d.ts.map +1 -0
- package/dist/types/src/internal/index.d.ts +1 -0
- package/dist/types/src/internal/index.d.ts.map +1 -1
- package/dist/types/src/testing/test-schema.d.ts +32 -38
- package/dist/types/src/testing/test-schema.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts +5 -3
- package/dist/types/src/testing/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +21 -23
- package/src/Annotation.test.ts +439 -0
- package/src/Annotation.ts +151 -4
- package/src/Collection.ts +5 -9
- package/src/Database.ts +86 -61
- package/src/Dataset.ts +10 -2
- package/src/Entity.test.ts +116 -6
- package/src/Entity.ts +116 -23
- package/src/Err.ts +4 -4
- package/src/Feed.ts +57 -40
- package/src/Filter.ts +49 -27
- package/src/Hypergraph.ts +13 -8
- package/src/Json.test.ts +4 -4
- package/src/Json.ts +7 -6
- package/src/Key.ts +1 -1
- package/src/Migration.ts +27 -19
- package/src/Obj.test.ts +19 -8
- package/src/Obj.ts +131 -70
- package/src/Query.test.ts +147 -151
- package/src/Query.ts +133 -75
- package/src/QueryResult.ts +11 -0
- package/src/Ref.ts +21 -5
- package/src/Registry.ts +155 -0
- package/src/Relation.test.ts +10 -10
- package/src/Relation.ts +89 -52
- package/src/Scope.ts +50 -0
- package/src/StateMap.test.ts +56 -0
- package/src/StateMap.ts +99 -0
- package/src/Tag.md +88 -0
- package/src/Tag.ts +49 -6
- package/src/TagIndex.test.ts +57 -0
- package/src/TagIndex.ts +110 -0
- package/src/Tagging.ts +83 -0
- package/src/Type.test.ts +223 -18
- package/src/Type.ts +601 -131
- package/src/View.ts +10 -19
- package/src/index.ts +6 -4
- package/src/internal/Annotation/annotations.test.ts +31 -11
- package/src/internal/Annotation/annotations.ts +122 -103
- package/src/internal/Annotation/dictionary.ts +47 -0
- package/src/internal/Annotation/entity-dictionary.ts +40 -0
- package/src/internal/Annotation/index.ts +4 -2
- package/src/internal/Annotation/util.ts +17 -8
- package/src/internal/Entity/api.ts +7 -7
- package/src/internal/Entity/entity.ts +196 -47
- package/src/internal/Entity/guard.ts +26 -0
- package/src/internal/Entity/index.ts +2 -0
- package/src/internal/Entity/model.ts +35 -28
- package/src/internal/Entity/object.ts +21 -5
- package/src/internal/Entity/relation.ts +68 -34
- package/src/internal/Entity/type-kind.ts +75 -0
- package/src/internal/Entity/type-uri.ts +87 -0
- package/src/internal/Entity/util.ts +10 -9
- package/src/internal/Format/date.ts +0 -4
- package/src/internal/Format/format.test.ts +21 -0
- package/src/internal/Format/index.ts +2 -3
- package/src/internal/Format/object.ts +21 -4
- package/src/internal/Format/types.ts +1 -1
- package/src/internal/JsonSchema/annotations.ts +1 -1
- package/src/internal/JsonSchema/json-schema.test.ts +54 -140
- package/src/internal/JsonSchema/json-schema.ts +44 -30
- package/src/internal/Obj/clone.ts +9 -4
- package/src/internal/Obj/create-object.test.ts +12 -10
- package/src/internal/Obj/create-object.ts +67 -22
- package/src/internal/Obj/index.ts +0 -1
- package/src/internal/Obj/inspect.ts +4 -3
- package/src/internal/Obj/json-serializer.test.ts +100 -21
- package/src/internal/Obj/json-serializer.ts +93 -38
- package/src/internal/Obj/set-value.test.ts +7 -30
- package/src/internal/Obj/snapshot.ts +11 -4
- package/src/internal/Obj/typed-object.test.ts +9 -11
- package/src/internal/Obj/typed-object.ts +1 -1
- package/src/internal/Query.ts +14 -11
- package/src/internal/Ref/ref-array.ts +3 -3
- package/src/internal/Ref/ref.test.ts +17 -26
- package/src/internal/Ref/ref.ts +107 -59
- package/src/internal/Type/compose.test.ts +3 -1
- package/src/internal/Type/index.ts +1 -2
- package/src/internal/Type/manipulation.ts +0 -25
- package/src/internal/Type/type-schema.ts +60 -0
- package/src/internal/common/README.md +1 -1
- package/src/internal/common/api/meta.ts +16 -14
- package/src/internal/common/proxy/change.test.ts +35 -27
- package/src/internal/common/proxy/handler.test.ts +1 -1
- package/src/internal/common/proxy/json-serializer.ts +26 -16
- package/src/internal/common/proxy/make-object.ts +43 -20
- package/src/internal/common/proxy/ownership.ts +2 -2
- package/src/internal/common/proxy/schema.test.ts +48 -86
- package/src/internal/common/proxy/typed-handler.test.ts +12 -11
- package/src/internal/common/proxy/typed-handler.ts +71 -9
- package/src/internal/common/proxy/typed-object.test.ts +15 -27
- package/src/internal/common/types/base.ts +4 -4
- package/src/internal/common/types/entity.ts +80 -1
- package/src/internal/common/types/index.ts +6 -1
- package/src/internal/common/types/meta.ts +37 -14
- package/src/internal/common/types/model-symbols.ts +16 -4
- package/src/internal/common/types/typename.ts +39 -3
- package/src/internal/common/types/well-known-types.ts +15 -0
- package/src/internal/index.ts +5 -0
- package/src/testing/api.test.ts +15 -9
- package/src/testing/test-data.ts +24 -24
- package/src/testing/test-schema.ts +22 -58
- package/src/testing/util.ts +14 -11
- package/dist/lib/neutral/Extension.mjs +0 -18
- package/dist/lib/neutral/SchemaRegistry.mjs +0 -2
- package/dist/lib/neutral/chunk-5SL5LDLD.mjs +0 -47
- package/dist/lib/neutral/chunk-5SL5LDLD.mjs.map +0 -7
- package/dist/lib/neutral/chunk-7RVZT53K.mjs.map +0 -7
- package/dist/lib/neutral/chunk-APJKDGFL.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BICZKPQG.mjs +0 -7
- package/dist/lib/neutral/chunk-BICZKPQG.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BMB7IHGB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-FIWO2FZK.mjs.map +0 -7
- package/dist/lib/neutral/chunk-G54OX4IX.mjs.map +0 -7
- package/dist/lib/neutral/chunk-GWFFC34K.mjs +0 -50
- package/dist/lib/neutral/chunk-GWFFC34K.mjs.map +0 -7
- package/dist/lib/neutral/chunk-I2DARWPX.mjs +0 -128
- package/dist/lib/neutral/chunk-I2DARWPX.mjs.map +0 -7
- package/dist/lib/neutral/chunk-J54QMAKF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-MGSQGHOD.mjs +0 -206
- package/dist/lib/neutral/chunk-MGSQGHOD.mjs.map +0 -7
- package/dist/lib/neutral/chunk-MLS7U7AT.mjs.map +0 -7
- package/dist/lib/neutral/chunk-N4B7FHQT.mjs.map +0 -7
- package/dist/lib/neutral/chunk-N7VOEPSV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-PSZBLH53.mjs +0 -81
- package/dist/lib/neutral/chunk-PSZBLH53.mjs.map +0 -7
- package/dist/lib/neutral/chunk-PT37DG2F.mjs.map +0 -7
- package/dist/lib/neutral/chunk-Q2KKKJSV.mjs +0 -56
- package/dist/lib/neutral/chunk-Q2KKKJSV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-Q7ZL2P5H.mjs.map +0 -7
- package/dist/lib/neutral/chunk-SCPFDS2E.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TNBK56IN.mjs +0 -350
- package/dist/lib/neutral/chunk-TNBK56IN.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TRPZU2HV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-V72DY6LU.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ZFACXBY6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ZISMEVKD.mjs.map +0 -7
- package/dist/types/src/Extension.d.ts +0 -80
- package/dist/types/src/Extension.d.ts.map +0 -1
- package/dist/types/src/Extension.test.d.ts +0 -2
- package/dist/types/src/Extension.test.d.ts.map +0 -1
- package/dist/types/src/SchemaRegistry.d.ts +0 -84
- package/dist/types/src/SchemaRegistry.d.ts.map +0 -1
- package/dist/types/src/internal/Obj/ids.d.ts +0 -6
- package/dist/types/src/internal/Obj/ids.d.ts.map +0 -1
- package/dist/types/src/internal/Type/echo-schema.d.ts +0 -181
- package/dist/types/src/internal/Type/echo-schema.d.ts.map +0 -1
- package/dist/types/src/internal/Type/persistent-schema.d.ts +0 -20
- package/dist/types/src/internal/Type/persistent-schema.d.ts.map +0 -1
- package/src/Extension.test.ts +0 -235
- package/src/Extension.ts +0 -122
- package/src/SchemaRegistry.ts +0 -106
- package/src/internal/Obj/ids.ts +0 -12
- package/src/internal/Type/echo-schema.ts +0 -423
- package/src/internal/Type/persistent-schema.ts +0 -33
- /package/dist/lib/neutral/{Extension.mjs.map → Registry.mjs.map} +0 -0
- /package/dist/lib/neutral/{SchemaRegistry.mjs.map → Scope.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-QRZ2I3ZM.mjs.map → chunk-G6CFWUYH.mjs.map} +0 -0
|
@@ -1,64 +1,63 @@
|
|
|
1
|
-
import "../chunk-
|
|
2
|
-
import "../chunk-
|
|
3
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-LAF3LSWI.mjs";
|
|
2
|
+
import "../chunk-DKLUHO4T.mjs";
|
|
3
|
+
import "../chunk-OIYW7R2G.mjs";
|
|
4
|
+
import "../chunk-LMNRFOVB.mjs";
|
|
4
5
|
import "../chunk-TTCSATUD.mjs";
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import {
|
|
15
|
-
Type_exports,
|
|
16
|
-
object,
|
|
17
|
-
relation
|
|
18
|
-
} from "../chunk-PSZBLH53.mjs";
|
|
19
|
-
import "../chunk-APJKDGFL.mjs";
|
|
6
|
+
import "../chunk-7LOUAPYZ.mjs";
|
|
7
|
+
import "../chunk-Q62IHV2N.mjs";
|
|
8
|
+
import "../chunk-BDQGMDIX.mjs";
|
|
9
|
+
import "../chunk-ZACMEAYV.mjs";
|
|
10
|
+
import "../chunk-VKWOFXT2.mjs";
|
|
11
|
+
import "../chunk-4SFPZJVA.mjs";
|
|
12
|
+
import "../chunk-3DKP2EIN.mjs";
|
|
13
|
+
import "../chunk-CGTI5MXO.mjs";
|
|
14
|
+
import "../chunk-G6CFWUYH.mjs";
|
|
20
15
|
import {
|
|
21
16
|
Unknown
|
|
22
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-Q5FKCVBC.mjs";
|
|
23
18
|
import {
|
|
24
19
|
Ref
|
|
25
|
-
} from "../chunk-
|
|
26
|
-
import "../chunk-
|
|
20
|
+
} from "../chunk-J3MNM65T.mjs";
|
|
21
|
+
import "../chunk-QVJDDG44.mjs";
|
|
22
|
+
import {
|
|
23
|
+
Type_exports,
|
|
24
|
+
makeObject as makeObject2,
|
|
25
|
+
makeRelation
|
|
26
|
+
} from "../chunk-JE7AOSWF.mjs";
|
|
27
27
|
import {
|
|
28
|
-
|
|
29
|
-
PersistentSchema,
|
|
28
|
+
TypeSchema,
|
|
30
29
|
makeObject,
|
|
31
30
|
subscribe
|
|
32
|
-
} from "../chunk-
|
|
33
|
-
import "../chunk-
|
|
31
|
+
} from "../chunk-OYUG4FHF.mjs";
|
|
32
|
+
import "../chunk-4Z6GET2X.mjs";
|
|
34
33
|
import {
|
|
35
34
|
toJsonSchema
|
|
36
|
-
} from "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
35
|
+
} from "../chunk-7PRCIDHH.mjs";
|
|
36
|
+
import "../chunk-TFEWTY5A.mjs";
|
|
37
|
+
import "../chunk-DMN2CKPX.mjs";
|
|
38
|
+
import "../chunk-4BB4MFCN.mjs";
|
|
39
|
+
import "../chunk-7OAFN3OX.mjs";
|
|
41
40
|
import {
|
|
42
41
|
getSchemaTypename
|
|
43
|
-
} from "../chunk-
|
|
44
|
-
import
|
|
45
|
-
|
|
42
|
+
} from "../chunk-H26LSXVJ.mjs";
|
|
43
|
+
import {
|
|
44
|
+
getStaticTypeSchema
|
|
45
|
+
} from "../chunk-O6BH7EPN.mjs";
|
|
46
|
+
import "../chunk-BBFJWWAV.mjs";
|
|
46
47
|
import "../chunk-J5LGTIGS.mjs";
|
|
47
48
|
|
|
48
49
|
// src/testing/test-data.ts
|
|
49
|
-
import { DatabaseDirectory,
|
|
50
|
-
import {
|
|
50
|
+
import { DatabaseDirectory, EntityStructure } from "@dxos/echo-protocol";
|
|
51
|
+
import { EID, EntityId, PublicKey } from "@dxos/keys";
|
|
51
52
|
|
|
52
53
|
// src/testing/test-schema.ts
|
|
53
54
|
import * as Schema from "effect/Schema";
|
|
55
|
+
import { DXN } from "@dxos/keys";
|
|
54
56
|
(function(TestSchema2) {
|
|
55
57
|
TestSchema2.Expando = Schema.Struct({}, {
|
|
56
58
|
key: Schema.String,
|
|
57
59
|
value: Schema.Any
|
|
58
|
-
}).pipe(
|
|
59
|
-
typename: "com.example.type.expando",
|
|
60
|
-
version: "0.1.0"
|
|
61
|
-
}));
|
|
60
|
+
}).pipe(makeObject2(DXN.make("com.example.type.expando", "0.1.0")));
|
|
62
61
|
const Nested = Schema.Struct({
|
|
63
62
|
field: Schema.String
|
|
64
63
|
});
|
|
@@ -87,29 +86,20 @@ import * as Schema from "effect/Schema";
|
|
|
87
86
|
classInstance: Schema.instanceOf(TestClass),
|
|
88
87
|
other: Schema.Any
|
|
89
88
|
}).pipe(Schema.partial);
|
|
90
|
-
TestSchema2.Example = TestSchema2.ExampleSchema.pipe(
|
|
91
|
-
typename: "com.example.type.example",
|
|
92
|
-
version: "0.1.0"
|
|
93
|
-
}));
|
|
89
|
+
TestSchema2.Example = TestSchema2.ExampleSchema.pipe(makeObject2(DXN.make("com.example.type.example", "0.1.0")));
|
|
94
90
|
TestSchema2.MessageStruct = Schema.Struct({
|
|
95
91
|
// TODO(burdon): Support S.Date; Custom Timestamp (with defaults).
|
|
96
92
|
// TODO(burdon): Support defaults (update create and create).
|
|
97
93
|
timestamp: Schema.String.pipe(Schema.propertySignature, Schema.withConstructorDefault(() => (/* @__PURE__ */ new Date()).toISOString()))
|
|
98
94
|
});
|
|
99
|
-
TestSchema2.Message = TestSchema2.MessageStruct.pipe(
|
|
100
|
-
typename: "com.example.type.message",
|
|
101
|
-
version: "0.1.0"
|
|
102
|
-
}));
|
|
95
|
+
TestSchema2.Message = TestSchema2.MessageStruct.pipe(makeObject2(DXN.make("com.example.type.message", "0.1.0")));
|
|
103
96
|
TestSchema2.Organization = Schema.Struct({
|
|
104
97
|
name: Schema.String,
|
|
105
98
|
properties: Schema.optional(Schema.Record({
|
|
106
99
|
key: Schema.String,
|
|
107
100
|
value: Schema.String
|
|
108
101
|
}))
|
|
109
|
-
}).pipe(
|
|
110
|
-
typename: "com.example.type.organization",
|
|
111
|
-
version: "0.1.0"
|
|
112
|
-
}));
|
|
102
|
+
}).pipe(makeObject2(DXN.make("com.example.type.organization", "0.1.0")));
|
|
113
103
|
TestSchema2.Person = Schema.Struct({
|
|
114
104
|
name: Schema.String,
|
|
115
105
|
username: Schema.String,
|
|
@@ -130,10 +120,7 @@ import * as Schema from "effect/Schema";
|
|
|
130
120
|
label: Schema.String,
|
|
131
121
|
value: Schema.String
|
|
132
122
|
}).pipe(Schema.Array, Schema.optional)
|
|
133
|
-
}).pipe(Schema.partial,
|
|
134
|
-
typename: "com.example.type.person",
|
|
135
|
-
version: "0.1.0"
|
|
136
|
-
}));
|
|
123
|
+
}).pipe(Schema.partial, makeObject2(DXN.make("com.example.type.person", "0.1.0")));
|
|
137
124
|
TestSchema2.Task = Schema.Struct({
|
|
138
125
|
title: Schema.optional(Schema.String),
|
|
139
126
|
deadline: Schema.optional(Schema.String),
|
|
@@ -142,22 +129,17 @@ import * as Schema from "effect/Schema";
|
|
|
142
129
|
previous: Schema.optional(Schema.suspend(() => Ref(TestSchema2.Task))),
|
|
143
130
|
subTasks: Schema.optional(Schema.Array(Schema.suspend(() => Ref(TestSchema2.Task)))),
|
|
144
131
|
description: Schema.optional(Schema.String)
|
|
145
|
-
}).pipe(Schema.partial,
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}));
|
|
149
|
-
TestSchema2.HasManager = Schema.Struct({}).pipe(relation({
|
|
150
|
-
typename: "com.example.type.has-manager",
|
|
151
|
-
version: "0.1.0",
|
|
132
|
+
}).pipe(Schema.partial, makeObject2(DXN.make("com.example.type.task", "0.1.0")));
|
|
133
|
+
TestSchema2.HasManager = Schema.Struct({}).pipe(makeRelation({
|
|
134
|
+
dxn: DXN.make("com.example.type.hasManager", "0.1.0"),
|
|
152
135
|
source: TestSchema2.Person,
|
|
153
136
|
target: TestSchema2.Person
|
|
154
137
|
}));
|
|
155
138
|
TestSchema2.EmployedBy = Schema.Struct({
|
|
156
139
|
role: Schema.String,
|
|
157
140
|
since: Schema.optional(Schema.String)
|
|
158
|
-
}).pipe(
|
|
159
|
-
|
|
160
|
-
version: "0.1.0",
|
|
141
|
+
}).pipe(makeRelation({
|
|
142
|
+
dxn: DXN.make("com.example.type.employedBy", "0.1.0"),
|
|
161
143
|
source: TestSchema2.Person,
|
|
162
144
|
target: TestSchema2.Organization
|
|
163
145
|
}));
|
|
@@ -174,10 +156,7 @@ import * as Schema from "effect/Schema";
|
|
|
174
156
|
contacts: Schema.Array(Ref(TestSchema2.Person)),
|
|
175
157
|
type: Schema.Enums(TestSchema2.RecordType)
|
|
176
158
|
})))
|
|
177
|
-
}).pipe(Schema.partial,
|
|
178
|
-
typename: "com.example.type.container",
|
|
179
|
-
version: "0.1.0"
|
|
180
|
-
}));
|
|
159
|
+
}).pipe(Schema.partial, makeObject2(DXN.make("com.example.type.container", "0.1.0")));
|
|
181
160
|
})(TestSchema || (TestSchema = {}));
|
|
182
161
|
var TestSchema;
|
|
183
162
|
|
|
@@ -203,8 +182,8 @@ var PEOPLE = {
|
|
|
203
182
|
cachedPeopleAlice = DatabaseDirectory.make({
|
|
204
183
|
spaceKey: getSpaceKeyHex(),
|
|
205
184
|
objects: {
|
|
206
|
-
[
|
|
207
|
-
type: Type_exports.
|
|
185
|
+
[EntityId.random()]: EntityStructure.makeObject({
|
|
186
|
+
type: Type_exports.getURI(TestSchema.Person),
|
|
208
187
|
data: {
|
|
209
188
|
name: "Alice"
|
|
210
189
|
}
|
|
@@ -219,8 +198,8 @@ var PEOPLE = {
|
|
|
219
198
|
cachedPeopleBob = DatabaseDirectory.make({
|
|
220
199
|
spaceKey: getSpaceKeyHex(),
|
|
221
200
|
objects: {
|
|
222
|
-
[
|
|
223
|
-
type: Type_exports.
|
|
201
|
+
[EntityId.random()]: EntityStructure.makeObject({
|
|
202
|
+
type: Type_exports.getURI(TestSchema.Person),
|
|
224
203
|
data: {
|
|
225
204
|
name: "Bob"
|
|
226
205
|
}
|
|
@@ -237,8 +216,8 @@ var ORGS = {
|
|
|
237
216
|
cachedOrgsDxos = DatabaseDirectory.make({
|
|
238
217
|
spaceKey: getSpaceKeyHex(),
|
|
239
218
|
objects: {
|
|
240
|
-
[
|
|
241
|
-
type: Type_exports.
|
|
219
|
+
[EntityId.random()]: EntityStructure.makeObject({
|
|
220
|
+
type: Type_exports.getURI(TestSchema.Organization),
|
|
242
221
|
data: {
|
|
243
222
|
name: "DXOS",
|
|
244
223
|
founded: "2023"
|
|
@@ -254,8 +233,8 @@ var ORGS = {
|
|
|
254
233
|
cachedOrgsCyberdyne = DatabaseDirectory.make({
|
|
255
234
|
spaceKey: getSpaceKeyHex(),
|
|
256
235
|
objects: {
|
|
257
|
-
[
|
|
258
|
-
type: Type_exports.
|
|
236
|
+
[EntityId.random()]: EntityStructure.makeObject({
|
|
237
|
+
type: Type_exports.getURI(TestSchema.Organization),
|
|
259
238
|
data: {
|
|
260
239
|
name: "Cyberdyne Systems",
|
|
261
240
|
founded: "1984"
|
|
@@ -273,13 +252,17 @@ var WORKS_FOR = {
|
|
|
273
252
|
cachedWorksFredCyberdyne = DatabaseDirectory.make({
|
|
274
253
|
spaceKey: getSpaceKeyHex(),
|
|
275
254
|
objects: {
|
|
276
|
-
[
|
|
277
|
-
type: Type_exports.
|
|
255
|
+
[EntityId.random()]: EntityStructure.makeRelation({
|
|
256
|
+
type: Type_exports.getURI(TestSchema.EmployedBy),
|
|
278
257
|
source: {
|
|
279
|
-
"/":
|
|
258
|
+
"/": EID.make({
|
|
259
|
+
entityId: Object.keys(PEOPLE.bob.objects)[0]
|
|
260
|
+
})
|
|
280
261
|
},
|
|
281
262
|
target: {
|
|
282
|
-
"/":
|
|
263
|
+
"/": EID.make({
|
|
264
|
+
entityId: Object.keys(ORGS.cyberdyne.objects)[0]
|
|
265
|
+
})
|
|
283
266
|
},
|
|
284
267
|
data: {
|
|
285
268
|
since: "2020",
|
|
@@ -296,13 +279,17 @@ var WORKS_FOR = {
|
|
|
296
279
|
cachedWorksAliceAperture = DatabaseDirectory.make({
|
|
297
280
|
spaceKey: getSpaceKeyHex(),
|
|
298
281
|
objects: {
|
|
299
|
-
[
|
|
300
|
-
type: Type_exports.
|
|
282
|
+
[EntityId.random()]: EntityStructure.makeRelation({
|
|
283
|
+
type: Type_exports.getURI(TestSchema.EmployedBy),
|
|
301
284
|
source: {
|
|
302
|
-
"/":
|
|
285
|
+
"/": EID.make({
|
|
286
|
+
entityId: Object.keys(PEOPLE.alice.objects)[0]
|
|
287
|
+
})
|
|
303
288
|
},
|
|
304
289
|
target: {
|
|
305
|
-
"/":
|
|
290
|
+
"/": EID.make({
|
|
291
|
+
entityId: Object.keys(ORGS.dxos.objects)[0]
|
|
292
|
+
})
|
|
306
293
|
},
|
|
307
294
|
data: {
|
|
308
295
|
since: "2018",
|
|
@@ -321,15 +308,17 @@ var TASKS = {
|
|
|
321
308
|
cachedTasksTask1 = DatabaseDirectory.make({
|
|
322
309
|
spaceKey: getSpaceKeyHex(),
|
|
323
310
|
objects: {
|
|
324
|
-
[
|
|
325
|
-
type: Type_exports.
|
|
311
|
+
[EntityId.random()]: EntityStructure.makeObject({
|
|
312
|
+
type: Type_exports.getURI(TestSchema.Task),
|
|
326
313
|
data: {
|
|
327
314
|
title: "Complete project documentation",
|
|
328
315
|
description: "Write comprehensive documentation for the new system",
|
|
329
316
|
status: "in-progress",
|
|
330
317
|
dueDate: "2023-12-31",
|
|
331
318
|
assignee: {
|
|
332
|
-
"/":
|
|
319
|
+
"/": EID.make({
|
|
320
|
+
entityId: Object.keys(PEOPLE.bob.objects)[0]
|
|
321
|
+
})
|
|
333
322
|
}
|
|
334
323
|
}
|
|
335
324
|
})
|
|
@@ -343,15 +332,17 @@ var TASKS = {
|
|
|
343
332
|
cachedTasksTask2 = DatabaseDirectory.make({
|
|
344
333
|
spaceKey: getSpaceKeyHex(),
|
|
345
334
|
objects: {
|
|
346
|
-
[
|
|
347
|
-
type: Type_exports.
|
|
335
|
+
[EntityId.random()]: EntityStructure.makeObject({
|
|
336
|
+
type: Type_exports.getURI(TestSchema.Task),
|
|
348
337
|
data: {
|
|
349
338
|
title: "Run experiments",
|
|
350
339
|
description: "Conduct series of experiments on the portal device",
|
|
351
340
|
status: "pending",
|
|
352
341
|
dueDate: "2023-11-15",
|
|
353
342
|
assignee: {
|
|
354
|
-
"/":
|
|
343
|
+
"/": EID.make({
|
|
344
|
+
entityId: Object.keys(PEOPLE.alice.objects)[0]
|
|
345
|
+
})
|
|
355
346
|
}
|
|
356
347
|
}
|
|
357
348
|
})
|
|
@@ -369,15 +360,13 @@ var createEchoSchema = (schema, version = "0.1.0") => {
|
|
|
369
360
|
const jsonSchema = toJsonSchema(schema);
|
|
370
361
|
const typename = getSchemaTypename(schema);
|
|
371
362
|
assertArgument(typename, "typename", "Schema does not have a typename.");
|
|
372
|
-
|
|
373
|
-
typename,
|
|
374
|
-
version,
|
|
363
|
+
return makeObject(getStaticTypeSchema(TypeSchema), {
|
|
375
364
|
jsonSchema
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
365
|
+
}, {
|
|
366
|
+
keys: [],
|
|
367
|
+
key: typename,
|
|
368
|
+
version
|
|
369
|
+
}, TypeSchema);
|
|
381
370
|
};
|
|
382
371
|
var prepareAstForCompare = (obj) => deepMapValues(obj, (value, recurse) => {
|
|
383
372
|
if (typeof value === "function") {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/testing/test-data.ts", "../../../../src/testing/test-schema.ts", "../../../../src/testing/util.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, ObjectStructure } from '@dxos/echo-protocol';\nimport { DXN, ObjectId, PublicKey } from '@dxos/keys';\n\nimport { Type } from '../index';\nimport { TestSchema } from './test-schema';\n\n// Lazy init: Cloudflare workers disallow non-determinism at module scope (e.g. random keys).\nlet cachedSpaceKeyHex: string | undefined;\nconst getSpaceKeyHex = (): string => {\n if (cachedSpaceKeyHex === undefined) {\n cachedSpaceKeyHex = PublicKey.random().toHex();\n }\n return cachedSpaceKeyHex;\n};\n\nlet cachedPeopleAlice: DatabaseDirectory | undefined;\nlet cachedPeopleBob: DatabaseDirectory | undefined;\nlet cachedOrgsDxos: DatabaseDirectory | undefined;\nlet cachedOrgsCyberdyne: DatabaseDirectory | undefined;\nlet cachedWorksFredCyberdyne: DatabaseDirectory | undefined;\nlet cachedWorksAliceAperture: DatabaseDirectory | undefined;\nlet cachedTasksTask1: DatabaseDirectory | undefined;\nlet cachedTasksTask2: DatabaseDirectory | undefined;\n\n// TODO(burdon): Use Obj.make.\n\nexport const PEOPLE = {\n get alice(): DatabaseDirectory {\n if (cachedPeopleAlice === undefined) {\n cachedPeopleAlice = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Alice',\n },\n }),\n },\n });\n }\n return cachedPeopleAlice;\n },\n\n get bob(): DatabaseDirectory {\n if (cachedPeopleBob === undefined) {\n cachedPeopleBob = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Person)!.toString(),\n data: {\n name: 'Bob',\n },\n }),\n },\n });\n }\n return cachedPeopleBob;\n },\n};\n\nexport const ORGS = {\n get dxos(): DatabaseDirectory {\n if (cachedOrgsDxos === undefined) {\n cachedOrgsDxos = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'DXOS',\n founded: '2023',\n },\n }),\n },\n });\n }\n return cachedOrgsDxos;\n },\n\n get cyberdyne(): DatabaseDirectory {\n if (cachedOrgsCyberdyne === undefined) {\n cachedOrgsCyberdyne = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Organization)!.toString(),\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n });\n }\n return cachedOrgsCyberdyne;\n },\n};\n\nexport const WORKS_FOR = {\n get fredWorksForCyberdyne(): DatabaseDirectory {\n if (cachedWorksFredCyberdyne === undefined) {\n cachedWorksFredCyberdyne = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.cyberdyne.objects!)[0]).toString() },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n });\n }\n return cachedWorksFredCyberdyne;\n },\n\n get aliceWorksForAperture(): DatabaseDirectory {\n if (cachedWorksAliceAperture === undefined) {\n cachedWorksAliceAperture = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeRelation({\n type: Type.getDXN(TestSchema.EmployedBy)!.toString(),\n source: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n target: { '/': DXN.fromLocalObjectId(Object.keys(ORGS.dxos.objects!)[0]).toString() },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n });\n }\n return cachedWorksAliceAperture;\n },\n};\n\nexport const TASKS = {\n get task1(): DatabaseDirectory {\n if (cachedTasksTask1 === undefined) {\n cachedTasksTask1 = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.bob.objects!)[0]).toString() },\n },\n }),\n },\n });\n }\n return cachedTasksTask1;\n },\n\n get task2(): DatabaseDirectory {\n if (cachedTasksTask2 === undefined) {\n cachedTasksTask2 = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [ObjectId.random()]: ObjectStructure.makeObject({\n type: Type.getDXN(TestSchema.Task)!.toString(),\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': DXN.fromLocalObjectId(Object.keys(PEOPLE.alice.objects!)[0]).toString() },\n },\n }),\n },\n });\n }\n return cachedTasksTask2;\n },\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as Obj from '../Obj';\nimport * as Ref from '../Ref';\nimport * as Type from '../Type';\n\nexport namespace TestSchema {\n //\n // Expando\n //\n\n /**\n * Expando object is an object with an arbitrary set of properties.\n * This is the test variant with example.com namespace.\n */\n export const Expando = Schema.Struct({}, { key: Schema.String, value: Schema.Any }).pipe(\n Type.object({\n typename: 'com.example.type.expando',\n version: '0.1.0',\n }),\n );\n\n export interface Expando extends Schema.Schema.Type<typeof Expando> {}\n\n //\n // Example\n //\n\n const Nested = Schema.Struct({\n field: Schema.String,\n });\n\n export class TestClass {\n field = 'value';\n toJSON() {\n return { field: this.field };\n }\n }\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const ExampleSchema = Schema.Struct({\n string: Schema.String,\n number: Schema.Number,\n boolean: Schema.Boolean,\n null: Schema.Null,\n undefined: Schema.Undefined,\n stringArray: Schema.Array(Schema.String),\n twoDimNumberArray: Schema.Array(Schema.Array(Schema.Number)),\n nested: Nested,\n nestedArray: Schema.Array(Nested),\n nestedNullableArray: Schema.Array(Schema.Union(Nested, Schema.Null)),\n reference: Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example)),\n referenceArray: Schema.Array(Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example))),\n classInstance: Schema.instanceOf(TestClass),\n other: Schema.Any,\n }).pipe(Schema.partial);\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface ExampleSchema extends Schema.Schema.Type<typeof ExampleSchema> {}\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const Example = ExampleSchema.pipe(\n Type.object({\n typename: 'com.example.type.example',\n version: '0.1.0',\n }),\n );\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface Example extends Schema.Schema.Type<typeof Example> {}\n\n //\n // Message\n //\n\n // TODO(burdon): Support defaults directly on Type: `make` is erased by `pipe(Type.Obj)`.\n export const MessageStruct = Schema.Struct({\n // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).\n // TODO(burdon): Support defaults (update create and create).\n timestamp: Schema.String.pipe(\n Schema.propertySignature,\n Schema.withConstructorDefault(() => new Date().toISOString()),\n ),\n });\n\n export const Message = MessageStruct.pipe(\n Type.object({\n typename: 'com.example.type.message',\n version: '0.1.0',\n }),\n );\n\n export interface Message extends Schema.Schema.Type<typeof Message> {}\n\n //\n // Organization\n //\n\n export const Organization = Schema.Struct({\n name: Schema.String,\n properties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.String,\n }),\n ),\n }).pipe(\n Type.object({\n typename: 'com.example.type.organization',\n version: '0.1.0',\n }),\n );\n\n export interface Organization extends Schema.Schema.Type<typeof Organization> {}\n\n //\n // Person\n //\n\n export const Person = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n age: Schema.Number.pipe(Schema.optional),\n tasks: Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n employer: Schema.optional(Ref.Ref(Organization)),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n fields: Schema.Struct({\n label: Schema.String,\n value: Schema.String,\n }).pipe(Schema.Array, Schema.optional),\n }).pipe(\n Schema.partial,\n Type.object({\n typename: 'com.example.type.person',\n version: '0.1.0',\n }),\n );\n\n export interface Person extends Schema.Schema.Type<typeof Person> {}\n\n //\n // Task\n //\n\n export const Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n deadline: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Ref.Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n subTasks: Schema.optional(Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task)))),\n description: Schema.optional(Schema.String),\n }).pipe(\n Schema.partial,\n Type.object({\n typename: 'com.example.type.task',\n version: '0.1.0',\n }),\n );\n\n export interface Task extends Schema.Schema.Type<typeof Task> {}\n\n //\n // HasManager\n //\n\n export const HasManager = Schema.Struct({}).pipe(\n Type.relation({\n typename: 'com.example.type.has-manager',\n version: '0.1.0',\n source: Person,\n target: Person,\n }),\n );\n\n export interface HasManager extends Schema.Schema.Type<typeof HasManager> {}\n\n //\n // EmployedBy\n //\n\n export const EmployedBy = Schema.Struct({\n role: Schema.String,\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.relation({\n typename: 'com.example.type.employed-by',\n version: '0.1.0',\n source: Person,\n target: Organization,\n }),\n );\n\n export interface EmployedBy extends Schema.Schema.Type<typeof EmployedBy> {}\n\n //\n // RecordType\n //\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.Array(Ref.Ref(Obj.Unknown)),\n records: Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.Array(Ref.Ref(Person)),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n }).pipe(\n Schema.partial,\n Type.object({\n typename: 'com.example.type.container',\n version: '0.1.0',\n }),\n );\n\n export interface Container extends Schema.Schema.Type<typeof Container> {}\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\nimport type * as SchemaAST from 'effect/SchemaAST';\n\nimport { assertArgument } from '@dxos/invariant';\nimport { deepMapValues } from '@dxos/util';\n\nimport { EchoSchema, PersistentSchema, getSchemaTypename, makeObject, subscribe, toJsonSchema } from '../internal';\n\n/**\n * Create a reactive mutable schema that updates when the JSON schema is updated.\n */\n// TODO(dmaretskyi): Should be replaced by registration of typed object.\nexport const createEchoSchema = (schema: Schema.Schema.AnyNoContext, version = '0.1.0'): EchoSchema => {\n const jsonSchema = toJsonSchema(schema);\n const typename = getSchemaTypename(schema);\n assertArgument(typename, 'typename', 'Schema does not have a typename.');\n const echoSchema = new EchoSchema(makeObject(PersistentSchema, { typename, version, jsonSchema }));\n\n // TODO(burdon): Unsubscribe is never called.\n subscribe(echoSchema.persistentSchema, () => {\n echoSchema._invalidate();\n });\n\n return echoSchema;\n};\n\n/**\n * Converts AST to a format that can be compared with test matchers.\n */\nexport const prepareAstForCompare = (obj: SchemaAST.AST): any =>\n deepMapValues(obj, (value: any, recurse: any) => {\n if (typeof value === 'function') {\n return null;\n }\n\n if (value instanceof RegExp) {\n return value;\n }\n\n // Convert symbols to strings.\n if (typeof value === 'object') {\n const clone = { ...value };\n for (const sym of Object.getOwnPropertySymbols(clone as any)) {\n clone[sym.toString()] = clone[sym];\n delete clone[sym];\n }\n\n return recurse(clone);\n }\n\n return recurse(value);\n });\n\n/**\n * Creates an update counter that tracks changes to reactive objects.\n * @param objects - Reactive objects to subscribe to.\n * @returns An object with a count property and Symbol.dispose for cleanup.\n */\nexport const updateCounter = (...objects: object[]) => {\n let updateCount = 0;\n\n const unsubscribes = objects.map((obj) =>\n subscribe(obj, () => {\n updateCount++;\n }),\n );\n\n const unsubscribeAll = () => {\n for (const unsub of unsubscribes) {\n unsub();\n }\n };\n\n return {\n // https://github.com/tc39/proposal-explicit-resource-management\n [Symbol.dispose]: unsubscribeAll,\n get count() {\n return updateCount;\n },\n };\n};\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["DatabaseDirectory", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { DatabaseDirectory, EntityStructure } from '@dxos/echo-protocol';\nimport { EID, EntityId, PublicKey } from '@dxos/keys';\n\nimport { Type } from '../index';\nimport { TestSchema } from './test-schema';\n\n// Lazy init: Cloudflare workers disallow non-determinism at module scope (e.g. random keys).\nlet cachedSpaceKeyHex: string | undefined;\nconst getSpaceKeyHex = (): string => {\n if (cachedSpaceKeyHex === undefined) {\n cachedSpaceKeyHex = PublicKey.random().toHex();\n }\n return cachedSpaceKeyHex;\n};\n\nlet cachedPeopleAlice: DatabaseDirectory | undefined;\nlet cachedPeopleBob: DatabaseDirectory | undefined;\nlet cachedOrgsDxos: DatabaseDirectory | undefined;\nlet cachedOrgsCyberdyne: DatabaseDirectory | undefined;\nlet cachedWorksFredCyberdyne: DatabaseDirectory | undefined;\nlet cachedWorksAliceAperture: DatabaseDirectory | undefined;\nlet cachedTasksTask1: DatabaseDirectory | undefined;\nlet cachedTasksTask2: DatabaseDirectory | undefined;\n\n// TODO(burdon): Use Obj.make.\n\nexport const PEOPLE = {\n get alice(): DatabaseDirectory {\n if (cachedPeopleAlice === undefined) {\n cachedPeopleAlice = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Person)!,\n data: {\n name: 'Alice',\n },\n }),\n },\n });\n }\n return cachedPeopleAlice;\n },\n\n get bob(): DatabaseDirectory {\n if (cachedPeopleBob === undefined) {\n cachedPeopleBob = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Person)!,\n data: {\n name: 'Bob',\n },\n }),\n },\n });\n }\n return cachedPeopleBob;\n },\n};\n\nexport const ORGS = {\n get dxos(): DatabaseDirectory {\n if (cachedOrgsDxos === undefined) {\n cachedOrgsDxos = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Organization)!,\n data: {\n name: 'DXOS',\n founded: '2023',\n },\n }),\n },\n });\n }\n return cachedOrgsDxos;\n },\n\n get cyberdyne(): DatabaseDirectory {\n if (cachedOrgsCyberdyne === undefined) {\n cachedOrgsCyberdyne = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Organization)!,\n data: {\n name: 'Cyberdyne Systems',\n founded: '1984',\n },\n }),\n },\n });\n }\n return cachedOrgsCyberdyne;\n },\n};\n\nexport const WORKS_FOR = {\n get fredWorksForCyberdyne(): DatabaseDirectory {\n if (cachedWorksFredCyberdyne === undefined) {\n cachedWorksFredCyberdyne = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeRelation({\n type: Type.getURI(TestSchema.EmployedBy)!,\n source: { '/': EID.make({ entityId: Object.keys(PEOPLE.bob.objects!)[0] }) },\n target: { '/': EID.make({ entityId: Object.keys(ORGS.cyberdyne.objects!)[0] }) },\n data: {\n since: '2020',\n position: 'Engineer',\n },\n }),\n },\n });\n }\n return cachedWorksFredCyberdyne;\n },\n\n get aliceWorksForAperture(): DatabaseDirectory {\n if (cachedWorksAliceAperture === undefined) {\n cachedWorksAliceAperture = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeRelation({\n type: Type.getURI(TestSchema.EmployedBy)!,\n source: { '/': EID.make({ entityId: Object.keys(PEOPLE.alice.objects!)[0] }) },\n target: { '/': EID.make({ entityId: Object.keys(ORGS.dxos.objects!)[0] }) },\n data: {\n since: '2018',\n position: 'Research Scientist',\n },\n }),\n },\n });\n }\n return cachedWorksAliceAperture;\n },\n};\n\nexport const TASKS = {\n get task1(): DatabaseDirectory {\n if (cachedTasksTask1 === undefined) {\n cachedTasksTask1 = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Task)!,\n data: {\n title: 'Complete project documentation',\n description: 'Write comprehensive documentation for the new system',\n status: 'in-progress',\n dueDate: '2023-12-31',\n assignee: { '/': EID.make({ entityId: Object.keys(PEOPLE.bob.objects!)[0] }) },\n },\n }),\n },\n });\n }\n return cachedTasksTask1;\n },\n\n get task2(): DatabaseDirectory {\n if (cachedTasksTask2 === undefined) {\n cachedTasksTask2 = DatabaseDirectory.make({\n spaceKey: getSpaceKeyHex(),\n objects: {\n [EntityId.random()]: EntityStructure.makeObject({\n type: Type.getURI(TestSchema.Task)!,\n data: {\n title: 'Run experiments',\n description: 'Conduct series of experiments on the portal device',\n status: 'pending',\n dueDate: '2023-11-15',\n assignee: { '/': EID.make({ entityId: Object.keys(PEOPLE.alice.objects!)[0] }) },\n },\n }),\n },\n });\n }\n return cachedTasksTask2;\n },\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nimport * as Obj from '../Obj';\nimport * as Ref from '../Ref';\nimport * as Type from '../Type';\n\nexport namespace TestSchema {\n //\n // Expando\n //\n\n /**\n * Expando object is an object with an arbitrary set of properties.\n * This is the test variant with example.com namespace.\n */\n export const Expando = Schema.Struct({}, { key: Schema.String, value: Schema.Any }).pipe(\n Type.makeObject(DXN.make('com.example.type.expando', '0.1.0')),\n );\n\n export type Expando = Type.InstanceType<typeof Expando>;\n\n //\n // Example\n //\n\n const Nested = Schema.Struct({\n field: Schema.String,\n });\n\n export class TestClass {\n field = 'value';\n toJSON() {\n return { field: this.field };\n }\n }\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const ExampleSchema = Schema.Struct({\n string: Schema.String,\n number: Schema.Number,\n boolean: Schema.Boolean,\n null: Schema.Null,\n undefined: Schema.Undefined,\n stringArray: Schema.Array(Schema.String),\n twoDimNumberArray: Schema.Array(Schema.Array(Schema.Number)),\n nested: Nested,\n nestedArray: Schema.Array(Nested),\n nestedNullableArray: Schema.Array(Schema.Union(Nested, Schema.Null)),\n reference: Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example)),\n referenceArray: Schema.Array(Schema.suspend((): Ref.RefSchema<Example> => Ref.Ref(Example))),\n classInstance: Schema.instanceOf(TestClass),\n other: Schema.Any,\n }).pipe(Schema.partial);\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface ExampleSchema extends Schema.Schema.Type<typeof ExampleSchema> {}\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export const Example = ExampleSchema.pipe(Type.makeObject(DXN.make('com.example.type.example', '0.1.0')));\n\n /** @deprecated Use another test schema or create a specific local test schema. */\n export interface Example extends Type.InstanceType<typeof Example> {}\n\n //\n // Message\n //\n\n // TODO(burdon): Support defaults directly on Type: `make` is erased by `pipe(Type.Obj)`.\n export const MessageStruct = Schema.Struct({\n // TODO(burdon): Support S.Date; Custom Timestamp (with defaults).\n // TODO(burdon): Support defaults (update create and create).\n timestamp: Schema.String.pipe(\n Schema.propertySignature,\n Schema.withConstructorDefault(() => new Date().toISOString()),\n ),\n });\n\n export const Message = MessageStruct.pipe(Type.makeObject(DXN.make('com.example.type.message', '0.1.0')));\n\n export type Message = Type.InstanceType<typeof Message>;\n\n //\n // Organization\n //\n\n export const Organization = Schema.Struct({\n name: Schema.String,\n properties: Schema.optional(\n Schema.Record({\n key: Schema.String,\n value: Schema.String,\n }),\n ),\n }).pipe(Type.makeObject(DXN.make('com.example.type.organization', '0.1.0')));\n\n export type Organization = Type.InstanceType<typeof Organization>;\n\n //\n // Person\n //\n\n export const Person = Schema.Struct({\n name: Schema.String,\n username: Schema.String,\n email: Schema.String,\n age: Schema.Number.pipe(Schema.optional),\n tasks: Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n employer: Schema.optional(Ref.Ref(Organization)),\n address: Schema.Struct({\n city: Schema.optional(Schema.String),\n state: Schema.optional(Schema.String),\n zip: Schema.optional(Schema.String),\n coordinates: Schema.Struct({\n lat: Schema.optional(Schema.Number),\n lng: Schema.optional(Schema.Number),\n }),\n }),\n fields: Schema.Struct({\n label: Schema.String,\n value: Schema.String,\n }).pipe(Schema.Array, Schema.optional),\n }).pipe(Schema.partial, Type.makeObject(DXN.make('com.example.type.person', '0.1.0')));\n\n export interface Person extends Type.InstanceType<typeof Person> {}\n\n //\n // Task\n //\n\n export const Task = Schema.Struct({\n title: Schema.optional(Schema.String),\n deadline: Schema.optional(Schema.String),\n completed: Schema.optional(Schema.Boolean),\n assignee: Schema.optional(Ref.Ref(Person)),\n previous: Schema.optional(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task))),\n subTasks: Schema.optional(Schema.Array(Schema.suspend((): Ref.RefSchema<Task> => Ref.Ref(Task)))),\n description: Schema.optional(Schema.String),\n }).pipe(Schema.partial, Type.makeObject(DXN.make('com.example.type.task', '0.1.0')));\n\n export interface Task extends Type.InstanceType<typeof Task> {}\n\n //\n // HasManager\n //\n\n export const HasManager = Schema.Struct({}).pipe(\n Type.makeRelation({\n dxn: DXN.make('com.example.type.hasManager', '0.1.0'),\n source: Person,\n target: Person,\n }),\n );\n\n export type HasManager = Type.InstanceType<typeof HasManager>;\n\n //\n // EmployedBy\n //\n\n export const EmployedBy = Schema.Struct({\n role: Schema.String,\n since: Schema.optional(Schema.String),\n }).pipe(\n Type.makeRelation({\n dxn: DXN.make('com.example.type.employedBy', '0.1.0'),\n source: Person,\n target: Organization,\n }),\n );\n\n export type EmployedBy = Type.InstanceType<typeof EmployedBy>;\n\n //\n // RecordType\n //\n\n export enum RecordType {\n UNDEFINED = 0,\n PERSONAL = 1,\n WORK = 2,\n }\n\n export const Container = Schema.Struct({\n objects: Schema.Array(Ref.Ref(Obj.Unknown)),\n records: Schema.Array(\n Schema.partial(\n Schema.Struct({\n title: Schema.String,\n description: Schema.String,\n contacts: Schema.Array(Ref.Ref(Person)),\n type: Schema.Enums(RecordType),\n }),\n ),\n ),\n }).pipe(Schema.partial, Type.makeObject(DXN.make('com.example.type.container', '0.1.0')));\n\n export type Container = Type.InstanceType<typeof Container>;\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type * as Schema from 'effect/Schema';\nimport type * as SchemaAST from 'effect/SchemaAST';\n\nimport { assertArgument } from '@dxos/invariant';\nimport { deepMapValues } from '@dxos/util';\n\nimport { TypeSchema, getSchemaTypename, getStaticTypeSchema, makeObject, subscribe, toJsonSchema } from '../internal';\nimport type * as Type from '../Type';\n\n/**\n * Create an in-memory `Type.Type` entity (a `TypeSchema` object) for tests.\n * Accepts a raw Effect Schema. Pass `Type.getSchema(entity)` to convert a\n * `Type.Type` entity to its underlying source schema first.\n */\n// TODO(dmaretskyi): Should be replaced by registration of typed object.\nexport const createEchoSchema = (schema: Schema.Schema.AnyNoContext, version = '0.1.0'): Type.Type => {\n const jsonSchema = toJsonSchema(schema);\n const typename = getSchemaTypename(schema);\n assertArgument(typename, 'typename', 'Schema does not have a typename.');\n // typename/version are routed via EntityMeta (the canonical registry-provenance\n // pair); they're no longer data fields on `TypeSchema`.\n return makeObject(\n getStaticTypeSchema(TypeSchema) as any,\n { jsonSchema },\n { keys: [], key: typename, version },\n TypeSchema,\n ) as unknown as Type.Type;\n};\n\n/**\n * Converts AST to a format that can be compared with test matchers.\n */\nexport const prepareAstForCompare = (obj: SchemaAST.AST): any =>\n deepMapValues(obj, (value: any, recurse: any) => {\n if (typeof value === 'function') {\n return null;\n }\n\n if (value instanceof RegExp) {\n return value;\n }\n\n // Convert symbols to strings.\n if (typeof value === 'object') {\n const clone = { ...value };\n for (const sym of Object.getOwnPropertySymbols(clone as any)) {\n clone[sym.toString()] = clone[sym];\n delete clone[sym];\n }\n\n return recurse(clone);\n }\n\n return recurse(value);\n });\n\n/**\n * Creates an update counter that tracks changes to reactive objects.\n * @param objects - Reactive objects to subscribe to.\n * @returns An object with a count property and Symbol.dispose for cleanup.\n */\nexport const updateCounter = (...objects: object[]) => {\n let updateCount = 0;\n\n const unsubscribes = objects.map((obj) =>\n subscribe(obj, () => {\n updateCount++;\n }),\n );\n\n const unsubscribeAll = () => {\n for (const unsub of unsubscribes) {\n unsub();\n }\n };\n\n return {\n // https://github.com/tc39/proposal-explicit-resource-management\n [Symbol.dispose]: unsubscribeAll,\n get count() {\n return updateCount;\n },\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DatabaseDirectory", "EntityStructure", "EID", "EntityId", "PublicKey", "Schema", "DXN", "TestSchema", "Expando", "Struct", "key", "String", "value", "Any", "pipe", "makeObject", "DXN", "make", "Nested", "field", "TestClass", "toJSON", "ExampleSchema", "string", "number", "Number", "boolean", "Boolean", "null", "Null", "undefined", "Undefined", "stringArray", "Array", "twoDimNumberArray", "nested", "nestedArray", "nestedNullableArray", "Union", "reference", "suspend", "Ref", "Example", "referenceArray", "classInstance", "instanceOf", "other", "partial", "MessageStruct", "timestamp", "propertySignature", "withConstructorDefault", "Date", "toISOString", "Message", "Organization", "name", "properties", "optional", "Record", "Person", "username", "email", "age", "tasks", "Task", "employer", "address", "city", "state", "zip", "coordinates", "lat", "lng", "fields", "label", "title", "deadline", "completed", "assignee", "previous", "subTasks", "description", "HasManager", "makeRelation", "dxn", "source", "target", "EmployedBy", "role", "since", "RecordType", "Container", "objects", "Unknown", "records", "contacts", "type", "Enums", "cachedSpaceKeyHex", "getSpaceKeyHex", "undefined", "PublicKey", "random", "toHex", "cachedPeopleAlice", "cachedPeopleBob", "cachedOrgsDxos", "cachedOrgsCyberdyne", "cachedWorksFredCyberdyne", "cachedWorksAliceAperture", "cachedTasksTask1", "cachedTasksTask2", "PEOPLE", "alice", "DatabaseDirectory", "make", "spaceKey", "objects", "EntityId", "EntityStructure", "makeObject", "type", "Type", "getURI", "TestSchema", "Person", "data", "name", "bob", "ORGS", "dxos", "Organization", "founded", "cyberdyne", "WORKS_FOR", "fredWorksForCyberdyne", "makeRelation", "EmployedBy", "source", "EID", "entityId", "Object", "keys", "target", "since", "position", "aliceWorksForAperture", "TASKS", "task1", "Task", "title", "description", "status", "dueDate", "assignee", "task2", "assertArgument", "deepMapValues", "createEchoSchema", "schema", "version", "jsonSchema", "toJsonSchema", "typename", "getSchemaTypename", "assertArgument", "makeObject", "getStaticTypeSchema", "TypeSchema", "keys", "key", "prepareAstForCompare", "obj", "deepMapValues", "value", "recurse", "RegExp", "clone", "sym", "Object", "getOwnPropertySymbols", "toString", "updateCounter", "objects", "updateCount", "unsubscribes", "map", "subscribe", "unsubscribeAll", "unsub", "Symbol", "dispose", "count"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,51 @@
|
|
|
1
|
-
export { DescriptionAnnotation, FormInputAnnotation, GeneratorAnnotation, LabelAnnotation, ReferenceAnnotation,
|
|
2
|
-
import
|
|
3
|
-
import * as
|
|
1
|
+
export { DescriptionAnnotation, FormInputAnnotation, FormInlineAnnotation, GeneratorAnnotation, LabelAnnotation, ReferenceAnnotation, HiddenAnnotation, TypeAnnotation, getDescriptionWithSchema, getLabelWithSchema, getTypeAnnotation, setDescriptionWithSchema, setLabelWithSchema, IconAnnotation, IconFromRefAnnotation, } from './internal/Annotation';
|
|
2
|
+
import * as Option from 'effect/Option';
|
|
3
|
+
import * as Schema from 'effect/Schema';
|
|
4
|
+
import * as SchemaAST from 'effect/SchemaAST';
|
|
5
|
+
import * as Types from 'effect/Types';
|
|
6
|
+
import * as Entity from './Entity';
|
|
7
|
+
export declare const TypeId: '~@dxos/echo/Annotation';
|
|
8
|
+
export type TypeId = typeof TypeId;
|
|
9
|
+
/**
|
|
10
|
+
* Annotation is a typed property that can be assigned to a schema or an entity instance.
|
|
11
|
+
*/
|
|
12
|
+
export interface Annotation<T> {
|
|
13
|
+
[TypeId]: {
|
|
14
|
+
_Type: T;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Unique fully-qualified identifier for the annotation.
|
|
18
|
+
* @example "org.dxos.annotation.color"
|
|
19
|
+
*/
|
|
20
|
+
readonly key: Key;
|
|
21
|
+
/**
|
|
22
|
+
* Schema of the annotation value.
|
|
23
|
+
*/
|
|
24
|
+
readonly schema: Schema.Schema<T, unknown, never>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the annotation value from an Effect schema.
|
|
27
|
+
*
|
|
28
|
+
* Only accepts `Schema.Schema.Any` — to read an annotation off a `Type.Type`
|
|
29
|
+
* entity, unwrap it first with `Type.getSchema(entity)`. This keeps the
|
|
30
|
+
* annotation pipeline single-shaped and forces annotations to live on the
|
|
31
|
+
* source schema, not on the post-construction Type entity.
|
|
32
|
+
*/
|
|
33
|
+
get: (schema: Schema.Schema.Any) => Option.Option<T>;
|
|
34
|
+
/**
|
|
35
|
+
* Get the annotation value from the AST.
|
|
36
|
+
*/
|
|
37
|
+
getFromAst: (ast: SchemaAST.AST) => Option.Option<T>;
|
|
38
|
+
/**
|
|
39
|
+
* Set the annotation on an Effect schema.
|
|
40
|
+
*
|
|
41
|
+
* Only accepts `Schema.Schema.Any` — annotations must be applied to the
|
|
42
|
+
* source schema BEFORE wrapping it with `Type.makeObject` / `Type.makeRelation`.
|
|
43
|
+
* In a pipe, place every `Annotation.X.set(...)` before the `Type.make...` step.
|
|
44
|
+
*/
|
|
45
|
+
set: (value: T) => <S extends Schema.Schema.Any>(schema: S) => S;
|
|
46
|
+
}
|
|
47
|
+
export declare const Key: Schema.brand<typeof Schema.String, "~@dxos/echo/AnnotationKey">;
|
|
48
|
+
export type Key = Schema.Schema.Type<typeof Key>;
|
|
4
49
|
interface MakeProps<T> {
|
|
5
50
|
id: string;
|
|
6
51
|
schema: Schema.Schema<T, any, never>;
|
|
@@ -20,5 +65,64 @@ interface MakeProps<T> {
|
|
|
20
65
|
* const schema = Schema.String.annotations(ColorAnnotation.set('red'));
|
|
21
66
|
* ```
|
|
22
67
|
*/
|
|
23
|
-
export declare const make: <T>(props: MakeProps<T>) =>
|
|
68
|
+
export declare const make: <T>(props: MakeProps<T>) => Annotation<T>;
|
|
69
|
+
/**
|
|
70
|
+
* Get the value of an annotation from an entity instance or snapshot.
|
|
71
|
+
* For schema-level reads use the annotation instance method (e.g. `ColorAnnotation.get(schema)`).
|
|
72
|
+
* For getting an annotation value from a dictionary, use `getDictionary`.
|
|
73
|
+
*/
|
|
74
|
+
export declare const get: {
|
|
75
|
+
<T>(annotation: Annotation<T>): (target: Entity.Unknown | Entity.Snapshot) => Option.Option<T>;
|
|
76
|
+
<T>(target: Entity.Unknown | Entity.Snapshot, annotation: Annotation<T>): Option.Option<T>;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Set the value of an annotation on an entity instance.
|
|
80
|
+
* For schema-level writes use the annotation instance method (e.g. `ColorAnnotation.set('red')`).
|
|
81
|
+
* For setting an annotation value on a dictionary, use `setDictionary`.
|
|
82
|
+
*/
|
|
83
|
+
export declare const set: {
|
|
84
|
+
<T>(annotation: Annotation<T>, value: T): (target: Entity.Mutable<Entity.Unknown>) => void;
|
|
85
|
+
<T>(target: Entity.Mutable<Entity.Unknown>, annotation: Annotation<T>, value: T): void;
|
|
86
|
+
};
|
|
87
|
+
export declare const getFromAst: {
|
|
88
|
+
<T>(annotation: Annotation<T>): (ast: SchemaAST.AST) => Option.Option<T>;
|
|
89
|
+
<T>(ast: SchemaAST.AST, annotation: Annotation<T>): Option.Option<T>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Set of annotation values.
|
|
93
|
+
*
|
|
94
|
+
* Can be used inside an object/relation schema:
|
|
95
|
+
*
|
|
96
|
+
* ```ts
|
|
97
|
+
* const Person = Schema.Struct({
|
|
98
|
+
* name: Schema.String,
|
|
99
|
+
* extensions: Annotation.Dictionary,
|
|
100
|
+
* });
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export declare const Dictionary: Schema.Record$<Schema.brand<typeof Schema.String, "~@dxos/echo/AnnotationKey">, typeof Schema.Unknown>;
|
|
104
|
+
export interface Dictionary extends Schema.Schema.Type<typeof Dictionary> {
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the value of an annotation from a Dictionary.
|
|
108
|
+
*/
|
|
109
|
+
export declare const getDictionary: {
|
|
110
|
+
<T>(annotation: Annotation<T>): (values: Dictionary) => Option.Option<T>;
|
|
111
|
+
<T>(values: Dictionary, annotation: Annotation<T>): Option.Option<T>;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Set the value of an annotation in a Dictionary.
|
|
115
|
+
*
|
|
116
|
+
* Can also be used within Obj.update callback:
|
|
117
|
+
*
|
|
118
|
+
* ```ts
|
|
119
|
+
* Obj.update(obj, (obj) => {
|
|
120
|
+
* Annotation.setDictionary(obj.annotations, ColorAnnotation, 'red');
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare const setDictionary: {
|
|
125
|
+
<T>(annotation: Annotation<T>, value: T): (values: Dictionary) => void;
|
|
126
|
+
<T>(values: Types.Mutable<Dictionary>, annotation: Annotation<T>, value: T): void;
|
|
127
|
+
};
|
|
24
128
|
//# sourceMappingURL=Annotation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Annotation.d.ts","sourceRoot":"","sources":["../../../src/Annotation.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"Annotation.d.ts","sourceRoot":"","sources":["../../../src/Annotation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Annotation.test.d.ts","sourceRoot":"","sources":["../../../src/Annotation.test.ts"],"names":[],"mappings":""}
|
|
@@ -7,10 +7,9 @@ import * as Type from './Type';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare const Collection: Type.Obj<{
|
|
9
9
|
readonly name?: string | undefined;
|
|
10
|
-
readonly objects: readonly internal.Ref<
|
|
10
|
+
readonly objects: readonly internal.Ref<Obj.Unknown>[];
|
|
11
11
|
}, Schema.Struct.Fields>;
|
|
12
|
-
export
|
|
13
|
-
}
|
|
12
|
+
export type Collection = Type.InstanceType<typeof Collection>;
|
|
14
13
|
export declare const make: (props?: Partial<Obj.MakeProps<typeof Collection>>) => Collection;
|
|
15
14
|
export declare const isCollection: (value: unknown) => value is Collection;
|
|
16
15
|
//# sourceMappingURL=Collection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/Collection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/Collection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,UAAU;;;wBAMtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9D,eAAO,MAAM,IAAI,WAAW,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,UAAU,CAAC,CAAC,KAAQ,UAC5B,CAAC;AAElD,eAAO,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,UAAuC,CAAC"}
|