@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
|
@@ -3,44 +3,66 @@ import {
|
|
|
3
3
|
JsonSchemaType,
|
|
4
4
|
toEffectSchema,
|
|
5
5
|
toJsonSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7PRCIDHH.mjs";
|
|
7
|
+
import {
|
|
8
|
+
ATTR_META,
|
|
9
|
+
EntityMetaSchema,
|
|
10
|
+
MetaId,
|
|
11
|
+
getMeta
|
|
12
|
+
} from "./chunk-4BB4MFCN.mjs";
|
|
7
13
|
import {
|
|
8
14
|
Ref,
|
|
9
15
|
refFromEncodedReference,
|
|
10
16
|
setRefResolver
|
|
11
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-7OAFN3OX.mjs";
|
|
12
18
|
import {
|
|
19
|
+
ATTR_DELETED,
|
|
13
20
|
ATTR_PARENT,
|
|
21
|
+
ATTR_RELATION_SOURCE,
|
|
22
|
+
ATTR_RELATION_TARGET,
|
|
23
|
+
ATTR_SELF_URI,
|
|
24
|
+
ATTR_SELF_URI_LEGACY,
|
|
14
25
|
ATTR_TYPE,
|
|
15
26
|
IconAnnotation,
|
|
16
27
|
LabelAnnotation,
|
|
28
|
+
ObjectDatabaseId,
|
|
29
|
+
ObjectDeletedId,
|
|
30
|
+
ObjectVersionId,
|
|
17
31
|
ParentId,
|
|
32
|
+
RelationSourceDXNId,
|
|
33
|
+
RelationSourceId,
|
|
34
|
+
RelationTargetDXNId,
|
|
35
|
+
RelationTargetId,
|
|
18
36
|
SchemaId,
|
|
19
|
-
|
|
37
|
+
SelfURIId,
|
|
20
38
|
TypeAnnotationId,
|
|
39
|
+
TypeEntityId,
|
|
21
40
|
TypeId,
|
|
22
|
-
|
|
23
|
-
TypenameSchema,
|
|
24
|
-
VersionSchema,
|
|
41
|
+
assertObjectModel,
|
|
25
42
|
getEntityKind,
|
|
26
43
|
getLabel,
|
|
44
|
+
getObjectEchoUri,
|
|
27
45
|
getSchema,
|
|
28
|
-
getSchemaDXN,
|
|
29
46
|
getSchemaTypename,
|
|
47
|
+
getSchemaURI,
|
|
48
|
+
getType,
|
|
30
49
|
getTypeAnnotation,
|
|
31
|
-
getTypeDXN,
|
|
32
50
|
getTypeIdentifierAnnotation,
|
|
51
|
+
getTypeURI,
|
|
33
52
|
getTypename,
|
|
34
53
|
setSchema,
|
|
54
|
+
setType,
|
|
35
55
|
setTypename
|
|
36
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-H26LSXVJ.mjs";
|
|
37
57
|
import {
|
|
38
58
|
EntityKind,
|
|
39
59
|
KindId,
|
|
40
60
|
SchemaKindId,
|
|
41
61
|
SnapshotKindId,
|
|
62
|
+
StaticTypeSchemaSlot,
|
|
63
|
+
getStaticTypeSchema,
|
|
42
64
|
makeTypeJsonSchemaAnnotation
|
|
43
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-O6BH7EPN.mjs";
|
|
44
66
|
|
|
45
67
|
// src/internal/index.ts
|
|
46
68
|
import { JsonPath, JsonProp, getValue, splitJsonPath } from "@dxos/effect";
|
|
@@ -54,62 +76,6 @@ var RawObject = (schema) => {
|
|
|
54
76
|
]));
|
|
55
77
|
};
|
|
56
78
|
|
|
57
|
-
// src/internal/common/types/meta.ts
|
|
58
|
-
import * as Schema2 from "effect/Schema";
|
|
59
|
-
import { ForeignKey } from "@dxos/echo-protocol";
|
|
60
|
-
import { invariant } from "@dxos/invariant";
|
|
61
|
-
import { intersection } from "@dxos/util";
|
|
62
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/types/meta.ts";
|
|
63
|
-
var ATTR_META = "@meta";
|
|
64
|
-
var MetaId = /* @__PURE__ */ Symbol.for("@dxos/echo/Meta");
|
|
65
|
-
var ObjectMetaSchema = Schema2.Struct({
|
|
66
|
-
keys: Schema2.Array(ForeignKey),
|
|
67
|
-
/**
|
|
68
|
-
* A set of tags.
|
|
69
|
-
* Tags are arbitrary application-defined strings.
|
|
70
|
-
* ECHO makes no assumptions about the tag structure.
|
|
71
|
-
*/
|
|
72
|
-
// TODO(dmaretskyi): Has to be optional for compatibility with old data.
|
|
73
|
-
// Defaulting to an empty array is possible but requires a bit more work.
|
|
74
|
-
// TODO(dmaretskyi): In automerge this should be a map of { [tag]: boolean } for uniqueness and conflict resolution.
|
|
75
|
-
tags: Schema2.optional(Schema2.Array(Schema2.String)),
|
|
76
|
-
/**
|
|
77
|
-
* Fully-qualified registry key for the object (FQN format, e.g. `org.example.type.foo`).
|
|
78
|
-
* Identifies the canonical registry entry the object instance was created from.
|
|
79
|
-
*/
|
|
80
|
-
key: Schema2.optional(Schema2.String),
|
|
81
|
-
/**
|
|
82
|
-
* Semantic version of the registry entry the object was created from.
|
|
83
|
-
* Must be a valid semver string (e.g. `1.2.3`).
|
|
84
|
-
*/
|
|
85
|
-
version: Schema2.optional(Schema2.String)
|
|
86
|
-
});
|
|
87
|
-
var getMeta = (obj) => {
|
|
88
|
-
const metadata = obj[MetaId];
|
|
89
|
-
invariant(metadata, "ObjectMeta not found.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 45, S: void 0, A: ["metadata", "'ObjectMeta not found.'"] });
|
|
90
|
-
return metadata;
|
|
91
|
-
};
|
|
92
|
-
var foreignKey = (source, id) => ({
|
|
93
|
-
source,
|
|
94
|
-
id
|
|
95
|
-
});
|
|
96
|
-
var foreignKeyEquals = (a, b) => a.source === b.source && a.id === b.id;
|
|
97
|
-
var compareForeignKeys = (a, b) => intersection(getMeta(a).keys, getMeta(b).keys, foreignKeyEquals).length > 0;
|
|
98
|
-
|
|
99
|
-
// src/internal/common/types/model-symbols.ts
|
|
100
|
-
var ATTR_SELF_DXN = "@dxn";
|
|
101
|
-
var SelfDXNId = /* @__PURE__ */ Symbol.for("@dxos/echo/DXN");
|
|
102
|
-
var ATTR_DELETED = "@deleted";
|
|
103
|
-
var ObjectDeletedId = /* @__PURE__ */ Symbol.for("@dxos/echo/Deleted");
|
|
104
|
-
var ObjectVersionId = /* @__PURE__ */ Symbol.for("@dxos/echo/Version");
|
|
105
|
-
var ObjectDatabaseId = /* @__PURE__ */ Symbol.for("@dxos/echo/Database");
|
|
106
|
-
var ATTR_RELATION_SOURCE = "@relationSource";
|
|
107
|
-
var RelationSourceId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationSource");
|
|
108
|
-
var RelationSourceDXNId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationSourceDXN");
|
|
109
|
-
var ATTR_RELATION_TARGET = "@relationTarget";
|
|
110
|
-
var RelationTargetId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationTarget");
|
|
111
|
-
var RelationTargetDXNId = /* @__PURE__ */ Symbol.for("@dxos/echo/RelationTargetDXN");
|
|
112
|
-
|
|
113
79
|
// src/internal/common/types/version.ts
|
|
114
80
|
var VersionTypeId = "~@dxos/echo/VersionTypeId";
|
|
115
81
|
|
|
@@ -137,48 +103,6 @@ var sort = (...comparators) => {
|
|
|
137
103
|
};
|
|
138
104
|
};
|
|
139
105
|
|
|
140
|
-
// src/internal/common/api/meta.ts
|
|
141
|
-
import { assertArgument, invariant as invariant2 } from "@dxos/invariant";
|
|
142
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/api/meta.ts";
|
|
143
|
-
function getMetaChecked(entity) {
|
|
144
|
-
assertArgument(entity, "entity", "Should be an entity.");
|
|
145
|
-
const meta = getMeta(entity);
|
|
146
|
-
invariant2(meta != null, "Invalid entity.", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 9, S: this, A: ["meta != null", "'Invalid entity.'"] });
|
|
147
|
-
return meta;
|
|
148
|
-
}
|
|
149
|
-
var getKeys = (entity, source) => {
|
|
150
|
-
assertArgument(entity, "entity", "Should be an entity.");
|
|
151
|
-
const meta = getMetaChecked(entity);
|
|
152
|
-
invariant2(meta != null, "Invalid entity.", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 18, S: void 0, A: ["meta != null", "'Invalid entity.'"] });
|
|
153
|
-
return meta.keys.filter((key) => key.source === source);
|
|
154
|
-
};
|
|
155
|
-
var deleteKeys = (entity, source) => {
|
|
156
|
-
const meta = getMetaChecked(entity);
|
|
157
|
-
for (let i = 0; i < meta.keys.length; i++) {
|
|
158
|
-
if (meta.keys[i].source === source) {
|
|
159
|
-
meta.keys.splice(i, 1);
|
|
160
|
-
i--;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
var addTag = (entity, tag) => {
|
|
165
|
-
const meta = getMetaChecked(entity);
|
|
166
|
-
meta.tags ??= [];
|
|
167
|
-
meta.tags.push(tag);
|
|
168
|
-
};
|
|
169
|
-
var removeTag = (entity, tag) => {
|
|
170
|
-
const meta = getMetaChecked(entity);
|
|
171
|
-
if (!meta.tags) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
for (let i = 0; i < meta.tags.length; i++) {
|
|
175
|
-
if (meta.tags[i] === tag) {
|
|
176
|
-
meta.tags.splice(i, 1);
|
|
177
|
-
i--;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
|
|
182
106
|
// src/internal/common/proxy/symbols.ts
|
|
183
107
|
var EventId = /* @__PURE__ */ Symbol.for("@dxos/live-object/EventId");
|
|
184
108
|
var ChangeId = /* @__PURE__ */ Symbol.for("@dxos/live-object/ChangeId");
|
|
@@ -283,10 +207,10 @@ var createArrayMethodError = (method) => {
|
|
|
283
207
|
};
|
|
284
208
|
|
|
285
209
|
// src/internal/common/proxy/json-serializer.ts
|
|
286
|
-
import { invariant
|
|
287
|
-
import {
|
|
288
|
-
import { deepMapValues } from "@dxos/util";
|
|
289
|
-
var
|
|
210
|
+
import { invariant } from "@dxos/invariant";
|
|
211
|
+
import { EID } from "@dxos/keys";
|
|
212
|
+
import { deepMapValues, encodeUint8ArrayToJson } from "@dxos/util";
|
|
213
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/proxy/json-serializer.ts";
|
|
290
214
|
var attachTypedJsonSerializer = (obj) => {
|
|
291
215
|
const descriptor = Object.getOwnPropertyDescriptor(obj, "toJSON");
|
|
292
216
|
if (descriptor) {
|
|
@@ -306,23 +230,23 @@ var typedJsonSerializer = function() {
|
|
|
306
230
|
id
|
|
307
231
|
};
|
|
308
232
|
if (this[TypeId]) {
|
|
309
|
-
result[ATTR_TYPE] = this[TypeId]
|
|
233
|
+
result[ATTR_TYPE] = this[TypeId];
|
|
310
234
|
}
|
|
311
235
|
if (this[MetaId]) {
|
|
312
236
|
result[ATTR_META] = serializeMeta(this[MetaId]);
|
|
313
237
|
}
|
|
314
|
-
if (this[
|
|
315
|
-
result[
|
|
238
|
+
if (this[SelfURIId]) {
|
|
239
|
+
result[ATTR_SELF_URI] = this[SelfURIId];
|
|
316
240
|
}
|
|
317
241
|
if (this[RelationSourceDXNId]) {
|
|
318
242
|
const sourceDXN = this[RelationSourceDXNId];
|
|
319
|
-
|
|
320
|
-
result[ATTR_RELATION_SOURCE] = sourceDXN
|
|
243
|
+
invariant(EID.isEID(sourceDXN), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 43, S: this, A: ["EID.isEID(sourceDXN)", ""] });
|
|
244
|
+
result[ATTR_RELATION_SOURCE] = sourceDXN;
|
|
321
245
|
}
|
|
322
246
|
if (this[RelationTargetDXNId]) {
|
|
323
247
|
const targetDXN = this[RelationTargetDXNId];
|
|
324
|
-
|
|
325
|
-
result[ATTR_RELATION_TARGET] = targetDXN
|
|
248
|
+
invariant(EID.isEID(targetDXN), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 48, S: this, A: ["EID.isEID(targetDXN)", ""] });
|
|
249
|
+
result[ATTR_RELATION_TARGET] = targetDXN;
|
|
326
250
|
}
|
|
327
251
|
Object.assign(result, serializeData(rest));
|
|
328
252
|
return result;
|
|
@@ -332,19 +256,32 @@ var serializeData = (data) => {
|
|
|
332
256
|
if (Ref.isRef(value2)) {
|
|
333
257
|
return value2.noInline().encode();
|
|
334
258
|
}
|
|
259
|
+
if (value2 instanceof Uint8Array) {
|
|
260
|
+
return encodeUint8ArrayToJson(value2);
|
|
261
|
+
}
|
|
335
262
|
return recurse(value2);
|
|
336
263
|
});
|
|
337
264
|
};
|
|
338
265
|
var serializeMeta = (meta) => {
|
|
339
|
-
|
|
266
|
+
const { tags, annotations: annotations5, ...rest } = meta;
|
|
267
|
+
const compact = {
|
|
268
|
+
...rest,
|
|
269
|
+
...tags != null && tags.length > 0 ? {
|
|
270
|
+
tags
|
|
271
|
+
} : {},
|
|
272
|
+
...annotations5 != null && Object.keys(annotations5).length > 0 ? {
|
|
273
|
+
annotations: annotations5
|
|
274
|
+
} : {}
|
|
275
|
+
};
|
|
276
|
+
return serializeData(compact);
|
|
340
277
|
};
|
|
341
278
|
|
|
342
279
|
// src/internal/common/proxy/make-object.ts
|
|
343
|
-
import {
|
|
280
|
+
import { EntityId } from "@dxos/keys";
|
|
344
281
|
|
|
345
282
|
// src/internal/common/proxy/proxy-utils.ts
|
|
346
|
-
import { invariant as
|
|
347
|
-
var
|
|
283
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
284
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/proxy/proxy-utils.ts";
|
|
348
285
|
var symbolIsProxy = /* @__PURE__ */ Symbol.for("@dxos/schema/Proxy");
|
|
349
286
|
var isProxy = (value2) => !!value2?.[symbolIsProxy];
|
|
350
287
|
var isValidProxyTarget = (value2) => {
|
|
@@ -358,7 +295,7 @@ var isValidProxyTarget = (value2) => {
|
|
|
358
295
|
};
|
|
359
296
|
var getProxySlot = (proxy) => {
|
|
360
297
|
const value2 = proxy[symbolIsProxy];
|
|
361
|
-
|
|
298
|
+
invariant2(value2 instanceof ProxyHandlerSlot, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 22, S: void 0, A: ["value instanceof ProxyHandlerSlot", ""] });
|
|
362
299
|
return value2;
|
|
363
300
|
};
|
|
364
301
|
var getProxyTarget = (proxy) => {
|
|
@@ -392,7 +329,7 @@ var ProxyHandlerSlot = class {
|
|
|
392
329
|
this._handler = _handler;
|
|
393
330
|
}
|
|
394
331
|
get handler() {
|
|
395
|
-
|
|
332
|
+
invariant2(this._handler, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 71, S: this, A: ["this._handler", ""] });
|
|
396
333
|
return this._handler;
|
|
397
334
|
}
|
|
398
335
|
// TODO(burdon): Requires comment.
|
|
@@ -445,15 +382,15 @@ var ProxyHandlerSlot = class {
|
|
|
445
382
|
};
|
|
446
383
|
|
|
447
384
|
// src/internal/common/proxy/typed-handler.ts
|
|
448
|
-
import * as
|
|
385
|
+
import * as Schema3 from "effect/Schema";
|
|
449
386
|
import * as SchemaAST3 from "effect/SchemaAST";
|
|
450
387
|
import { Event } from "@dxos/async";
|
|
451
388
|
import { inspectCustom } from "@dxos/debug";
|
|
452
|
-
import { invariant as
|
|
389
|
+
import { assertArgument, invariant as invariant5 } from "@dxos/invariant";
|
|
453
390
|
|
|
454
391
|
// src/internal/common/proxy/ownership.ts
|
|
455
|
-
import { invariant as
|
|
456
|
-
var
|
|
392
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
393
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/proxy/ownership.ts";
|
|
457
394
|
var EchoOwner = /* @__PURE__ */ Symbol.for("@dxos/echo/Owner");
|
|
458
395
|
var getRawTarget = (value2) => {
|
|
459
396
|
return isProxy(value2) ? getProxyTarget(value2) : value2;
|
|
@@ -482,7 +419,7 @@ var setOwnerRecursive = (value2, owner, options = {}) => {
|
|
|
482
419
|
}
|
|
483
420
|
if (!isRootEchoObject) {
|
|
484
421
|
const ownershipAllowed = existingOwner == null || existingOwner === owner || existingOwner === newAllowedPreviousOwner;
|
|
485
|
-
|
|
422
|
+
invariant3(ownershipAllowed, "Cannot reassign ownership of a nested record to a different ECHO object. Use deep copy first.", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 76, S: void 0, A: ["ownershipAllowed", "'Cannot reassign ownership of a nested record to a different ECHO object. Use deep copy first.'"] });
|
|
486
423
|
}
|
|
487
424
|
defineHiddenProperty(actualValue, EchoOwner, owner);
|
|
488
425
|
const recursiveOptions = {
|
|
@@ -549,7 +486,7 @@ var hasForeignOwner = (value2, target) => traverseObjectGraph(value2, (v) => {
|
|
|
549
486
|
});
|
|
550
487
|
var MAX_OWNER_DEPTH = 100;
|
|
551
488
|
var getEchoRoot = (target, depth = 0) => {
|
|
552
|
-
|
|
489
|
+
invariant3(depth < MAX_OWNER_DEPTH, "Owner chain too deep - possible circular ownership", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 169, S: void 0, A: ["depth < MAX_OWNER_DEPTH", "'Owner chain too deep - possible circular ownership'"] });
|
|
553
490
|
if (KindId in target) {
|
|
554
491
|
return target;
|
|
555
492
|
}
|
|
@@ -613,18 +550,18 @@ var ReactiveArray = class extends Array {
|
|
|
613
550
|
};
|
|
614
551
|
|
|
615
552
|
// src/internal/common/proxy/schema-validator.ts
|
|
616
|
-
import * as
|
|
553
|
+
import * as Schema2 from "effect/Schema";
|
|
617
554
|
import * as SchemaAST2 from "effect/SchemaAST";
|
|
618
|
-
import { invariant as
|
|
555
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
619
556
|
import { log } from "@dxos/log";
|
|
620
|
-
var
|
|
557
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/proxy/schema-validator.ts";
|
|
621
558
|
var SchemaValidator = class {
|
|
622
559
|
/**
|
|
623
560
|
* Recursively check that schema specifies constructions we can handle.
|
|
624
561
|
* Validates there are no ambiguous discriminated union types.
|
|
625
562
|
*/
|
|
626
563
|
static validateSchema(schema) {
|
|
627
|
-
const visitAll = (nodes) => nodes.forEach((node) => this.validateSchema(
|
|
564
|
+
const visitAll = (nodes) => nodes.forEach((node) => this.validateSchema(Schema2.make(node)));
|
|
628
565
|
if (SchemaAST2.isUnion(schema.ast)) {
|
|
629
566
|
const typeAstList = schema.ast.types.filter((type) => SchemaAST2.isTypeLiteral(type));
|
|
630
567
|
if (typeAstList.length > 1) {
|
|
@@ -671,41 +608,41 @@ var SchemaValidator = class {
|
|
|
671
608
|
log.warn("unknown property", {
|
|
672
609
|
path: propertyPath,
|
|
673
610
|
property: propertyName
|
|
674
|
-
}, { "~LogMeta": "~LogMeta", F:
|
|
611
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 60, S: this });
|
|
675
612
|
continue;
|
|
676
613
|
}
|
|
677
|
-
schema =
|
|
614
|
+
schema = Schema2.make(propertyType).annotations(propertyType.annotations);
|
|
678
615
|
}
|
|
679
616
|
}
|
|
680
617
|
return schema;
|
|
681
618
|
}
|
|
682
619
|
static getTargetPropertySchema(target, prop) {
|
|
683
620
|
const schema = target[SchemaId];
|
|
684
|
-
|
|
621
|
+
invariant4(schema, "target has no schema", { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 73, S: this, A: ["schema", "'target has no schema'"] });
|
|
685
622
|
const arrayAst = unwrapArray(schema.ast);
|
|
686
623
|
if (arrayAst != null) {
|
|
687
624
|
return getArrayElementSchema(arrayAst, prop);
|
|
688
625
|
}
|
|
689
626
|
const propertyType = getPropertyType(schema.ast, prop.toString(), (prop2) => target[prop2]);
|
|
690
627
|
if (propertyType == null) {
|
|
691
|
-
return
|
|
628
|
+
return Schema2.Any;
|
|
692
629
|
}
|
|
693
|
-
|
|
694
|
-
return
|
|
630
|
+
invariant4(propertyType, `invalid property: ${prop.toString()}`, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 82, S: this, A: ["propertyType", "`invalid property: ${prop.toString()}`"] });
|
|
631
|
+
return Schema2.make(propertyType);
|
|
695
632
|
}
|
|
696
633
|
};
|
|
697
634
|
var getArrayElementSchema = (tupleAst, property) => {
|
|
698
635
|
const elementIndex = typeof property === "string" ? parseInt(property, 10) : Number.NaN;
|
|
699
636
|
if (Number.isNaN(elementIndex)) {
|
|
700
|
-
|
|
701
|
-
return
|
|
637
|
+
invariant4(property === "length", `invalid array property: ${String(property)}`, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 93, S: void 0, A: ["property === 'length'", "`invalid array property: ${String(property)}`"] });
|
|
638
|
+
return Schema2.Number;
|
|
702
639
|
}
|
|
703
640
|
if (elementIndex < tupleAst.elements.length) {
|
|
704
641
|
const elementType = tupleAst.elements[elementIndex].type;
|
|
705
|
-
return
|
|
642
|
+
return Schema2.make(elementType).annotations(elementType.annotations);
|
|
706
643
|
}
|
|
707
644
|
const restType = tupleAst.rest;
|
|
708
|
-
return
|
|
645
|
+
return Schema2.make(restType[0].type).annotations(restType[0].annotations);
|
|
709
646
|
};
|
|
710
647
|
var flattenUnion = (typeAst) => SchemaAST2.isUnion(typeAst) ? typeAst.types.flatMap(flattenUnion) : [
|
|
711
648
|
typeAst
|
|
@@ -722,7 +659,7 @@ var getProperties = (typeAst, getTargetPropertyFn) => {
|
|
|
722
659
|
const typeDiscriminators = getTypeDiscriminators(typeAstList);
|
|
723
660
|
const targetPropertyValue = getTargetPropertyFn(String(typeDiscriminators[0].name));
|
|
724
661
|
const typeIndex = typeDiscriminators.findIndex((p) => targetPropertyValue === p.type.literal);
|
|
725
|
-
|
|
662
|
+
invariant4(typeIndex !== -1, "discriminator field not set on target", { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 118, S: void 0, A: ["typeIndex !== -1", "'discriminator field not set on target'"] });
|
|
726
663
|
return SchemaAST2.getPropertySignatures(typeAstList[typeIndex]);
|
|
727
664
|
};
|
|
728
665
|
var getPropertyType = (ast, propertyName, getTargetPropertyFn) => {
|
|
@@ -752,7 +689,7 @@ var getTypeDiscriminators = (typeAstList) => {
|
|
|
752
689
|
const isValidDiscriminator = discriminatorPropCandidates.every((p) => p.name === propertyName && !p.isOptional);
|
|
753
690
|
const everyTypeHasDiscriminator = discriminatorPropCandidates.length === typeAstList.length;
|
|
754
691
|
const isDiscriminatedUnion = isValidDiscriminator && everyTypeHasDiscriminator;
|
|
755
|
-
|
|
692
|
+
invariant4(isDiscriminatedUnion, "type ambiguity: every type in a union must have a single unique-literal field", { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 148, S: void 0, A: ["isDiscriminatedUnion", "'type ambiguity: every type in a union must have a single unique-literal field'"] });
|
|
756
693
|
return discriminatorPropCandidates;
|
|
757
694
|
};
|
|
758
695
|
var unwrapAst = (rootAst, predicate) => {
|
|
@@ -778,7 +715,7 @@ var unwrapAst = (rootAst, predicate) => {
|
|
|
778
715
|
};
|
|
779
716
|
var unwrapArray = (ast) => unwrapAst(ast, SchemaAST2.isTupleType);
|
|
780
717
|
var checkIdNotPresentOnSchema = (schema) => {
|
|
781
|
-
|
|
718
|
+
invariant4(SchemaAST2.isTypeLiteral(schema.ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 184, S: void 0, A: ["SchemaAST.isTypeLiteral(schema.ast)", ""] });
|
|
782
719
|
const idProperty = SchemaAST2.getPropertySignatures(schema.ast).find((prop) => prop.name === "id");
|
|
783
720
|
if (idProperty != null) {
|
|
784
721
|
throw new Error('"id" property name is reserved');
|
|
@@ -786,7 +723,7 @@ var checkIdNotPresentOnSchema = (schema) => {
|
|
|
786
723
|
};
|
|
787
724
|
|
|
788
725
|
// src/internal/common/proxy/typed-handler.ts
|
|
789
|
-
var
|
|
726
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/common/proxy/typed-handler.ts";
|
|
790
727
|
var deepCopy = (value2, visited = /* @__PURE__ */ new Map()) => {
|
|
791
728
|
if (value2 == null || typeof value2 !== "object") {
|
|
792
729
|
return value2;
|
|
@@ -839,8 +776,8 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
|
|
|
839
776
|
constructor() {
|
|
840
777
|
}
|
|
841
778
|
init(target) {
|
|
842
|
-
|
|
843
|
-
|
|
779
|
+
assertArgument(typeof target === "object" && target !== null, "target");
|
|
780
|
+
invariant5(SchemaId in target, "Schema is not defined for the target", { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 101, S: this, A: ["SchemaId in target", "'Schema is not defined for the target'"] });
|
|
844
781
|
const hasOwner = !!getOwner(target);
|
|
845
782
|
if (!(EventId in target) && !hasOwner) {
|
|
846
783
|
defineHiddenProperty(target, EventId, new Event());
|
|
@@ -882,6 +819,22 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
|
|
|
882
819
|
}
|
|
883
820
|
return (callback) => executeChange(target, target, receiver, callback);
|
|
884
821
|
}
|
|
822
|
+
case TypeEntityId: {
|
|
823
|
+
return Reflect.get(target, prop, receiver);
|
|
824
|
+
}
|
|
825
|
+
case StaticTypeSchemaSlot: {
|
|
826
|
+
const existing = Reflect.get(target, prop, receiver);
|
|
827
|
+
if (existing !== void 0) {
|
|
828
|
+
return existing;
|
|
829
|
+
}
|
|
830
|
+
const jsonSchema = target.jsonSchema;
|
|
831
|
+
if (jsonSchema == null) {
|
|
832
|
+
return void 0;
|
|
833
|
+
}
|
|
834
|
+
const rebuilt = toEffectSchema(jsonSchema);
|
|
835
|
+
defineHiddenProperty(target, StaticTypeSchemaSlot, rebuilt);
|
|
836
|
+
return rebuilt;
|
|
837
|
+
}
|
|
885
838
|
}
|
|
886
839
|
if (Object.getOwnPropertyDescriptor(target, prop)?.get) {
|
|
887
840
|
return Reflect.get(target, prop, receiver);
|
|
@@ -905,6 +858,9 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
|
|
|
905
858
|
batchEvents(() => {
|
|
906
859
|
const { echoRoot: _, preparedValue } = this._prepareValueForAssignment(target, prop, value2);
|
|
907
860
|
result = Reflect.set(target, prop, preparedValue, receiver);
|
|
861
|
+
if (prop === "jsonSchema") {
|
|
862
|
+
Reflect.deleteProperty(target, StaticTypeSchemaSlot);
|
|
863
|
+
}
|
|
908
864
|
if (isInitialized) {
|
|
909
865
|
queueNotification(echoRoot);
|
|
910
866
|
notifyOwnerChain(target);
|
|
@@ -996,7 +952,7 @@ var TypedReactiveHandler = class _TypedReactiveHandler {
|
|
|
996
952
|
return value2;
|
|
997
953
|
}
|
|
998
954
|
const schema = SchemaValidator.getTargetPropertySchema(target, prop);
|
|
999
|
-
const _ =
|
|
955
|
+
const _ = Schema3.asserts(schema)(value2);
|
|
1000
956
|
if (isValidProxyTarget(value2)) {
|
|
1001
957
|
setSchemaProperties(value2, schema);
|
|
1002
958
|
}
|
|
@@ -1017,12 +973,21 @@ var toJSON = (target) => {
|
|
|
1017
973
|
...target
|
|
1018
974
|
};
|
|
1019
975
|
};
|
|
1020
|
-
var setSchemaProperties = (obj, schema) => {
|
|
1021
|
-
const schemaType =
|
|
976
|
+
var setSchemaProperties = (obj, schema, typeSource) => {
|
|
977
|
+
const schemaType = getSchemaURI(schema);
|
|
1022
978
|
if (schemaType != null) {
|
|
1023
979
|
defineHiddenProperty(obj, TypeId, schemaType);
|
|
1024
980
|
}
|
|
1025
|
-
|
|
981
|
+
if (typeSource != null) {
|
|
982
|
+
defineHiddenProperty(obj, TypeEntityId, typeSource);
|
|
983
|
+
Object.defineProperty(obj, SchemaId, {
|
|
984
|
+
get: () => typeSource[StaticTypeSchemaSlot] ?? schema,
|
|
985
|
+
enumerable: false,
|
|
986
|
+
configurable: true
|
|
987
|
+
});
|
|
988
|
+
} else {
|
|
989
|
+
defineHiddenProperty(obj, SchemaId, schema);
|
|
990
|
+
}
|
|
1026
991
|
for (const key in obj) {
|
|
1027
992
|
if (isValidProxyTarget(obj[key])) {
|
|
1028
993
|
const elementSchema = SchemaValidator.getTargetPropertySchema(obj, key);
|
|
@@ -1032,14 +997,14 @@ var setSchemaProperties = (obj, schema) => {
|
|
|
1032
997
|
}
|
|
1033
998
|
}
|
|
1034
999
|
};
|
|
1035
|
-
var prepareTypedTarget = (target, schema) => {
|
|
1000
|
+
var prepareTypedTarget = (target, schema, typeSource) => {
|
|
1036
1001
|
if (!SchemaAST3.isTypeLiteral(schema.ast)) {
|
|
1037
1002
|
throw new Error("schema has to describe an object type");
|
|
1038
1003
|
}
|
|
1039
1004
|
SchemaValidator.validateSchema(schema);
|
|
1040
|
-
const _ =
|
|
1005
|
+
const _ = Schema3.asserts(schema)(target);
|
|
1041
1006
|
makeArraysReactive(target);
|
|
1042
|
-
setSchemaProperties(target, schema);
|
|
1007
|
+
setSchemaProperties(target, schema, typeSource);
|
|
1043
1008
|
};
|
|
1044
1009
|
var makeArraysReactive = (target) => {
|
|
1045
1010
|
for (const key in target) {
|
|
@@ -1056,10 +1021,10 @@ var makeArraysReactive = (target) => {
|
|
|
1056
1021
|
};
|
|
1057
1022
|
|
|
1058
1023
|
// src/internal/common/proxy/make-object.ts
|
|
1059
|
-
var makeObject = (schema, obj, meta) => {
|
|
1060
|
-
return createReactiveObject(Object.assign({}, obj), meta, schema);
|
|
1024
|
+
var makeObject = (schema, obj, meta, typeSource) => {
|
|
1025
|
+
return createReactiveObject(Object.assign({}, obj), meta, schema, typeSource);
|
|
1061
1026
|
};
|
|
1062
|
-
var createReactiveObject = (obj, meta, schema) => {
|
|
1027
|
+
var createReactiveObject = (obj, meta, schema, typeSource) => {
|
|
1063
1028
|
if (!isValidProxyTarget(obj)) {
|
|
1064
1029
|
throw new Error("Value cannot be made into a reactive object.");
|
|
1065
1030
|
}
|
|
@@ -1079,7 +1044,7 @@ var createReactiveObject = (obj, meta, schema) => {
|
|
|
1079
1044
|
if (parent !== void 0) {
|
|
1080
1045
|
defineHiddenProperty(obj, ParentId, parent);
|
|
1081
1046
|
}
|
|
1082
|
-
prepareTypedTarget(obj, schema);
|
|
1047
|
+
prepareTypedTarget(obj, schema, typeSource);
|
|
1083
1048
|
attachTypedJsonSerializer(obj);
|
|
1084
1049
|
const proxy = createProxy(obj, TypedReactiveHandler.instance);
|
|
1085
1050
|
const metaProxy = obj[MetaId];
|
|
@@ -1093,18 +1058,22 @@ var createReactiveObject = (obj, meta, schema) => {
|
|
|
1093
1058
|
};
|
|
1094
1059
|
var setIdOnTarget = (target) => {
|
|
1095
1060
|
if ("id" in target && target.id !== void 0 && target.id !== null) {
|
|
1096
|
-
if (!
|
|
1061
|
+
if (!EntityId.isValid(target.id)) {
|
|
1097
1062
|
throw new Error("Invalid object id format.");
|
|
1098
1063
|
}
|
|
1099
1064
|
} else {
|
|
1100
|
-
target.id =
|
|
1065
|
+
target.id = EntityId.random();
|
|
1101
1066
|
}
|
|
1102
1067
|
};
|
|
1103
|
-
var initMeta = (obj, meta
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1068
|
+
var initMeta = (obj, meta) => {
|
|
1069
|
+
const fullMeta = {
|
|
1070
|
+
...meta,
|
|
1071
|
+
keys: meta?.keys ?? [],
|
|
1072
|
+
tags: meta?.tags ?? [],
|
|
1073
|
+
annotations: meta?.annotations ?? {}
|
|
1074
|
+
};
|
|
1075
|
+
prepareTypedTarget(fullMeta, EntityMetaSchema);
|
|
1076
|
+
defineHiddenProperty(obj, MetaId, createProxy(fullMeta, TypedReactiveHandler.instance));
|
|
1108
1077
|
};
|
|
1109
1078
|
|
|
1110
1079
|
// src/internal/common/proxy/reactive.ts
|
|
@@ -1129,104 +1098,177 @@ var change = (obj, callback) => {
|
|
|
1129
1098
|
}
|
|
1130
1099
|
};
|
|
1131
1100
|
|
|
1132
|
-
// src/internal/Entity/
|
|
1133
|
-
import
|
|
1134
|
-
import
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1101
|
+
// src/internal/Entity/entity.ts
|
|
1102
|
+
import * as Schema4 from "effect/Schema";
|
|
1103
|
+
import * as SchemaAST4 from "effect/SchemaAST";
|
|
1104
|
+
import { DXN, EntityId as EntityId2 } from "@dxos/keys";
|
|
1105
|
+
var TypeMetaSchemaDXN = DXN.make("org.dxos.type.schema", "0.1.0");
|
|
1106
|
+
var persistentEntitySchema = (() => {
|
|
1107
|
+
const typename = DXN.getName(TypeMetaSchemaDXN);
|
|
1108
|
+
const version2 = DXN.getVersion(TypeMetaSchemaDXN);
|
|
1109
|
+
const struct = Schema4.Struct({
|
|
1110
|
+
name: Schema4.optional(Schema4.String),
|
|
1111
|
+
jsonSchema: JsonSchemaType.pipe(Schema4.optional),
|
|
1112
|
+
id: EntityId2
|
|
1113
|
+
});
|
|
1114
|
+
const ast = SchemaAST4.annotations(struct.ast, {
|
|
1115
|
+
[TypeAnnotationId]: {
|
|
1116
|
+
kind: EntityKind.Type,
|
|
1117
|
+
typename,
|
|
1118
|
+
version: version2
|
|
1119
|
+
},
|
|
1120
|
+
[SchemaAST4.JSONSchemaAnnotationId]: makeTypeJsonSchemaAnnotation({
|
|
1121
|
+
kind: EntityKind.Type,
|
|
1122
|
+
typename,
|
|
1123
|
+
version: version2
|
|
1124
|
+
})
|
|
1125
|
+
});
|
|
1126
|
+
return Schema4.make(ast);
|
|
1127
|
+
})();
|
|
1128
|
+
var makeEchoTypeSchema = (fields, ast, typename, version2, kind, computeJsonSchema, explicitId) => {
|
|
1129
|
+
const sourceSchema = Schema4.make(ast);
|
|
1130
|
+
const meta = {
|
|
1131
|
+
keys: [],
|
|
1132
|
+
key: typename,
|
|
1133
|
+
version: version2
|
|
1134
|
+
};
|
|
1135
|
+
const id = explicitId ?? EntityId2.deterministic(typename, version2);
|
|
1136
|
+
const entity = makeObject(persistentEntitySchema, {
|
|
1137
|
+
id
|
|
1138
|
+
}, meta);
|
|
1139
|
+
const target = getProxyTarget(entity);
|
|
1140
|
+
let memoizedJsonSchema;
|
|
1141
|
+
Object.defineProperty(target, "jsonSchema", {
|
|
1142
|
+
configurable: true,
|
|
1143
|
+
enumerable: true,
|
|
1144
|
+
get() {
|
|
1145
|
+
return memoizedJsonSchema ??= computeJsonSchema();
|
|
1146
|
+
},
|
|
1147
|
+
set(value2) {
|
|
1148
|
+
memoizedJsonSchema = value2;
|
|
1149
|
+
}
|
|
1150
|
+
});
|
|
1151
|
+
defineHiddenProperty(target, StaticTypeSchemaSlot, sourceSchema);
|
|
1152
|
+
defineHiddenProperty(target, SchemaKindId, kind);
|
|
1153
|
+
Object.defineProperty(target, "fields", {
|
|
1154
|
+
configurable: true,
|
|
1155
|
+
enumerable: false,
|
|
1156
|
+
get: () => fields
|
|
1157
|
+
});
|
|
1158
|
+
return entity;
|
|
1159
|
+
};
|
|
1154
1160
|
|
|
1155
|
-
// src/internal/Entity/
|
|
1161
|
+
// src/internal/Entity/object.ts
|
|
1156
1162
|
import * as Schema5 from "effect/Schema";
|
|
1157
|
-
import
|
|
1158
|
-
import {
|
|
1159
|
-
import {
|
|
1160
|
-
var __dxlog_file9 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/util.ts";
|
|
1161
|
-
var getObjectDXN = (object) => {
|
|
1162
|
-
invariant9(!Schema5.isSchema(object), "schema not allowed in this function", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 14, S: void 0, A: ["!Schema.isSchema(object)", "'schema not allowed in this function'"] });
|
|
1163
|
-
assertArgument2(typeof object === "object" && object != null, "object", "expected object");
|
|
1164
|
-
assumeType2(object);
|
|
1165
|
-
if (object[SelfDXNId]) {
|
|
1166
|
-
invariant9(object[SelfDXNId] instanceof DXN3, "Invalid object model: invalid self dxn", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 18, S: void 0, A: ["object[SelfDXNId] instanceof DXN", "'Invalid object model: invalid self dxn'"] });
|
|
1167
|
-
return object[SelfDXNId];
|
|
1168
|
-
}
|
|
1169
|
-
if (!ObjectId3.isValid(object.id)) {
|
|
1170
|
-
throw new TypeError("Object id is not valid.");
|
|
1171
|
-
}
|
|
1172
|
-
return DXN3.fromLocalObjectId(object.id);
|
|
1173
|
-
};
|
|
1163
|
+
import * as SchemaAST5 from "effect/SchemaAST";
|
|
1164
|
+
import { invariant as invariant6 } from "@dxos/invariant";
|
|
1165
|
+
import { DXN as DXN2 } from "@dxos/keys";
|
|
1174
1166
|
|
|
1175
|
-
// src/internal/
|
|
1176
|
-
var
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
return dxn;
|
|
1167
|
+
// src/internal/JsonSchema/json-schema-normalize.ts
|
|
1168
|
+
var normalizeSchema = (schema) => {
|
|
1169
|
+
const copy = structuredClone(schema);
|
|
1170
|
+
go(copy);
|
|
1171
|
+
return copy;
|
|
1181
1172
|
};
|
|
1182
|
-
var
|
|
1183
|
-
|
|
1184
|
-
|
|
1173
|
+
var go = (schema) => {
|
|
1174
|
+
if (typeof schema !== "object" || schema === null) {
|
|
1175
|
+
return;
|
|
1176
|
+
}
|
|
1177
|
+
if (schema.exclusiveMaximum === true) {
|
|
1178
|
+
schema.exclusiveMaximum = schema.maximum;
|
|
1179
|
+
delete schema.exclusiveMaximum;
|
|
1180
|
+
} else if (schema.exclusiveMaximum === false) {
|
|
1181
|
+
delete schema.exclusiveMaximum;
|
|
1182
|
+
}
|
|
1183
|
+
if (schema.exclusiveMinimum === true) {
|
|
1184
|
+
schema.exclusiveMinimum = schema.minimum;
|
|
1185
|
+
delete schema.exclusiveMinimum;
|
|
1186
|
+
} else if (schema.exclusiveMinimum === false) {
|
|
1187
|
+
delete schema.exclusiveMinimum;
|
|
1188
|
+
}
|
|
1189
|
+
for (const key of Object.keys(schema)) {
|
|
1190
|
+
if (!JsonSchemaFields.includes(key)) {
|
|
1191
|
+
delete schema[key];
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
if (schema.properties) {
|
|
1195
|
+
goOnRecord(schema.properties);
|
|
1196
|
+
}
|
|
1197
|
+
if (schema.patternProperties) {
|
|
1198
|
+
goOnRecord(schema.patternProperties);
|
|
1199
|
+
}
|
|
1200
|
+
if (schema.propertyNames) {
|
|
1201
|
+
go(schema.propertyNames);
|
|
1202
|
+
}
|
|
1203
|
+
if (schema.definitions) {
|
|
1204
|
+
goOnRecord(schema.definitions);
|
|
1205
|
+
}
|
|
1206
|
+
if (schema.items) {
|
|
1207
|
+
maybeGoOnArray(schema.items);
|
|
1208
|
+
}
|
|
1209
|
+
if (schema.additionalItems) {
|
|
1210
|
+
maybeGoOnArray(schema.additionalItems);
|
|
1211
|
+
}
|
|
1212
|
+
if (schema.contains) {
|
|
1213
|
+
go(schema.contains);
|
|
1214
|
+
}
|
|
1215
|
+
if (schema.if) {
|
|
1216
|
+
go(schema.if);
|
|
1217
|
+
}
|
|
1218
|
+
if (schema.then) {
|
|
1219
|
+
go(schema.then);
|
|
1220
|
+
}
|
|
1221
|
+
if (schema.else) {
|
|
1222
|
+
go(schema.else);
|
|
1223
|
+
}
|
|
1224
|
+
if (schema.allOf) {
|
|
1225
|
+
maybeGoOnArray(schema.allOf);
|
|
1226
|
+
}
|
|
1227
|
+
if (schema.anyOf) {
|
|
1228
|
+
maybeGoOnArray(schema.anyOf);
|
|
1229
|
+
}
|
|
1230
|
+
if (schema.oneOf) {
|
|
1231
|
+
maybeGoOnArray(schema.oneOf);
|
|
1232
|
+
}
|
|
1233
|
+
if (schema.not) {
|
|
1234
|
+
go(schema.not);
|
|
1235
|
+
}
|
|
1236
|
+
if (schema.$defs) {
|
|
1237
|
+
goOnRecord(schema.$defs);
|
|
1238
|
+
}
|
|
1239
|
+
if (schema.reference) {
|
|
1240
|
+
go(schema.reference.schema);
|
|
1241
|
+
}
|
|
1185
1242
|
};
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
return class EchoObjectSchemaClass extends Schema6.make(ast) {
|
|
1191
|
-
static typename = typename;
|
|
1192
|
-
static version = version2;
|
|
1193
|
-
static [SchemaKindId] = kind;
|
|
1194
|
-
static fields = fields;
|
|
1195
|
-
static annotations(annotations3) {
|
|
1196
|
-
const schema = Schema6.make(ast).annotations(annotations3);
|
|
1197
|
-
return makeEchoTypeSchema(fields, schema.ast, typename, version2, kind);
|
|
1198
|
-
}
|
|
1199
|
-
// static make(
|
|
1200
|
-
// props: RequiredKeys<Schema.TypeLiteral.Constructor<Fields, []>> extends never
|
|
1201
|
-
// ? void | Simplify<Schema.TypeLiteral.Constructor<Fields, []>>
|
|
1202
|
-
// : Simplify<Schema.TypeLiteral.Constructor<Fields, []>>,
|
|
1203
|
-
// options?: MakeProps,
|
|
1204
|
-
// ): Simplify<Schema.TypeLiteral.Type<Fields, []>> {
|
|
1205
|
-
// const propsWithDefaults: any = _lazilyMergeDefaults(fields, { ...(props as any) });
|
|
1206
|
-
// return _getDisableValidationMakeOption(options)
|
|
1207
|
-
// ? propsWithDefaults
|
|
1208
|
-
// : ParseResult.validateSync(this)(propsWithDefaults);
|
|
1209
|
-
// }
|
|
1210
|
-
static instanceOf(value2) {
|
|
1211
|
-
return Schema6.is(this)(value2);
|
|
1243
|
+
var maybeGoOnArray = (value2) => {
|
|
1244
|
+
if (Array.isArray(value2)) {
|
|
1245
|
+
for (const item of value2) {
|
|
1246
|
+
go(item);
|
|
1212
1247
|
}
|
|
1213
|
-
}
|
|
1248
|
+
} else if (typeof value2 === "object" && value2 !== null) {
|
|
1249
|
+
go(value2);
|
|
1250
|
+
}
|
|
1251
|
+
};
|
|
1252
|
+
var goOnRecord = (record) => {
|
|
1253
|
+
for (const key of Object.keys(record)) {
|
|
1254
|
+
go(record[key]);
|
|
1255
|
+
}
|
|
1214
1256
|
};
|
|
1215
1257
|
|
|
1216
1258
|
// src/internal/Entity/object.ts
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1259
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/object.ts";
|
|
1260
|
+
var EchoObjectSchema = (dxn, options) => {
|
|
1261
|
+
const typename = DXN2.getName(dxn);
|
|
1262
|
+
const version2 = DXN2.getVersion(dxn);
|
|
1263
|
+
invariant6(version2, `Type.makeObject requires a versioned DXN: ${dxn}`, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 19, S: void 0, A: ["version", "`Type.makeObject requires a versioned DXN: ${dxn}`"] });
|
|
1222
1264
|
return (self) => {
|
|
1223
|
-
|
|
1224
|
-
|
|
1265
|
+
invariant6(typeof TypeAnnotationId === "symbol", "Sanity.", { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 21, S: void 0, A: ["typeof TypeAnnotationId === 'symbol'", "'Sanity.'"] });
|
|
1266
|
+
invariant6(SchemaAST5.isTypeLiteral(self.ast), "Schema must be a TypeLiteral.", { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 22, S: void 0, A: ["SchemaAST.isTypeLiteral(self.ast)", "'Schema must be a TypeLiteral.'"] });
|
|
1225
1267
|
const fields = self.fields ?? {};
|
|
1226
|
-
const schemaWithId =
|
|
1227
|
-
id:
|
|
1268
|
+
const schemaWithId = Schema5.extend(self, Schema5.Struct({
|
|
1269
|
+
id: Schema5.String
|
|
1228
1270
|
}));
|
|
1229
|
-
const ast =
|
|
1271
|
+
const ast = SchemaAST5.annotations(schemaWithId.ast, {
|
|
1230
1272
|
// TODO(dmaretskyi): `extend` kills the annotations.
|
|
1231
1273
|
...self.ast.annotations,
|
|
1232
1274
|
[TypeAnnotationId]: {
|
|
@@ -1235,41 +1277,46 @@ var EchoObjectSchema = ({ typename, version: version2 }) => {
|
|
|
1235
1277
|
version: version2
|
|
1236
1278
|
},
|
|
1237
1279
|
// TODO(dmaretskyi): TypeIdentifierAnnotationId?
|
|
1238
|
-
[
|
|
1280
|
+
[SchemaAST5.JSONSchemaAnnotationId]: makeTypeJsonSchemaAnnotation({
|
|
1239
1281
|
kind: EntityKind.Object,
|
|
1240
1282
|
typename,
|
|
1241
1283
|
version: version2
|
|
1242
1284
|
})
|
|
1243
1285
|
});
|
|
1244
|
-
return makeEchoTypeSchema(fields, ast, typename, version2, EntityKind.Object);
|
|
1286
|
+
return makeEchoTypeSchema(fields, ast, typename, version2, EntityKind.Object, () => toJsonSchema(Schema5.make(ast)), options?.id);
|
|
1245
1287
|
};
|
|
1246
1288
|
};
|
|
1247
1289
|
|
|
1248
1290
|
// src/internal/Entity/relation.ts
|
|
1249
|
-
import * as
|
|
1250
|
-
import * as
|
|
1291
|
+
import * as Schema6 from "effect/Schema";
|
|
1292
|
+
import * as SchemaAST6 from "effect/SchemaAST";
|
|
1251
1293
|
import { raise } from "@dxos/debug";
|
|
1252
|
-
import { assertArgument as
|
|
1253
|
-
import { DXN as
|
|
1254
|
-
var
|
|
1255
|
-
var EchoRelationSchema = ({ source, target,
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1294
|
+
import { assertArgument as assertArgument2, invariant as invariant7 } from "@dxos/invariant";
|
|
1295
|
+
import { DXN as DXN3 } from "@dxos/keys";
|
|
1296
|
+
var __dxlog_file7 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/relation.ts";
|
|
1297
|
+
var EchoRelationSchema = ({ dxn, source, target, id: explicitId }) => {
|
|
1298
|
+
const sourceSchema = source != null ? getStaticTypeSchema(source) ?? source : source;
|
|
1299
|
+
const targetSchema = target != null ? getStaticTypeSchema(target) ?? target : target;
|
|
1300
|
+
assertArgument2(Schema6.isSchema(sourceSchema), "source");
|
|
1301
|
+
assertArgument2(Schema6.isSchema(targetSchema), "target");
|
|
1302
|
+
const typename = DXN3.getName(dxn);
|
|
1303
|
+
const version2 = DXN3.getVersion(dxn);
|
|
1304
|
+
invariant7(version2, `Type.makeRelation requires a versioned DXN: ${dxn}`, { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 27, S: void 0, A: ["version", "`Type.makeRelation requires a versioned DXN: ${dxn}`"] });
|
|
1305
|
+
const sourceDXN = getDXNForRelationSchemaRef(sourceSchema);
|
|
1306
|
+
const targetDXN = getDXNForRelationSchemaRef(targetSchema);
|
|
1307
|
+
if (getEntityKind(sourceSchema) !== EntityKind.Object) {
|
|
1261
1308
|
raise(new Error("Source schema must be an echo object schema."));
|
|
1262
1309
|
}
|
|
1263
|
-
if (getEntityKind(
|
|
1310
|
+
if (getEntityKind(targetSchema) !== EntityKind.Object) {
|
|
1264
1311
|
raise(new Error("Target schema must be an echo object schema."));
|
|
1265
1312
|
}
|
|
1266
1313
|
return (self) => {
|
|
1267
|
-
|
|
1314
|
+
invariant7(SchemaAST6.isTypeLiteral(self.ast), "Schema must be a TypeLiteral.", { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 37, S: void 0, A: ["SchemaAST.isTypeLiteral(self.ast)", "'Schema must be a TypeLiteral.'"] });
|
|
1268
1315
|
const fields = self.fields ?? {};
|
|
1269
|
-
const schemaWithId =
|
|
1270
|
-
id:
|
|
1316
|
+
const schemaWithId = Schema6.extend(self, Schema6.Struct({
|
|
1317
|
+
id: Schema6.String
|
|
1271
1318
|
}));
|
|
1272
|
-
const ast =
|
|
1319
|
+
const ast = SchemaAST6.annotations(schemaWithId.ast, {
|
|
1273
1320
|
// TODO(dmaretskyi): `extend` kills the annotations.
|
|
1274
1321
|
...self.ast.annotations,
|
|
1275
1322
|
[TypeAnnotationId]: {
|
|
@@ -1280,7 +1327,7 @@ var EchoRelationSchema = ({ source, target, typename, version: version2 }) => {
|
|
|
1280
1327
|
targetSchema: targetDXN
|
|
1281
1328
|
},
|
|
1282
1329
|
// TODO(dmaretskyi): TypeIdentifierAnnotationId?
|
|
1283
|
-
[
|
|
1330
|
+
[SchemaAST6.JSONSchemaAnnotationId]: makeTypeJsonSchemaAnnotation({
|
|
1284
1331
|
kind: EntityKind.Relation,
|
|
1285
1332
|
typename,
|
|
1286
1333
|
version: version2,
|
|
@@ -1288,24 +1335,57 @@ var EchoRelationSchema = ({ source, target, typename, version: version2 }) => {
|
|
|
1288
1335
|
relationTarget: targetDXN
|
|
1289
1336
|
})
|
|
1290
1337
|
});
|
|
1291
|
-
return makeEchoTypeSchema(fields, ast, typename, version2, EntityKind.Relation);
|
|
1338
|
+
return makeEchoTypeSchema(fields, ast, typename, version2, EntityKind.Relation, () => toJsonSchema(Schema6.make(ast)), explicitId);
|
|
1292
1339
|
};
|
|
1293
1340
|
};
|
|
1294
1341
|
var getDXNForRelationSchemaRef = (schema) => {
|
|
1295
|
-
|
|
1342
|
+
assertArgument2(Schema6.isSchema(schema), "schema");
|
|
1296
1343
|
const identifier = getTypeIdentifierAnnotation(schema);
|
|
1297
1344
|
if (identifier) {
|
|
1298
|
-
return identifier;
|
|
1345
|
+
return DXN3.tryMake(identifier) ?? raise(new Error(`Invalid schema identifier: ${identifier}`));
|
|
1299
1346
|
}
|
|
1300
1347
|
const typename = getSchemaTypename(schema);
|
|
1301
1348
|
if (!typename) {
|
|
1302
1349
|
throw new Error("Schema must have a typename");
|
|
1303
1350
|
}
|
|
1304
|
-
return
|
|
1351
|
+
return DXN3.make(typename);
|
|
1352
|
+
};
|
|
1353
|
+
|
|
1354
|
+
// src/internal/Entity/type-kind.ts
|
|
1355
|
+
import * as Schema7 from "effect/Schema";
|
|
1356
|
+
import * as SchemaAST7 from "effect/SchemaAST";
|
|
1357
|
+
import { invariant as invariant8 } from "@dxos/invariant";
|
|
1358
|
+
import { DXN as DXN4 } from "@dxos/keys";
|
|
1359
|
+
var __dxlog_file8 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Entity/type-kind.ts";
|
|
1360
|
+
var EchoTypeKindSchema = (dxn, options) => {
|
|
1361
|
+
const typename = DXN4.getName(dxn);
|
|
1362
|
+
const version2 = DXN4.getVersion(dxn);
|
|
1363
|
+
invariant8(version2, `Type-kind schemas require a versioned DXN: ${dxn}`, { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 22, S: void 0, A: ["version", "`Type-kind schemas require a versioned DXN: ${dxn}`"] });
|
|
1364
|
+
return (self) => {
|
|
1365
|
+
invariant8(SchemaAST7.isTypeLiteral(self.ast), "Schema must be a TypeLiteral.", { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 24, S: void 0, A: ["SchemaAST.isTypeLiteral(self.ast)", "'Schema must be a TypeLiteral.'"] });
|
|
1366
|
+
const fields = self.fields ?? {};
|
|
1367
|
+
const schemaWithId = Schema7.extend(self, Schema7.Struct({
|
|
1368
|
+
id: Schema7.String
|
|
1369
|
+
}));
|
|
1370
|
+
const ast = SchemaAST7.annotations(schemaWithId.ast, {
|
|
1371
|
+
...self.ast.annotations,
|
|
1372
|
+
[TypeAnnotationId]: {
|
|
1373
|
+
kind: EntityKind.Type,
|
|
1374
|
+
typename,
|
|
1375
|
+
version: version2
|
|
1376
|
+
},
|
|
1377
|
+
[SchemaAST7.JSONSchemaAnnotationId]: makeTypeJsonSchemaAnnotation({
|
|
1378
|
+
kind: EntityKind.Type,
|
|
1379
|
+
typename,
|
|
1380
|
+
version: version2
|
|
1381
|
+
})
|
|
1382
|
+
});
|
|
1383
|
+
return makeEchoTypeSchema(fields, ast, typename, version2, EntityKind.Type, () => toJsonSchema(Schema7.make(ast)), options?.id);
|
|
1384
|
+
};
|
|
1305
1385
|
};
|
|
1306
1386
|
|
|
1307
1387
|
// src/internal/Entity/version.ts
|
|
1308
|
-
import { assertArgument as
|
|
1388
|
+
import { assertArgument as assertArgument3 } from "@dxos/invariant";
|
|
1309
1389
|
var unversioned = {
|
|
1310
1390
|
[VersionTypeId]: {},
|
|
1311
1391
|
versioned: false
|
|
@@ -1321,12 +1401,12 @@ var version = (entity) => {
|
|
|
1321
1401
|
return ver;
|
|
1322
1402
|
};
|
|
1323
1403
|
var versionValid = (ver) => {
|
|
1324
|
-
|
|
1404
|
+
assertArgument3(isVersion(ver), "version", "Invalid version object");
|
|
1325
1405
|
return !!ver.versioned;
|
|
1326
1406
|
};
|
|
1327
1407
|
var compareVersions = (version1, version2) => {
|
|
1328
|
-
|
|
1329
|
-
|
|
1408
|
+
assertArgument3(isVersion(version1), "version1", "Invalid version object");
|
|
1409
|
+
assertArgument3(isVersion(version2), "version2", "Invalid version object");
|
|
1330
1410
|
if (!versionValid(version1) || !versionValid(version2)) {
|
|
1331
1411
|
return "unversioned";
|
|
1332
1412
|
}
|
|
@@ -1347,99 +1427,8 @@ var decodeVersion = (ver) => {
|
|
|
1347
1427
|
return parsed;
|
|
1348
1428
|
};
|
|
1349
1429
|
|
|
1350
|
-
// src/internal/JsonSchema/json-schema-normalize.ts
|
|
1351
|
-
var normalizeSchema = (schema) => {
|
|
1352
|
-
const copy = structuredClone(schema);
|
|
1353
|
-
go(copy);
|
|
1354
|
-
return copy;
|
|
1355
|
-
};
|
|
1356
|
-
var go = (schema) => {
|
|
1357
|
-
if (typeof schema !== "object" || schema === null) {
|
|
1358
|
-
return;
|
|
1359
|
-
}
|
|
1360
|
-
if (schema.exclusiveMaximum === true) {
|
|
1361
|
-
schema.exclusiveMaximum = schema.maximum;
|
|
1362
|
-
delete schema.exclusiveMaximum;
|
|
1363
|
-
} else if (schema.exclusiveMaximum === false) {
|
|
1364
|
-
delete schema.exclusiveMaximum;
|
|
1365
|
-
}
|
|
1366
|
-
if (schema.exclusiveMinimum === true) {
|
|
1367
|
-
schema.exclusiveMinimum = schema.minimum;
|
|
1368
|
-
delete schema.exclusiveMinimum;
|
|
1369
|
-
} else if (schema.exclusiveMinimum === false) {
|
|
1370
|
-
delete schema.exclusiveMinimum;
|
|
1371
|
-
}
|
|
1372
|
-
for (const key of Object.keys(schema)) {
|
|
1373
|
-
if (!JsonSchemaFields.includes(key)) {
|
|
1374
|
-
delete schema[key];
|
|
1375
|
-
}
|
|
1376
|
-
}
|
|
1377
|
-
if (schema.properties) {
|
|
1378
|
-
goOnRecord(schema.properties);
|
|
1379
|
-
}
|
|
1380
|
-
if (schema.patternProperties) {
|
|
1381
|
-
goOnRecord(schema.patternProperties);
|
|
1382
|
-
}
|
|
1383
|
-
if (schema.propertyNames) {
|
|
1384
|
-
go(schema.propertyNames);
|
|
1385
|
-
}
|
|
1386
|
-
if (schema.definitions) {
|
|
1387
|
-
goOnRecord(schema.definitions);
|
|
1388
|
-
}
|
|
1389
|
-
if (schema.items) {
|
|
1390
|
-
maybeGoOnArray(schema.items);
|
|
1391
|
-
}
|
|
1392
|
-
if (schema.additionalItems) {
|
|
1393
|
-
maybeGoOnArray(schema.additionalItems);
|
|
1394
|
-
}
|
|
1395
|
-
if (schema.contains) {
|
|
1396
|
-
go(schema.contains);
|
|
1397
|
-
}
|
|
1398
|
-
if (schema.if) {
|
|
1399
|
-
go(schema.if);
|
|
1400
|
-
}
|
|
1401
|
-
if (schema.then) {
|
|
1402
|
-
go(schema.then);
|
|
1403
|
-
}
|
|
1404
|
-
if (schema.else) {
|
|
1405
|
-
go(schema.else);
|
|
1406
|
-
}
|
|
1407
|
-
if (schema.allOf) {
|
|
1408
|
-
maybeGoOnArray(schema.allOf);
|
|
1409
|
-
}
|
|
1410
|
-
if (schema.anyOf) {
|
|
1411
|
-
maybeGoOnArray(schema.anyOf);
|
|
1412
|
-
}
|
|
1413
|
-
if (schema.oneOf) {
|
|
1414
|
-
maybeGoOnArray(schema.oneOf);
|
|
1415
|
-
}
|
|
1416
|
-
if (schema.not) {
|
|
1417
|
-
go(schema.not);
|
|
1418
|
-
}
|
|
1419
|
-
if (schema.$defs) {
|
|
1420
|
-
goOnRecord(schema.$defs);
|
|
1421
|
-
}
|
|
1422
|
-
if (schema.reference) {
|
|
1423
|
-
go(schema.reference.schema);
|
|
1424
|
-
}
|
|
1425
|
-
};
|
|
1426
|
-
var maybeGoOnArray = (value2) => {
|
|
1427
|
-
if (Array.isArray(value2)) {
|
|
1428
|
-
for (const item of value2) {
|
|
1429
|
-
go(item);
|
|
1430
|
-
}
|
|
1431
|
-
} else if (typeof value2 === "object" && value2 !== null) {
|
|
1432
|
-
go(value2);
|
|
1433
|
-
}
|
|
1434
|
-
};
|
|
1435
|
-
var goOnRecord = (record) => {
|
|
1436
|
-
for (const key of Object.keys(record)) {
|
|
1437
|
-
go(record[key]);
|
|
1438
|
-
}
|
|
1439
|
-
};
|
|
1440
|
-
|
|
1441
1430
|
// src/internal/Obj/common.ts
|
|
1442
|
-
import * as
|
|
1431
|
+
import * as Schema8 from "effect/Schema";
|
|
1443
1432
|
var makeTypedEntityClass = (typename, version2, baseSchema) => {
|
|
1444
1433
|
return class {
|
|
1445
1434
|
// Implement TypedObject properties.
|
|
@@ -1447,7 +1436,7 @@ var makeTypedEntityClass = (typename, version2, baseSchema) => {
|
|
|
1447
1436
|
static version = version2;
|
|
1448
1437
|
// Implement Schema.Schema properties.
|
|
1449
1438
|
// TODO(burdon): Comment required.
|
|
1450
|
-
static [
|
|
1439
|
+
static [Schema8.TypeId] = schemaVariance;
|
|
1451
1440
|
static ast = baseSchema.ast;
|
|
1452
1441
|
static annotations = baseSchema.annotations.bind(baseSchema);
|
|
1453
1442
|
static pipe = baseSchema.pipe.bind(baseSchema);
|
|
@@ -1469,8 +1458,8 @@ var schemaVariance = {
|
|
|
1469
1458
|
|
|
1470
1459
|
// src/internal/Obj/create-object.ts
|
|
1471
1460
|
import { raise as raise3 } from "@dxos/debug";
|
|
1472
|
-
import { assertArgument as
|
|
1473
|
-
import {
|
|
1461
|
+
import { assertArgument as assertArgument5, failedInvariant } from "@dxos/invariant";
|
|
1462
|
+
import { EntityId as EntityId4 } from "@dxos/keys";
|
|
1474
1463
|
|
|
1475
1464
|
// src/internal/Obj/inspect.ts
|
|
1476
1465
|
import { inspectCustom as inspectCustom2 } from "@dxos/debug";
|
|
@@ -1490,37 +1479,37 @@ var typedObjectInspectFunction = function(depth, options, inspect) {
|
|
|
1490
1479
|
const { id, ...props } = this;
|
|
1491
1480
|
return inspect({
|
|
1492
1481
|
id,
|
|
1493
|
-
[ATTR_TYPE]:
|
|
1482
|
+
[ATTR_TYPE]: getTypeURI(this),
|
|
1494
1483
|
...props,
|
|
1495
1484
|
[ATTR_META]: this[MetaId]
|
|
1496
1485
|
}, options);
|
|
1497
1486
|
};
|
|
1498
1487
|
|
|
1499
1488
|
// src/internal/Obj/json-serializer.ts
|
|
1500
|
-
import * as
|
|
1489
|
+
import * as Schema9 from "effect/Schema";
|
|
1501
1490
|
import { raise as raise2 } from "@dxos/debug";
|
|
1502
|
-
import {
|
|
1503
|
-
import { assertArgument as
|
|
1504
|
-
import {
|
|
1505
|
-
import { assumeType
|
|
1506
|
-
var
|
|
1491
|
+
import { EntityStructure, isEncodedReference } from "@dxos/echo-protocol";
|
|
1492
|
+
import { assertArgument as assertArgument4, invariant as invariant9 } from "@dxos/invariant";
|
|
1493
|
+
import { EID as EID2, EntityId as EntityId3, URI } from "@dxos/keys";
|
|
1494
|
+
import { assumeType, decodeUint8ArrayFromJson, deepMapValues as deepMapValues2, isEncodedUint8Array, visitValues } from "@dxos/util";
|
|
1495
|
+
var __dxlog_file9 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Obj/json-serializer.ts";
|
|
1507
1496
|
var objectToJSON = (obj) => {
|
|
1508
|
-
const typename =
|
|
1509
|
-
|
|
1497
|
+
const typename = getTypeURI(obj);
|
|
1498
|
+
invariant9(typename && typeof typename === "string", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 22, S: void 0, A: ["typename && typeof typename === 'string'", ""] });
|
|
1510
1499
|
return typedJsonSerializer.call(obj);
|
|
1511
1500
|
};
|
|
1512
|
-
var objectFromJSON = async (jsonData, { refResolver,
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
const type =
|
|
1501
|
+
var objectFromJSON = async (jsonData, { refResolver, uri, database, parent } = {}) => {
|
|
1502
|
+
assumeType(jsonData);
|
|
1503
|
+
assertArgument4(typeof jsonData === "object" && jsonData !== null, "jsonData", "expect object");
|
|
1504
|
+
assertArgument4(typeof jsonData[ATTR_TYPE] === "string", "jsonData[ATTR_TYPE]", "expected object to have a type");
|
|
1505
|
+
assertArgument4(typeof jsonData.id === "string", "jsonData.id", "expected object to have an id");
|
|
1506
|
+
const type = URI.make(jsonData[ATTR_TYPE]);
|
|
1518
1507
|
const schema = await refResolver?.resolveSchema(type);
|
|
1519
|
-
|
|
1520
|
-
const decodedInput = stripInternalJsonKeys(jsonData);
|
|
1508
|
+
invariant9(schema === void 0 || Schema9.isSchema(schema), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 42, S: void 0, A: ["schema === undefined || Schema.isSchema(schema)", ""] });
|
|
1509
|
+
const decodedInput = restoreUint8Arrays(stripInternalJsonKeys(jsonData));
|
|
1521
1510
|
let obj;
|
|
1522
1511
|
if (schema != null) {
|
|
1523
|
-
obj = await schema.pipe(
|
|
1512
|
+
obj = await schema.pipe(Schema9.decodeUnknownPromise)(decodedInput);
|
|
1524
1513
|
if (refResolver) {
|
|
1525
1514
|
setRefResolverOnData(obj, refResolver);
|
|
1526
1515
|
}
|
|
@@ -1529,67 +1518,97 @@ var objectFromJSON = async (jsonData, { refResolver, dxn, database, parent } = {
|
|
|
1529
1518
|
refResolver
|
|
1530
1519
|
});
|
|
1531
1520
|
}
|
|
1532
|
-
|
|
1521
|
+
invariant9(EntityId3.isValid(obj.id), "Invalid object id", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 55, S: void 0, A: ["EntityId.isValid(obj.id)", "'Invalid object id'"] });
|
|
1533
1522
|
setTypename(obj, type);
|
|
1534
1523
|
if (schema) {
|
|
1535
1524
|
setSchema(obj, schema);
|
|
1536
1525
|
}
|
|
1526
|
+
if (refResolver?.resolveType) {
|
|
1527
|
+
const typeEntity = await refResolver.resolveType(type);
|
|
1528
|
+
if (typeEntity != null) {
|
|
1529
|
+
setType(obj, typeEntity);
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1537
1532
|
const isRelation = typeof jsonData[ATTR_RELATION_SOURCE] === "string" || typeof jsonData[ATTR_RELATION_TARGET] === "string";
|
|
1538
1533
|
if (isRelation) {
|
|
1539
|
-
const
|
|
1540
|
-
const
|
|
1541
|
-
const source = await refResolver?.resolve(
|
|
1542
|
-
const target = await refResolver?.resolve(
|
|
1534
|
+
const sourceDxn = jsonData[ATTR_RELATION_SOURCE] ?? raise2(new TypeError("Missing relation source"));
|
|
1535
|
+
const targetDxn = jsonData[ATTR_RELATION_TARGET] ?? raise2(new TypeError("Missing relation target"));
|
|
1536
|
+
const source = await refResolver?.resolve(sourceDxn);
|
|
1537
|
+
const target = await refResolver?.resolve(targetDxn);
|
|
1543
1538
|
defineHiddenProperty(obj, KindId, EntityKind.Relation);
|
|
1544
|
-
defineHiddenProperty(obj, RelationSourceDXNId,
|
|
1545
|
-
defineHiddenProperty(obj, RelationTargetDXNId,
|
|
1539
|
+
defineHiddenProperty(obj, RelationSourceDXNId, sourceDxn);
|
|
1540
|
+
defineHiddenProperty(obj, RelationTargetDXNId, targetDxn);
|
|
1546
1541
|
defineHiddenProperty(obj, RelationSourceId, source);
|
|
1547
1542
|
defineHiddenProperty(obj, RelationTargetId, target);
|
|
1548
1543
|
} else {
|
|
1549
|
-
|
|
1544
|
+
const annotationKind = schema != null ? getTypeAnnotation(schema)?.kind : void 0;
|
|
1545
|
+
defineHiddenProperty(obj, KindId, annotationKind === EntityKind.Type ? EntityKind.Type : EntityKind.Object);
|
|
1550
1546
|
}
|
|
1551
1547
|
if (typeof jsonData[ATTR_META] === "object") {
|
|
1552
|
-
const meta = await
|
|
1553
|
-
|
|
1548
|
+
const meta = await EntityMetaSchema.pipe(Schema9.decodeUnknownPromise)(normalizeMeta(jsonData[ATTR_META]));
|
|
1549
|
+
invariant9(Array.isArray(meta.keys), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 91, S: void 0, A: ["Array.isArray(meta.keys)", ""] });
|
|
1554
1550
|
defineHiddenProperty(obj, MetaId, meta);
|
|
1555
1551
|
} else {
|
|
1556
1552
|
defineHiddenProperty(obj, MetaId, {
|
|
1557
|
-
keys: []
|
|
1553
|
+
keys: [],
|
|
1554
|
+
tags: [],
|
|
1555
|
+
annotations: {}
|
|
1558
1556
|
});
|
|
1559
1557
|
}
|
|
1560
1558
|
if (jsonData[ATTR_PARENT]) {
|
|
1561
|
-
const
|
|
1562
|
-
const resolvedParent = await refResolver?.resolve(
|
|
1559
|
+
const parentDxn = jsonData[ATTR_PARENT];
|
|
1560
|
+
const resolvedParent = await refResolver?.resolve(parentDxn);
|
|
1563
1561
|
defineHiddenProperty(obj, ParentId, resolvedParent);
|
|
1564
1562
|
} else if (parent) {
|
|
1565
1563
|
defineHiddenProperty(obj, ParentId, parent);
|
|
1566
1564
|
}
|
|
1567
|
-
if (
|
|
1568
|
-
defineHiddenProperty(obj,
|
|
1565
|
+
if (uri) {
|
|
1566
|
+
defineHiddenProperty(obj, SelfURIId, uri);
|
|
1569
1567
|
}
|
|
1570
1568
|
if (database) {
|
|
1571
1569
|
defineHiddenProperty(obj, ObjectDatabaseId, database);
|
|
1572
1570
|
}
|
|
1573
1571
|
assertObjectModel(obj);
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1572
|
+
invariant9(obj[ATTR_TYPE] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 114, S: void 0, A: ["obj[ATTR_TYPE] === undefined", "'Invalid object model'"] });
|
|
1573
|
+
invariant9(obj[ATTR_META] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 115, S: void 0, A: ["obj[ATTR_META] === undefined", "'Invalid object model'"] });
|
|
1574
|
+
invariant9(obj[ATTR_DELETED] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 116, S: void 0, A: ["obj[ATTR_DELETED] === undefined", "'Invalid object model'"] });
|
|
1575
|
+
invariant9(obj[ATTR_SELF_URI] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 117, S: void 0, A: ["obj[ATTR_SELF_URI] === undefined", "'Invalid object model'"] });
|
|
1576
|
+
invariant9(obj[ATTR_SELF_URI_LEGACY] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 118, S: void 0, A: ["obj[ATTR_SELF_URI_LEGACY] === undefined", "'Invalid object model'"] });
|
|
1577
|
+
invariant9(obj[ATTR_RELATION_SOURCE] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 119, S: void 0, A: ["obj[ATTR_RELATION_SOURCE] === undefined", "'Invalid object model'"] });
|
|
1578
|
+
invariant9(obj[ATTR_RELATION_TARGET] === void 0, "Invalid object model", { "~LogMeta": "~LogMeta", F: __dxlog_file9, L: 120, S: void 0, A: ["obj[ATTR_RELATION_TARGET] === undefined", "'Invalid object model'"] });
|
|
1580
1579
|
return obj;
|
|
1581
1580
|
};
|
|
1581
|
+
var normalizeMeta = (meta) => {
|
|
1582
|
+
const tags = Array.isArray(meta?.tags) ? meta.tags.map((tag) => typeof tag === "string" ? {
|
|
1583
|
+
"/": URI.make(tag)
|
|
1584
|
+
} : tag) : [];
|
|
1585
|
+
return {
|
|
1586
|
+
...meta,
|
|
1587
|
+
keys: Array.isArray(meta?.keys) ? meta.keys : [],
|
|
1588
|
+
tags,
|
|
1589
|
+
annotations: meta?.annotations ?? {}
|
|
1590
|
+
};
|
|
1591
|
+
};
|
|
1582
1592
|
var decodeGeneric = (jsonData, options) => {
|
|
1583
1593
|
const props = stripInternalJsonKeys(jsonData);
|
|
1584
1594
|
return deepMapValues2(props, (value2, visitor) => {
|
|
1585
1595
|
if (isEncodedReference(value2)) {
|
|
1586
1596
|
return refFromEncodedReference(value2, options.refResolver);
|
|
1587
1597
|
}
|
|
1598
|
+
if (isEncodedUint8Array(value2)) {
|
|
1599
|
+
return decodeUint8ArrayFromJson(value2);
|
|
1600
|
+
}
|
|
1588
1601
|
return visitor(value2);
|
|
1589
1602
|
});
|
|
1590
1603
|
};
|
|
1604
|
+
var restoreUint8Arrays = (data) => deepMapValues2(data, (value2, recurse) => {
|
|
1605
|
+
if (isEncodedUint8Array(value2)) {
|
|
1606
|
+
return decodeUint8ArrayFromJson(value2);
|
|
1607
|
+
}
|
|
1608
|
+
return recurse(value2);
|
|
1609
|
+
});
|
|
1591
1610
|
var stripInternalJsonKeys = (jsonData) => {
|
|
1592
|
-
const { [ATTR_TYPE]: _type, [ATTR_META]: _meta, [ATTR_DELETED]: _deleted, [
|
|
1611
|
+
const { [ATTR_TYPE]: _type, [ATTR_META]: _meta, [ATTR_DELETED]: _deleted, [ATTR_SELF_URI]: _selfUri, [ATTR_SELF_URI_LEGACY]: _legacySelfUri, [ATTR_RELATION_SOURCE]: _relationSource, [ATTR_RELATION_TARGET]: _relationTarget, ...props } = jsonData;
|
|
1593
1612
|
return props;
|
|
1594
1613
|
};
|
|
1595
1614
|
var setRefResolverOnData = (obj, refResolver) => {
|
|
@@ -1603,43 +1622,58 @@ var setRefResolverOnData = (obj, refResolver) => {
|
|
|
1603
1622
|
visitor(obj);
|
|
1604
1623
|
};
|
|
1605
1624
|
var objectStructureToJson = (objectId, structure) => {
|
|
1625
|
+
const typeRef = EntityStructure.getTypeReference(structure)?.["/"];
|
|
1626
|
+
const parent = EntityStructure.getParent(structure)?.["/"];
|
|
1627
|
+
const source = EntityStructure.getRelationSource(structure)?.["/"];
|
|
1628
|
+
const target = EntityStructure.getRelationTarget(structure)?.["/"];
|
|
1606
1629
|
return {
|
|
1607
1630
|
...structure.data,
|
|
1608
1631
|
id: objectId,
|
|
1609
|
-
[ATTR_TYPE]:
|
|
1610
|
-
[ATTR_DELETED]:
|
|
1611
|
-
[ATTR_PARENT]:
|
|
1612
|
-
[ATTR_RELATION_SOURCE]:
|
|
1613
|
-
[ATTR_RELATION_TARGET]:
|
|
1632
|
+
[ATTR_TYPE]: typeRef ? URI.make(typeRef) : void 0,
|
|
1633
|
+
[ATTR_DELETED]: EntityStructure.isDeleted(structure),
|
|
1634
|
+
[ATTR_PARENT]: parent !== void 0 ? EID2.tryParse(parent) : void 0,
|
|
1635
|
+
[ATTR_RELATION_SOURCE]: source !== void 0 ? EID2.tryParse(source) : void 0,
|
|
1636
|
+
[ATTR_RELATION_TARGET]: target !== void 0 ? EID2.tryParse(target) : void 0
|
|
1614
1637
|
};
|
|
1615
1638
|
};
|
|
1616
1639
|
|
|
1617
1640
|
// src/internal/Obj/create-object.ts
|
|
1618
|
-
var createObject = (
|
|
1641
|
+
var createObject = (input, props) => {
|
|
1642
|
+
const schema = getStaticTypeSchema(input) ?? failedInvariant("Type entity is missing its source schema");
|
|
1619
1643
|
const annotation = getTypeAnnotation(schema);
|
|
1620
1644
|
if (!annotation) {
|
|
1621
1645
|
throw new Error("Schema is not an ECHO schema");
|
|
1622
1646
|
}
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1647
|
+
assertArgument5(!("@type" in props), "data", "@type is not allowed");
|
|
1648
|
+
assertArgument5(!(RelationSourceDXNId in props), "data", "Relation source DXN is not allowed in the constructor");
|
|
1649
|
+
assertArgument5(!(RelationTargetDXNId in props), "data", "Relation target DXN is not allowed in the constructor");
|
|
1650
|
+
assertArgument5(RelationSourceId in props === RelationTargetId in props, "data", "Relation source and target must be provided together");
|
|
1651
|
+
const metaOverride = props[MetaId];
|
|
1652
|
+
if (metaOverride !== void 0) {
|
|
1653
|
+
delete props[MetaId];
|
|
1654
|
+
}
|
|
1627
1655
|
const obj = {
|
|
1628
1656
|
...props,
|
|
1629
|
-
id: props.id ??
|
|
1657
|
+
id: props.id ?? EntityId4.random()
|
|
1630
1658
|
};
|
|
1631
|
-
const kind = RelationSourceId in props ? EntityKind.Relation : EntityKind.Object;
|
|
1659
|
+
const kind = annotation.kind === EntityKind.Type ? EntityKind.Type : annotation.kind === EntityKind.Relation || RelationSourceId in props ? EntityKind.Relation : EntityKind.Object;
|
|
1632
1660
|
defineHiddenProperty(obj, KindId, kind);
|
|
1633
1661
|
defineHiddenProperty(obj, MetaId, {
|
|
1634
|
-
|
|
1662
|
+
...metaOverride,
|
|
1663
|
+
keys: metaOverride?.keys ?? [],
|
|
1664
|
+
tags: metaOverride?.tags ?? [],
|
|
1665
|
+
annotations: metaOverride?.annotations ?? {}
|
|
1635
1666
|
});
|
|
1636
1667
|
setSchema(obj, schema);
|
|
1637
|
-
|
|
1668
|
+
if (input !== schema) {
|
|
1669
|
+
setType(obj, input);
|
|
1670
|
+
}
|
|
1671
|
+
setTypename(obj, getSchemaURI(schema) ?? failedInvariant("Missing schema URI"));
|
|
1638
1672
|
attachTypedJsonSerializer(obj);
|
|
1639
1673
|
attachedTypedObjectInspector(obj);
|
|
1640
1674
|
if (kind === EntityKind.Relation) {
|
|
1641
|
-
const sourceDXN =
|
|
1642
|
-
const targetDXN =
|
|
1675
|
+
const sourceDXN = getObjectEchoUri(props[RelationSourceId]) ?? raise3(new Error("Unresolved relation source"));
|
|
1676
|
+
const targetDXN = getObjectEchoUri(props[RelationTargetId]) ?? raise3(new Error("Unresolved relation target"));
|
|
1643
1677
|
defineHiddenProperty(obj, RelationSourceDXNId, sourceDXN);
|
|
1644
1678
|
defineHiddenProperty(obj, RelationTargetDXNId, targetDXN);
|
|
1645
1679
|
}
|
|
@@ -1655,25 +1689,17 @@ var isDeleted = (obj) => {
|
|
|
1655
1689
|
return obj[ObjectDeletedId] ?? false;
|
|
1656
1690
|
};
|
|
1657
1691
|
|
|
1658
|
-
// src/internal/Obj/ids.ts
|
|
1659
|
-
import { DXN as DXN6, ObjectId as ObjectId6, QueueSubspaceTags, SpaceId } from "@dxos/keys";
|
|
1660
|
-
var createQueueDXN = (spaceId = SpaceId.random(), queueId = ObjectId6.random()) => new DXN6(DXN6.kind.QUEUE, [
|
|
1661
|
-
QueueSubspaceTags.DATA,
|
|
1662
|
-
spaceId,
|
|
1663
|
-
queueId
|
|
1664
|
-
]);
|
|
1665
|
-
|
|
1666
1692
|
// src/internal/Obj/set-value.ts
|
|
1667
1693
|
import * as Match from "effect/Match";
|
|
1668
1694
|
import * as Option from "effect/Option";
|
|
1669
|
-
import * as
|
|
1695
|
+
import * as SchemaAST8 from "effect/SchemaAST";
|
|
1670
1696
|
import { getArrayElementType, getBaseType, getProperties as getProperties2, isArrayType, isNestedType } from "@dxos/effect";
|
|
1671
|
-
import { invariant as
|
|
1672
|
-
var
|
|
1697
|
+
import { invariant as invariant10 } from "@dxos/invariant";
|
|
1698
|
+
var __dxlog_file10 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Obj/set-value.ts";
|
|
1673
1699
|
var setValue = (obj, path, value2) => {
|
|
1674
|
-
|
|
1700
|
+
invariant10(path.length > 0, "Path must not be empty", { "~LogMeta": "~LogMeta", F: __dxlog_file10, L: 14, S: void 0, A: ["path.length > 0", "'Path must not be empty'"] });
|
|
1675
1701
|
const schema = getSchema(obj);
|
|
1676
|
-
|
|
1702
|
+
invariant10(schema != null, "Object must have a schema", { "~LogMeta": "~LogMeta", F: __dxlog_file10, L: 16, S: void 0, A: ["schema != null", "'Object must have a schema'"] });
|
|
1677
1703
|
let parent = obj;
|
|
1678
1704
|
let currentAST = schema.ast;
|
|
1679
1705
|
for (let i = 0; i < path.length - 1; i++) {
|
|
@@ -1727,7 +1753,7 @@ var getDefaultValueForType = (ast) => {
|
|
|
1727
1753
|
if (!ast) {
|
|
1728
1754
|
return void 0;
|
|
1729
1755
|
}
|
|
1730
|
-
const defaultValue =
|
|
1756
|
+
const defaultValue = SchemaAST8.getDefaultAnnotation(ast);
|
|
1731
1757
|
if (Option.isSome(defaultValue)) {
|
|
1732
1758
|
return defaultValue.value;
|
|
1733
1759
|
}
|
|
@@ -1757,7 +1783,7 @@ var createObjectWithDefaults = (ast) => {
|
|
|
1757
1783
|
};
|
|
1758
1784
|
|
|
1759
1785
|
// src/internal/Obj/snapshot.ts
|
|
1760
|
-
import { assertArgument as
|
|
1786
|
+
import { assertArgument as assertArgument6 } from "@dxos/invariant";
|
|
1761
1787
|
import { deepMapValues as deepMapValues3 } from "@dxos/util";
|
|
1762
1788
|
var copySymbolProperty = (source, target, symbol, transform) => {
|
|
1763
1789
|
let value2;
|
|
@@ -1777,7 +1803,7 @@ var copySymbolProperty = (source, target, symbol, transform) => {
|
|
|
1777
1803
|
}
|
|
1778
1804
|
};
|
|
1779
1805
|
var getSnapshot = (obj) => {
|
|
1780
|
-
|
|
1806
|
+
assertArgument6(typeof obj === "object" && obj !== null && KindId in obj, "obj", "must be an entity");
|
|
1781
1807
|
const snapshot = deepMapValues3(obj, (value2, recurse) => {
|
|
1782
1808
|
if (typeof value2 === "object" && value2 !== null && Object.getPrototypeOf(value2) !== Object.prototype && !Array.isArray(value2)) {
|
|
1783
1809
|
return value2;
|
|
@@ -1790,16 +1816,23 @@ var getSnapshot = (obj) => {
|
|
|
1790
1816
|
const source = obj;
|
|
1791
1817
|
copySymbolProperty(source, snapshot, TypeId);
|
|
1792
1818
|
copySymbolProperty(source, snapshot, SchemaId);
|
|
1793
|
-
copySymbolProperty(source, snapshot,
|
|
1819
|
+
copySymbolProperty(source, snapshot, TypeEntityId);
|
|
1820
|
+
copySymbolProperty(source, snapshot, SelfURIId);
|
|
1794
1821
|
copySymbolProperty(source, snapshot, ObjectDatabaseId);
|
|
1795
1822
|
copySymbolProperty(source, snapshot, ObjectDeletedId);
|
|
1823
|
+
copySymbolProperty(source, snapshot, ParentId);
|
|
1796
1824
|
copySymbolProperty(source, snapshot, MetaId, (meta) => ({
|
|
1797
1825
|
keys: [
|
|
1798
1826
|
...meta?.keys ?? []
|
|
1799
1827
|
],
|
|
1800
1828
|
tags: [
|
|
1801
1829
|
...meta?.tags ?? []
|
|
1802
|
-
]
|
|
1830
|
+
],
|
|
1831
|
+
...meta?.annotations ? {
|
|
1832
|
+
annotations: {
|
|
1833
|
+
...meta.annotations
|
|
1834
|
+
}
|
|
1835
|
+
} : {}
|
|
1803
1836
|
}));
|
|
1804
1837
|
copySymbolProperty(source, snapshot, RelationSourceDXNId);
|
|
1805
1838
|
copySymbolProperty(source, snapshot, RelationTargetDXNId);
|
|
@@ -1809,13 +1842,14 @@ var getSnapshot = (obj) => {
|
|
|
1809
1842
|
};
|
|
1810
1843
|
|
|
1811
1844
|
// src/internal/Obj/clone.ts
|
|
1812
|
-
import { invariant as
|
|
1845
|
+
import { invariant as invariant11 } from "@dxos/invariant";
|
|
1813
1846
|
import { deepMapValues as deepMapValues4 } from "@dxos/util";
|
|
1814
|
-
var
|
|
1847
|
+
var __dxlog_file11 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Obj/clone.ts";
|
|
1815
1848
|
var clone = (obj, opts) => {
|
|
1816
1849
|
const { id, ...data } = obj;
|
|
1817
|
-
const
|
|
1818
|
-
|
|
1850
|
+
const typeEntity = getType(obj);
|
|
1851
|
+
const schema = typeEntity != null ? getStaticTypeSchema(typeEntity) : getSchema(obj);
|
|
1852
|
+
invariant11(schema != null, "Object should have a type or schema", { "~LogMeta": "~LogMeta", F: __dxlog_file11, L: 21, S: void 0, A: ["schema != null", "'Object should have a type or schema'"] });
|
|
1819
1853
|
const props = deepMapValues4(data, (value2, recurse) => {
|
|
1820
1854
|
if (Ref.isRef(value2)) {
|
|
1821
1855
|
if (opts?.deep) {
|
|
@@ -1837,7 +1871,7 @@ var clone = (obj, opts) => {
|
|
|
1837
1871
|
}
|
|
1838
1872
|
return recurse(value2);
|
|
1839
1873
|
});
|
|
1840
|
-
return makeObject(schema, props, meta);
|
|
1874
|
+
return makeObject(schema, props, meta, typeEntity);
|
|
1841
1875
|
};
|
|
1842
1876
|
|
|
1843
1877
|
// src/internal/Query.ts
|
|
@@ -1947,18 +1981,19 @@ var prettyQuery = (query) => {
|
|
|
1947
1981
|
}
|
|
1948
1982
|
case "from": {
|
|
1949
1983
|
if (query.from._tag === "scope") {
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
if (scope.spaceIds !== void 0) {
|
|
1953
|
-
parts.push(`spaceIds: [${scope.spaceIds.map((s) => JSON.stringify(s)).join(", ")}]`);
|
|
1954
|
-
}
|
|
1955
|
-
if (scope.feeds !== void 0) {
|
|
1956
|
-
parts.push(`feeds: [${scope.feeds.map(String).join(", ")}]`);
|
|
1984
|
+
if (query.from.scopes.length === 0) {
|
|
1985
|
+
return `${prettyQuery(query.query)}.from('all-accessible-spaces')`;
|
|
1957
1986
|
}
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1987
|
+
const scopeStrs = query.from.scopes.map((scope) => {
|
|
1988
|
+
if (scope._tag === "space") {
|
|
1989
|
+
return scope.includeAllFeeds ? `{ space: ${JSON.stringify(scope.spaceId)}, includeAllFeeds: true }` : `{ space: ${JSON.stringify(scope.spaceId)} }`;
|
|
1990
|
+
}
|
|
1991
|
+
if (scope._tag === "feed") {
|
|
1992
|
+
return `{ feed: ${JSON.stringify(String(scope.feedUri))} }`;
|
|
1993
|
+
}
|
|
1994
|
+
return `{ registry: ${JSON.stringify(scope.location)} }`;
|
|
1995
|
+
});
|
|
1996
|
+
return `${prettyQuery(query.query)}.from([${scopeStrs.join(", ")}])`;
|
|
1962
1997
|
}
|
|
1963
1998
|
return `${prettyQuery(query.query)}.from(${prettyQuery(query.from.query)})`;
|
|
1964
1999
|
}
|
|
@@ -1967,28 +2002,22 @@ var prettyQuery = (query) => {
|
|
|
1967
2002
|
}
|
|
1968
2003
|
};
|
|
1969
2004
|
|
|
1970
|
-
// src/internal/Type/echo-schema.ts
|
|
1971
|
-
import * as Schema13 from "effect/Schema";
|
|
1972
|
-
import * as SchemaAST8 from "effect/SchemaAST";
|
|
1973
|
-
import { invariant as invariant17 } from "@dxos/invariant";
|
|
1974
|
-
|
|
1975
2005
|
// src/internal/Type/manipulation.ts
|
|
1976
|
-
import * as
|
|
1977
|
-
import * as
|
|
1978
|
-
import { invariant as
|
|
1979
|
-
|
|
1980
|
-
var __dxlog_file16 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Type/manipulation.ts";
|
|
2006
|
+
import * as Schema10 from "effect/Schema";
|
|
2007
|
+
import * as SchemaAST9 from "effect/SchemaAST";
|
|
2008
|
+
import { invariant as invariant12 } from "@dxos/invariant";
|
|
2009
|
+
var __dxlog_file12 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Type/manipulation.ts";
|
|
1981
2010
|
var addFieldsToSchema = (schema, fields) => {
|
|
1982
|
-
const schemaExtension =
|
|
1983
|
-
return
|
|
2011
|
+
const schemaExtension = Schema10.partial(Schema10.Struct(fields));
|
|
2012
|
+
return Schema10.extend(schema, schemaExtension).annotations(schema.ast.annotations);
|
|
1984
2013
|
};
|
|
1985
2014
|
var updateFieldsInSchema = (schema, fields) => {
|
|
1986
2015
|
const ast = schema.ast;
|
|
1987
|
-
|
|
2016
|
+
invariant12(SchemaAST9.isTypeLiteral(ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file12, L: 14, S: void 0, A: ["SchemaAST.isTypeLiteral(ast)", ""] });
|
|
1988
2017
|
const updatedProperties = [
|
|
1989
2018
|
...ast.propertySignatures
|
|
1990
2019
|
];
|
|
1991
|
-
const propertiesToUpdate =
|
|
2020
|
+
const propertiesToUpdate = Schema10.partial(Schema10.Struct(fields)).ast.propertySignatures;
|
|
1992
2021
|
for (const property of propertiesToUpdate) {
|
|
1993
2022
|
const index = updatedProperties.findIndex((p) => p.name === property.name);
|
|
1994
2023
|
if (index !== -1) {
|
|
@@ -1997,380 +2026,37 @@ var updateFieldsInSchema = (schema, fields) => {
|
|
|
1997
2026
|
updatedProperties.push(property);
|
|
1998
2027
|
}
|
|
1999
2028
|
}
|
|
2000
|
-
return
|
|
2029
|
+
return Schema10.make(new SchemaAST9.TypeLiteral(updatedProperties, ast.indexSignatures, ast.annotations));
|
|
2001
2030
|
};
|
|
2002
2031
|
var removeFieldsFromSchema = (schema, fieldNames) => {
|
|
2003
|
-
return
|
|
2032
|
+
return Schema10.make(SchemaAST9.omit(schema.ast, fieldNames)).annotations(schema.ast.annotations);
|
|
2004
2033
|
};
|
|
2005
2034
|
var updateFieldNameInSchema = (schema, { before, after }) => {
|
|
2006
2035
|
const ast = schema.ast;
|
|
2007
|
-
|
|
2008
|
-
return
|
|
2009
|
-
};
|
|
2010
|
-
var setTypenameInSchema = (schema, typename) => {
|
|
2011
|
-
const existingAnnotation = schema.ast.annotations[TypeAnnotationId];
|
|
2012
|
-
invariant16(existingAnnotation, `Missing ${String(TypeAnnotationId)}`, { "~LogMeta": "~LogMeta", F: __dxlog_file16, L: 41, S: void 0, A: ["existingAnnotation", "`Missing ${String(TypeAnnotationId)}`"] });
|
|
2013
|
-
return schema.annotations({
|
|
2014
|
-
...schema.ast.annotations,
|
|
2015
|
-
[TypeAnnotationId]: {
|
|
2016
|
-
kind: existingAnnotation.kind,
|
|
2017
|
-
typename,
|
|
2018
|
-
version: existingAnnotation.version
|
|
2019
|
-
},
|
|
2020
|
-
[SchemaAST7.JSONSchemaAnnotationId]: {
|
|
2021
|
-
...schema.ast.annotations[SchemaAST7.JSONSchemaAnnotationId] ?? {},
|
|
2022
|
-
$id: schema.ast.annotations[TypeIdentifierAnnotationId] ?? DXN7.fromTypename(typename).toString(),
|
|
2023
|
-
typename
|
|
2024
|
-
}
|
|
2025
|
-
});
|
|
2036
|
+
invariant12(SchemaAST9.isTypeLiteral(ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file12, L: 34, S: void 0, A: ["SchemaAST.isTypeLiteral(ast)", ""] });
|
|
2037
|
+
return Schema10.make(new SchemaAST9.TypeLiteral(ast.propertySignatures.map((p) => p.name === before ? new SchemaAST9.PropertySignature(after, p.type, p.isOptional, p.isReadonly, p.annotations) : p), ast.indexSignatures, ast.annotations));
|
|
2026
2038
|
};
|
|
2027
2039
|
|
|
2028
|
-
// src/internal/Type/
|
|
2029
|
-
import * as
|
|
2030
|
-
var
|
|
2031
|
-
name:
|
|
2032
|
-
typename: TypenameSchema,
|
|
2033
|
-
version: VersionSchema,
|
|
2040
|
+
// src/internal/Type/type-schema.ts
|
|
2041
|
+
import * as Schema11 from "effect/Schema";
|
|
2042
|
+
var TypeSchemaStruct = Schema11.Struct({
|
|
2043
|
+
name: Schema11.optional(Schema11.String),
|
|
2034
2044
|
jsonSchema: JsonSchemaType
|
|
2035
|
-
})
|
|
2036
|
-
|
|
2037
|
-
version: "0.1.0"
|
|
2038
|
-
}), LabelAnnotation.set([
|
|
2045
|
+
});
|
|
2046
|
+
var TypeSchema = TypeSchemaStruct.pipe(LabelAnnotation.set([
|
|
2039
2047
|
"name"
|
|
2040
2048
|
]), IconAnnotation.set({
|
|
2041
2049
|
icon: "ph--database--regular",
|
|
2042
2050
|
hue: "green"
|
|
2043
|
-
}));
|
|
2044
|
-
|
|
2045
|
-
// src/internal/Type/echo-schema.ts
|
|
2046
|
-
var __dxlog_file17 = "/__w/dxos/dxos/packages/core/echo/echo/src/internal/Type/echo-schema.ts";
|
|
2047
|
-
var ImmutableSchema = class {
|
|
2048
|
-
_schema;
|
|
2049
|
-
_objectAnnotation;
|
|
2050
|
-
constructor(_schema) {
|
|
2051
|
-
this._schema = _schema;
|
|
2052
|
-
this._objectAnnotation = getTypeAnnotation(this._schema);
|
|
2053
|
-
invariant17(this._objectAnnotation, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file17, L: 24, S: this, A: ["this._objectAnnotation", ""] });
|
|
2054
|
-
}
|
|
2055
|
-
//
|
|
2056
|
-
// Effect Schema (push to abstract base class).
|
|
2057
|
-
//
|
|
2058
|
-
get [Schema13.TypeId]() {
|
|
2059
|
-
return schemaVariance2;
|
|
2060
|
-
}
|
|
2061
|
-
get Type() {
|
|
2062
|
-
return this._schema.Type;
|
|
2063
|
-
}
|
|
2064
|
-
get Encoded() {
|
|
2065
|
-
return this._schema.Encoded;
|
|
2066
|
-
}
|
|
2067
|
-
get Context() {
|
|
2068
|
-
return this._schema.Context;
|
|
2069
|
-
}
|
|
2070
|
-
get ast() {
|
|
2071
|
-
return this._schema.ast;
|
|
2072
|
-
}
|
|
2073
|
-
get annotations() {
|
|
2074
|
-
return this._schema.annotations;
|
|
2075
|
-
}
|
|
2076
|
-
get pipe() {
|
|
2077
|
-
return this._schema.pipe;
|
|
2078
|
-
}
|
|
2079
|
-
//
|
|
2080
|
-
// TypedObject
|
|
2081
|
-
//
|
|
2082
|
-
get kind() {
|
|
2083
|
-
return this._objectAnnotation.kind;
|
|
2084
|
-
}
|
|
2085
|
-
get typename() {
|
|
2086
|
-
return this._objectAnnotation.typename;
|
|
2087
|
-
}
|
|
2088
|
-
get version() {
|
|
2089
|
-
return this._objectAnnotation.version;
|
|
2090
|
-
}
|
|
2091
|
-
//
|
|
2092
|
-
// BaseSchema
|
|
2093
|
-
//
|
|
2094
|
-
get readonly() {
|
|
2095
|
-
return true;
|
|
2096
|
-
}
|
|
2097
|
-
get snapshot() {
|
|
2098
|
-
return this._schema;
|
|
2099
|
-
}
|
|
2100
|
-
// TODO(burdon): Change from getter since this is expensive.
|
|
2101
|
-
get jsonSchema() {
|
|
2102
|
-
return toJsonSchema(this._schema);
|
|
2103
|
-
}
|
|
2104
|
-
get mutable() {
|
|
2105
|
-
throw new Error("Schema is readonly.");
|
|
2106
|
-
}
|
|
2107
|
-
};
|
|
2108
|
-
var EchoSchemaConstructor = () => {
|
|
2109
|
-
return class {
|
|
2110
|
-
static get _schema() {
|
|
2111
|
-
return Schema13.Union(PersistentSchema, Schema13.instanceOf(EchoSchema)).annotations(PersistentSchema.ast.annotations);
|
|
2112
|
-
}
|
|
2113
|
-
static [Schema13.TypeId] = schemaVariance2;
|
|
2114
|
-
static get ast() {
|
|
2115
|
-
const schema = this._schema;
|
|
2116
|
-
return schema.ast;
|
|
2117
|
-
}
|
|
2118
|
-
static get annotations() {
|
|
2119
|
-
const schema = this._schema;
|
|
2120
|
-
return schema.annotations.bind(schema);
|
|
2121
|
-
}
|
|
2122
|
-
static get pipe() {
|
|
2123
|
-
const schema = this._schema;
|
|
2124
|
-
return schema.pipe.bind(schema);
|
|
2125
|
-
}
|
|
2126
|
-
};
|
|
2127
|
-
};
|
|
2128
|
-
var isMutable = (schema) => {
|
|
2129
|
-
return schema instanceof EchoSchema;
|
|
2130
|
-
};
|
|
2131
|
-
var schemaVariance2 = {
|
|
2132
|
-
_A: (_) => _,
|
|
2133
|
-
_I: (_) => _,
|
|
2134
|
-
_R: (_) => _
|
|
2135
|
-
};
|
|
2136
|
-
var EchoSchema = class extends EchoSchemaConstructor() {
|
|
2137
|
-
_persistentSchema;
|
|
2138
|
-
_schema;
|
|
2139
|
-
_isDirty = true;
|
|
2140
|
-
/**
|
|
2141
|
-
* Schema kind key that marks this as an ECHO schema.
|
|
2142
|
-
* Makes EchoSchema satisfy the Type.AnyObj type.
|
|
2143
|
-
*/
|
|
2144
|
-
[SchemaKindId] = EntityKind.Object;
|
|
2145
|
-
constructor(_persistentSchema) {
|
|
2146
|
-
super(), this._persistentSchema = _persistentSchema;
|
|
2147
|
-
}
|
|
2148
|
-
//
|
|
2149
|
-
// Effect Schema (push to abstract base class).
|
|
2150
|
-
//
|
|
2151
|
-
get [Schema13.TypeId]() {
|
|
2152
|
-
return schemaVariance2;
|
|
2153
|
-
}
|
|
2154
|
-
get Type() {
|
|
2155
|
-
return this._persistentSchema;
|
|
2156
|
-
}
|
|
2157
|
-
get Encoded() {
|
|
2158
|
-
return this._persistentSchema;
|
|
2159
|
-
}
|
|
2160
|
-
get Context() {
|
|
2161
|
-
const schema = this._getSchema();
|
|
2162
|
-
return schema.Context;
|
|
2163
|
-
}
|
|
2164
|
-
get ast() {
|
|
2165
|
-
const schema = this._getSchema();
|
|
2166
|
-
return schema.ast;
|
|
2167
|
-
}
|
|
2168
|
-
get annotations() {
|
|
2169
|
-
const schema = this._getSchema();
|
|
2170
|
-
return schema.annotations.bind(schema);
|
|
2171
|
-
}
|
|
2172
|
-
get pipe() {
|
|
2173
|
-
const schema = this._getSchema();
|
|
2174
|
-
return schema.pipe.bind(schema);
|
|
2175
|
-
}
|
|
2176
|
-
//
|
|
2177
|
-
// BaseSchema
|
|
2178
|
-
//
|
|
2179
|
-
get kind() {
|
|
2180
|
-
return EntityKind.Object;
|
|
2181
|
-
}
|
|
2182
|
-
get typename() {
|
|
2183
|
-
return this._persistentSchema.typename;
|
|
2184
|
-
}
|
|
2185
|
-
get version() {
|
|
2186
|
-
return this._persistentSchema.version;
|
|
2187
|
-
}
|
|
2188
|
-
get readonly() {
|
|
2189
|
-
return false;
|
|
2190
|
-
}
|
|
2191
|
-
/**
|
|
2192
|
-
* Returns an immutable schema snapshot of the current state of the schema.
|
|
2193
|
-
*/
|
|
2194
|
-
get snapshot() {
|
|
2195
|
-
return this._getSchema();
|
|
2196
|
-
}
|
|
2197
|
-
/**
|
|
2198
|
-
* Returns the JSON schema for the schema.
|
|
2199
|
-
*/
|
|
2200
|
-
get jsonSchema() {
|
|
2201
|
-
return this._persistentSchema.jsonSchema;
|
|
2202
|
-
}
|
|
2203
|
-
/**
|
|
2204
|
-
* Returns a mutable schema.
|
|
2205
|
-
*/
|
|
2206
|
-
get mutable() {
|
|
2207
|
-
invariant17(!this.readonly, "Schema is not mutable", { "~LogMeta": "~LogMeta", F: __dxlog_file17, L: 203, S: this, A: ["!this.readonly", "'Schema is not mutable'"] });
|
|
2208
|
-
return this;
|
|
2209
|
-
}
|
|
2210
|
-
//
|
|
2211
|
-
// Mutable Schema
|
|
2212
|
-
//
|
|
2213
|
-
/**
|
|
2214
|
-
* Id of the ECHO object containing the schema.
|
|
2215
|
-
*/
|
|
2216
|
-
get id() {
|
|
2217
|
-
return this._persistentSchema.id;
|
|
2218
|
-
}
|
|
2219
|
-
/**
|
|
2220
|
-
* Short name of the schema.
|
|
2221
|
-
*/
|
|
2222
|
-
get name() {
|
|
2223
|
-
return this._persistentSchema.name;
|
|
2224
|
-
}
|
|
2225
|
-
get [SchemaMetaSymbol]() {
|
|
2226
|
-
return {
|
|
2227
|
-
id: this.id,
|
|
2228
|
-
typename: this.typename,
|
|
2229
|
-
version: this._persistentSchema.version
|
|
2230
|
-
};
|
|
2231
|
-
}
|
|
2232
|
-
/**
|
|
2233
|
-
* Reference to the underlying persistent schema object.
|
|
2234
|
-
*/
|
|
2235
|
-
get persistentSchema() {
|
|
2236
|
-
return this._persistentSchema;
|
|
2237
|
-
}
|
|
2238
|
-
getProperties() {
|
|
2239
|
-
const ast = this._getSchema().ast;
|
|
2240
|
-
invariant17(SchemaAST8.isTypeLiteral(ast), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file17, L: 233, S: this, A: ["SchemaAST.isTypeLiteral(ast)", ""] });
|
|
2241
|
-
return [
|
|
2242
|
-
...ast.propertySignatures
|
|
2243
|
-
].filter((p) => p.name !== "id").map(unwrapOptionality);
|
|
2244
|
-
}
|
|
2245
|
-
//
|
|
2246
|
-
// Mutation methods.
|
|
2247
|
-
// TODO(burdon): Create separate interface for dynamic schema.
|
|
2248
|
-
// TODO(burdon): Deprecate direct manipulation? Use JSONSchema directly.
|
|
2249
|
-
//
|
|
2250
|
-
/**
|
|
2251
|
-
* @throws Error if the schema is readonly.
|
|
2252
|
-
*/
|
|
2253
|
-
updateTypename(typename) {
|
|
2254
|
-
const updated = setTypenameInSchema(this._getSchema(), typename);
|
|
2255
|
-
this._change((schema) => {
|
|
2256
|
-
schema.typename = typename;
|
|
2257
|
-
schema.jsonSchema = toJsonSchema(updated);
|
|
2258
|
-
});
|
|
2259
|
-
}
|
|
2260
|
-
/**
|
|
2261
|
-
* @throws Error if the schema is readonly.
|
|
2262
|
-
*/
|
|
2263
|
-
addFields(fields) {
|
|
2264
|
-
const extended = addFieldsToSchema(this._getSchema(), fields);
|
|
2265
|
-
this._change((schema) => {
|
|
2266
|
-
schema.jsonSchema = toJsonSchema(extended);
|
|
2267
|
-
});
|
|
2268
|
-
}
|
|
2269
|
-
/**
|
|
2270
|
-
* @throws Error if the schema is readonly.
|
|
2271
|
-
*/
|
|
2272
|
-
updateFields(fields) {
|
|
2273
|
-
const updated = updateFieldsInSchema(this._getSchema(), fields);
|
|
2274
|
-
this._change((schema) => {
|
|
2275
|
-
schema.jsonSchema = toJsonSchema(updated);
|
|
2276
|
-
});
|
|
2277
|
-
}
|
|
2278
|
-
/**
|
|
2279
|
-
* @throws Error if the schema is readonly.
|
|
2280
|
-
*/
|
|
2281
|
-
updateFieldPropertyName({ before, after }) {
|
|
2282
|
-
const renamed = updateFieldNameInSchema(this._getSchema(), {
|
|
2283
|
-
before,
|
|
2284
|
-
after
|
|
2285
|
-
});
|
|
2286
|
-
this._change((schema) => {
|
|
2287
|
-
schema.jsonSchema = toJsonSchema(renamed);
|
|
2288
|
-
});
|
|
2289
|
-
}
|
|
2290
|
-
/**
|
|
2291
|
-
* @throws Error if the schema is readonly.
|
|
2292
|
-
*/
|
|
2293
|
-
removeFields(fieldNames) {
|
|
2294
|
-
const removed = removeFieldsFromSchema(this._getSchema(), fieldNames);
|
|
2295
|
-
this._change((schema) => {
|
|
2296
|
-
schema.jsonSchema = toJsonSchema(removed);
|
|
2297
|
-
});
|
|
2298
|
-
}
|
|
2299
|
-
/**
|
|
2300
|
-
* Wrapper for Obj.update that handles the change context for the persistent schema.
|
|
2301
|
-
*/
|
|
2302
|
-
_change(callback) {
|
|
2303
|
-
const changeFn = this._persistentSchema[ChangeId];
|
|
2304
|
-
if (changeFn) {
|
|
2305
|
-
changeFn(callback);
|
|
2306
|
-
} else {
|
|
2307
|
-
callback(this._persistentSchema);
|
|
2308
|
-
}
|
|
2309
|
-
}
|
|
2310
|
-
//
|
|
2311
|
-
// Internals
|
|
2312
|
-
//
|
|
2313
|
-
/**
|
|
2314
|
-
* Called by DatabaseSchemaRegistry on update.
|
|
2315
|
-
*/
|
|
2316
|
-
_invalidate() {
|
|
2317
|
-
this._isDirty = true;
|
|
2318
|
-
}
|
|
2319
|
-
/**
|
|
2320
|
-
* Rebuilds this schema if it is dirty.
|
|
2321
|
-
*/
|
|
2322
|
-
_rebuild() {
|
|
2323
|
-
if (this._isDirty || this._schema == null) {
|
|
2324
|
-
this._schema = toEffectSchema(getSnapshot(this._persistentSchema).jsonSchema);
|
|
2325
|
-
this._isDirty = false;
|
|
2326
|
-
}
|
|
2327
|
-
}
|
|
2328
|
-
_getSchema() {
|
|
2329
|
-
this._rebuild();
|
|
2330
|
-
return this._schema;
|
|
2331
|
-
}
|
|
2332
|
-
};
|
|
2333
|
-
var unwrapOptionality = (property) => {
|
|
2334
|
-
if (!SchemaAST8.isUnion(property.type)) {
|
|
2335
|
-
return property;
|
|
2336
|
-
}
|
|
2337
|
-
return {
|
|
2338
|
-
...property,
|
|
2339
|
-
type: property.type.types.find((type) => !SchemaAST8.isUndefinedKeyword(type))
|
|
2340
|
-
};
|
|
2341
|
-
};
|
|
2051
|
+
}), EchoTypeKindSchema(TypeMetaSchemaDXN));
|
|
2342
2052
|
|
|
2343
2053
|
export {
|
|
2344
2054
|
RawObject,
|
|
2345
|
-
ATTR_META,
|
|
2346
|
-
MetaId,
|
|
2347
|
-
ObjectMetaSchema,
|
|
2348
|
-
getMeta,
|
|
2349
|
-
foreignKey,
|
|
2350
|
-
foreignKeyEquals,
|
|
2351
|
-
compareForeignKeys,
|
|
2352
|
-
ATTR_SELF_DXN,
|
|
2353
|
-
SelfDXNId,
|
|
2354
|
-
ATTR_DELETED,
|
|
2355
|
-
ObjectDeletedId,
|
|
2356
|
-
ObjectVersionId,
|
|
2357
|
-
ObjectDatabaseId,
|
|
2358
|
-
ATTR_RELATION_SOURCE,
|
|
2359
|
-
RelationSourceId,
|
|
2360
|
-
RelationSourceDXNId,
|
|
2361
|
-
ATTR_RELATION_TARGET,
|
|
2362
|
-
RelationTargetId,
|
|
2363
|
-
RelationTargetDXNId,
|
|
2364
2055
|
VersionTypeId,
|
|
2365
2056
|
compare,
|
|
2366
2057
|
sortByLabel,
|
|
2367
2058
|
sortByTypename,
|
|
2368
2059
|
sort,
|
|
2369
|
-
getMetaChecked,
|
|
2370
|
-
getKeys,
|
|
2371
|
-
deleteKeys,
|
|
2372
|
-
addTag,
|
|
2373
|
-
removeTag,
|
|
2374
2060
|
EventId,
|
|
2375
2061
|
ChangeId,
|
|
2376
2062
|
batchEvents,
|
|
@@ -2408,20 +2094,19 @@ export {
|
|
|
2408
2094
|
makeObject,
|
|
2409
2095
|
subscribe,
|
|
2410
2096
|
change,
|
|
2411
|
-
|
|
2412
|
-
getObjectDXN,
|
|
2413
|
-
getDXN,
|
|
2414
|
-
getDatabase,
|
|
2097
|
+
TypeMetaSchemaDXN,
|
|
2415
2098
|
makeEchoTypeSchema,
|
|
2099
|
+
normalizeSchema,
|
|
2416
2100
|
EchoObjectSchema,
|
|
2417
2101
|
EchoRelationSchema,
|
|
2102
|
+
getDXNForRelationSchemaRef,
|
|
2103
|
+
EchoTypeKindSchema,
|
|
2418
2104
|
isVersion,
|
|
2419
2105
|
version,
|
|
2420
2106
|
versionValid,
|
|
2421
2107
|
compareVersions,
|
|
2422
2108
|
encodeVersion,
|
|
2423
2109
|
decodeVersion,
|
|
2424
|
-
normalizeSchema,
|
|
2425
2110
|
makeTypedEntityClass,
|
|
2426
2111
|
objectToJSON,
|
|
2427
2112
|
objectFromJSON,
|
|
@@ -2429,7 +2114,6 @@ export {
|
|
|
2429
2114
|
objectStructureToJson,
|
|
2430
2115
|
createObject,
|
|
2431
2116
|
isDeleted,
|
|
2432
|
-
createQueueDXN,
|
|
2433
2117
|
setValue,
|
|
2434
2118
|
getSnapshot,
|
|
2435
2119
|
clone,
|
|
@@ -2439,14 +2123,10 @@ export {
|
|
|
2439
2123
|
updateFieldsInSchema,
|
|
2440
2124
|
removeFieldsFromSchema,
|
|
2441
2125
|
updateFieldNameInSchema,
|
|
2442
|
-
|
|
2443
|
-
PersistentSchema,
|
|
2444
|
-
ImmutableSchema,
|
|
2445
|
-
isMutable,
|
|
2446
|
-
EchoSchema,
|
|
2126
|
+
TypeSchema,
|
|
2447
2127
|
JsonPath,
|
|
2448
2128
|
JsonProp,
|
|
2449
2129
|
getValue,
|
|
2450
2130
|
splitJsonPath
|
|
2451
2131
|
};
|
|
2452
|
-
//# sourceMappingURL=chunk-
|
|
2132
|
+
//# sourceMappingURL=chunk-OYUG4FHF.mjs.map
|