@lifeready/core 1.0.21 → 1.0.22
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/bundles/lifeready-core.umd.js +9745 -9700
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +2 -2
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/run-outside-angular.js +2 -2
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/api/lr-apollo.service.js +3 -3
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +3 -3
- package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +6 -5
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/auth.gql.js +1 -28
- package/esm2015/lib/auth/auth.types.js +1 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +32 -31
- package/esm2015/lib/category/category.gql.js +1 -1
- package/esm2015/lib/category/category.service.js +6 -6
- package/esm2015/lib/contact-card/contact-card.gql.js +79 -0
- package/esm2015/lib/contact-card/contact-card.service.js +154 -0
- package/esm2015/lib/contact-card/contact-card2.gql.js +29 -0
- package/esm2015/lib/contact-card/contact-card2.service.js +103 -0
- package/esm2015/lib/encryption/encryption.service.js +189 -0
- package/esm2015/lib/file-upload/file-upload.service.js +74 -0
- package/esm2015/lib/file-upload/file-upload.types.js +1 -0
- package/esm2015/lib/{auth → idle}/idle.service.js +7 -7
- package/esm2015/lib/{auth → idle}/idle.types.js +1 -1
- package/esm2015/lib/items2/item2.service.js +20 -20
- package/esm2015/lib/key/key-factory.service.js +237 -0
- package/esm2015/lib/{cryptography → key}/key-graph.service.js +10 -10
- package/esm2015/lib/key/key-meta.service.js +200 -0
- package/esm2015/lib/key/key.service.js +124 -0
- package/esm2015/lib/key/key.types.js +11 -0
- package/esm2015/lib/key-exchange/key-exchange.gql.js +188 -0
- package/esm2015/lib/key-exchange/key-exchange.service.js +443 -0
- package/esm2015/lib/key-exchange/key-exchange.types.js +7 -0
- package/esm2015/lib/key-exchange/key-exchange2.gql.js +171 -0
- package/esm2015/lib/key-exchange/key-exchange2.service.js +500 -0
- package/esm2015/lib/lbop/lbop.service.js +355 -0
- package/esm2015/lib/life-ready.module.js +2 -27
- package/esm2015/lib/lock/lock.gql.js +40 -0
- package/esm2015/lib/lock/lock.service.js +64 -0
- package/esm2015/lib/message/message.gql.js +32 -0
- package/esm2015/lib/message/message.service.js +116 -0
- package/esm2015/lib/message/message.types.js +1 -0
- package/esm2015/lib/password/password.gql.js +28 -0
- package/esm2015/lib/password/password.service.js +315 -0
- package/esm2015/lib/persist/persist.service.js +180 -0
- package/esm2015/lib/profile/profile-details.service.js +214 -0
- package/esm2015/lib/profile/profile.gql.js +97 -0
- package/esm2015/lib/profile/profile.service.js +169 -0
- package/esm2015/lib/profile/profile.types.js +34 -0
- package/esm2015/lib/record/record-attachment.service.js +15 -15
- package/esm2015/lib/record/record.service.js +3 -3
- package/esm2015/lib/register/register.service.js +172 -0
- package/esm2015/lib/scenario/scenario.controller.js +2 -2
- package/esm2015/lib/scenario/{scenario.gql.private.js → scenario.private.gql.js} +1 -1
- package/esm2015/lib/scenario/scenario.service.js +9 -9
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +119 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +41 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +117 -0
- package/esm2015/lib/slip39/slip39.service.js +169 -0
- package/esm2015/lib/time/time.service.js +146 -0
- package/esm2015/lib/tp-assembly/tp-assembly.js +365 -0
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +22 -0
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +1 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +100 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +117 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +4 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +34 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +74 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +165 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +54 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +92 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -0
- package/esm2015/lib/trusted-party/trusted-party.gql.js +148 -0
- package/esm2015/lib/trusted-party/trusted-party.service.js +326 -0
- package/esm2015/lib/trusted-party/trusted-party.types.js +41 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.js +64 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +25 -0
- package/esm2015/lib/trusted-party/trusted-party2.service.js +224 -0
- package/esm2015/lib/trusted-party/trusted-party2.types.js +1 -0
- package/esm2015/lib/two-factor/two-factor.service.js +74 -0
- package/esm2015/lib/user/user.gql.js +60 -0
- package/esm2015/lib/user/user.service.js +79 -0
- package/esm2015/lib/user/user.types.js +1 -0
- package/esm2015/lib/web-crypto/web-crypto.service.js +29 -0
- package/esm2015/lifeready-core.js +15 -13
- package/esm2015/public-api.js +49 -51
- package/fesm2015/lifeready-core.js +9232 -9214
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/types.d.ts +3 -1
- package/lib/api/lr-apollo.service.d.ts +1 -1
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +1 -1
- package/lib/api/query-processor/common-processors.service.d.ts +1 -1
- package/lib/api/query-processor/query-processor.service.d.ts +1 -1
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +11 -0
- package/lib/auth/auth.gql.d.ts +0 -3
- package/lib/auth/auth.types.d.ts +2 -2
- package/lib/auth/life-ready-auth.service.d.ts +12 -12
- package/lib/category/category.gql.d.ts +1 -1
- package/lib/category/category.service.d.ts +2 -2
- package/lib/{api → contact-card}/contact-card.service.d.ts +9 -9
- package/lib/contact-card/contact-card2.gql.d.ts +25 -0
- package/lib/{api → contact-card}/contact-card2.service.d.ts +11 -12
- package/lib/{cryptography → encryption}/encryption.service.d.ts +2 -2
- package/lib/{api/file.service.d.ts → file-upload/file-upload.service.d.ts} +3 -7
- package/lib/file-upload/file-upload.types.d.ts +5 -0
- package/lib/{auth → idle}/idle.service.d.ts +4 -4
- package/lib/items2/item2.service.d.ts +11 -11
- package/lib/{cryptography → key}/key-factory.service.d.ts +2 -2
- package/lib/{cryptography → key}/key-graph.service.d.ts +5 -5
- package/lib/{cryptography → key}/key-meta.service.d.ts +1 -1
- package/lib/{cryptography → key}/key.service.d.ts +2 -2
- package/lib/{cryptography/cryptography.types.d.ts → key/key.types.d.ts} +9 -13
- package/lib/{api → key-exchange}/key-exchange.service.d.ts +5 -5
- package/lib/{api → key-exchange}/key-exchange.types.d.ts +4 -4
- package/lib/{api → key-exchange}/key-exchange2.gql.d.ts +1 -1
- package/lib/{api → key-exchange}/key-exchange2.service.d.ts +71 -18
- package/lib/{auth → lbop}/lbop.service.d.ts +7 -7
- package/lib/{api → lock}/lock.gql.d.ts +1 -1
- package/lib/{api → lock}/lock.service.d.ts +1 -1
- package/lib/message/message.gql.d.ts +13 -0
- package/lib/message/message.service.d.ts +29 -0
- package/lib/message/message.types.d.ts +12 -0
- package/lib/password/password.gql.d.ts +3 -0
- package/lib/{auth → password}/password.service.d.ts +8 -8
- package/lib/{api → persist}/persist.service.d.ts +3 -3
- package/lib/{users → profile}/profile-details.service.d.ts +3 -3
- package/lib/{users → profile}/profile.gql.d.ts +2 -2
- package/lib/{users → profile}/profile.service.d.ts +6 -6
- package/lib/{users → profile}/profile.types.d.ts +1 -1
- package/lib/record/record-attachment.service.d.ts +6 -6
- package/lib/record/record.service.d.ts +1 -1
- package/lib/{auth → register}/register.service.d.ts +4 -4
- package/lib/scenario/scenario.controller.d.ts +1 -1
- package/lib/scenario/scenario.service.d.ts +2 -2
- package/lib/scenario/scenario.types.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card.service.d.ts +9 -9
- package/lib/{api → shared-contact-card}/shared-contact-card2.gql.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card2.service.d.ts +6 -6
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.d.ts +7 -7
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.types.d.ts +1 -1
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-request.service.d.ts +4 -8
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-user.service.d.ts +7 -13
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.controller.d.ts +1 -1
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +63 -0
- package/lib/{trusted-parties/tp-password-reset.gql.d.ts → tp-password-reset/tp-password-reset.private.gql.d.ts} +1 -63
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +59 -0
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.service.d.ts +6 -89
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +40 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party.service.d.ts +7 -7
- package/lib/{trusted-parties → trusted-party}/trusted-party.types.d.ts +2 -3
- package/lib/{trusted-parties → trusted-party}/trusted-party2.gql.d.ts +0 -22
- package/lib/trusted-party/trusted-party2.gql.private.d.ts +23 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party2.service.d.ts +11 -35
- package/lib/trusted-party/trusted-party2.types.d.ts +12 -0
- package/lib/{users → user}/user.gql.d.ts +1 -1
- package/lib/{users → user}/user.types.d.ts +1 -1
- package/lifeready-core.d.ts +14 -12
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +48 -50
- package/esm2015/lib/api/contact-card.gql.js +0 -79
- package/esm2015/lib/api/contact-card.service.js +0 -154
- package/esm2015/lib/api/contact-card2.gql.js +0 -60
- package/esm2015/lib/api/contact-card2.service.js +0 -103
- package/esm2015/lib/api/file.service.js +0 -74
- package/esm2015/lib/api/key-exchange.gql.js +0 -188
- package/esm2015/lib/api/key-exchange.service.js +0 -442
- package/esm2015/lib/api/key-exchange.types.js +0 -7
- package/esm2015/lib/api/key-exchange2.gql.js +0 -171
- package/esm2015/lib/api/key-exchange2.service.js +0 -480
- package/esm2015/lib/api/lock.gql.js +0 -40
- package/esm2015/lib/api/lock.service.js +0 -64
- package/esm2015/lib/api/message.service.js +0 -138
- package/esm2015/lib/api/persist.service.js +0 -181
- package/esm2015/lib/api/shared-contact-card.service.js +0 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/api/time.service.js +0 -146
- package/esm2015/lib/auth/lbop.service.js +0 -355
- package/esm2015/lib/auth/password.service.js +0 -315
- package/esm2015/lib/auth/register.service.js +0 -172
- package/esm2015/lib/auth/two-factor.service.js +0 -74
- package/esm2015/lib/cryptography/cryptography.types.js +0 -11
- package/esm2015/lib/cryptography/encryption.service.js +0 -189
- package/esm2015/lib/cryptography/key-factory.service.js +0 -237
- package/esm2015/lib/cryptography/key-meta.service.js +0 -200
- package/esm2015/lib/cryptography/key.service.js +0 -124
- package/esm2015/lib/cryptography/slip39.service.js +0 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +0 -22
- package/esm2015/lib/trusted-parties/tp-assembly.js +0 -365
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +0 -1
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -113
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -237
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -95
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -218
- package/esm2015/lib/users/profile-details.service.js +0 -214
- package/esm2015/lib/users/profile.gql.js +0 -97
- package/esm2015/lib/users/profile.service.js +0 -169
- package/esm2015/lib/users/profile.types.js +0 -34
- package/esm2015/lib/users/user.gql.js +0 -60
- package/esm2015/lib/users/user.service.js +0 -79
- package/esm2015/lib/users/user.types.js +0 -1
- package/lib/api/contact-card2.gql.d.ts +0 -34
- package/lib/api/message.service.d.ts +0 -59
- /package/lib/{api → contact-card}/contact-card.gql.d.ts +0 -0
- /package/lib/{auth → idle}/idle.types.d.ts +0 -0
- /package/lib/{api → key-exchange}/key-exchange.gql.d.ts +0 -0
- /package/lib/scenario/{scenario.gql.private.d.ts → scenario.private.gql.d.ts} +0 -0
- /package/lib/{cryptography → slip39}/slip39.service.d.ts +0 -0
- /package/lib/{api → time}/time.service.d.ts +0 -0
- /package/lib/{trusted-parties/tp-assembly.gql.private.d.ts → tp-assembly/tp-assembly.private.gql.d.ts} +0 -0
- /package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.constants.d.ts +0 -0
- /package/lib/{trusted-parties → trusted-party}/trusted-party.gql.d.ts +0 -0
- /package/lib/{auth → two-factor}/two-factor.service.d.ts +0 -0
- /package/lib/{users → user}/user.service.d.ts +0 -0
- /package/lib/{cryptography → web-crypto}/web-crypto.service.d.ts +0 -0
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -1,60 +1,58 @@
|
|
|
1
|
-
export * from './lib/_common/exceptions';
|
|
2
|
-
export * from './lib/api/file.service';
|
|
3
|
-
export * from './lib/api/key-exchange.service';
|
|
4
|
-
export * from './lib/api/key-exchange.types';
|
|
5
|
-
export * from './lib/api/key-exchange.gql';
|
|
6
1
|
export * from './lib/api/lr-apollo.service';
|
|
7
|
-
export * from './lib/api/
|
|
8
|
-
export * from './lib/api/
|
|
9
|
-
export * from './lib/
|
|
10
|
-
export * from './lib/auth/auth.types';
|
|
2
|
+
export * from './lib/api/lr-graphql';
|
|
3
|
+
export * from './lib/api/query-processor';
|
|
4
|
+
export * from './lib/api/types';
|
|
11
5
|
export * from './lib/auth/auth.config';
|
|
12
|
-
export * from './lib/auth/
|
|
6
|
+
export * from './lib/auth/auth.types';
|
|
13
7
|
export * from './lib/auth/life-ready-auth.service';
|
|
14
|
-
export * from './lib/auth/password.service';
|
|
15
|
-
export * from './lib/auth/register.service';
|
|
16
|
-
export * from './lib/auth/two-factor.service';
|
|
17
|
-
export * from './lib/auth/idle.types';
|
|
18
|
-
export * from './lib/auth/idle.service';
|
|
19
8
|
export * from './lib/category/category-meta.service';
|
|
20
|
-
export * from './lib/category/category.types';
|
|
21
9
|
export * from './lib/category/category.gql';
|
|
22
10
|
export * from './lib/category/category.service';
|
|
23
|
-
export * from './lib/
|
|
24
|
-
export * from './lib/
|
|
25
|
-
export * from './lib/
|
|
26
|
-
export * from './lib/
|
|
27
|
-
export * from './lib/
|
|
28
|
-
export * from './lib/
|
|
29
|
-
export * from './lib/
|
|
30
|
-
export * from './lib/
|
|
31
|
-
export * from './lib/
|
|
32
|
-
export * from './lib/
|
|
33
|
-
export * from './lib/
|
|
34
|
-
export * from './lib/
|
|
35
|
-
export * from './lib/users/profile.types';
|
|
36
|
-
export * from './lib/users/user.gql';
|
|
37
|
-
export * from './lib/users/user.service';
|
|
38
|
-
export * from './lib/users/user.types';
|
|
11
|
+
export * from './lib/category/category.types';
|
|
12
|
+
export * from './lib/contact-card/contact-card2.service';
|
|
13
|
+
export * from './lib/file-upload/file-upload.service';
|
|
14
|
+
export * from './lib/idle/idle.service';
|
|
15
|
+
export * from './lib/idle/idle.types';
|
|
16
|
+
export * from './lib/items2/item2.service';
|
|
17
|
+
export * from './lib/items2/item2.types';
|
|
18
|
+
export * from './lib/key-exchange/key-exchange.gql';
|
|
19
|
+
export * from './lib/key-exchange/key-exchange.service';
|
|
20
|
+
export * from './lib/key-exchange/key-exchange.types';
|
|
21
|
+
export * from './lib/key-exchange/key-exchange2.service';
|
|
22
|
+
export * from './lib/lbop/lbop.service';
|
|
39
23
|
export * from './lib/life-ready.config';
|
|
40
24
|
export * from './lib/life-ready.module';
|
|
41
|
-
export * from './lib/
|
|
42
|
-
export * from './lib/
|
|
43
|
-
export { gqlTyped } from './lib/_common/ast';
|
|
44
|
-
export * from './lib/api/lr-graphql';
|
|
45
|
-
export * from './lib/api/query-processor';
|
|
46
|
-
export * from './lib/api/contact-card2.service';
|
|
47
|
-
export * from './lib/api/key-exchange2.service';
|
|
48
|
-
export * from './lib/api/shared-contact-card2.service';
|
|
49
|
-
export * from './lib/api/lock.service';
|
|
50
|
-
export * from './lib/items2/item2.types';
|
|
51
|
-
export * from './lib/items2/item2.service';
|
|
52
|
-
export * from './lib/trusted-parties/tp-assembly.types';
|
|
53
|
-
export * from './lib/trusted-parties/trusted-party2.service';
|
|
54
|
-
export * from './lib/trusted-parties/tp-password-reset.service';
|
|
55
|
-
export * from './lib/trusted-parties/tp-password-reset-user.service';
|
|
56
|
-
export * from './lib/trusted-parties/tp-password-reset-request.service';
|
|
25
|
+
export * from './lib/lock/lock.service';
|
|
26
|
+
export * from './lib/message/message.service';
|
|
57
27
|
export * from './lib/notification/notification.service';
|
|
58
|
-
export * from './lib/
|
|
28
|
+
export * from './lib/password/password.service';
|
|
29
|
+
export * from './lib/persist/persist.service';
|
|
30
|
+
export * from './lib/plan/plan.service';
|
|
31
|
+
export * from './lib/plan/plan.types';
|
|
32
|
+
export * from './lib/profile/profile-details.service';
|
|
33
|
+
export * from './lib/profile/profile.gql';
|
|
34
|
+
export * from './lib/profile/profile.service';
|
|
35
|
+
export * from './lib/profile/profile.types';
|
|
36
|
+
export * from './lib/record-type/record-type.service';
|
|
37
|
+
export * from './lib/record-type/record-type.types';
|
|
38
|
+
export * from './lib/record/record-attachment.service';
|
|
39
|
+
export * from './lib/record/record.gql';
|
|
40
|
+
export * from './lib/record/record.service';
|
|
41
|
+
export * from './lib/record/record.types';
|
|
42
|
+
export * from './lib/register/register.service';
|
|
59
43
|
export * from './lib/scenario/scenario.service';
|
|
60
|
-
export * from './lib/
|
|
44
|
+
export * from './lib/scenario/scenario.types';
|
|
45
|
+
export * from './lib/shared-contact-card/shared-contact-card2.service';
|
|
46
|
+
export * from './lib/tp-assembly/tp-assembly.types';
|
|
47
|
+
export * from './lib/tp-password-reset/tp-password-reset-request.service';
|
|
48
|
+
export * from './lib/tp-password-reset/tp-password-reset-user.service';
|
|
49
|
+
export * from './lib/tp-password-reset/tp-password-reset.service';
|
|
50
|
+
export * from './lib/tp-password-reset/tp-password-reset.types';
|
|
51
|
+
export * from './lib/trusted-party/trusted-party2.service';
|
|
52
|
+
export * from './lib/two-factor/two-factor.service';
|
|
53
|
+
export * from './lib/user/user.gql';
|
|
54
|
+
export * from './lib/user/user.service';
|
|
55
|
+
export * from './lib/user/user.types';
|
|
56
|
+
export { gqlTyped } from './lib/_common/ast';
|
|
57
|
+
export * from './lib/_common/exceptions';
|
|
58
|
+
export * from './lib/_common/queries.gql';
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { KeyGraphField } from '../_common/queries.gql';
|
|
2
|
-
import gql from 'graphql-tag';
|
|
3
|
-
export const ContactCardFields = `
|
|
4
|
-
id
|
|
5
|
-
publicData
|
|
6
|
-
publicSearchable
|
|
7
|
-
cipherData
|
|
8
|
-
key {
|
|
9
|
-
id
|
|
10
|
-
}
|
|
11
|
-
`;
|
|
12
|
-
export const ContactCardQuery = gql `
|
|
13
|
-
query ContactCardQuery(
|
|
14
|
-
$id: LrRelayIdInput!
|
|
15
|
-
) {
|
|
16
|
-
contactCard (
|
|
17
|
-
id: $id
|
|
18
|
-
) {
|
|
19
|
-
${ContactCardFields}
|
|
20
|
-
}
|
|
21
|
-
${KeyGraphField}
|
|
22
|
-
}`;
|
|
23
|
-
export const SearchContactCardQuery = gql `
|
|
24
|
-
query SearchContactCardQuery(
|
|
25
|
-
$publicSearchable: LrJSONFilter!
|
|
26
|
-
) {
|
|
27
|
-
searchContactCards(
|
|
28
|
-
publicSearchable: $publicSearchable
|
|
29
|
-
orderBy: "created"
|
|
30
|
-
) {
|
|
31
|
-
edges {
|
|
32
|
-
node {
|
|
33
|
-
${ContactCardFields}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
${KeyGraphField}
|
|
38
|
-
}`;
|
|
39
|
-
export const ContactCardListQuery = gql `
|
|
40
|
-
query ContactCardListQuery {
|
|
41
|
-
contactCards(
|
|
42
|
-
orderBy: "created"
|
|
43
|
-
) {
|
|
44
|
-
edges {
|
|
45
|
-
node {
|
|
46
|
-
${ContactCardFields}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
${KeyGraphField}
|
|
51
|
-
}`;
|
|
52
|
-
export const CreateContactCardMutation = gql `
|
|
53
|
-
mutation CreateContactCardMutation(
|
|
54
|
-
$input: CreateContactCardInput!
|
|
55
|
-
) {
|
|
56
|
-
createContactCard(input: $input) {
|
|
57
|
-
contactCard {
|
|
58
|
-
${ContactCardFields}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}`;
|
|
62
|
-
export const UpdateContactCardMutation = gql `
|
|
63
|
-
mutation UpdateContactCardMutation(
|
|
64
|
-
$input: UpdateContactCardInput!
|
|
65
|
-
) {
|
|
66
|
-
updateContactCard(input: $input) {
|
|
67
|
-
contactCard {
|
|
68
|
-
${ContactCardFields}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}`;
|
|
72
|
-
export const DeleteContactCardMutation = gql `
|
|
73
|
-
mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
|
|
74
|
-
deleteContactCard(input: $input) {
|
|
75
|
-
id
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
`;
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLmdxbC5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2NvbnRhY3QtY2FyZC5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRzs7Ozs7Ozs7Q0FRaEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQTs7Ozs7OztJQU8vQixpQkFBaUI7O0VBRW5CLGFBQWE7RUFDYixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7O1VBVS9CLGlCQUFpQjs7OztJQUl2QixhQUFhO0VBQ2YsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTs7Ozs7OztVQU83QixpQkFBaUI7Ozs7SUFJdkIsYUFBYTtFQUNmLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7OztRQU1wQyxpQkFBaUI7OztFQUd2QixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7UUFNcEMsaUJBQWlCOzs7RUFHdkIsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7O0NBTTNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcblxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkRmllbGRzID0gYFxuaWRcbnB1YmxpY0RhdGFcbnB1YmxpY1NlYXJjaGFibGVcbmNpcGhlckRhdGFcbmtleSB7XG4gIGlkXG59XG5gO1xuXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRRdWVyeSA9IGdxbGBcbnF1ZXJ5IENvbnRhY3RDYXJkUXVlcnkoXG4kaWQ6IExyUmVsYXlJZElucHV0IVxuKSB7XG5jb250YWN0Q2FyZCAoXG4gIGlkOiAkaWRcbikge1xuICAke0NvbnRhY3RDYXJkRmllbGRzfVxufVxuJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5ID0gZ3FsYFxucXVlcnkgU2VhcmNoQ29udGFjdENhcmRRdWVyeShcbiAgJHB1YmxpY1NlYXJjaGFibGU6IExySlNPTkZpbHRlciFcbikge1xuICBzZWFyY2hDb250YWN0Q2FyZHMoXG4gICAgcHVibGljU2VhcmNoYWJsZTogJHB1YmxpY1NlYXJjaGFibGVcbiAgICBvcmRlckJ5OiBcImNyZWF0ZWRcIlxuICApIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgJHtDb250YWN0Q2FyZEZpZWxkc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZExpc3RRdWVyeSA9IGdxbGBcbnF1ZXJ5IENvbnRhY3RDYXJkTGlzdFF1ZXJ5IHtcbiAgY29udGFjdENhcmRzKFxuICAgIG9yZGVyQnk6IFwiY3JlYXRlZFwiXG4gICkge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke0NvbnRhY3RDYXJkRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG5tdXRhdGlvbiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uKFxuICAkaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQhXG4pIHtcbiAgY3JlYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICR7Q29udGFjdENhcmRGaWVsZHN9XG4gICAgfVxuICB9XG59YDtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG5tdXRhdGlvbiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uKFxuICAkaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQhXG4pIHtcbiAgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICR7Q29udGFjdENhcmRGaWVsZHN9XG4gICAgfVxuICB9XG59YDtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBEZWxldGVDb250YWN0Q2FyZElucHV0ISkge1xuICAgIGRlbGV0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG5gO1xuIl19
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { EncryptionService } from '../cryptography/encryption.service';
|
|
4
|
-
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
5
|
-
import { KeyService } from '../cryptography/key.service';
|
|
6
|
-
import { LrApolloService } from './lr-apollo.service';
|
|
7
|
-
import { SearchContactCardQuery, ContactCardListQuery, ContactCardQuery, CreateContactCardMutation, UpdateContactCardMutation, DeleteContactCardMutation, } from './contact-card.gql';
|
|
8
|
-
import { KeyFactoryService } from '../cryptography/key-factory.service';
|
|
9
|
-
import { KeyMetaService } from '../cryptography/key-meta.service';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "../cryptography/key-factory.service";
|
|
12
|
-
import * as i2 from "../cryptography/key.service";
|
|
13
|
-
import * as i3 from "./lr-apollo.service";
|
|
14
|
-
import * as i4 from "../cryptography/key-graph.service";
|
|
15
|
-
import * as i5 from "../cryptography/encryption.service";
|
|
16
|
-
import * as i6 from "../cryptography/key-meta.service";
|
|
17
|
-
export class ContactCard {
|
|
18
|
-
}
|
|
19
|
-
export class ContactCardService {
|
|
20
|
-
constructor(keyFactory, keyService, lrApollo, keyGraph, encryptionService, keyMetaService) {
|
|
21
|
-
this.keyFactory = keyFactory;
|
|
22
|
-
this.keyService = keyService;
|
|
23
|
-
this.lrApollo = lrApollo;
|
|
24
|
-
this.keyGraph = keyGraph;
|
|
25
|
-
this.encryptionService = encryptionService;
|
|
26
|
-
this.keyMetaService = keyMetaService;
|
|
27
|
-
}
|
|
28
|
-
decryptContactCard(cc) {
|
|
29
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
const ret = Object.assign(Object.assign({}, cc), { publicDataJson: JSON.parse(cc.publicData), publicSearchableJson: JSON.parse(cc.publicSearchable) });
|
|
31
|
-
if (cc.key) {
|
|
32
|
-
const key = yield this.keyGraph.getJwkKey(cc.key.id);
|
|
33
|
-
// TODO: verify signature
|
|
34
|
-
ret.plainCipherDataJson = yield this.encryptionService.decrypt(key, cc.cipherData);
|
|
35
|
-
}
|
|
36
|
-
return ret;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
decryptContactCardEdges(hasEdges) {
|
|
40
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
return Promise.all(hasEdges.edges.map((edge) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
const cc = edge.node;
|
|
43
|
-
return yield this.decryptContactCard(cc);
|
|
44
|
-
})));
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
// { "filter": [{ "contains": { "a": true } }] }
|
|
48
|
-
searchContactCard(publicSearchable) {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
const data = yield this.lrApollo.query({
|
|
51
|
-
query: SearchContactCardQuery,
|
|
52
|
-
variables: {
|
|
53
|
-
publicSearchable: JSON.stringify(publicSearchable),
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
return yield this.decryptContactCardEdges(data.searchContactCards);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
getContactCardList() {
|
|
60
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
const data = yield this.lrApollo.query({
|
|
62
|
-
query: ContactCardListQuery,
|
|
63
|
-
});
|
|
64
|
-
return yield this.decryptContactCardEdges(data.contactCards);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
getContactCard(id) {
|
|
68
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
const data = yield this.lrApollo.query({
|
|
70
|
-
query: ContactCardQuery,
|
|
71
|
-
variables: {
|
|
72
|
-
id,
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
return yield this.decryptContactCard(data.contactCard);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
prepareContactCardInput(input) {
|
|
79
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
const sigPxk = yield this.keyService.getCurrentSigPxk();
|
|
81
|
-
const publicDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicDataJson));
|
|
82
|
-
const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson));
|
|
83
|
-
const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.plainDataJson));
|
|
84
|
-
return {
|
|
85
|
-
sigPxkId: sigPxk.id,
|
|
86
|
-
publicDataSig,
|
|
87
|
-
publicSearchableSig,
|
|
88
|
-
plainDataSig,
|
|
89
|
-
};
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
createContactCard(input) {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
// Get encryption key
|
|
95
|
-
const rootKey = yield this.keyService.getCurrentRootKey();
|
|
96
|
-
const key = yield this.keyFactory.createKey();
|
|
97
|
-
const wrappedKey = yield this.keyGraph.encryptToString(rootKey.jwk, key.toJSON(true));
|
|
98
|
-
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
99
|
-
const params = yield this.prepareContactCardInput(input);
|
|
100
|
-
const data = yield this.lrApollo.mutate({
|
|
101
|
-
mutation: CreateContactCardMutation,
|
|
102
|
-
variables: {
|
|
103
|
-
input: Object.assign(Object.assign({}, params), { wrappingKeyId: rootKey.id, wrappedKey,
|
|
104
|
-
cipherData }),
|
|
105
|
-
},
|
|
106
|
-
});
|
|
107
|
-
return data.createContactCard.contactCard;
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
updateContactCard(input) {
|
|
111
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
// Get encryption key
|
|
113
|
-
const cc = yield this.getContactCard(input.id);
|
|
114
|
-
const key = yield this.keyGraph.getJwkKey(cc.key.id);
|
|
115
|
-
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
116
|
-
const params = yield this.prepareContactCardInput(input);
|
|
117
|
-
const data = yield this.lrApollo.mutate({
|
|
118
|
-
mutation: UpdateContactCardMutation,
|
|
119
|
-
variables: {
|
|
120
|
-
input: Object.assign(Object.assign({}, params), { id: input.id, cipherData }),
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
return data.updateContactCard.contactCard;
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
deleteContactCard(id) {
|
|
127
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
const data = yield this.lrApollo.mutate({
|
|
129
|
-
mutation: DeleteContactCardMutation,
|
|
130
|
-
variables: {
|
|
131
|
-
input: {
|
|
132
|
-
id,
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
});
|
|
136
|
-
return data.deleteContactCard.id;
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
ContactCardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ContactCardService_Factory() { return new ContactCardService(i0.ɵɵinject(i1.KeyFactoryService), i0.ɵɵinject(i2.KeyService), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.EncryptionService), i0.ɵɵinject(i6.KeyMetaService)); }, token: ContactCardService, providedIn: "root" });
|
|
141
|
-
ContactCardService.decorators = [
|
|
142
|
-
{ type: Injectable, args: [{
|
|
143
|
-
providedIn: 'root',
|
|
144
|
-
},] }
|
|
145
|
-
];
|
|
146
|
-
ContactCardService.ctorParameters = () => [
|
|
147
|
-
{ type: KeyFactoryService },
|
|
148
|
-
{ type: KeyService },
|
|
149
|
-
{ type: LrApolloService },
|
|
150
|
-
{ type: KeyGraphService },
|
|
151
|
-
{ type: EncryptionService },
|
|
152
|
-
{ type: KeyMetaService }
|
|
153
|
-
];
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2FwaS9jb250YWN0LWNhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7O0FBZWxFLE1BQU0sT0FBTyxXQUFXO0NBZ0J2QjtBQWdCRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsVUFBNkIsRUFDN0IsVUFBc0IsRUFDdEIsUUFBeUIsRUFDekIsUUFBeUIsRUFDekIsaUJBQW9DLEVBQ3BDLGNBQThCO1FBTDlCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FB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RVYsZUFBZTtZQUhmLGVBQWU7WUFEZixpQkFBaUI7WUFlakIsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhhc0tleUdyYXBoLCBLZXkgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXkuc2VydmljZSc7XG5pbXBvcnQgeyBIYXNFZGdlcyB9IGZyb20gJy4uL19jb21tb24vdHlwZXMnO1xuaW1wb3J0IHsgTHJBcG9sbG9TZXJ2aWNlIH0gZnJvbSAnLi9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQge1xuICBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5LFxuICBDb250YWN0Q2FyZExpc3RRdWVyeSxcbiAgQ29udGFjdENhcmRRdWVyeSxcbiAgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbn0gZnJvbSAnLi9jb250YWN0LWNhcmQuZ3FsJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHMgfSBmcm9tICcuLi91c2Vycy9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IEtleU1ldGFTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1tZXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgSlNPTk9iamVjdCB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgQ29udGFjdENhcmRRdWVyeSBleHRlbmRzIEhhc0tleUdyYXBoIHtcbiAgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkO1xufVxuXG5pbnRlcmZhY2UgU2VhcmNoQ29udGFjdENhcmRRdWVyeSBleHRlbmRzIEhhc0tleUdyYXBoIHtcbiAgc2VhcmNoQ29udGFjdENhcmRzOiBIYXNFZGdlczxDb250YWN0Q2FyZD47XG59XG5cbmludGVyZmFjZSBDb250YWN0Q2FyZExpc3RRdWVyeSBleHRlbmRzIEhhc0tleUdyYXBoIHtcbiAgY29udGFjdENhcmRzOiBIYXNFZGdlczxDb250YWN0Q2FyZD47XG59XG5cbmV4cG9ydCBjbGFzcyBDb250YWN0Q2FyZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGtleTogS2V5O1xuICBzaWdQeGs6IEtleTtcbiAgcHVibGljRGF0YTogc3RyaW5nO1xuICBwdWJsaWNEYXRhU2lnOiBzdHJpbmc7XG4gIHB1YmxpY1NlYXJjaGFibGU6IHN0cmluZztcbiAgcHVibGljU2VhcmNoYWJsZVNpZzogc3RyaW5nO1xuICBwbGFpbkRhdGE6IHN0cmluZztcbiAgcGxhaW5EYXRhU2lnOiBzdHJpbmc7XG4gIGNpcGhlckRhdGE6IHN0cmluZztcbiAgLy8gUGFyc2UvZGVjcnlwdGVkIHZlcnNpb25zIG9mIHRoZSBhYm92ZS5cbiAgcHVibGljRGF0YUpzb246IEpTT05PYmplY3Q7XG4gIHB1YmxpY1NlYXJjaGFibGVKc29uOiBKU09OT2JqZWN0O1xuICBwbGFpbkNpcGhlckRhdGFKc29uOiBKU09OT2JqZWN0O1xuICBwbGFpbkRhdGFKc29uOiBKU09OT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQge1xuICBwdWJsaWNEYXRhSnNvbjogSlNPTk9iamVjdDtcbiAgcHVibGljU2VhcmNoYWJsZUpzb246IEpTT05PYmplY3Q7XG4gIHBsYWluQ2lwaGVyRGF0YUpzb246IEpTT05PYmplY3Q7XG4gIHBsYWluRGF0YUpzb246IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQgZXh0ZW5kcyBDcmVhdGVDb250YWN0Q2FyZElucHV0IHtcbiAgaWQ6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhY3RDYXJkU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS2V5RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlNZXRhU2VydmljZTogS2V5TWV0YVNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZChjYzogQ29udGFjdENhcmQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XG4gICAgY29uc3QgcmV0ID0ge1xuICAgICAgLi4uY2MsXG4gICAgICBwdWJsaWNEYXRhSnNvbjogSlNPTi5wYXJzZShjYy5wdWJsaWNEYXRhKSxcbiAgICAgIHB1YmxpY1NlYXJjaGFibGVKc29uOiBKU09OLnBhcnNlKGNjLnB1YmxpY1NlYXJjaGFibGUpLFxuICAgIH07XG5cbiAgICBpZiAoY2Mua2V5KSB7XG4gICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShjYy5rZXkuaWQpO1xuICAgICAgLy8gVE9ETzogdmVyaWZ5IHNpZ25hdHVyZVxuICAgICAgcmV0LnBsYWluQ2lwaGVyRGF0YUpzb24gPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgIGtleSxcbiAgICAgICAgY2MuY2lwaGVyRGF0YVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkRWRnZXMoXG4gICAgaGFzRWRnZXM6IEhhc0VkZ2VzPENvbnRhY3RDYXJkPlxuICApOiBQcm9taXNlPENvbnRhY3RDYXJkW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBoYXNFZGdlcy5lZGdlcy5tYXAoYXN5bmMgKGVkZ2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBjYyA9IGVkZ2Uubm9kZSBhcyBDb250YWN0Q2FyZDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVjcnlwdENvbnRhY3RDYXJkKGNjKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIHsgXCJmaWx0ZXJcIjogW3sgXCJjb250YWluc1wiOiB7IFwiYVwiOiB0cnVlIH0gfV0gfVxuICBhc3luYyBzZWFyY2hDb250YWN0Q2FyZChwdWJsaWNTZWFyY2hhYmxlOiBvYmplY3QpOiBQcm9taXNlPENvbnRhY3RDYXJkW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5Pih7XG4gICAgICBxdWVyeTogU2VhcmNoQ29udGFjdENhcmRRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBwdWJsaWNTZWFyY2hhYmxlOiBKU09OLnN0cmluZ2lmeShwdWJsaWNTZWFyY2hhYmxlKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmRFZGdlcyhkYXRhLnNlYXJjaENvbnRhY3RDYXJkcyk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0Q2FyZExpc3QoKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8Q29udGFjdENhcmRMaXN0UXVlcnk+KHtcbiAgICAgIHF1ZXJ5OiBDb250YWN0Q2FyZExpc3RRdWVyeSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGRhdGEuY29udGFjdENhcmRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldENvbnRhY3RDYXJkKGlkOiBzdHJpbmcpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8Q29udGFjdENhcmRRdWVyeT4oe1xuICAgICAgcXVlcnk6IENvbnRhY3RDYXJkUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVjcnlwdENvbnRhY3RDYXJkKGRhdGEuY29udGFjdENhcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ29udGFjdENhcmRJbnB1dChcbiAgICBpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dFxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHNpZ1B4ayA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50U2lnUHhrKCk7XG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY0RhdGFKc29uKVxuICAgICk7XG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY1NlYXJjaGFibGVKc29uKVxuICAgICk7XG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucGxhaW5EYXRhSnNvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXG4gICAgICBwdWJsaWNEYXRhU2lnLFxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcbiAgICAgIHBsYWluRGF0YVNpZyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQ29udGFjdENhcmQoaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICByb290S2V5Lmp3ayxcbiAgICAgIGtleS50b0pTT04odHJ1ZSlcbiAgICApO1xuICAgIGNvbnN0IGNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGtleSxcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xuICAgICAgY3JlYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkIH07XG4gICAgfT4oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgICB3cmFwcGVkS2V5LFxuICAgICAgICAgIGNpcGhlckRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGEuY3JlYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XG4gIH1cblxuICBhc3luYyB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogVXBkYXRlQ29udGFjdENhcmRJbnB1dCk6IFByb21pc2U8Q29udGFjdENhcmQ+IHtcbiAgICAvLyBHZXQgZW5jcnlwdGlvbiBrZXlcbiAgICBjb25zdCBjYyA9IGF3YWl0IHRoaXMuZ2V0Q29udGFjdENhcmQoaW5wdXQuaWQpO1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KGNjLmtleS5pZCk7XG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAga2V5LFxuICAgICAgaW5wdXQucGxhaW5DaXBoZXJEYXRhSnNvblxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDb250YWN0Q2FyZElucHV0KGlucHV0KTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTx7XG4gICAgICB1cGRhdGVDb250YWN0Q2FyZDogeyBjb250YWN0Q2FyZDogQ29udGFjdENhcmQgfTtcbiAgICB9Pih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICBpZDogaW5wdXQuaWQsXG4gICAgICAgICAgY2lwaGVyRGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YS51cGRhdGVDb250YWN0Q2FyZC5jb250YWN0Q2FyZDtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUNvbnRhY3RDYXJkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGEuZGVsZXRlQ29udGFjdENhcmQuaWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { gqlTyped } from '../_common/ast';
|
|
2
|
-
export const ContactCardFragment = gqlTyped `
|
|
3
|
-
fragment ContactCardFragment on ContactCardNode {
|
|
4
|
-
id
|
|
5
|
-
publicData
|
|
6
|
-
publicSearchable
|
|
7
|
-
cipherData
|
|
8
|
-
key {
|
|
9
|
-
id
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
`;
|
|
13
|
-
export const CreateContactCardMutation = gqlTyped `
|
|
14
|
-
mutation CreateContactCardMutation(
|
|
15
|
-
$input: CreateContactCardInput!
|
|
16
|
-
) {
|
|
17
|
-
createContactCard(input: $input) {
|
|
18
|
-
contactCard {
|
|
19
|
-
id
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
`;
|
|
24
|
-
export const UpdateContactCardMutation = gqlTyped `
|
|
25
|
-
mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
|
|
26
|
-
updateContactCard(input: $input) {
|
|
27
|
-
contactCard {
|
|
28
|
-
id
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
`;
|
|
33
|
-
export const DeleteContactCardMutation = gqlTyped `
|
|
34
|
-
mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
|
|
35
|
-
deleteContactCard(input: $input) {
|
|
36
|
-
id
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
`;
|
|
40
|
-
export const ContactCardsQuery = gqlTyped `
|
|
41
|
-
query ContactCardsQuery {
|
|
42
|
-
contactCards(orderBy: "created") {
|
|
43
|
-
edges {
|
|
44
|
-
node {
|
|
45
|
-
...ContactCardFragment
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
${ContactCardFragment}
|
|
51
|
-
`;
|
|
52
|
-
export const ContactCardQuery = gqlTyped `
|
|
53
|
-
query ContactCardQuery($id: LrRelayIdInput!) {
|
|
54
|
-
contactCard(id: $id) {
|
|
55
|
-
...ContactCardFragment
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
${ContactCardFragment}
|
|
59
|
-
`;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2FwaS9jb250YWN0LWNhcmQyLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFpQjs7Ozs7Ozs7OztDQVUzRCxDQUFDO0FBU0YsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUEyQjs7Ozs7Ozs7OztDQVUzRSxDQUFDO0FBU0YsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUEyQjs7Ozs7Ozs7Q0FRM0UsQ0FBQztBQVNGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBMkI7Ozs7OztDQU0zRSxDQUFDO0FBS0YsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFtQjs7Ozs7Ozs7OztJQVV4RCxtQkFBbUI7Q0FDdEIsQ0FBQztBQUtGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBa0I7Ozs7OztJQU10RCxtQkFBbUI7Q0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb24sIENvbnRhY3RDYXJkTm9kZSwgSUQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdxbFR5cGVkIH0gZnJvbSAnLi4vX2NvbW1vbi9hc3QnO1xuXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRGcmFnbWVudCA9IGdxbFR5cGVkPENvbnRhY3RDYXJkTm9kZT5gXG4gIGZyYWdtZW50IENvbnRhY3RDYXJkRnJhZ21lbnQgb24gQ29udGFjdENhcmROb2RlIHtcbiAgICBpZFxuICAgIHB1YmxpY0RhdGFcbiAgICBwdWJsaWNTZWFyY2hhYmxlXG4gICAgY2lwaGVyRGF0YVxuICAgIGtleSB7XG4gICAgICAgIGlkXG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24ge1xuICBjcmVhdGVDb250YWN0Q2FyZDoge1xuICAgIGNvbnRhY3RDYXJkOiB7XG4gICAgICBpZDogSUQ7XG4gICAgfTtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsVHlwZWQ8Q3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbj5gXG4gIG11dGF0aW9uIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oXG4gICAgJGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0IVxuICApIHtcbiAgICBjcmVhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgICBjb250YWN0Q2FyZCB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24ge1xuICB1cGRhdGVDb250YWN0Q2FyZDoge1xuICAgIGNvbnRhY3RDYXJkOiB7XG4gICAgICBpZDogSUQ7XG4gICAgfTtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsVHlwZWQ8VXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbj5gXG4gIG11dGF0aW9uIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBVcGRhdGVDb250YWN0Q2FyZElucHV0ISkge1xuICAgIHVwZGF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbiB7XG4gIGRlbGV0ZUNvbnRhY3RDYXJkOiB7XG4gICAgZGVsZXRlQ29udGFjdENhcmQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxUeXBlZDxEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uPmBcbiAgbXV0YXRpb24gRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IERlbGV0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XG4gICAgZGVsZXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmRzUXVlcnkge1xuICBjb250YWN0Q2FyZHM6IENvbm5lY3Rpb248Q29udGFjdENhcmROb2RlPjtcbn1cbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZHNRdWVyeSA9IGdxbFR5cGVkPENvbnRhY3RDYXJkc1F1ZXJ5PmBcbiAgcXVlcnkgQ29udGFjdENhcmRzUXVlcnkge1xuICAgIGNvbnRhY3RDYXJkcyhvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICAuLi5Db250YWN0Q2FyZEZyYWdtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJHtDb250YWN0Q2FyZEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2FyZFF1ZXJ5IHtcbiAgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkTm9kZTtcbn1cbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZFF1ZXJ5ID0gZ3FsVHlwZWQ8Q29udGFjdENhcmRRdWVyeT5gXG4gIHF1ZXJ5IENvbnRhY3RDYXJkUXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgICBjb250YWN0Q2FyZChpZDogJGlkKSB7XG4gICAgICAuLi5Db250YWN0Q2FyZEZyYWdtZW50XG4gICAgfVxuICB9XG4gICR7Q29udGFjdENhcmRGcmFnbWVudH1cbmA7XG4iXX0=
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { Injectable, NgZone } from '@angular/core';
|
|
3
|
-
import { EncryptionService } from '../cryptography/encryption.service';
|
|
4
|
-
import { KeyFactoryService } from '../cryptography/key-factory.service';
|
|
5
|
-
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
6
|
-
import { KeyMetaService } from '../cryptography/key-meta.service';
|
|
7
|
-
import { KeyService } from '../cryptography/key.service';
|
|
8
|
-
import { RunOutsideAngular } from '../_common/run-outside-angular';
|
|
9
|
-
import { CreateContactCardMutation, DeleteContactCardMutation, UpdateContactCardMutation, } from './contact-card2.gql';
|
|
10
|
-
import { LrMutation } from './lr-graphql';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../cryptography/key-factory.service";
|
|
13
|
-
import * as i2 from "../cryptography/key.service";
|
|
14
|
-
import * as i3 from "../cryptography/encryption.service";
|
|
15
|
-
import * as i4 from "../cryptography/key-graph.service";
|
|
16
|
-
import * as i5 from "../cryptography/key-meta.service";
|
|
17
|
-
export class OwnerPlainDataJson {
|
|
18
|
-
}
|
|
19
|
-
let ContactCard2Service = class ContactCard2Service {
|
|
20
|
-
constructor(keyFactory, keyService, encryptionService, keyGraph, keyMetaService, ngZone) {
|
|
21
|
-
this.keyFactory = keyFactory;
|
|
22
|
-
this.keyService = keyService;
|
|
23
|
-
this.encryptionService = encryptionService;
|
|
24
|
-
this.keyGraph = keyGraph;
|
|
25
|
-
this.keyMetaService = keyMetaService;
|
|
26
|
-
this.ngZone = ngZone;
|
|
27
|
-
}
|
|
28
|
-
createContactCard(input) {
|
|
29
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
// Get encryption key
|
|
31
|
-
const rootKey = yield this.keyService.getCurrentRootKey();
|
|
32
|
-
const key = yield this.keyFactory.createKey();
|
|
33
|
-
const wrappedKey = yield this.keyGraph.encryptToString(rootKey.jwk, key.toJSON(true));
|
|
34
|
-
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
35
|
-
const params = yield this.prepareContactCardInput(input);
|
|
36
|
-
return new LrMutation({
|
|
37
|
-
mutation: CreateContactCardMutation,
|
|
38
|
-
variables: {
|
|
39
|
-
input: Object.assign(Object.assign({}, params), { wrappingKeyId: rootKey.id, wrappedKey,
|
|
40
|
-
cipherData }),
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
updateContactCard(input) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
// Get encryption key
|
|
48
|
-
const cipherData = yield this.keyGraph.encryptToString(input.keyId, input.plainCipherDataJson);
|
|
49
|
-
const params = yield this.prepareContactCardInput(input);
|
|
50
|
-
return new LrMutation({
|
|
51
|
-
mutation: UpdateContactCardMutation,
|
|
52
|
-
variables: {
|
|
53
|
-
input: Object.assign(Object.assign({}, params), { id: input.id, cipherData }),
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
deleteContactCard(id) {
|
|
59
|
-
return new LrMutation({
|
|
60
|
-
mutation: DeleteContactCardMutation,
|
|
61
|
-
variables: {
|
|
62
|
-
input: {
|
|
63
|
-
id,
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
prepareContactCardInput(input) {
|
|
69
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
const sigPxk = yield this.keyService.getCurrentSigPxk();
|
|
71
|
-
const publicDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicDataJson));
|
|
72
|
-
const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson));
|
|
73
|
-
const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.plainDataJson));
|
|
74
|
-
return {
|
|
75
|
-
sigPxkId: sigPxk.id,
|
|
76
|
-
publicDataSig,
|
|
77
|
-
publicSearchableSig,
|
|
78
|
-
plainDataSig,
|
|
79
|
-
};
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
ContactCard2Service.ɵprov = i0.ɵɵdefineInjectable({ factory: function ContactCard2Service_Factory() { return new ContactCard2Service(i0.ɵɵinject(i1.KeyFactoryService), i0.ɵɵinject(i2.KeyService), i0.ɵɵinject(i3.EncryptionService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.KeyMetaService), i0.ɵɵinject(i0.NgZone)); }, token: ContactCard2Service, providedIn: "root" });
|
|
84
|
-
ContactCard2Service.decorators = [
|
|
85
|
-
{ type: Injectable, args: [{
|
|
86
|
-
providedIn: 'root',
|
|
87
|
-
},] }
|
|
88
|
-
];
|
|
89
|
-
ContactCard2Service.ctorParameters = () => [
|
|
90
|
-
{ type: KeyFactoryService },
|
|
91
|
-
{ type: KeyService },
|
|
92
|
-
{ type: EncryptionService },
|
|
93
|
-
{ type: KeyGraphService },
|
|
94
|
-
{ type: KeyMetaService },
|
|
95
|
-
{ type: NgZone }
|
|
96
|
-
];
|
|
97
|
-
ContactCard2Service = __decorate([
|
|
98
|
-
RunOutsideAngular({
|
|
99
|
-
ngZoneName: 'ngZone',
|
|
100
|
-
})
|
|
101
|
-
], ContactCard2Service);
|
|
102
|
-
export { ContactCard2Service };
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvY29udGFjdC1jYXJkMi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDMUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBb0IxQyxNQUFNLE9BQU8sa0JBQWtCO0NBRTlCO0lBYVksbUJBQW1CLFNBQW5CLG1CQUFtQjtJQUM5QixZQUNVLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLGlCQUFvQyxFQUNwQyxRQUF5QixFQUN6QixjQUE4QixFQUM5QixNQUFjO1FBTGQsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixX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QU07YUFDbkI7OztZQTdDUSxpQkFBaUI7WUFHakIsVUFBVTtZQUpWLGlCQUFpQjtZQUVqQixlQUFlO1lBQ2YsY0FBYztZQUpGLE1BQU07O0FBZ0RkLG1CQUFtQjtJQU4vQixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsbUJBQW1CLENBMkYvQjtTQTNGWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlNZXRhU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktbWV0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHMgfSBmcm9tICcuLi91c2Vycy9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG59IGZyb20gJy4vY29udGFjdC1jYXJkMi5ncWwnO1xuaW1wb3J0IHsgTHJNdXRhdGlvbiB9IGZyb20gJy4vbHItZ3JhcGhxbCc7XG5pbXBvcnQgeyBKU09OT2JqZWN0IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGFjdENhcmRJbnB1dDIge1xuICBwdWJsaWNEYXRhSnNvbjogSlNPTk9iamVjdDtcbiAgcHVibGljU2VhcmNoYWJsZUpzb246IEpTT05PYmplY3Q7XG4gIHBsYWluQ2lwaGVyRGF0YUpzb246IEpTT05PYmplY3Q7XG4gIHBsYWluRGF0YUpzb246IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzO1xufVxuXG4vLyBUaGVzZSBjb250YWN0IG5hbWUgZmllbGRzIGFyZSBlbmZvcmNlZCBieSB0aGUgc2VydmVyIHNvIHRoYXQgaXQgY2FuIHNlbmQgb3V0IGVtYWlscyB3aXRoXG4vLyBhcHByb3ByaWF0ZSBmb3JtYXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RDYXJkTmFtZTIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gIGxhc3ROYW1lPzogc3RyaW5nO1xuICAvLyBhZGRpdGlvbmFsIGZpZWxkcyBhcmUgbm90IGFsbG93ZWQgYnkgdGhlIHNlcnZlclxufVxuXG5leHBvcnQgY2xhc3MgT3duZXJQbGFpbkRhdGFKc29uIHtcbiAgbmFtZTogQ29udGFjdENhcmROYW1lMjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDb250YWN0Q2FyZElucHV0MiBleHRlbmRzIENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQyIHtcbiAgaWQ6IHN0cmluZztcbiAga2V5SWQ6IHN0cmluZztcbn1cblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhY3RDYXJkMlNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlNZXRhU2VydmljZTogS2V5TWV0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgYXN5bmMgY3JlYXRlQ29udGFjdENhcmQoaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQyKSB7XG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICByb290S2V5Lmp3ayxcbiAgICAgIGtleS50b0pTT04odHJ1ZSlcbiAgICApO1xuICAgIGNvbnN0IGNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGtleSxcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgICB3cmFwcGVkS2V5LFxuICAgICAgICAgIGNpcGhlckRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQyKSB7XG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgaW5wdXQua2V5SWQsXG4gICAgICBpbnB1dC5wbGFpbkNpcGhlckRhdGFKc29uXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoaW5wdXQpO1xuXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIGlkOiBpbnB1dC5pZCxcbiAgICAgICAgICBjaXBoZXJEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUNvbnRhY3RDYXJkKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDb250YWN0Q2FyZElucHV0KFxuICAgIGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0MlxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHNpZ1B4ayA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50U2lnUHhrKCk7XG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY0RhdGFKc29uKVxuICAgICk7XG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY1NlYXJjaGFibGVKc29uKVxuICAgICk7XG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucGxhaW5EYXRhSnNvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXG4gICAgICBwdWJsaWNEYXRhU2lnLFxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcbiAgICAgIHBsYWluRGF0YVNpZyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|