@lifeready/core 1.0.15 → 1.0.16
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 +62 -62
- package/bundles/lifeready-core.umd.js +14315 -14315
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/ast.js +40 -40
- package/esm2015/lib/_common/deferred-promise.js +24 -24
- package/esm2015/lib/_common/exceptions.js +157 -157
- package/esm2015/lib/_common/queries.gql.js +190 -190
- package/esm2015/lib/_common/run-outside-angular.js +79 -79
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/_common/utils.js +52 -52
- package/esm2015/lib/api/contact-card.gql.js +79 -79
- package/esm2015/lib/api/contact-card.service.js +154 -154
- package/esm2015/lib/api/contact-card2.gql.js +60 -60
- package/esm2015/lib/api/contact-card2.service.js +103 -103
- package/esm2015/lib/api/file.service.js +74 -74
- package/esm2015/lib/api/key-exchange.gql.js +188 -188
- package/esm2015/lib/api/key-exchange.service.js +442 -442
- package/esm2015/lib/api/key-exchange.types.js +18 -18
- package/esm2015/lib/api/key-exchange2.gql.js +171 -171
- package/esm2015/lib/api/key-exchange2.service.js +479 -479
- package/esm2015/lib/api/lock.gql.js +40 -40
- package/esm2015/lib/api/lock.service.js +64 -64
- package/esm2015/lib/api/lr-apollo.service.js +46 -46
- package/esm2015/lib/api/lr-graphql/index.js +6 -6
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -155
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -213
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -51
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -48
- package/esm2015/lib/api/lr-graphql/lr.service.js +18 -18
- package/esm2015/lib/api/message.service.js +138 -138
- package/esm2015/lib/api/persist.service.js +181 -181
- package/esm2015/lib/api/query-processor/common-processors.service.js +93 -93
- package/esm2015/lib/api/query-processor/index.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +262 -262
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -109
- package/esm2015/lib/api/shared-contact-card.service.js +119 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +41 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +117 -117
- package/esm2015/lib/api/time.service.js +146 -146
- package/esm2015/lib/api/types/graphql.types.js +7 -7
- package/esm2015/lib/api/types/index.js +3 -3
- package/esm2015/lib/api/types/lr-graphql.types.js +101 -101
- package/esm2015/lib/auth/auth.config.js +57 -57
- package/esm2015/lib/auth/auth.gql.js +48 -48
- package/esm2015/lib/auth/auth.types.js +27 -27
- package/esm2015/lib/auth/idle.service.js +168 -168
- package/esm2015/lib/auth/idle.types.js +7 -7
- package/esm2015/lib/auth/lbop.service.js +355 -355
- package/esm2015/lib/auth/life-ready-auth.service.js +488 -488
- package/esm2015/lib/auth/password.service.js +320 -320
- package/esm2015/lib/auth/register.service.js +172 -172
- package/esm2015/lib/auth/two-factor.service.js +74 -74
- package/esm2015/lib/category/category-meta.service.js +99 -99
- package/esm2015/lib/category/category.gql.js +406 -406
- package/esm2015/lib/category/category.service.js +390 -390
- package/esm2015/lib/category/category.types.js +29 -29
- package/esm2015/lib/cryptography/cryptography.types.js +11 -11
- package/esm2015/lib/cryptography/encryption.service.js +189 -189
- package/esm2015/lib/cryptography/key-factory.service.js +237 -237
- package/esm2015/lib/cryptography/key-graph.service.js +299 -299
- package/esm2015/lib/cryptography/key-meta.service.js +200 -200
- package/esm2015/lib/cryptography/key.service.js +124 -124
- package/esm2015/lib/cryptography/slip39.service.js +169 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +29 -29
- package/esm2015/lib/items2/item2.gql.js +139 -139
- package/esm2015/lib/items2/item2.service.js +498 -498
- package/esm2015/lib/items2/item2.types.js +1 -1
- package/esm2015/lib/life-ready.config.js +84 -84
- package/esm2015/lib/life-ready.module.js +74 -74
- package/esm2015/lib/notification/notification.gql.js +43 -43
- package/esm2015/lib/notification/notification.service.js +118 -118
- package/esm2015/lib/plan/plan.gql.js +123 -123
- package/esm2015/lib/plan/plan.service.js +149 -149
- package/esm2015/lib/plan/plan.types.js +11 -11
- package/esm2015/lib/record/record-attachment.service.js +101 -101
- package/esm2015/lib/record/record.gql.js +179 -179
- package/esm2015/lib/record/record.service.js +206 -206
- package/esm2015/lib/record/record.types.js +15 -15
- package/esm2015/lib/record-type/record-type.service.js +75 -75
- package/esm2015/lib/record-type/record-type.types.js +28 -28
- package/esm2015/lib/scenario/scenario.constants.js +2 -2
- package/esm2015/lib/scenario/scenario.controller.js +34 -34
- package/esm2015/lib/scenario/scenario.gql.js +72 -72
- package/esm2015/lib/scenario/scenario.gql.private.js +198 -198
- package/esm2015/lib/scenario/scenario.service.js +538 -538
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +22 -22
- package/esm2015/lib/trusted-parties/tp-assembly.js +362 -362
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +1 -1
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +113 -113
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +34 -34
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +236 -236
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +95 -95
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -215
- package/esm2015/lib/users/profile-details.service.js +214 -214
- package/esm2015/lib/users/profile.gql.js +97 -97
- package/esm2015/lib/users/profile.service.js +169 -169
- package/esm2015/lib/users/profile.types.js +34 -34
- package/esm2015/lib/users/user.gql.js +60 -60
- package/esm2015/lib/users/user.service.js +79 -79
- package/esm2015/lib/users/user.types.js +5 -5
- package/esm2015/lifeready-core.js +13 -13
- package/esm2015/public-api.js +71 -71
- package/fesm2015/lifeready-core.js +12258 -12258
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/ast.d.ts +11 -11
- package/lib/_common/deferred-promise.d.ts +12 -12
- package/lib/_common/exceptions.d.ts +109 -109
- package/lib/_common/queries.gql.d.ts +10 -10
- package/lib/_common/run-outside-angular.d.ts +14 -14
- package/lib/_common/types.d.ts +10 -10
- package/lib/_common/utils.d.ts +9 -9
- package/lib/api/contact-card.gql.d.ts +7 -7
- package/lib/api/contact-card.service.d.ts +52 -52
- package/lib/api/contact-card2.gql.d.ts +34 -34
- package/lib/api/contact-card2.service.d.ts +49 -49
- package/lib/api/file.service.d.ts +18 -18
- package/lib/api/key-exchange.gql.d.ts +9 -9
- package/lib/api/key-exchange.service.d.ts +39 -39
- package/lib/api/key-exchange.types.d.ts +196 -196
- package/lib/api/key-exchange2.gql.d.ts +125 -125
- package/lib/api/key-exchange2.service.d.ts +187 -187
- package/lib/api/lock.gql.d.ts +27 -27
- package/lib/api/lock.service.d.ts +34 -34
- package/lib/api/lr-apollo.service.d.ts +15 -15
- package/lib/api/lr-graphql/index.d.ts +5 -5
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -60
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +28 -28
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -28
- package/lib/api/lr-graphql/lr-mutation.d.ts +8 -8
- package/lib/api/lr-graphql/lr.service.d.ts +9 -9
- package/lib/api/message.service.d.ts +58 -58
- package/lib/api/persist.service.d.ts +31 -31
- package/lib/api/query-processor/common-processors.service.d.ts +36 -36
- package/lib/api/query-processor/index.d.ts +2 -2
- package/lib/api/query-processor/query-processor.service.d.ts +18 -18
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -15
- package/lib/api/shared-contact-card.service.d.ts +33 -33
- package/lib/api/shared-contact-card2.gql.d.ts +36 -36
- package/lib/api/shared-contact-card2.service.d.ts +45 -45
- package/lib/api/time.service.d.ts +16 -16
- package/lib/api/types/graphql.types.d.ts +29 -29
- package/lib/api/types/index.d.ts +2 -2
- package/lib/api/types/lr-graphql.types.d.ts +502 -502
- package/lib/auth/auth.config.d.ts +5 -5
- package/lib/auth/auth.gql.d.ts +15 -15
- package/lib/auth/auth.types.d.ts +66 -66
- package/lib/auth/idle.service.d.ts +40 -40
- package/lib/auth/idle.types.d.ts +10 -10
- package/lib/auth/lbop.service.d.ts +91 -91
- package/lib/auth/life-ready-auth.service.d.ts +61 -61
- package/lib/auth/password.service.d.ts +78 -78
- package/lib/auth/register.service.d.ts +25 -25
- package/lib/auth/two-factor.service.d.ts +15 -15
- package/lib/category/category-meta.service.d.ts +23 -23
- package/lib/category/category.gql.d.ts +45 -45
- package/lib/category/category.service.d.ts +67 -67
- package/lib/category/category.types.d.ts +79 -79
- package/lib/cryptography/cryptography.types.d.ts +83 -83
- package/lib/cryptography/encryption.service.d.ts +41 -41
- package/lib/cryptography/key-factory.service.d.ts +38 -38
- package/lib/cryptography/key-graph.service.d.ts +41 -41
- package/lib/cryptography/key-meta.service.d.ts +44 -44
- package/lib/cryptography/key.service.d.ts +36 -36
- package/lib/cryptography/slip39.service.d.ts +43 -43
- package/lib/cryptography/web-crypto.service.d.ts +5 -5
- package/lib/items2/item2.gql.d.ts +123 -123
- package/lib/items2/item2.service.d.ts +203 -203
- package/lib/items2/item2.types.d.ts +70 -70
- package/lib/life-ready.config.d.ts +14 -14
- package/lib/life-ready.module.d.ts +5 -5
- package/lib/notification/notification.gql.d.ts +37 -37
- package/lib/notification/notification.service.d.ts +63 -63
- package/lib/plan/plan.gql.d.ts +11 -11
- package/lib/plan/plan.service.d.ts +33 -33
- package/lib/plan/plan.types.d.ts +31 -31
- package/lib/record/record-attachment.service.d.ts +16 -16
- package/lib/record/record.gql.d.ts +14 -14
- package/lib/record/record.service.d.ts +25 -25
- package/lib/record/record.types.d.ts +57 -57
- package/lib/record-type/record-type.service.d.ts +11 -11
- package/lib/record-type/record-type.types.d.ts +50 -50
- package/lib/scenario/scenario.constants.d.ts +1 -1
- package/lib/scenario/scenario.controller.d.ts +10 -10
- package/lib/scenario/scenario.gql.d.ts +62 -62
- package/lib/scenario/scenario.gql.private.d.ts +16 -16
- package/lib/scenario/scenario.service.d.ts +233 -233
- package/lib/scenario/scenario.types.d.ts +50 -50
- package/lib/trusted-parties/tp-assembly.d.ts +177 -177
- package/lib/trusted-parties/tp-assembly.gql.private.d.ts +5 -5
- package/lib/trusted-parties/tp-assembly.types.d.ts +38 -38
- package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -20
- package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -35
- package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -3
- package/lib/trusted-parties/tp-password-reset.controller.d.ts +10 -10
- package/lib/trusted-parties/tp-password-reset.gql.d.ts +223 -223
- package/lib/trusted-parties/tp-password-reset.service.d.ts +188 -188
- package/lib/trusted-parties/trusted-party.gql.d.ts +9 -9
- package/lib/trusted-parties/trusted-party.service.d.ts +44 -44
- package/lib/trusted-parties/trusted-party.types.d.ts +102 -102
- package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -79
- package/lib/trusted-parties/trusted-party2.service.d.ts +114 -114
- package/lib/users/profile-details.service.d.ts +21 -21
- package/lib/users/profile.gql.d.ts +11 -11
- package/lib/users/profile.service.d.ts +35 -35
- package/lib/users/profile.types.d.ts +96 -96
- package/lib/users/user.gql.d.ts +9 -9
- package/lib/users/user.service.d.ts +12 -12
- package/lib/users/user.types.d.ts +23 -23
- package/lifeready-core.d.ts +12 -12
- package/package.json +1 -1
- package/public-api.d.ts +67 -67
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
import gql from 'graphql-tag';
|
|
2
|
-
import { KeyGraphFragment } from '../_common/queries.gql';
|
|
3
|
-
export const CurrentUserQuery = gql `
|
|
4
|
-
query {
|
|
5
|
-
currentUser {
|
|
6
|
-
id
|
|
7
|
-
username
|
|
8
|
-
currentUserKey {
|
|
9
|
-
passKey {
|
|
10
|
-
id
|
|
11
|
-
passKeyParams
|
|
12
|
-
passIdpParams
|
|
13
|
-
wrappedPassIdpVerifierPrk
|
|
14
|
-
created
|
|
15
|
-
}
|
|
16
|
-
masterKey {
|
|
17
|
-
id
|
|
18
|
-
}
|
|
19
|
-
rootKey {
|
|
20
|
-
id
|
|
21
|
-
}
|
|
22
|
-
pxk {
|
|
23
|
-
id
|
|
24
|
-
}
|
|
25
|
-
sigPxk {
|
|
26
|
-
id
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
userDelete {
|
|
30
|
-
id
|
|
31
|
-
created
|
|
32
|
-
state
|
|
33
|
-
}
|
|
34
|
-
features {
|
|
35
|
-
myVault
|
|
36
|
-
tpVault
|
|
37
|
-
shareVault
|
|
38
|
-
}
|
|
39
|
-
sessionEncryptionKey
|
|
40
|
-
}
|
|
41
|
-
userPlans {
|
|
42
|
-
id
|
|
43
|
-
stripe {
|
|
44
|
-
subscriptionId
|
|
45
|
-
}
|
|
46
|
-
plan {
|
|
47
|
-
name
|
|
48
|
-
data
|
|
49
|
-
state
|
|
50
|
-
}
|
|
51
|
-
periodEnd
|
|
52
|
-
}
|
|
53
|
-
contactCards(orderBy: "created") {
|
|
54
|
-
edges {
|
|
55
|
-
node {
|
|
56
|
-
id
|
|
57
|
-
key {
|
|
58
|
-
id
|
|
59
|
-
}
|
|
60
|
-
cipherData
|
|
61
|
-
plainData
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
keyGraph {
|
|
66
|
-
...KeyGraphFragment
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
${KeyGraphFragment}
|
|
70
|
-
`;
|
|
71
|
-
export const CreateContactCardMutation = gql `
|
|
72
|
-
mutation CreateContactCardMutation($input: CreateContactCardInput!) {
|
|
73
|
-
createContactCard(input: $input) {
|
|
74
|
-
contactCard {
|
|
75
|
-
id
|
|
76
|
-
key {
|
|
77
|
-
id
|
|
78
|
-
}
|
|
79
|
-
cipherData
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
`;
|
|
84
|
-
export const UpdateContactCardMutation = gql `
|
|
85
|
-
mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
|
|
86
|
-
updateContactCard(input: $input) {
|
|
87
|
-
contactCard {
|
|
88
|
-
id
|
|
89
|
-
key {
|
|
90
|
-
id
|
|
91
|
-
}
|
|
92
|
-
cipherData
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
`;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import gql from 'graphql-tag';
|
|
2
|
+
import { KeyGraphFragment } from '../_common/queries.gql';
|
|
3
|
+
export const CurrentUserQuery = gql `
|
|
4
|
+
query {
|
|
5
|
+
currentUser {
|
|
6
|
+
id
|
|
7
|
+
username
|
|
8
|
+
currentUserKey {
|
|
9
|
+
passKey {
|
|
10
|
+
id
|
|
11
|
+
passKeyParams
|
|
12
|
+
passIdpParams
|
|
13
|
+
wrappedPassIdpVerifierPrk
|
|
14
|
+
created
|
|
15
|
+
}
|
|
16
|
+
masterKey {
|
|
17
|
+
id
|
|
18
|
+
}
|
|
19
|
+
rootKey {
|
|
20
|
+
id
|
|
21
|
+
}
|
|
22
|
+
pxk {
|
|
23
|
+
id
|
|
24
|
+
}
|
|
25
|
+
sigPxk {
|
|
26
|
+
id
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
userDelete {
|
|
30
|
+
id
|
|
31
|
+
created
|
|
32
|
+
state
|
|
33
|
+
}
|
|
34
|
+
features {
|
|
35
|
+
myVault
|
|
36
|
+
tpVault
|
|
37
|
+
shareVault
|
|
38
|
+
}
|
|
39
|
+
sessionEncryptionKey
|
|
40
|
+
}
|
|
41
|
+
userPlans {
|
|
42
|
+
id
|
|
43
|
+
stripe {
|
|
44
|
+
subscriptionId
|
|
45
|
+
}
|
|
46
|
+
plan {
|
|
47
|
+
name
|
|
48
|
+
data
|
|
49
|
+
state
|
|
50
|
+
}
|
|
51
|
+
periodEnd
|
|
52
|
+
}
|
|
53
|
+
contactCards(orderBy: "created") {
|
|
54
|
+
edges {
|
|
55
|
+
node {
|
|
56
|
+
id
|
|
57
|
+
key {
|
|
58
|
+
id
|
|
59
|
+
}
|
|
60
|
+
cipherData
|
|
61
|
+
plainData
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
keyGraph {
|
|
66
|
+
...KeyGraphFragment
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
${KeyGraphFragment}
|
|
70
|
+
`;
|
|
71
|
+
export const CreateContactCardMutation = gql `
|
|
72
|
+
mutation CreateContactCardMutation($input: CreateContactCardInput!) {
|
|
73
|
+
createContactCard(input: $input) {
|
|
74
|
+
contactCard {
|
|
75
|
+
id
|
|
76
|
+
key {
|
|
77
|
+
id
|
|
78
|
+
}
|
|
79
|
+
cipherData
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
`;
|
|
84
|
+
export const UpdateContactCardMutation = gql `
|
|
85
|
+
mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
|
|
86
|
+
updateContactCard(input: $input) {
|
|
87
|
+
contactCard {
|
|
88
|
+
id
|
|
89
|
+
key {
|
|
90
|
+
id
|
|
91
|
+
}
|
|
92
|
+
cipherData
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
`;
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3VzZXJzL3Byb2ZpbGUuZ3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVExRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtFL0IsZ0JBQWdCO0NBQ25CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7OztDQVkzQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Q0FZM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhc0VkZ2VzIH0gZnJvbSAnLi8uLi9fY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IEhhc0tleUdyYXBoLCBQYXNzS2V5IH0gZnJvbSAnLi8uLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7IEFwaUN1cnJlbnRVc2VyLCBBcGlDb250YWN0Q2FyZCB9IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IEtleUdyYXBoRnJhZ21lbnQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcblxuZXhwb3J0IGludGVyZmFjZSBDdXJyZW50VXNlclF1ZXJ5VHlwZSBleHRlbmRzIEhhc0tleUdyYXBoIHtcbiAgY3VycmVudFVzZXI6IEFwaUN1cnJlbnRVc2VyO1xuICBjb250YWN0Q2FyZHM6IEhhc0VkZ2VzPEFwaUNvbnRhY3RDYXJkPjtcbiAgdXNlclBsYW5zOiBhbnlbXTtcbn1cblxuZXhwb3J0IGNvbnN0IEN1cnJlbnRVc2VyUXVlcnkgPSBncWxgXG4gIHF1ZXJ5IHtcbiAgICBjdXJyZW50VXNlciB7XG4gICAgICBpZFxuICAgICAgdXNlcm5hbWVcbiAgICAgIGN1cnJlbnRVc2VyS2V5IHtcbiAgICAgICAgcGFzc0tleSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgICBwYXNzS2V5UGFyYW1zXG4gICAgICAgICAgcGFzc0lkcFBhcmFtc1xuICAgICAgICAgIHdyYXBwZWRQYXNzSWRwVmVyaWZpZXJQcmtcbiAgICAgICAgICBjcmVhdGVkXG4gICAgICAgIH1cbiAgICAgICAgbWFzdGVyS2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIHJvb3RLZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgcHhrIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIHNpZ1B4ayB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdXNlckRlbGV0ZSB7XG4gICAgICAgIGlkXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgICAgc3RhdGVcbiAgICAgIH1cbiAgICAgIGZlYXR1cmVzIHtcbiAgICAgICAgbXlWYXVsdFxuICAgICAgICB0cFZhdWx0XG4gICAgICAgIHNoYXJlVmF1bHRcbiAgICAgIH1cbiAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5XG4gICAgfVxuICAgIHVzZXJQbGFucyB7XG4gICAgICBpZFxuICAgICAgc3RyaXBlIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uSWRcbiAgICAgIH1cbiAgICAgIHBsYW4ge1xuICAgICAgICBuYW1lXG4gICAgICAgIGRhdGFcbiAgICAgICAgc3RhdGVcbiAgICAgIH1cbiAgICAgIHBlcmlvZEVuZFxuICAgIH1cbiAgICBjb250YWN0Q2FyZHMob3JkZXJCeTogXCJjcmVhdGVkXCIpIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgICBrZXkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICB9XG4gICAgICAgICAgY2lwaGVyRGF0YVxuICAgICAgICAgIHBsYWluRGF0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGtleUdyYXBoIHtcbiAgICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0ISkge1xuICAgIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICAgaWRcbiAgICAgICAga2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIGNpcGhlckRhdGFcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uKCRpbnB1dDogVXBkYXRlQ29udGFjdENhcmRJbnB1dCEpIHtcbiAgICB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgICBjb250YWN0Q2FyZCB7XG4gICAgICAgIGlkXG4gICAgICAgIGtleSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgICBjaXBoZXJEYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuIl19
|
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { HttpClient } from '@angular/common/http';
|
|
3
|
-
import { Inject, Injectable } from '@angular/core';
|
|
4
|
-
import { LrApolloService } from '../api/lr-apollo.service';
|
|
5
|
-
import { LR_CONFIG } from '../life-ready.config';
|
|
6
|
-
import { CurrentUserQuery, UpdateContactCardMutation, CreateContactCardMutation, } from './profile.gql';
|
|
7
|
-
import { ContactCardName, } from './profile.types';
|
|
8
|
-
import { KeyMetaService } from '../cryptography/key-meta.service';
|
|
9
|
-
import { KeyService } from '../cryptography/key.service';
|
|
10
|
-
import { EncryptionService } from '../cryptography/encryption.service';
|
|
11
|
-
import { ContactCardListQuery, DeleteContactCardMutation, } from '../api/contact-card.gql';
|
|
12
|
-
import { mapUserPlans } from '../plan/plan.service';
|
|
13
|
-
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "../life-ready.config";
|
|
16
|
-
import * as i2 from "@angular/common/http";
|
|
17
|
-
import * as i3 from "../api/lr-apollo.service";
|
|
18
|
-
import * as i4 from "../cryptography/key.service";
|
|
19
|
-
import * as i5 from "../cryptography/key-meta.service";
|
|
20
|
-
import * as i6 from "../cryptography/key-graph.service";
|
|
21
|
-
import * as i7 from "../cryptography/encryption.service";
|
|
22
|
-
export class ProfileService {
|
|
23
|
-
constructor(config, http, lrApollo, keyService, keyMetaService, keyGraph, encryptionService) {
|
|
24
|
-
this.config = config;
|
|
25
|
-
this.http = http;
|
|
26
|
-
this.lrApollo = lrApollo;
|
|
27
|
-
this.keyService = keyService;
|
|
28
|
-
this.keyMetaService = keyMetaService;
|
|
29
|
-
this.keyGraph = keyGraph;
|
|
30
|
-
this.encryptionService = encryptionService;
|
|
31
|
-
}
|
|
32
|
-
getPassIdpParams(emailOrPhone) {
|
|
33
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
return yield this.http
|
|
35
|
-
.get(`${this.config.authUrl}users/pass-idp-params/?login_name=${encodeURIComponent(emailOrPhone)}`)
|
|
36
|
-
.toPromise();
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
getCurrentUser() {
|
|
40
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
const { currentUser, contactCards, userPlans, } = yield this.lrApollo.query({
|
|
42
|
-
query: CurrentUserQuery,
|
|
43
|
-
});
|
|
44
|
-
const contactCard = contactCards.edges.map((x) => x.node)[0];
|
|
45
|
-
return {
|
|
46
|
-
currentUser,
|
|
47
|
-
contactCard,
|
|
48
|
-
userPlans: mapUserPlans(userPlans),
|
|
49
|
-
};
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
decryptContactCard(contactCard) {
|
|
53
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
-
if (!contactCard) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
const details = yield this.keyGraph.decryptFromString(contactCard.key.id, contactCard.cipherData);
|
|
58
|
-
return Object.assign({ id: contactCard.id, keyId: contactCard.key.id }, details);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
updateDetails(id, keyId, fields) {
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
yield (id
|
|
64
|
-
? this.updateContactCard(id, keyId, fields)
|
|
65
|
-
: this.createContactCard(fields));
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
prepareContactCardInput(contactCard) {
|
|
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, ''));
|
|
72
|
-
const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, ''));
|
|
73
|
-
const plainDataJson = {
|
|
74
|
-
// contactCard.name.value may have additional attributes such as the id of the contact card.
|
|
75
|
-
// So we create a clean version. Otherwise it will fail server checks.
|
|
76
|
-
name: new ContactCardName(contactCard.name.value),
|
|
77
|
-
};
|
|
78
|
-
const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, plainDataJson));
|
|
79
|
-
return {
|
|
80
|
-
sigPxkId: sigPxk.id,
|
|
81
|
-
publicDataSig,
|
|
82
|
-
publicSearchableSig,
|
|
83
|
-
plainDataSig,
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
createContactCard(contactCard) {
|
|
88
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
-
const input = yield this.prepareContactCardInput(contactCard);
|
|
90
|
-
const { rootKey, cipherMeta } = yield this.keyMetaService.wrapContent(contactCard);
|
|
91
|
-
const data = yield this.lrApollo.mutate({
|
|
92
|
-
mutation: CreateContactCardMutation,
|
|
93
|
-
variables: {
|
|
94
|
-
input: Object.assign(Object.assign({}, input), { cipherData: cipherMeta, wrappingKeyId: rootKey.wrappingKeyId, wrappedKey: rootKey.wrappedKey, default: true }),
|
|
95
|
-
},
|
|
96
|
-
});
|
|
97
|
-
return data.createContactCard.contactCard;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
updateContactCard(id, keyId, contactCard) {
|
|
101
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
-
const input = yield this.prepareContactCardInput(contactCard);
|
|
103
|
-
const cipherData = yield this.keyGraph.encryptToString(keyId, contactCard);
|
|
104
|
-
const data = yield this.lrApollo.mutate({
|
|
105
|
-
mutation: UpdateContactCardMutation,
|
|
106
|
-
variables: {
|
|
107
|
-
input: Object.assign(Object.assign({}, input), { id,
|
|
108
|
-
cipherData }),
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
return data.updateContactCard.contactCard;
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
decryptContactCardEdges(edges) {
|
|
115
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
-
return Promise.all(edges.map((edge) => __awaiter(this, void 0, void 0, function* () {
|
|
117
|
-
const cc = edge.node;
|
|
118
|
-
return yield this.decryptContactCard(cc);
|
|
119
|
-
})));
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
getContactCards() {
|
|
123
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
-
const data = yield this.lrApollo.query({
|
|
125
|
-
query: ContactCardListQuery,
|
|
126
|
-
});
|
|
127
|
-
return yield this.decryptContactCardEdges(data.contactCards.edges);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
deleteContactCard(id) {
|
|
131
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
-
const data = yield this.lrApollo.mutate({
|
|
133
|
-
mutation: DeleteContactCardMutation,
|
|
134
|
-
variables: {
|
|
135
|
-
input: {
|
|
136
|
-
id,
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
return data.deleteContactCard.id;
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
signOut() {
|
|
144
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
-
yield this.http
|
|
146
|
-
.post(`${this.config.authUrl}auth/sign-out/`, null, {
|
|
147
|
-
withCredentials: true,
|
|
148
|
-
responseType: 'text',
|
|
149
|
-
})
|
|
150
|
-
.toPromise();
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
ProfileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(i0.ɵɵinject(i1.LR_CONFIG), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.KeyService), i0.ɵɵinject(i5.KeyMetaService), i0.ɵɵinject(i6.KeyGraphService), i0.ɵɵinject(i7.EncryptionService)); }, token: ProfileService, providedIn: "root" });
|
|
155
|
-
ProfileService.decorators = [
|
|
156
|
-
{ type: Injectable, args: [{
|
|
157
|
-
providedIn: 'root',
|
|
158
|
-
},] }
|
|
159
|
-
];
|
|
160
|
-
ProfileService.ctorParameters = () => [
|
|
161
|
-
{ type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
|
|
162
|
-
{ type: HttpClient },
|
|
163
|
-
{ type: LrApolloService },
|
|
164
|
-
{ type: KeyService },
|
|
165
|
-
{ type: KeyMetaService },
|
|
166
|
-
{ type: KeyGraphService },
|
|
167
|
-
{ type: EncryptionService }
|
|
168
|
-
];
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL2tjLWNsaWVudC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91c2Vycy9wcm9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQU9MLGVBQWUsR0FDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXZFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEdBQzFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBS3BFLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQzZCLE1BQXVCLEVBQzFDLElBQWdCLEVBQ2hCLFFBQXlCLEVBQ3pCLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLFFBQXlCLEVBQ3pCLGlCQUFvQztRQU5qQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUMxQyxTQUFJLEdBQUosSUFB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QUFFLENBQUM7UUFDakIsQ0FBQztLQUFBOzs7O1lBL0xGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQUdJLE1BQU0sU0FBQyxTQUFTO1lBcENaLFVBQVU7WUFFVixlQUFlO1lBa0JmLFVBQVU7WUFEVixjQUFjO1lBVWQsZUFBZTtZQVJmLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaWZlUmVhZHlDb25maWcsIExSX0NPTkZJRyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcclxuaW1wb3J0IHtcclxuICBDdXJyZW50VXNlclF1ZXJ5LFxyXG4gIEN1cnJlbnRVc2VyUXVlcnlUeXBlLFxyXG4gIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxufSBmcm9tICcuL3Byb2ZpbGUuZ3FsJztcclxuaW1wb3J0IHtcclxuICBBcGlDdXJyZW50VXNlcixcclxuICBQYXNzSWRwQXBpUmVzdWx0LFxyXG4gIE1haW5Db250YWN0Q2FyZCxcclxuICBBcGlDb250YWN0Q2FyZCxcclxuICBNYWluQ29udGFjdENhcmRGaWVsZHMsXHJcbiAgTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHMsXHJcbiAgQ29udGFjdENhcmROYW1lLFxyXG59IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XHJcbmltcG9ydCB7IEtleU1ldGFTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1tZXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvZW5jcnlwdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udGFjdENhcmQgfSBmcm9tICcuLi9hcGkvY29udGFjdC1jYXJkLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRhY3RDYXJkTGlzdFF1ZXJ5LFxyXG4gIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbn0gZnJvbSAnLi4vYXBpL2NvbnRhY3QtY2FyZC5ncWwnO1xyXG5pbXBvcnQgeyBtYXBVc2VyUGxhbnMgfSBmcm9tICcuLi9wbGFuL3BsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJQbGFuIH0gZnJvbSAnLi4vcGxhbi9wbGFuLnR5cGVzJztcclxuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KExSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IExpZmVSZWFkeUNvbmZpZyxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcclxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcclxuICAgIHByaXZhdGUga2V5TWV0YVNlcnZpY2U6IEtleU1ldGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIGdldFBhc3NJZHBQYXJhbXMoZW1haWxPclBob25lOiBzdHJpbmcpOiBQcm9taXNlPFBhc3NJZHBBcGlSZXN1bHQ+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcclxuICAgICAgLmdldDxQYXNzSWRwQXBpUmVzdWx0PihcclxuICAgICAgICBgJHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLmF1dGhVcmxcclxuICAgICAgICB9dXNlcnMvcGFzcy1pZHAtcGFyYW1zLz9sb2dpbl9uYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVtYWlsT3JQaG9uZSl9YFxyXG4gICAgICApXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyKCk6IFByb21pc2U8e1xyXG4gICAgY3VycmVudFVzZXI6IEFwaUN1cnJlbnRVc2VyO1xyXG4gICAgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkO1xyXG4gICAgdXNlclBsYW5zOiBVc2VyUGxhbltdO1xyXG4gIH0+IHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY3VycmVudFVzZXIsXHJcbiAgICAgIGNvbnRhY3RDYXJkcyxcclxuICAgICAgdXNlclBsYW5zLFxyXG4gICAgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8Q3VycmVudFVzZXJRdWVyeVR5cGU+KHtcclxuICAgICAgcXVlcnk6IEN1cnJlbnRVc2VyUXVlcnksXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjb250YWN0Q2FyZCA9IGNvbnRhY3RDYXJkcy5lZGdlcy5tYXAoKHgpID0+IHgubm9kZSlbMF07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY3VycmVudFVzZXIsXHJcbiAgICAgIGNvbnRhY3RDYXJkLFxyXG4gICAgICB1c2VyUGxhbnM6IG1hcFVzZXJQbGFucyh1c2VyUGxhbnMpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZChcclxuICAgIGNvbnRhY3RDYXJkOiBBcGlDb250YWN0Q2FyZFxyXG4gICk6IFByb21pc2U8TWFpbkNvbnRhY3RDYXJkPiB7XHJcbiAgICBpZiAoIWNvbnRhY3RDYXJkKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRldGFpbHMgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nPGFueT4oXHJcbiAgICAgIGNvbnRhY3RDYXJkLmtleS5pZCxcclxuICAgICAgY29udGFjdENhcmQuY2lwaGVyRGF0YVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpZDogY29udGFjdENhcmQuaWQsXHJcbiAgICAgIGtleUlkOiBjb250YWN0Q2FyZC5rZXkuaWQsXHJcbiAgICAgIC4uLmRldGFpbHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlRGV0YWlscyhcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICBrZXlJZDogc3RyaW5nLFxyXG4gICAgZmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHNcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IChpZFxyXG4gICAgICA/IHRoaXMudXBkYXRlQ29udGFjdENhcmQoaWQsIGtleUlkLCBmaWVsZHMpXHJcbiAgICAgIDogdGhpcy5jcmVhdGVDb250YWN0Q2FyZChmaWVsZHMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoXHJcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXHJcbiAgKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IHNpZ1B4ayA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50U2lnUHhrKCk7XHJcblxyXG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgJycpXHJcbiAgICApO1xyXG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgJycpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHBsYWluRGF0YUpzb246IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzID0ge1xyXG4gICAgICAvLyBjb250YWN0Q2FyZC5uYW1lLnZhbHVlIG1heSBoYXZlIGFkZGl0aW9uYWwgYXR0cmlidXRlcyBzdWNoIGFzIHRoZSBpZCBvZiB0aGUgY29udGFjdCBjYXJkLlxyXG4gICAgICAvLyBTbyB3ZSBjcmVhdGUgYSBjbGVhbiB2ZXJzaW9uLiBPdGhlcndpc2UgaXQgd2lsbCBmYWlsIHNlcnZlciBjaGVja3MuXHJcbiAgICAgIG5hbWU6IG5ldyBDb250YWN0Q2FyZE5hbWUoY29udGFjdENhcmQubmFtZS52YWx1ZSksXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCBwbGFpbkRhdGFKc29uKVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaWdQeGtJZDogc2lnUHhrLmlkLFxyXG4gICAgICBwdWJsaWNEYXRhU2lnLFxyXG4gICAgICBwdWJsaWNTZWFyY2hhYmxlU2lnLFxyXG4gICAgICBwbGFpbkRhdGFTaWcsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDb250YWN0Q2FyZChcclxuICAgIGNvbnRhY3RDYXJkOiBNYWluQ29udGFjdENhcmRGaWVsZHNcclxuICApOiBQcm9taXNlPEFwaUNvbnRhY3RDYXJkPiB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoY29udGFjdENhcmQpO1xyXG5cclxuICAgIGNvbnN0IHsgcm9vdEtleSwgY2lwaGVyTWV0YSB9ID0gYXdhaXQgdGhpcy5rZXlNZXRhU2VydmljZS53cmFwQ29udGVudChcclxuICAgICAgY29udGFjdENhcmRcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcclxuICAgICAgY3JlYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkIH07XHJcbiAgICB9Pih7XHJcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgLi4uaW5wdXQsXHJcbiAgICAgICAgICBjaXBoZXJEYXRhOiBjaXBoZXJNZXRhLFxyXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS53cmFwcGluZ0tleUlkLFxyXG4gICAgICAgICAgd3JhcHBlZEtleTogcm9vdEtleS53cmFwcGVkS2V5LFxyXG4gICAgICAgICAgZGVmYXVsdDogdHJ1ZSwgLy8gVXNlIHRoaXMgY29udGFjdCBjYXJkIGFzIGRlZmF1bHQgY29udGFjdCBjYXJkLlxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhLmNyZWF0ZUNvbnRhY3RDYXJkLmNvbnRhY3RDYXJkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVDb250YWN0Q2FyZChcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICBrZXlJZDogc3RyaW5nLFxyXG4gICAgY29udGFjdENhcmQ6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xyXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcclxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChjb250YWN0Q2FyZCk7XHJcblxyXG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKGtleUlkLCBjb250YWN0Q2FyZCk7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcclxuICAgICAgdXBkYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkIH07XHJcbiAgICB9Pih7XHJcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgLi4uaW5wdXQsXHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICAgIGNpcGhlckRhdGEsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGEudXBkYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWNyeXB0Q29udGFjdENhcmRFZGdlcyhlZGdlcyk6IFByb21pc2U8Q29udGFjdENhcmRbXT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxyXG4gICAgICBlZGdlcy5tYXAoYXN5bmMgKGVkZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNjID0gZWRnZS5ub2RlIGFzIENvbnRhY3RDYXJkO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChjYyk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Q29udGFjdENhcmRzKCk6IFByb21pc2U8Q29udGFjdENhcmRbXT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XHJcbiAgICAgIHF1ZXJ5OiBDb250YWN0Q2FyZExpc3RRdWVyeSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGRhdGEuY29udGFjdENhcmRzLmVkZ2VzKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZUNvbnRhY3RDYXJkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPGFueT4oe1xyXG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGF0YS5kZWxldGVDb250YWN0Q2FyZC5pZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNpZ25PdXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QoYCR7dGhpcy5jb25maWcuYXV0aFVybH1hdXRoL3NpZ24tb3V0L2AsIG51bGwsIHtcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXHJcbiAgICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { Inject, Injectable } from '@angular/core';
|
|
4
|
+
import { LrApolloService } from '../api/lr-apollo.service';
|
|
5
|
+
import { LR_CONFIG } from '../life-ready.config';
|
|
6
|
+
import { CurrentUserQuery, UpdateContactCardMutation, CreateContactCardMutation, } from './profile.gql';
|
|
7
|
+
import { ContactCardName, } from './profile.types';
|
|
8
|
+
import { KeyMetaService } from '../cryptography/key-meta.service';
|
|
9
|
+
import { KeyService } from '../cryptography/key.service';
|
|
10
|
+
import { EncryptionService } from '../cryptography/encryption.service';
|
|
11
|
+
import { ContactCardListQuery, DeleteContactCardMutation, } from '../api/contact-card.gql';
|
|
12
|
+
import { mapUserPlans } from '../plan/plan.service';
|
|
13
|
+
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "../life-ready.config";
|
|
16
|
+
import * as i2 from "@angular/common/http";
|
|
17
|
+
import * as i3 from "../api/lr-apollo.service";
|
|
18
|
+
import * as i4 from "../cryptography/key.service";
|
|
19
|
+
import * as i5 from "../cryptography/key-meta.service";
|
|
20
|
+
import * as i6 from "../cryptography/key-graph.service";
|
|
21
|
+
import * as i7 from "../cryptography/encryption.service";
|
|
22
|
+
export class ProfileService {
|
|
23
|
+
constructor(config, http, lrApollo, keyService, keyMetaService, keyGraph, encryptionService) {
|
|
24
|
+
this.config = config;
|
|
25
|
+
this.http = http;
|
|
26
|
+
this.lrApollo = lrApollo;
|
|
27
|
+
this.keyService = keyService;
|
|
28
|
+
this.keyMetaService = keyMetaService;
|
|
29
|
+
this.keyGraph = keyGraph;
|
|
30
|
+
this.encryptionService = encryptionService;
|
|
31
|
+
}
|
|
32
|
+
getPassIdpParams(emailOrPhone) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
return yield this.http
|
|
35
|
+
.get(`${this.config.authUrl}users/pass-idp-params/?login_name=${encodeURIComponent(emailOrPhone)}`)
|
|
36
|
+
.toPromise();
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
getCurrentUser() {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const { currentUser, contactCards, userPlans, } = yield this.lrApollo.query({
|
|
42
|
+
query: CurrentUserQuery,
|
|
43
|
+
});
|
|
44
|
+
const contactCard = contactCards.edges.map((x) => x.node)[0];
|
|
45
|
+
return {
|
|
46
|
+
currentUser,
|
|
47
|
+
contactCard,
|
|
48
|
+
userPlans: mapUserPlans(userPlans),
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
decryptContactCard(contactCard) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
if (!contactCard) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const details = yield this.keyGraph.decryptFromString(contactCard.key.id, contactCard.cipherData);
|
|
58
|
+
return Object.assign({ id: contactCard.id, keyId: contactCard.key.id }, details);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
updateDetails(id, keyId, fields) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
yield (id
|
|
64
|
+
? this.updateContactCard(id, keyId, fields)
|
|
65
|
+
: this.createContactCard(fields));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
prepareContactCardInput(contactCard) {
|
|
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, ''));
|
|
72
|
+
const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, ''));
|
|
73
|
+
const plainDataJson = {
|
|
74
|
+
// contactCard.name.value may have additional attributes such as the id of the contact card.
|
|
75
|
+
// So we create a clean version. Otherwise it will fail server checks.
|
|
76
|
+
name: new ContactCardName(contactCard.name.value),
|
|
77
|
+
};
|
|
78
|
+
const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, plainDataJson));
|
|
79
|
+
return {
|
|
80
|
+
sigPxkId: sigPxk.id,
|
|
81
|
+
publicDataSig,
|
|
82
|
+
publicSearchableSig,
|
|
83
|
+
plainDataSig,
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
createContactCard(contactCard) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const input = yield this.prepareContactCardInput(contactCard);
|
|
90
|
+
const { rootKey, cipherMeta } = yield this.keyMetaService.wrapContent(contactCard);
|
|
91
|
+
const data = yield this.lrApollo.mutate({
|
|
92
|
+
mutation: CreateContactCardMutation,
|
|
93
|
+
variables: {
|
|
94
|
+
input: Object.assign(Object.assign({}, input), { cipherData: cipherMeta, wrappingKeyId: rootKey.wrappingKeyId, wrappedKey: rootKey.wrappedKey, default: true }),
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
return data.createContactCard.contactCard;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
updateContactCard(id, keyId, contactCard) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
const input = yield this.prepareContactCardInput(contactCard);
|
|
103
|
+
const cipherData = yield this.keyGraph.encryptToString(keyId, contactCard);
|
|
104
|
+
const data = yield this.lrApollo.mutate({
|
|
105
|
+
mutation: UpdateContactCardMutation,
|
|
106
|
+
variables: {
|
|
107
|
+
input: Object.assign(Object.assign({}, input), { id,
|
|
108
|
+
cipherData }),
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
return data.updateContactCard.contactCard;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
decryptContactCardEdges(edges) {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
return Promise.all(edges.map((edge) => __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
const cc = edge.node;
|
|
118
|
+
return yield this.decryptContactCard(cc);
|
|
119
|
+
})));
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
getContactCards() {
|
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
const data = yield this.lrApollo.query({
|
|
125
|
+
query: ContactCardListQuery,
|
|
126
|
+
});
|
|
127
|
+
return yield this.decryptContactCardEdges(data.contactCards.edges);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
deleteContactCard(id) {
|
|
131
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
+
const data = yield this.lrApollo.mutate({
|
|
133
|
+
mutation: DeleteContactCardMutation,
|
|
134
|
+
variables: {
|
|
135
|
+
input: {
|
|
136
|
+
id,
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
return data.deleteContactCard.id;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
signOut() {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
yield this.http
|
|
146
|
+
.post(`${this.config.authUrl}auth/sign-out/`, null, {
|
|
147
|
+
withCredentials: true,
|
|
148
|
+
responseType: 'text',
|
|
149
|
+
})
|
|
150
|
+
.toPromise();
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
ProfileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(i0.ɵɵinject(i1.LR_CONFIG), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.KeyService), i0.ɵɵinject(i5.KeyMetaService), i0.ɵɵinject(i6.KeyGraphService), i0.ɵɵinject(i7.EncryptionService)); }, token: ProfileService, providedIn: "root" });
|
|
155
|
+
ProfileService.decorators = [
|
|
156
|
+
{ type: Injectable, args: [{
|
|
157
|
+
providedIn: 'root',
|
|
158
|
+
},] }
|
|
159
|
+
];
|
|
160
|
+
ProfileService.ctorParameters = () => [
|
|
161
|
+
{ type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
|
|
162
|
+
{ type: HttpClient },
|
|
163
|
+
{ type: LrApolloService },
|
|
164
|
+
{ type: KeyService },
|
|
165
|
+
{ type: KeyMetaService },
|
|
166
|
+
{ type: KeyGraphService },
|
|
167
|
+
{ type: EncryptionService }
|
|
168
|
+
];
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91c2Vycy9wcm9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQU9MLGVBQWUsR0FDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXZFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEdBQzFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBS3BFLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQzZCLE1BQXVCLEVBQzFDLElBQWdCLEVBQ2hCLFFBQXlCLEVBQ3pCLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLFFBQXlCLEVBQ3pCLGlCQUFvQztRQU5qQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUMxQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDM0MsQ0FBQztJQUVFLGdCQUFnQixDQUFDLFlBQW9COztZQUN6QyxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQ25CLEdBQUcsQ0FDRixHQUNFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FDZCxxQ0FBcUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDeEU7aUJBQ0EsU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRUssY0FBYzs7WUFLbEIsTUFBTSxFQUNKLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxHQUNWLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBdUI7Z0JBQ2xELEtBQUssRUFBRSxnQkFBZ0I7YUFDeEIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3RCxPQUFPO2dCQUNMLFdBQVc7Z0JBQ1gsV0FBVztnQkFDWCxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQzthQUNuQyxDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRUssa0JBQWtCLENBQ3RCLFdBQTJCOztZQUUzQixJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUNuRCxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFDbEIsV0FBVyxDQUFDLFVBQVUsQ0FDdkIsQ0FBQztZQUVGLHVCQUNFLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUNsQixLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQ3RCLE9BQU8sRUFDVjtRQUNKLENBQUM7S0FBQTtJQUVLLGFBQWEsQ0FDakIsRUFBVSxFQUNWLEtBQWEsRUFDYixNQUE2Qjs7WUFFN0IsTUFBTSxDQUFDLEVBQUU7Z0JBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztnQkFDM0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7S0FBQTtJQUVhLHVCQUF1QixDQUNuQyxXQUFrQzs7WUFFbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFeEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDbEMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xELENBQUM7WUFDRixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQ3hDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNsRCxDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQStCO2dCQUNoRCw0RkFBNEY7Z0JBQzVGLHNFQUFzRTtnQkFDdEUsSUFBSSxFQUFFLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ2xELENBQUM7WUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUNqQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FDN0QsQ0FBQztZQUVGLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNuQixhQUFhO2dCQUNiLG1CQUFtQjtnQkFDbkIsWUFBWTthQUNiLENBQUM7UUFDSixDQUFDO0tBQUE7SUFFYSxpQkFBaUIsQ0FDN0IsV0FBa0M7O1lBRWxDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTlELE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FDbkUsV0FBVyxDQUNaLENBQUM7WUFFRixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUVwQztnQkFDRCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxrQ0FDQSxLQUFLLEtBQ1IsVUFBVSxFQUFFLFVBQVUsRUFDdEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ3BDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUM5QixPQUFPLEVBQUUsSUFBSSxHQUNkO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDO1FBQzVDLENBQUM7S0FBQTtJQUVhLGlCQUFpQixDQUM3QixFQUFVLEVBQ1YsS0FBYSxFQUNiLFdBQWtDOztZQUVsQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU5RCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztZQUUzRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUVwQztnQkFDRCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxrQ0FDQSxLQUFLLEtBQ1IsRUFBRTt3QkFDRixVQUFVLEdBQ1g7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7UUFDNUMsQ0FBQztLQUFBO0lBRUssdUJBQXVCLENBQUMsS0FBSzs7WUFDakMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQU8sSUFBUyxFQUFFLEVBQUU7Z0JBQzVCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFtQixDQUFDO2dCQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQSxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7S0FBQTtJQUVLLGVBQWU7O1lBQ25CLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQU07Z0JBQzFDLEtBQUssRUFBRSxvQkFBb0I7YUFDNUIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLENBQUM7S0FBQTtJQUVLLGlCQUFpQixDQUFDLEVBQVU7O1lBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQU07Z0JBQzNDLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUU7d0JBQ0wsRUFBRTtxQkFDSDtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0tBQUE7SUFFSyxPQUFPOztZQUNYLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQ1osSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGdCQUFnQixFQUFFLElBQUksRUFBRTtnQkFDbEQsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLFlBQVksRUFBRSxNQUFNO2FBQ3JCLENBQUM7aUJBQ0QsU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQztLQUFBOzs7O1lBL0xGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQUdJLE1BQU0sU0FBQyxTQUFTO1lBcENaLFVBQVU7WUFFVixlQUFlO1lBa0JmLFVBQVU7WUFEVixjQUFjO1lBVWQsZUFBZTtZQVJmLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlDb25maWcsIExSX0NPTkZJRyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcbmltcG9ydCB7XG4gIEN1cnJlbnRVc2VyUXVlcnksXG4gIEN1cnJlbnRVc2VyUXVlcnlUeXBlLFxuICBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxufSBmcm9tICcuL3Byb2ZpbGUuZ3FsJztcbmltcG9ydCB7XG4gIEFwaUN1cnJlbnRVc2VyLFxuICBQYXNzSWRwQXBpUmVzdWx0LFxuICBNYWluQ29udGFjdENhcmQsXG4gIEFwaUNvbnRhY3RDYXJkLFxuICBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gIE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzLFxuICBDb250YWN0Q2FyZE5hbWUsXG59IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XG5pbXBvcnQgeyBLZXlNZXRhU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktbWV0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRhY3RDYXJkIH0gZnJvbSAnLi4vYXBpL2NvbnRhY3QtY2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvbnRhY3RDYXJkTGlzdFF1ZXJ5LFxuICBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxufSBmcm9tICcuLi9hcGkvY29udGFjdC1jYXJkLmdxbCc7XG5pbXBvcnQgeyBtYXBVc2VyUGxhbnMgfSBmcm9tICcuLi9wbGFuL3BsYW4uc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUGxhbiB9IGZyb20gJy4uL3BsYW4vcGxhbi50eXBlcyc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IExpZmVSZWFkeUNvbmZpZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGdldFBhc3NJZHBQYXJhbXMoZW1haWxPclBob25lOiBzdHJpbmcpOiBQcm9taXNlPFBhc3NJZHBBcGlSZXN1bHQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwXG4gICAgICAuZ2V0PFBhc3NJZHBBcGlSZXN1bHQ+KFxuICAgICAgICBgJHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5hdXRoVXJsXG4gICAgICAgIH11c2Vycy9wYXNzLWlkcC1wYXJhbXMvP2xvZ2luX25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQoZW1haWxPclBob25lKX1gXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRDdXJyZW50VXNlcigpOiBQcm9taXNlPHtcbiAgICBjdXJyZW50VXNlcjogQXBpQ3VycmVudFVzZXI7XG4gICAgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkO1xuICAgIHVzZXJQbGFuczogVXNlclBsYW5bXTtcbiAgfT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgY29udGFjdENhcmRzLFxuICAgICAgdXNlclBsYW5zLFxuICAgIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PEN1cnJlbnRVc2VyUXVlcnlUeXBlPih7XG4gICAgICBxdWVyeTogQ3VycmVudFVzZXJRdWVyeSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbnRhY3RDYXJkID0gY29udGFjdENhcmRzLmVkZ2VzLm1hcCgoeCkgPT4geC5ub2RlKVswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIGNvbnRhY3RDYXJkLFxuICAgICAgdXNlclBsYW5zOiBtYXBVc2VyUGxhbnModXNlclBsYW5zKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkKFxuICAgIGNvbnRhY3RDYXJkOiBBcGlDb250YWN0Q2FyZFxuICApOiBQcm9taXNlPE1haW5Db250YWN0Q2FyZD4ge1xuICAgIGlmICghY29udGFjdENhcmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGRldGFpbHMgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nPGFueT4oXG4gICAgICBjb250YWN0Q2FyZC5rZXkuaWQsXG4gICAgICBjb250YWN0Q2FyZC5jaXBoZXJEYXRhXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogY29udGFjdENhcmQuaWQsXG4gICAgICBrZXlJZDogY29udGFjdENhcmQua2V5LmlkLFxuICAgICAgLi4uZGV0YWlscyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGV0YWlscyhcbiAgICBpZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgZmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGlkXG4gICAgICA/IHRoaXMudXBkYXRlQ29udGFjdENhcmQoaWQsIGtleUlkLCBmaWVsZHMpXG4gICAgICA6IHRoaXMuY3JlYXRlQ29udGFjdENhcmQoZmllbGRzKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDb250YWN0Q2FyZElucHV0KFxuICAgIGNvbnRhY3RDYXJkOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzaWdQeGsgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFNpZ1B4aygpO1xuXG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssICcnKVxuICAgICk7XG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssICcnKVxuICAgICk7XG5cbiAgICBjb25zdCBwbGFpbkRhdGFKc29uOiBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcyA9IHtcbiAgICAgIC8vIGNvbnRhY3RDYXJkLm5hbWUudmFsdWUgbWF5IGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHN1Y2ggYXMgdGhlIGlkIG9mIHRoZSBjb250YWN0IGNhcmQuXG4gICAgICAvLyBTbyB3ZSBjcmVhdGUgYSBjbGVhbiB2ZXJzaW9uLiBPdGhlcndpc2UgaXQgd2lsbCBmYWlsIHNlcnZlciBjaGVja3MuXG4gICAgICBuYW1lOiBuZXcgQ29udGFjdENhcmROYW1lKGNvbnRhY3RDYXJkLm5hbWUudmFsdWUpLFxuICAgIH07XG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgcGxhaW5EYXRhSnNvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXG4gICAgICBwdWJsaWNEYXRhU2lnLFxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcbiAgICAgIHBsYWluRGF0YVNpZyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDb250YWN0Q2FyZChcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoY29udGFjdENhcmQpO1xuXG4gICAgY29uc3QgeyByb290S2V5LCBjaXBoZXJNZXRhIH0gPSBhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLndyYXBDb250ZW50KFxuICAgICAgY29udGFjdENhcmRcbiAgICApO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcbiAgICAgIGNyZWF0ZUNvbnRhY3RDYXJkOiB7IGNvbnRhY3RDYXJkOiBBcGlDb250YWN0Q2FyZCB9O1xuICAgIH0+KHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgY2lwaGVyRGF0YTogY2lwaGVyTWV0YSxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LndyYXBwaW5nS2V5SWQsXG4gICAgICAgICAgd3JhcHBlZEtleTogcm9vdEtleS53cmFwcGVkS2V5LFxuICAgICAgICAgIGRlZmF1bHQ6IHRydWUsIC8vIFVzZSB0aGlzIGNvbnRhY3QgY2FyZCBhcyBkZWZhdWx0IGNvbnRhY3QgY2FyZC5cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGEuY3JlYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNvbnRhY3RDYXJkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoY29udGFjdENhcmQpO1xuXG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKGtleUlkLCBjb250YWN0Q2FyZCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xuICAgICAgdXBkYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkIH07XG4gICAgfT4oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjaXBoZXJEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YS51cGRhdGVDb250YWN0Q2FyZC5jb250YWN0Q2FyZDtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGVkZ2VzKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZWRnZXMubWFwKGFzeW5jIChlZGdlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY2MgPSBlZGdlLm5vZGUgYXMgQ29udGFjdENhcmQ7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChjYyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0Q2FyZHMoKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogQ29udGFjdENhcmRMaXN0UXVlcnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmRFZGdlcyhkYXRhLmNvbnRhY3RDYXJkcy5lZGdlcyk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLmRlbGV0ZUNvbnRhY3RDYXJkLmlkO1xuICB9XG5cbiAgYXN5bmMgc2lnbk91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3RoaXMuY29uZmlnLmF1dGhVcmx9YXV0aC9zaWduLW91dC9gLCBudWxsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG59XG4iXX0=
|