@lifeready/core 1.0.2 → 1.0.3
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 +15445 -15445
- 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 +44 -44
- 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/item2.gql.js +110 -110
- package/esm2015/lib/api/item2.service.js +311 -311
- 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 +192 -192
- 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 +71 -71
- 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 +500 -500
- 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 +280 -280
- 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/life-ready.config.js +84 -84
- package/esm2015/lib/life-ready.module.js +74 -74
- 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/approvals/scenario-approval.gql.js +105 -105
- package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -1
- package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -300
- package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -52
- package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -97
- package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -1
- package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -150
- package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -229
- package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -1
- package/esm2015/lib/scenario/scenario-setup.service.js +269 -269
- package/esm2015/lib/scenario/scenario.gql.js +368 -368
- package/esm2015/lib/scenario/scenario.service.js +611 -611
- package/esm2015/lib/scenario/scenario.types.js +64 -64
- package/esm2015/lib/search/search.gql.js +62 -62
- package/esm2015/lib/search/search.service.js +156 -156
- package/esm2015/lib/search/search.types.js +6 -6
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -112
- 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.gql.js +232 -232
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +299 -299
- 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 +10 -10
- package/esm2015/public-api.js +81 -81
- package/fesm2015/lifeready-core.js +13088 -13088
- 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 +3 -3
- 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/item2.gql.d.ts +96 -96
- package/lib/api/item2.service.d.ts +177 -177
- 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 +25 -25
- 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 +27 -27
- 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 +385 -385
- 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 +59 -59
- 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 +33 -33
- 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/life-ready.config.d.ts +14 -14
- package/lib/life-ready.module.d.ts +5 -5
- 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/approvals/scenario-approval.gql.d.ts +7 -7
- package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -63
- package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -32
- package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -5
- package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -17
- package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -18
- package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -8
- package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -30
- package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -54
- package/lib/scenario/scenario-setup.service.d.ts +22 -22
- package/lib/scenario/scenario.gql.d.ts +34 -34
- package/lib/scenario/scenario.service.d.ts +58 -58
- package/lib/scenario/scenario.types.d.ts +217 -217
- package/lib/search/search.gql.d.ts +1 -1
- package/lib/search/search.service.d.ts +25 -25
- package/lib/search/search.types.d.ts +20 -20
- 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.gql.d.ts +218 -218
- package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -130
- 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 +9 -9
- package/package.json +1 -1
- package/public-api.d.ts +77 -77
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5ncWwuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvbmV3cmVwby9rYy1jbGllbnQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdXNlcnMvcHJvZmlsZS5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0UvQixnQkFBZ0I7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O0NBWTNDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7OztDQVkzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFzRWRnZXMgfSBmcm9tICcuLy4uL19jb21tb24vdHlwZXMnO1xyXG5pbXBvcnQgeyBIYXNLZXlHcmFwaCwgUGFzc0tleSB9IGZyb20gJy4vLi4vY3J5cHRvZ3JhcGh5L2NyeXB0b2dyYXBoeS50eXBlcyc7XHJcbmltcG9ydCB7IEFwaUN1cnJlbnRVc2VyLCBBcGlDb250YWN0Q2FyZCB9IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XHJcbmltcG9ydCBncWwgZnJvbSAnZ3JhcGhxbC10YWcnO1xyXG5pbXBvcnQgeyBLZXlHcmFwaEZyYWdtZW50IH0gZnJvbSAnLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRVc2VyUXVlcnlUeXBlIGV4dGVuZHMgSGFzS2V5R3JhcGgge1xyXG4gIGN1cnJlbnRVc2VyOiBBcGlDdXJyZW50VXNlcjtcclxuICBjb250YWN0Q2FyZHM6IEhhc0VkZ2VzPEFwaUNvbnRhY3RDYXJkPjtcclxuICB1c2VyUGxhbnM6IGFueVtdO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ3VycmVudFVzZXJRdWVyeSA9IGdxbGBcclxuICBxdWVyeSB7XHJcbiAgICBjdXJyZW50VXNlciB7XHJcbiAgICAgIGlkXHJcbiAgICAgIHVzZXJuYW1lXHJcbiAgICAgIGN1cnJlbnRVc2VyS2V5IHtcclxuICAgICAgICBwYXNzS2V5IHtcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgICBwYXNzS2V5UGFyYW1zXHJcbiAgICAgICAgICBwYXNzSWRwUGFyYW1zXHJcbiAgICAgICAgICB3cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrXHJcbiAgICAgICAgICBjcmVhdGVkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1hc3RlcktleSB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICByb290S2V5IHtcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHB4ayB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICBzaWdQeGsge1xyXG4gICAgICAgICAgaWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdXNlckRlbGV0ZSB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBjcmVhdGVkXHJcbiAgICAgICAgc3RhdGVcclxuICAgICAgfVxyXG4gICAgICBmZWF0dXJlcyB7XHJcbiAgICAgICAgbXlWYXVsdFxyXG4gICAgICAgIHRwVmF1bHRcclxuICAgICAgICBzaGFyZVZhdWx0XHJcbiAgICAgIH1cclxuICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXlcclxuICAgIH1cclxuICAgIHVzZXJQbGFucyB7XHJcbiAgICAgIGlkXHJcbiAgICAgIHN0cmlwZSB7XHJcbiAgICAgICAgc3Vic2NyaXB0aW9uSWRcclxuICAgICAgfVxyXG4gICAgICBwbGFuIHtcclxuICAgICAgICBuYW1lXHJcbiAgICAgICAgZGF0YVxyXG4gICAgICAgIHN0YXRlXHJcbiAgICAgIH1cclxuICAgICAgcGVyaW9kRW5kXHJcbiAgICB9XHJcbiAgICBjb250YWN0Q2FyZHMob3JkZXJCeTogXCJjcmVhdGVkXCIpIHtcclxuICAgICAgZWRnZXMge1xyXG4gICAgICAgIG5vZGUge1xyXG4gICAgICAgICAgaWRcclxuICAgICAgICAgIGtleSB7XHJcbiAgICAgICAgICAgIGlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjaXBoZXJEYXRhXHJcbiAgICAgICAgICBwbGFpbkRhdGFcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGtleUdyYXBoIHtcclxuICAgICAgLi4uS2V5R3JhcGhGcmFnbWVudFxyXG4gICAgfVxyXG4gIH1cclxuICAke0tleUdyYXBoRnJhZ21lbnR9XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcclxuICBtdXRhdGlvbiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uKCRpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dCEpIHtcclxuICAgIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgY29udGFjdENhcmQge1xyXG4gICAgICAgIGlkXHJcbiAgICAgICAga2V5IHtcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNpcGhlckRhdGFcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuYDtcclxuXHJcbmV4cG9ydCBjb25zdCBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsYFxyXG4gIG11dGF0aW9uIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBVcGRhdGVDb250YWN0Q2FyZElucHV0ISkge1xyXG4gICAgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICBjb250YWN0Q2FyZCB7XHJcbiAgICAgICAgaWRcclxuICAgICAgICBrZXkge1xyXG4gICAgICAgICAgaWRcclxuICAgICAgICB9XHJcbiAgICAgICAgY2lwaGVyRGF0YVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi91c2Vycy9wcm9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDMUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQU9MLGVBQWUsR0FDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXZFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEdBQzFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBS3BFLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQzZCLE1BQXVCLEVBQzFDLElBQWdCLEVBQ2hCLFFBQXlCLEVBQ3pCLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLFFBQXlCLEVBQ3pCLGlCQUFvQztRQU5qQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUMx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QUM7aUJBQ0QsU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQztLQUFBOzs7O1lBL0xGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQUdJLE1BQU0sU0FBQyxTQUFTO1lBcENaLFVBQVU7WUFFVixlQUFlO1lBa0JmLFVBQVU7WUFEVixjQUFjO1lBVWQsZUFBZTtZQVJmLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlDb25maWcsIExSX0NPTkZJRyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcbmltcG9ydCB7XG4gIEN1cnJlbnRVc2VyUXVlcnksXG4gIEN1cnJlbnRVc2VyUXVlcnlUeXBlLFxuICBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxufSBmcm9tICcuL3Byb2ZpbGUuZ3FsJztcbmltcG9ydCB7XG4gIEFwaUN1cnJlbnRVc2VyLFxuICBQYXNzSWRwQXBpUmVzdWx0LFxuICBNYWluQ29udGFjdENhcmQsXG4gIEFwaUNvbnRhY3RDYXJkLFxuICBNYWluQ29udGFjdENhcmRGaWVsZHMsXG4gIE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzLFxuICBDb250YWN0Q2FyZE5hbWUsXG59IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XG5pbXBvcnQgeyBLZXlNZXRhU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktbWV0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRhY3RDYXJkIH0gZnJvbSAnLi4vYXBpL2NvbnRhY3QtY2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvbnRhY3RDYXJkTGlzdFF1ZXJ5LFxuICBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxufSBmcm9tICcuLi9hcGkvY29udGFjdC1jYXJkLmdxbCc7XG5pbXBvcnQgeyBtYXBVc2VyUGxhbnMgfSBmcm9tICcuLi9wbGFuL3BsYW4uc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUGxhbiB9IGZyb20gJy4uL3BsYW4vcGxhbi50eXBlcyc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IExpZmVSZWFkeUNvbmZpZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGdldFBhc3NJZHBQYXJhbXMoZW1haWxPclBob25lOiBzdHJpbmcpOiBQcm9taXNlPFBhc3NJZHBBcGlSZXN1bHQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwXG4gICAgICAuZ2V0PFBhc3NJZHBBcGlSZXN1bHQ+KFxuICAgICAgICBgJHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5hdXRoVXJsXG4gICAgICAgIH11c2Vycy9wYXNzLWlkcC1wYXJhbXMvP2xvZ2luX25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQoZW1haWxPclBob25lKX1gXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRDdXJyZW50VXNlcigpOiBQcm9taXNlPHtcbiAgICBjdXJyZW50VXNlcjogQXBpQ3VycmVudFVzZXI7XG4gICAgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkO1xuICAgIHVzZXJQbGFuczogVXNlclBsYW5bXTtcbiAgfT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgY29udGFjdENhcmRzLFxuICAgICAgdXNlclBsYW5zLFxuICAgIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PEN1cnJlbnRVc2VyUXVlcnlUeXBlPih7XG4gICAgICBxdWVyeTogQ3VycmVudFVzZXJRdWVyeSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbnRhY3RDYXJkID0gY29udGFjdENhcmRzLmVkZ2VzLm1hcCgoeCkgPT4geC5ub2RlKVswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIGNvbnRhY3RDYXJkLFxuICAgICAgdXNlclBsYW5zOiBtYXBVc2VyUGxhbnModXNlclBsYW5zKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkKFxuICAgIGNvbnRhY3RDYXJkOiBBcGlDb250YWN0Q2FyZFxuICApOiBQcm9taXNlPE1haW5Db250YWN0Q2FyZD4ge1xuICAgIGlmICghY29udGFjdENhcmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGRldGFpbHMgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nPGFueT4oXG4gICAgICBjb250YWN0Q2FyZC5rZXkuaWQsXG4gICAgICBjb250YWN0Q2FyZC5jaXBoZXJEYXRhXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogY29udGFjdENhcmQuaWQsXG4gICAgICBrZXlJZDogY29udGFjdENhcmQua2V5LmlkLFxuICAgICAgLi4uZGV0YWlscyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGV0YWlscyhcbiAgICBpZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgZmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgKGlkXG4gICAgICA/IHRoaXMudXBkYXRlQ29udGFjdENhcmQoaWQsIGtleUlkLCBmaWVsZHMpXG4gICAgICA6IHRoaXMuY3JlYXRlQ29udGFjdENhcmQoZmllbGRzKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDb250YWN0Q2FyZElucHV0KFxuICAgIGNvbnRhY3RDYXJkOiBNYWluQ29udGFjdENhcmRGaWVsZHNcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzaWdQeGsgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFNpZ1B4aygpO1xuXG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssICcnKVxuICAgICk7XG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssICcnKVxuICAgICk7XG5cbiAgICBjb25zdCBwbGFpbkRhdGFKc29uOiBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcyA9IHtcbiAgICAgIC8vIGNvbnRhY3RDYXJkLm5hbWUudmFsdWUgbWF5IGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHN1Y2ggYXMgdGhlIGlkIG9mIHRoZSBjb250YWN0IGNhcmQuXG4gICAgICAvLyBTbyB3ZSBjcmVhdGUgYSBjbGVhbiB2ZXJzaW9uLiBPdGhlcndpc2UgaXQgd2lsbCBmYWlsIHNlcnZlciBjaGVja3MuXG4gICAgICBuYW1lOiBuZXcgQ29udGFjdENhcmROYW1lKGNvbnRhY3RDYXJkLm5hbWUudmFsdWUpLFxuICAgIH07XG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgcGxhaW5EYXRhSnNvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXG4gICAgICBwdWJsaWNEYXRhU2lnLFxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcbiAgICAgIHBsYWluRGF0YVNpZyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDb250YWN0Q2FyZChcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoY29udGFjdENhcmQpO1xuXG4gICAgY29uc3QgeyByb290S2V5LCBjaXBoZXJNZXRhIH0gPSBhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLndyYXBDb250ZW50KFxuICAgICAgY29udGFjdENhcmRcbiAgICApO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcbiAgICAgIGNyZWF0ZUNvbnRhY3RDYXJkOiB7IGNvbnRhY3RDYXJkOiBBcGlDb250YWN0Q2FyZCB9O1xuICAgIH0+KHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgY2lwaGVyRGF0YTogY2lwaGVyTWV0YSxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LndyYXBwaW5nS2V5SWQsXG4gICAgICAgICAgd3JhcHBlZEtleTogcm9vdEtleS53cmFwcGVkS2V5LFxuICAgICAgICAgIGRlZmF1bHQ6IHRydWUsIC8vIFVzZSB0aGlzIGNvbnRhY3QgY2FyZCBhcyBkZWZhdWx0IGNvbnRhY3QgY2FyZC5cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGEuY3JlYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNvbnRhY3RDYXJkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoY29udGFjdENhcmQpO1xuXG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKGtleUlkLCBjb250YWN0Q2FyZCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xuICAgICAgdXBkYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkIH07XG4gICAgfT4oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjaXBoZXJEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YS51cGRhdGVDb250YWN0Q2FyZC5jb250YWN0Q2FyZDtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGVkZ2VzKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZWRnZXMubWFwKGFzeW5jIChlZGdlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY2MgPSBlZGdlLm5vZGUgYXMgQ29udGFjdENhcmQ7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChjYyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0Q2FyZHMoKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogQ29udGFjdENhcmRMaXN0UXVlcnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmRFZGdlcyhkYXRhLmNvbnRhY3RDYXJkcy5lZGdlcyk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLmRlbGV0ZUNvbnRhY3RDYXJkLmlkO1xuICB9XG5cbiAgYXN5bmMgc2lnbk91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3RoaXMuY29uZmlnLmF1dGhVcmx9YXV0aC9zaWduLW91dC9gLCBudWxsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG59XG4iXX0=
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL25ld3JlcG8va2MtY2xpZW50L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3VzZXJzL3Byb2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIseUJBQXlCLEVBQ3pCLHlCQUF5QixHQUMxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBT0wsZUFBZSxHQUNoQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdkUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix5QkFBeUIsR0FDMUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7QUFLcEUsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDNkIsTUFBdUIsRUFDMUMsSUFBZ0IsRUFDaEIsUUFBeUIsRUFDekIsVUFBc0IsRUFDdEIsY0FBOEIsRUFDOUIsUUFBeUIsRUFDekIsaUJBQW9DO1FBTmpCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQzFDLFNBQUks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RCxTQUFTLEVBQUUsQ0FBQztRQUNqQixDQUFDO0tBQUE7Ozs7WUEvTEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7NENBR0ksTUFBTSxTQUFDLFNBQVM7WUFwQ1osVUFBVTtZQUVWLGVBQWU7WUFrQmYsVUFBVTtZQURWLGNBQWM7WUFVZCxlQUFlO1lBUmYsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XHJcbmltcG9ydCB7IExpZmVSZWFkeUNvbmZpZywgTFJfQ09ORklHIH0gZnJvbSAnLi4vbGlmZS1yZWFkeS5jb25maWcnO1xyXG5pbXBvcnQge1xyXG4gIEN1cnJlbnRVc2VyUXVlcnksXHJcbiAgQ3VycmVudFVzZXJRdWVyeVR5cGUsXHJcbiAgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxuICBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG59IGZyb20gJy4vcHJvZmlsZS5ncWwnO1xyXG5pbXBvcnQge1xyXG4gIEFwaUN1cnJlbnRVc2VyLFxyXG4gIFBhc3NJZHBBcGlSZXN1bHQsXHJcbiAgTWFpbkNvbnRhY3RDYXJkLFxyXG4gIEFwaUNvbnRhY3RDYXJkLFxyXG4gIE1haW5Db250YWN0Q2FyZEZpZWxkcyxcclxuICBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcyxcclxuICBDb250YWN0Q2FyZE5hbWUsXHJcbn0gZnJvbSAnLi9wcm9maWxlLnR5cGVzJztcclxuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LW1ldGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250YWN0Q2FyZCB9IGZyb20gJy4uL2FwaS9jb250YWN0LWNhcmQuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udGFjdENhcmRMaXN0UXVlcnksXHJcbiAgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxufSBmcm9tICcuLi9hcGkvY29udGFjdC1jYXJkLmdxbCc7XHJcbmltcG9ydCB7IG1hcFVzZXJQbGFucyB9IGZyb20gJy4uL3BsYW4vcGxhbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclBsYW4gfSBmcm9tICcuLi9wbGFuL3BsYW4udHlwZXMnO1xyXG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTFJfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogTGlmZVJlYWR5Q29uZmlnLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlNZXRhU2VydmljZTogS2V5TWV0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgZ2V0UGFzc0lkcFBhcmFtcyhlbWFpbE9yUGhvbmU6IHN0cmluZyk6IFByb21pc2U8UGFzc0lkcEFwaVJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PFBhc3NJZHBBcGlSZXN1bHQ+KFxyXG4gICAgICAgIGAke1xyXG4gICAgICAgICAgdGhpcy5jb25maWcuYXV0aFVybFxyXG4gICAgICAgIH11c2Vycy9wYXNzLWlkcC1wYXJhbXMvP2xvZ2luX25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQoZW1haWxPclBob25lKX1gXHJcbiAgICAgIClcclxuICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Q3VycmVudFVzZXIoKTogUHJvbWlzZTx7XHJcbiAgICBjdXJyZW50VXNlcjogQXBpQ3VycmVudFVzZXI7XHJcbiAgICBjb250YWN0Q2FyZDogQXBpQ29udGFjdENhcmQ7XHJcbiAgICB1c2VyUGxhbnM6IFVzZXJQbGFuW107XHJcbiAgfT4ge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjdXJyZW50VXNlcixcclxuICAgICAgY29udGFjdENhcmRzLFxyXG4gICAgICB1c2VyUGxhbnMsXHJcbiAgICB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxDdXJyZW50VXNlclF1ZXJ5VHlwZT4oe1xyXG4gICAgICBxdWVyeTogQ3VycmVudFVzZXJRdWVyeSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhY3RDYXJkID0gY29udGFjdENhcmRzLmVkZ2VzLm1hcCgoeCkgPT4geC5ub2RlKVswXTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjdXJyZW50VXNlcixcclxuICAgICAgY29udGFjdENhcmQsXHJcbiAgICAgIHVzZXJQbGFuczogbWFwVXNlclBsYW5zKHVzZXJQbGFucyksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkKFxyXG4gICAgY29udGFjdENhcmQ6IEFwaUNvbnRhY3RDYXJkXHJcbiAgKTogUHJvbWlzZTxNYWluQ29udGFjdENhcmQ+IHtcclxuICAgIGlmICghY29udGFjdENhcmQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGV0YWlscyA9IGF3YWl0IHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmc8YW55PihcclxuICAgICAgY29udGFjdENhcmQua2V5LmlkLFxyXG4gICAgICBjb250YWN0Q2FyZC5jaXBoZXJEYXRhXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGlkOiBjb250YWN0Q2FyZC5pZCxcclxuICAgICAga2V5SWQ6IGNvbnRhY3RDYXJkLmtleS5pZCxcclxuICAgICAgLi4uZGV0YWlscyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVEZXRhaWxzKFxyXG4gICAgaWQ6IHN0cmluZyxcclxuICAgIGtleUlkOiBzdHJpbmcsXHJcbiAgICBmaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgKGlkXHJcbiAgICAgID8gdGhpcy51cGRhdGVDb250YWN0Q2FyZChpZCwga2V5SWQsIGZpZWxkcylcclxuICAgICAgOiB0aGlzLmNyZWF0ZUNvbnRhY3RDYXJkKGZpZWxkcykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ29udGFjdENhcmRJbnB1dChcclxuICAgIGNvbnRhY3RDYXJkOiBNYWluQ29udGFjdENhcmRGaWVsZHNcclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3Qgc2lnUHhrID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRTaWdQeGsoKTtcclxuXHJcbiAgICBjb25zdCBwdWJsaWNEYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCAnJylcclxuICAgICk7XHJcbiAgICBjb25zdCBwdWJsaWNTZWFyY2hhYmxlU2lnID0gSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCAnJylcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgcGxhaW5EYXRhSnNvbjogTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHMgPSB7XHJcbiAgICAgIC8vIGNvbnRhY3RDYXJkLm5hbWUudmFsdWUgbWF5IGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHN1Y2ggYXMgdGhlIGlkIG9mIHRoZSBjb250YWN0IGNhcmQuXHJcbiAgICAgIC8vIFNvIHdlIGNyZWF0ZSBhIGNsZWFuIHZlcnNpb24uIE90aGVyd2lzZSBpdCB3aWxsIGZhaWwgc2VydmVyIGNoZWNrcy5cclxuICAgICAgbmFtZTogbmV3IENvbnRhY3RDYXJkTmFtZShjb250YWN0Q2FyZC5uYW1lLnZhbHVlKSxcclxuICAgIH07XHJcbiAgICBjb25zdCBwbGFpbkRhdGFTaWcgPSBKU09OLnN0cmluZ2lmeShcclxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIHBsYWluRGF0YUpzb24pXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXHJcbiAgICAgIHB1YmxpY0RhdGFTaWcsXHJcbiAgICAgIHB1YmxpY1NlYXJjaGFibGVTaWcsXHJcbiAgICAgIHBsYWluRGF0YVNpZyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNvbnRhY3RDYXJkKFxyXG4gICAgY29udGFjdENhcmQ6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xyXG4gICk6IFByb21pc2U8QXBpQ29udGFjdENhcmQ+IHtcclxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChjb250YWN0Q2FyZCk7XHJcblxyXG4gICAgY29uc3QgeyByb290S2V5LCBjaXBoZXJNZXRhIH0gPSBhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLndyYXBDb250ZW50KFxyXG4gICAgICBjb250YWN0Q2FyZFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xyXG4gICAgICBjcmVhdGVDb250YWN0Q2FyZDogeyBjb250YWN0Q2FyZDogQXBpQ29udGFjdENhcmQgfTtcclxuICAgIH0+KHtcclxuICAgICAgbXV0YXRpb246IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICAuLi5pbnB1dCxcclxuICAgICAgICAgIGNpcGhlckRhdGE6IGNpcGhlck1ldGEsXHJcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LndyYXBwaW5nS2V5SWQsXHJcbiAgICAgICAgICB3cmFwcGVkS2V5OiByb290S2V5LndyYXBwZWRLZXksXHJcbiAgICAgICAgICBkZWZhdWx0OiB0cnVlLCAvLyBVc2UgdGhpcyBjb250YWN0IGNhcmQgYXMgZGVmYXVsdCBjb250YWN0IGNhcmQuXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGEuY3JlYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNvbnRhY3RDYXJkKFxyXG4gICAgaWQ6IHN0cmluZyxcclxuICAgIGtleUlkOiBzdHJpbmcsXHJcbiAgICBjb250YWN0Q2FyZDogTWFpbkNvbnRhY3RDYXJkRmllbGRzXHJcbiAgKTogUHJvbWlzZTxBcGlDb250YWN0Q2FyZD4ge1xyXG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVDb250YWN0Q2FyZElucHV0KGNvbnRhY3RDYXJkKTtcclxuXHJcbiAgICBjb25zdCBjaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoa2V5SWQsIGNvbnRhY3RDYXJkKTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xyXG4gICAgICB1cGRhdGVDb250YWN0Q2FyZDogeyBjb250YWN0Q2FyZDogQXBpQ29udGFjdENhcmQgfTtcclxuICAgIH0+KHtcclxuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICAuLi5pbnB1dCxcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgY2lwaGVyRGF0YSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YS51cGRhdGVDb250YWN0Q2FyZC5jb250YWN0Q2FyZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGVkZ2VzKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXHJcbiAgICAgIGVkZ2VzLm1hcChhc3luYyAoZWRnZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2MgPSBlZGdlLm5vZGUgYXMgQ29udGFjdENhcmQ7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVjcnlwdENvbnRhY3RDYXJkKGNjKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRDb250YWN0Q2FyZHMoKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcclxuICAgICAgcXVlcnk6IENvbnRhY3RDYXJkTGlzdFF1ZXJ5LFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVjcnlwdENvbnRhY3RDYXJkRWRnZXMoZGF0YS5jb250YWN0Q2FyZHMuZWRnZXMpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlQ29udGFjdENhcmQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XHJcbiAgICAgIG11dGF0aW9uOiBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkYXRhLmRlbGV0ZUNvbnRhY3RDYXJkLmlkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2lnbk91dCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuaHR0cFxyXG4gICAgICAucG9zdChgJHt0aGlzLmNvbmZpZy5hdXRoVXJsfWF1dGgvc2lnbi1vdXQvYCwgbnVsbCwge1xyXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcclxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcclxuICAgICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|