@lifeready/core 9.0.8 → 10.0.0
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/fesm2022/lifeready-core.mjs +10522 -0
- package/fesm2022/lifeready-core.mjs.map +1 -0
- package/package.json +21 -16
- package/types/lifeready-core.d.ts +5329 -0
- package/bundles/lifeready-core.umd.js +0 -13231
- package/bundles/lifeready-core.umd.js.map +0 -1
- package/bundles/lifeready-core.umd.min.js +0 -2
- package/bundles/lifeready-core.umd.min.js.map +0 -1
- package/esm2015/lib/_common/ast.js +0 -41
- package/esm2015/lib/_common/deferred-promise.js +0 -24
- package/esm2015/lib/_common/exceptions.js +0 -186
- package/esm2015/lib/_common/index.js +0 -3
- package/esm2015/lib/_common/kc-lodash.js +0 -11
- package/esm2015/lib/_common/key.js +0 -28
- package/esm2015/lib/_common/queries.gql.js +0 -43
- package/esm2015/lib/_common/run-outside-angular.js +0 -80
- package/esm2015/lib/_common/storage.js +0 -28
- package/esm2015/lib/_common/types.js +0 -2
- package/esm2015/lib/_common/utils.js +0 -73
- package/esm2015/lib/api/lr-apollo.service.js +0 -47
- package/esm2015/lib/api/lr-graphql/index.js +0 -6
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +0 -170
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +0 -216
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +0 -51
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +0 -91
- package/esm2015/lib/api/lr-graphql/lr.service.js +0 -18
- package/esm2015/lib/api/query-processor/common-processors.service.js +0 -94
- package/esm2015/lib/api/query-processor/index.js +0 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +0 -307
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +0 -110
- package/esm2015/lib/api/types/graphql.types.js +0 -8
- package/esm2015/lib/api/types/index.js +0 -3
- package/esm2015/lib/api/types/lr-graphql.types.js +0 -182
- package/esm2015/lib/auth/auth.config.js +0 -57
- package/esm2015/lib/auth/auth.gql.private.js +0 -85
- package/esm2015/lib/auth/auth.service.js +0 -616
- package/esm2015/lib/auth/auth.types.js +0 -19
- package/esm2015/lib/contact-card/contact-card.gql.js +0 -79
- package/esm2015/lib/contact-card/contact-card.service.js +0 -156
- package/esm2015/lib/contact-card/contact-card2.gql.js +0 -29
- package/esm2015/lib/contact-card/contact-card2.service.js +0 -103
- package/esm2015/lib/encryption/encryption.service.js +0 -188
- package/esm2015/lib/file-upload/file-upload.service.js +0 -70
- package/esm2015/lib/file-upload/file-upload.types.js +0 -2
- package/esm2015/lib/idle/idle.service.js +0 -159
- package/esm2015/lib/idle/idle.types.js +0 -7
- package/esm2015/lib/item/item.gql.js +0 -166
- package/esm2015/lib/item/item.gql.private.js +0 -41
- package/esm2015/lib/item/item.service.js +0 -662
- package/esm2015/lib/item/item.types.js +0 -2
- package/esm2015/lib/key/key-factory.service.js +0 -226
- package/esm2015/lib/key/key-graph.service.js +0 -314
- package/esm2015/lib/key/key-meta.service.js +0 -153
- package/esm2015/lib/key/key.service.js +0 -124
- package/esm2015/lib/key/key.types.js +0 -16
- package/esm2015/lib/key-exchange/key-exchange.gql.js +0 -174
- package/esm2015/lib/key-exchange/key-exchange.service.js +0 -496
- package/esm2015/lib/lbop/lbop.service.js +0 -351
- package/esm2015/lib/life-ready.config.js +0 -96
- package/esm2015/lib/life-ready.module.js +0 -42
- package/esm2015/lib/lock/lock.gql.js +0 -40
- package/esm2015/lib/lock/lock.service.js +0 -64
- package/esm2015/lib/notification/notification.gql.js +0 -43
- package/esm2015/lib/notification/notification.service.js +0 -118
- package/esm2015/lib/password/password.gql.js +0 -28
- package/esm2015/lib/password/password.service.js +0 -309
- package/esm2015/lib/persist/persist.service.js +0 -181
- package/esm2015/lib/plan/plan.gql.js +0 -91
- package/esm2015/lib/plan/plan.service.js +0 -191
- package/esm2015/lib/plan/plan.types.js +0 -2
- package/esm2015/lib/profile/profile-details.service.js +0 -261
- package/esm2015/lib/profile/profile.gql.js +0 -170
- package/esm2015/lib/profile/profile.service.js +0 -166
- package/esm2015/lib/profile/profile.types.js +0 -45
- package/esm2015/lib/register/register.service.js +0 -173
- package/esm2015/lib/register/register.types.js +0 -3
- package/esm2015/lib/reminder/reminder.gql.js +0 -27
- package/esm2015/lib/reminder/reminder.service.js +0 -85
- package/esm2015/lib/reminder/reminder.types.js +0 -2
- package/esm2015/lib/scenario/scenario.constants.js +0 -2
- package/esm2015/lib/scenario/scenario.controller.js +0 -34
- package/esm2015/lib/scenario/scenario.gql.js +0 -90
- package/esm2015/lib/scenario/scenario.private.gql.js +0 -200
- package/esm2015/lib/scenario/scenario.service.js +0 -679
- package/esm2015/lib/scenario/scenario.types.js +0 -2
- package/esm2015/lib/server-config/server-config.gql.js +0 -9
- package/esm2015/lib/server-config/server-config.service.js +0 -41
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +0 -119
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/slip39/slip39.service.js +0 -167
- package/esm2015/lib/time/time.service.js +0 -152
- package/esm2015/lib/tp-assembly/tp-assembly.js +0 -363
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +0 -22
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +0 -2
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +0 -98
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +0 -121
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +0 -74
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +0 -166
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +0 -54
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +0 -110
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +0 -2
- package/esm2015/lib/trusted-party/trusted-party.gql.js +0 -96
- package/esm2015/lib/trusted-party/trusted-party.gql.private.js +0 -51
- package/esm2015/lib/trusted-party/trusted-party.service.js +0 -461
- package/esm2015/lib/trusted-party/trusted-party.types.js +0 -2
- package/esm2015/lib/two-factor/two-factor.service.js +0 -74
- package/esm2015/lib/user/user.gql.js +0 -32
- package/esm2015/lib/user/user.service.js +0 -58
- package/esm2015/lib/user/user.types.js +0 -2
- package/esm2015/lib/web-crypto/web-crypto.service.js +0 -29
- package/esm2015/lifeready-core.js +0 -17
- package/esm2015/public-api.js +0 -60
- package/fesm2015/lifeready-core.js +0 -10970
- package/fesm2015/lifeready-core.js.map +0 -1
- package/lib/_common/ast.d.ts +0 -11
- package/lib/_common/deferred-promise.d.ts +0 -12
- package/lib/_common/exceptions.d.ts +0 -126
- package/lib/_common/index.d.ts +0 -2
- package/lib/_common/kc-lodash.d.ts +0 -5
- package/lib/_common/key.d.ts +0 -14
- package/lib/_common/queries.gql.d.ts +0 -4
- package/lib/_common/run-outside-angular.d.ts +0 -14
- package/lib/_common/storage.d.ts +0 -13
- package/lib/_common/types.d.ts +0 -15
- package/lib/_common/utils.d.ts +0 -12
- package/lib/api/lr-apollo.service.d.ts +0 -15
- package/lib/api/lr-graphql/index.d.ts +0 -5
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +0 -81
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +0 -46
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +0 -28
- package/lib/api/lr-graphql/lr-mutation.d.ts +0 -48
- package/lib/api/lr-graphql/lr.service.d.ts +0 -9
- package/lib/api/query-processor/common-processors.service.d.ts +0 -36
- package/lib/api/query-processor/index.d.ts +0 -2
- package/lib/api/query-processor/query-processor.service.d.ts +0 -18
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +0 -15
- package/lib/api/types/graphql.types.d.ts +0 -30
- package/lib/api/types/index.d.ts +0 -2
- package/lib/api/types/lr-graphql.types.d.ts +0 -807
- package/lib/auth/auth.config.d.ts +0 -5
- package/lib/auth/auth.gql.private.d.ts +0 -25
- package/lib/auth/auth.service.d.ts +0 -72
- package/lib/auth/auth.types.d.ts +0 -70
- package/lib/contact-card/contact-card.gql.d.ts +0 -7
- package/lib/contact-card/contact-card.service.d.ts +0 -53
- package/lib/contact-card/contact-card2.gql.d.ts +0 -25
- package/lib/contact-card/contact-card2.service.d.ts +0 -64
- package/lib/encryption/encryption.service.d.ts +0 -42
- package/lib/file-upload/file-upload.service.d.ts +0 -15
- package/lib/file-upload/file-upload.types.d.ts +0 -5
- package/lib/idle/idle.service.d.ts +0 -47
- package/lib/idle/idle.types.d.ts +0 -10
- package/lib/item/item.gql.d.ts +0 -134
- package/lib/item/item.gql.private.d.ts +0 -35
- package/lib/item/item.service.d.ts +0 -201
- package/lib/item/item.types.d.ts +0 -95
- package/lib/key/key-factory.service.d.ts +0 -40
- package/lib/key/key-graph.service.d.ts +0 -41
- package/lib/key/key-meta.service.d.ts +0 -51
- package/lib/key/key.service.d.ts +0 -36
- package/lib/key/key.types.d.ts +0 -86
- package/lib/key-exchange/key-exchange.gql.d.ts +0 -141
- package/lib/key-exchange/key-exchange.service.d.ts +0 -179
- package/lib/lbop/lbop.service.d.ts +0 -99
- package/lib/life-ready.config.d.ts +0 -26
- package/lib/life-ready.module.d.ts +0 -5
- package/lib/lock/lock.gql.d.ts +0 -27
- package/lib/lock/lock.service.d.ts +0 -34
- package/lib/notification/notification.gql.d.ts +0 -37
- package/lib/notification/notification.service.d.ts +0 -64
- package/lib/password/password.gql.d.ts +0 -3
- package/lib/password/password.service.d.ts +0 -79
- package/lib/persist/persist.service.d.ts +0 -31
- package/lib/plan/plan.gql.d.ts +0 -69
- package/lib/plan/plan.service.d.ts +0 -111
- package/lib/plan/plan.types.d.ts +0 -16
- package/lib/profile/profile-details.service.d.ts +0 -20
- package/lib/profile/profile.gql.d.ts +0 -21
- package/lib/profile/profile.service.d.ts +0 -32
- package/lib/profile/profile.types.d.ts +0 -121
- package/lib/register/register.service.d.ts +0 -25
- package/lib/register/register.types.d.ts +0 -6
- package/lib/reminder/reminder.gql.d.ts +0 -23
- package/lib/reminder/reminder.service.d.ts +0 -33
- package/lib/reminder/reminder.types.d.ts +0 -17
- package/lib/scenario/scenario.constants.d.ts +0 -1
- package/lib/scenario/scenario.controller.d.ts +0 -10
- package/lib/scenario/scenario.gql.d.ts +0 -78
- package/lib/scenario/scenario.private.gql.d.ts +0 -16
- package/lib/scenario/scenario.service.d.ts +0 -655
- package/lib/scenario/scenario.types.d.ts +0 -64
- package/lib/server-config/server-config.gql.d.ts +0 -5
- package/lib/server-config/server-config.service.d.ts +0 -9
- package/lib/shared-contact-card/shared-contact-card.service.d.ts +0 -33
- package/lib/shared-contact-card/shared-contact-card2.gql.d.ts +0 -36
- package/lib/shared-contact-card/shared-contact-card2.service.d.ts +0 -45
- package/lib/slip39/slip39.service.d.ts +0 -42
- package/lib/time/time.service.d.ts +0 -26
- package/lib/tp-assembly/tp-assembly.d.ts +0 -177
- package/lib/tp-assembly/tp-assembly.private.gql.d.ts +0 -5
- package/lib/tp-assembly/tp-assembly.types.d.ts +0 -40
- package/lib/tp-password-reset/tp-password-reset-request.service.d.ts +0 -16
- package/lib/tp-password-reset/tp-password-reset-user.service.d.ts +0 -29
- package/lib/tp-password-reset/tp-password-reset.constants.d.ts +0 -3
- package/lib/tp-password-reset/tp-password-reset.controller.d.ts +0 -10
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +0 -63
- package/lib/tp-password-reset/tp-password-reset.private.gql.d.ts +0 -163
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +0 -59
- package/lib/tp-password-reset/tp-password-reset.service.d.ts +0 -112
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +0 -40
- package/lib/trusted-party/trusted-party.gql.d.ts +0 -85
- package/lib/trusted-party/trusted-party.gql.private.d.ts +0 -40
- package/lib/trusted-party/trusted-party.service.d.ts +0 -192
- package/lib/trusted-party/trusted-party.types.d.ts +0 -31
- package/lib/two-factor/two-factor.service.d.ts +0 -15
- package/lib/user/user.gql.d.ts +0 -8
- package/lib/user/user.service.d.ts +0 -9
- package/lib/user/user.types.d.ts +0 -16
- package/lib/web-crypto/web-crypto.service.d.ts +0 -5
- package/lifeready-core.d.ts +0 -16
- package/lifeready-core.metadata.json +0 -1
- package/public-api.d.ts +0 -56
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __rest } from "tslib";
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import { LrGraphQLService } from '../api/lr-graphql';
|
|
5
|
-
import { mapEdges } from '../api/types';
|
|
6
|
-
import { SharedContactCardService } from '../shared-contact-card/shared-contact-card.service';
|
|
7
|
-
import { lodash } from '../_common';
|
|
8
|
-
import { ContactCardsQuery, TrustedPartiesQuery } from './profile.gql';
|
|
9
|
-
import { ProfileService } from './profile.service';
|
|
10
|
-
import { TrustedPartyType, } from './profile.types';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../shared-contact-card/shared-contact-card.service";
|
|
13
|
-
import * as i2 from "./profile.service";
|
|
14
|
-
import * as i3 from "../api/lr-graphql/lr-graphql.service";
|
|
15
|
-
var ContactFields;
|
|
16
|
-
(function (ContactFields) {
|
|
17
|
-
ContactFields["Name"] = "name";
|
|
18
|
-
ContactFields["Email"] = "email";
|
|
19
|
-
ContactFields["Image"] = "image";
|
|
20
|
-
ContactFields["Phone"] = "phone";
|
|
21
|
-
ContactFields["Address"] = "address";
|
|
22
|
-
})(ContactFields || (ContactFields = {}));
|
|
23
|
-
const FieldNames = [
|
|
24
|
-
ContactFields.Name,
|
|
25
|
-
ContactFields.Email,
|
|
26
|
-
ContactFields.Image,
|
|
27
|
-
ContactFields.Phone,
|
|
28
|
-
ContactFields.Address,
|
|
29
|
-
];
|
|
30
|
-
export class ProfileDetailsService {
|
|
31
|
-
constructor(sharedContactCardService, profileService, api) {
|
|
32
|
-
this.sharedContactCardService = sharedContactCardService;
|
|
33
|
-
this.profileService = profileService;
|
|
34
|
-
this.api = api;
|
|
35
|
-
}
|
|
36
|
-
updateDetails(fields) {
|
|
37
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
console.log('updateDetails()');
|
|
39
|
-
const mainContactCard = yield this.fetchMainContactCard();
|
|
40
|
-
const updatedMainContactCard = yield this.profileService.updateDetails(mainContactCard === null || mainContactCard === void 0 ? void 0 : mainContactCard.id, mainContactCard === null || mainContactCard === void 0 ? void 0 : mainContactCard.keyId, fields);
|
|
41
|
-
yield this.synchronizeContactCards(fields, mainContactCard === null || mainContactCard === void 0 ? void 0 : mainContactCard.fields);
|
|
42
|
-
return updatedMainContactCard;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
updateTrustedPartyDetails(details) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
const { id, ownedKeyId, sharedKeyId } = details, contactCard = __rest(details, ["id", "ownedKeyId", "sharedKeyId"]);
|
|
48
|
-
yield this.sharedContactCardService.updateMySharedContactCard(id, ownedKeyId, sharedKeyId, contactCard);
|
|
49
|
-
yield this.synchronizeSharedDetails(details);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
synchronizeSharedDetails(details) {
|
|
53
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
-
let hasNewValues = false;
|
|
55
|
-
// Used to be a getCurrentUser() call which returns a caches version of the contact card.
|
|
56
|
-
// Now we just make an API call. So ok to modify the returned value.
|
|
57
|
-
const mainContactCard = yield this.fetchMainContactCard();
|
|
58
|
-
if (details.name) {
|
|
59
|
-
const property = this.checkField(details.name, mainContactCard.fields.name);
|
|
60
|
-
if (property) {
|
|
61
|
-
mainContactCard.fields.name = property;
|
|
62
|
-
hasNewValues = true;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (details.email) {
|
|
66
|
-
const property = this.checkField(details.email, mainContactCard.fields.email);
|
|
67
|
-
if (property) {
|
|
68
|
-
mainContactCard.fields.email = property;
|
|
69
|
-
hasNewValues = true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
if (details.image) {
|
|
73
|
-
const property = this.checkField(details.image, mainContactCard.fields.image);
|
|
74
|
-
if (property) {
|
|
75
|
-
mainContactCard.fields.image = property;
|
|
76
|
-
hasNewValues = true;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (details.phones && details.phones.length) {
|
|
80
|
-
for (const phone of details.phones) {
|
|
81
|
-
const property = this.checkField(phone.value, mainContactCard.fields.phone, phone.label);
|
|
82
|
-
if (property) {
|
|
83
|
-
mainContactCard.fields.phone = property;
|
|
84
|
-
hasNewValues = true;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (details.addresses && details.addresses.length) {
|
|
89
|
-
for (const address of details.addresses) {
|
|
90
|
-
const property = this.checkField(address.value, mainContactCard.fields.address, address.label);
|
|
91
|
-
if (property) {
|
|
92
|
-
mainContactCard.fields.address = property;
|
|
93
|
-
hasNewValues = true;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (hasNewValues) {
|
|
98
|
-
yield this.profileService.updateDetails(mainContactCard.id, mainContactCard.keyId, mainContactCard.fields);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
// ------------------------------------------------------------------
|
|
103
|
-
// Helpers
|
|
104
|
-
// ------------------------------------------------------------------
|
|
105
|
-
fetchMainContactCard() {
|
|
106
|
-
var _a;
|
|
107
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
-
const mainContactCard = (_a = (yield this.api.query({ query: ContactCardsQuery }))
|
|
109
|
-
.contactCards.edges[0]) === null || _a === void 0 ? void 0 : _a.node;
|
|
110
|
-
return mainContactCard
|
|
111
|
-
? {
|
|
112
|
-
id: mainContactCard.id,
|
|
113
|
-
keyId: mainContactCard.key.id,
|
|
114
|
-
fields: mainContactCard.cipherDataClearJson,
|
|
115
|
-
}
|
|
116
|
-
: null;
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
getTrustedParties() {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
const { tps } = yield this.api.query({
|
|
122
|
-
query: TrustedPartiesQuery,
|
|
123
|
-
});
|
|
124
|
-
return mapEdges(tps).map((tp) => this.mapTrustedParty(tp));
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
mapTrustedParty(tp) {
|
|
128
|
-
var _a, _b;
|
|
129
|
-
const tpDetails = tp.sharedContactCard.sharedCipherDataClearJson;
|
|
130
|
-
const myDetails = Object.assign(Object.assign({}, tp.myContactCard.sharedCipherDataClearJson), { id: tp.myContactCard.id, ownedKeyId: tp.myContactCard.ownerKey.id, sharedKeyId: tp.myContactCard.sharedKey.id });
|
|
131
|
-
return {
|
|
132
|
-
id: tp.id,
|
|
133
|
-
type: TrustedPartyType.User,
|
|
134
|
-
hasScenarios: !!tp.sharedScenarios.edges.length,
|
|
135
|
-
hasSharedVault: !!tp.theirItems.directories.edges.length,
|
|
136
|
-
name: (_a = tpDetails === null || tpDetails === void 0 ? void 0 : tpDetails.name) === null || _a === void 0 ? void 0 : _a.name,
|
|
137
|
-
details: tpDetails,
|
|
138
|
-
mySharedDetails: myDetails,
|
|
139
|
-
userSharedKey: tp.currentUserSharedKey.userSharedKey,
|
|
140
|
-
username: tp.other.username,
|
|
141
|
-
features: {
|
|
142
|
-
sharedVault: {
|
|
143
|
-
hasAccess: (((_b = tp.other.features) === null || _b === void 0 ? void 0 : _b.shareVault) || ['noaccess'])[0] === 'access',
|
|
144
|
-
},
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
synchronizeContactCards(newFields, oldFields) {
|
|
149
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
-
if (!oldFields)
|
|
151
|
-
return;
|
|
152
|
-
const changes = this.getChanges(newFields, oldFields);
|
|
153
|
-
if (changes.length === 0)
|
|
154
|
-
return;
|
|
155
|
-
const trustedParties = yield this.getTrustedParties();
|
|
156
|
-
if (trustedParties.length === 0)
|
|
157
|
-
return;
|
|
158
|
-
for (const details of trustedParties.map((x) => x.mySharedDetails)) {
|
|
159
|
-
yield this.synchronizeSharedContactCard(details, changes);
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
getChanges(newFields, oldFields) {
|
|
164
|
-
var _a;
|
|
165
|
-
const changes = [];
|
|
166
|
-
for (const field of FieldNames) {
|
|
167
|
-
const oldField = oldFields[field];
|
|
168
|
-
if (oldField && oldField.values) {
|
|
169
|
-
for (const oldValue of oldField.values) {
|
|
170
|
-
const newValue = (_a = newFields[field].values) === null || _a === void 0 ? void 0 : _a.find((x) => x.id === oldValue.id);
|
|
171
|
-
if (!newValue) {
|
|
172
|
-
changes.push({
|
|
173
|
-
field,
|
|
174
|
-
id: oldValue.id,
|
|
175
|
-
label: oldValue.label,
|
|
176
|
-
oldValue: oldValue.value,
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
else if (!lodash.isEqual(newValue.value, oldValue.value)) {
|
|
180
|
-
changes.push({
|
|
181
|
-
field,
|
|
182
|
-
id: oldValue.id,
|
|
183
|
-
label: oldValue.label,
|
|
184
|
-
oldValue: oldValue.value,
|
|
185
|
-
newValue: newValue.value,
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return changes;
|
|
192
|
-
}
|
|
193
|
-
synchronizeSharedContactCard(details, changes) {
|
|
194
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
195
|
-
let hasChanged = false;
|
|
196
|
-
for (const change of changes) {
|
|
197
|
-
switch (change.field) {
|
|
198
|
-
case ContactFields.Phone:
|
|
199
|
-
{
|
|
200
|
-
const value = details.phones &&
|
|
201
|
-
details.phones.find((x) => x.label === change.label);
|
|
202
|
-
if (value) {
|
|
203
|
-
hasChanged = true;
|
|
204
|
-
value.value = change.newValue;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
break;
|
|
208
|
-
case ContactFields.Address:
|
|
209
|
-
{
|
|
210
|
-
const value = details.addresses &&
|
|
211
|
-
details.addresses.find((x) => x.label === change.label);
|
|
212
|
-
if (value) {
|
|
213
|
-
hasChanged = true;
|
|
214
|
-
value.value = change.newValue;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
break;
|
|
218
|
-
default: {
|
|
219
|
-
const value = details[change.field];
|
|
220
|
-
if (lodash.isEqual(value, change.oldValue)) {
|
|
221
|
-
hasChanged = true;
|
|
222
|
-
details[change.field] = change.newValue;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
if (hasChanged) {
|
|
228
|
-
const { id, ownedKeyId, sharedKeyId } = details, contactCard = __rest(details, ["id", "ownedKeyId", "sharedKeyId"]);
|
|
229
|
-
yield this.sharedContactCardService.updateMySharedContactCard(id, ownedKeyId, sharedKeyId, contactCard);
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
checkField(field, property, label = null) {
|
|
234
|
-
property = property || { value: field, hasMultiple: false };
|
|
235
|
-
property.values = property.values || [];
|
|
236
|
-
if (property.values.length === 0 ||
|
|
237
|
-
property.values.every((x) => !lodash.isEqual(field, x.value))) {
|
|
238
|
-
property.values.push({
|
|
239
|
-
id: `${label}-${new Date().getTime()}`,
|
|
240
|
-
label,
|
|
241
|
-
value: field,
|
|
242
|
-
});
|
|
243
|
-
property.hasMultiple = property.values.length > 1;
|
|
244
|
-
property.value = property.value || field;
|
|
245
|
-
return property;
|
|
246
|
-
}
|
|
247
|
-
return null;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
ProfileDetailsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProfileDetailsService_Factory() { return new ProfileDetailsService(i0.ɵɵinject(i1.SharedContactCardService), i0.ɵɵinject(i2.ProfileService), i0.ɵɵinject(i3.LrGraphQLService)); }, token: ProfileDetailsService, providedIn: "root" });
|
|
251
|
-
ProfileDetailsService.decorators = [
|
|
252
|
-
{ type: Injectable, args: [{
|
|
253
|
-
providedIn: 'root',
|
|
254
|
-
},] }
|
|
255
|
-
];
|
|
256
|
-
ProfileDetailsService.ctorParameters = () => [
|
|
257
|
-
{ type: SharedContactCardService },
|
|
258
|
-
{ type: ProfileService },
|
|
259
|
-
{ type: LrGraphQLService }
|
|
260
|
-
];
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1kZXRhaWxzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLWRldGFpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBVSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQU9MLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDOzs7OztBQUV6QixJQUFLLGFBTUo7QUFORCxXQUFLLGFBQWE7SUFDaEIsOEJBQWEsQ0FBQTtJQUNiLGdDQUFlLENBQUE7SUFDZixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtJQUNmLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFOSSxhQUFhLEtBQWIsYUFBYSxRQU1qQjtBQUVELE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGFBQWEsQ0FBQyxJQUFJO0lBQ2xCLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxLQUFLO0lBQ25CLGFBQWEsQ0FBQyxPQUFPO0NBQ3RCLENBQUM7QUFhRixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1Usd0JBQWtELEVBQ2xELGNBQThCLEVBQzlCLEdBQXFC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O1lBR3hCLGNBQWM7WUFMZCxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMckdyYXBoUUxTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgbWFwRWRnZXMsIFRwTm9kZSB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBsb2Rhc2ggfSBmcm9tICcuLi9fY29tbW9uJztcbmltcG9ydCB7IENvbnRhY3RDYXJkc1F1ZXJ5LCBUcnVzdGVkUGFydGllc1F1ZXJ5IH0gZnJvbSAnLi9wcm9maWxlLmdxbCc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4vcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1haW5Db250YWN0Q2FyZCxcbiAgTWFpbkNvbnRhY3RDYXJkRmllbGRzLFxuICBNYWluQ29udGFjdENhcmRQcm9wZXJ0eSxcbiAgU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyxcbiAgVHJ1c3RlZFBhcnR5LFxuICBUcnVzdGVkUGFydHlEZXRhaWxzLFxuICBUcnVzdGVkUGFydHlUeXBlLFxufSBmcm9tICcuL3Byb2ZpbGUudHlwZXMnO1xuXG5lbnVtIENvbnRhY3RGaWVsZHMge1xuICBOYW1lID0gJ25hbWUnLFxuICBFbWFpbCA9ICdlbWFpbCcsXG4gIEltYWdlID0gJ2ltYWdlJyxcbiAgUGhvbmUgPSAncGhvbmUnLFxuICBBZGRyZXNzID0gJ2FkZHJlc3MnLFxufVxuXG5jb25zdCBGaWVsZE5hbWVzID0gW1xuICBDb250YWN0RmllbGRzLk5hbWUsXG4gIENvbnRhY3RGaWVsZHMuRW1haWwsXG4gIENvbnRhY3RGaWVsZHMuSW1hZ2UsXG4gIENvbnRhY3RGaWVsZHMuUGhvbmUsXG4gIENvbnRhY3RGaWVsZHMuQWRkcmVzcyxcbl07XG5cbmludGVyZmFjZSBGaWVsZENoYW5nZSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9sZFZhbHVlPzogYW55O1xuICBuZXdWYWx1ZT86IGFueTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVEZXRhaWxzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlOiBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGk6IExyR3JhcGhRTFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIHVwZGF0ZURldGFpbHMoZmllbGRzOiBNYWluQ29udGFjdENhcmRGaWVsZHMpOiBQcm9taXNlPE1haW5Db250YWN0Q2FyZD4ge1xuICAgIGNvbnNvbGUubG9nKCd1cGRhdGVEZXRhaWxzKCknKTtcbiAgICBjb25zdCBtYWluQ29udGFjdENhcmQgPSBhd2FpdCB0aGlzLmZldGNoTWFpbkNvbnRhY3RDYXJkKCk7XG5cbiAgICBjb25zdCB1cGRhdGVkTWFpbkNvbnRhY3RDYXJkID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVEZXRhaWxzKFxuICAgICAgbWFpbkNvbnRhY3RDYXJkPy5pZCxcbiAgICAgIG1haW5Db250YWN0Q2FyZD8ua2V5SWQsXG4gICAgICBmaWVsZHNcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZUNvbnRhY3RDYXJkcyhmaWVsZHMsIG1haW5Db250YWN0Q2FyZD8uZmllbGRzKTtcblxuICAgIHJldHVybiB1cGRhdGVkTWFpbkNvbnRhY3RDYXJkO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVHJ1c3RlZFBhcnR5RGV0YWlscyhkZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzKSB7XG4gICAgY29uc3QgeyBpZCwgb3duZWRLZXlJZCwgc2hhcmVkS2V5SWQsIC4uLmNvbnRhY3RDYXJkIH0gPSBkZXRhaWxzO1xuXG4gICAgYXdhaXQgdGhpcy5zaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UudXBkYXRlTXlTaGFyZWRDb250YWN0Q2FyZChcbiAgICAgIGlkLFxuICAgICAgb3duZWRLZXlJZCxcbiAgICAgIHNoYXJlZEtleUlkLFxuICAgICAgY29udGFjdENhcmRcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5zeW5jaHJvbml6ZVNoYXJlZERldGFpbHMoZGV0YWlscyk7XG4gIH1cblxuICBhc3luYyBzeW5jaHJvbml6ZVNoYXJlZERldGFpbHMoZGV0YWlsczogVHJ1c3RlZFBhcnR5RGV0YWlscykge1xuICAgIGxldCBoYXNOZXdWYWx1ZXMgPSBmYWxzZTtcblxuICAgIC8vIFVzZWQgdG8gYmUgYSBnZXRDdXJyZW50VXNlcigpIGNhbGwgd2hpY2ggcmV0dXJucyBhIGNhY2hlcyB2ZXJzaW9uIG9mIHRoZSBjb250YWN0IGNhcmQuXG4gICAgLy8gTm93IHdlIGp1c3QgbWFrZSBhbiBBUEkgY2FsbC4gU28gb2sgdG8gbW9kaWZ5IHRoZSByZXR1cm5lZCB2YWx1ZS5cbiAgICBjb25zdCBtYWluQ29udGFjdENhcmQgPSBhd2FpdCB0aGlzLmZldGNoTWFpbkNvbnRhY3RDYXJkKCk7XG5cbiAgICBpZiAoZGV0YWlscy5uYW1lKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY2hlY2tGaWVsZChcbiAgICAgICAgZGV0YWlscy5uYW1lLFxuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLm5hbWVcbiAgICAgICk7XG5cbiAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLm5hbWUgPSBwcm9wZXJ0eTtcbiAgICAgICAgaGFzTmV3VmFsdWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGV0YWlscy5lbWFpbCkge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLmNoZWNrRmllbGQoXG4gICAgICAgIGRldGFpbHMuZW1haWwsXG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMuZW1haWxcbiAgICAgICk7XG5cbiAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmVtYWlsID0gcHJvcGVydHk7XG4gICAgICAgIGhhc05ld1ZhbHVlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuaW1hZ2UpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICBkZXRhaWxzLmltYWdlLFxuICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmltYWdlXG4gICAgICApO1xuXG4gICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5pbWFnZSA9IHByb3BlcnR5O1xuICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLnBob25lcyAmJiBkZXRhaWxzLnBob25lcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgcGhvbmUgb2YgZGV0YWlscy5waG9uZXMpIHtcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLmNoZWNrRmllbGQoXG4gICAgICAgICAgcGhvbmUudmFsdWUsXG4gICAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5waG9uZSxcbiAgICAgICAgICBwaG9uZS5sYWJlbFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIG1haW5Db250YWN0Q2FyZC5maWVsZHMucGhvbmUgPSBwcm9wZXJ0eTtcbiAgICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGFpbHMuYWRkcmVzc2VzICYmIGRldGFpbHMuYWRkcmVzc2VzLmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGRldGFpbHMuYWRkcmVzc2VzKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jaGVja0ZpZWxkKFxuICAgICAgICAgIGFkZHJlc3MudmFsdWUsXG4gICAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkcy5hZGRyZXNzLFxuICAgICAgICAgIGFkZHJlc3MubGFiZWxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICBtYWluQ29udGFjdENhcmQuZmllbGRzLmFkZHJlc3MgPSBwcm9wZXJ0eTtcbiAgICAgICAgICBoYXNOZXdWYWx1ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc05ld1ZhbHVlcykge1xuICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVEZXRhaWxzKFxuICAgICAgICBtYWluQ29udGFjdENhcmQuaWQsXG4gICAgICAgIG1haW5Db250YWN0Q2FyZC5rZXlJZCxcbiAgICAgICAgbWFpbkNvbnRhY3RDYXJkLmZpZWxkc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSGVscGVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaE1haW5Db250YWN0Q2FyZCgpOiBQcm9taXNlPE1haW5Db250YWN0Q2FyZCB8IG51bGw+IHtcbiAgICBjb25zdCBtYWluQ29udGFjdENhcmQgPSAoYXdhaXQgdGhpcy5hcGkucXVlcnkoeyBxdWVyeTogQ29udGFjdENhcmRzUXVlcnkgfSkpXG4gICAgICAuY29udGFjdENhcmRzLmVkZ2VzWzBdPy5ub2RlO1xuXG4gICAgcmV0dXJuIG1haW5Db250YWN0Q2FyZFxuICAgICAgPyB7XG4gICAgICAgICAgaWQ6IG1haW5Db250YWN0Q2FyZC5pZCxcbiAgICAgICAgICBrZXlJZDogbWFpbkNvbnRhY3RDYXJkLmtleS5pZCxcbiAgICAgICAgICBmaWVsZHM6IG1haW5Db250YWN0Q2FyZC5jaXBoZXJEYXRhQ2xlYXJKc29uIGFzIE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRUcnVzdGVkUGFydGllcygpOiBQcm9taXNlPFRydXN0ZWRQYXJ0eVtdPiB7XG4gICAgY29uc3QgeyB0cHMgfSA9IGF3YWl0IHRoaXMuYXBpLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBUcnVzdGVkUGFydGllc1F1ZXJ5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcEVkZ2VzKHRwcykubWFwKCh0cCkgPT4gdGhpcy5tYXBUcnVzdGVkUGFydHkodHApKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVHJ1c3RlZFBhcnR5KHRwOiBUcE5vZGUpOiBUcnVzdGVkUGFydHkge1xuICAgIGNvbnN0IHRwRGV0YWlsczogVHJ1c3RlZFBhcnR5RGV0YWlscyA9XG4gICAgICB0cC5zaGFyZWRDb250YWN0Q2FyZC5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uO1xuXG4gICAgY29uc3QgbXlEZXRhaWxzOiBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzID0ge1xuICAgICAgLi4udHAubXlDb250YWN0Q2FyZC5zaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uLFxuICAgICAgaWQ6IHRwLm15Q29udGFjdENhcmQuaWQsXG4gICAgICBvd25lZEtleUlkOiB0cC5teUNvbnRhY3RDYXJkLm93bmVyS2V5LmlkLFxuICAgICAgc2hhcmVkS2V5SWQ6IHRwLm15Q29udGFjdENhcmQuc2hhcmVkS2V5LmlkLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRwLmlkLFxuICAgICAgdHlwZTogVHJ1c3RlZFBhcnR5VHlwZS5Vc2VyLFxuICAgICAgaGFzU2NlbmFyaW9zOiAhIXRwLnNoYXJlZFNjZW5hcmlvcy5lZGdlcy5sZW5ndGgsXG4gICAgICBoYXNTaGFyZWRWYXVsdDogISF0cC50aGVpckl0ZW1zLmRpcmVjdG9yaWVzLmVkZ2VzLmxlbmd0aCxcbiAgICAgIG5hbWU6IHRwRGV0YWlscz8ubmFtZT8ubmFtZSxcbiAgICAgIGRldGFpbHM6IHRwRGV0YWlscyxcbiAgICAgIG15U2hhcmVkRGV0YWlsczogbXlEZXRhaWxzLFxuICAgICAgdXNlclNoYXJlZEtleTogdHAuY3VycmVudFVzZXJTaGFyZWRLZXkudXNlclNoYXJlZEtleSxcbiAgICAgIHVzZXJuYW1lOiB0cC5vdGhlci51c2VybmFtZSxcbiAgICAgIGZlYXR1cmVzOiB7XG4gICAgICAgIHNoYXJlZFZhdWx0OiB7XG4gICAgICAgICAgaGFzQWNjZXNzOlxuICAgICAgICAgICAgKHRwLm90aGVyLmZlYXR1cmVzPy5zaGFyZVZhdWx0IHx8IFsnbm9hY2Nlc3MnXSlbMF0gPT09ICdhY2Nlc3MnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzeW5jaHJvbml6ZUNvbnRhY3RDYXJkcyhcbiAgICBuZXdGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkcyxcbiAgICBvbGRGaWVsZHM6IE1haW5Db250YWN0Q2FyZEZpZWxkc1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW9sZEZpZWxkcykgcmV0dXJuO1xuXG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuZ2V0Q2hhbmdlcyhuZXdGaWVsZHMsIG9sZEZpZWxkcyk7XG5cbiAgICBpZiAoY2hhbmdlcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHRydXN0ZWRQYXJ0aWVzID0gYXdhaXQgdGhpcy5nZXRUcnVzdGVkUGFydGllcygpO1xuXG4gICAgaWYgKHRydXN0ZWRQYXJ0aWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBkZXRhaWxzIG9mIHRydXN0ZWRQYXJ0aWVzLm1hcCgoeCkgPT4geC5teVNoYXJlZERldGFpbHMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnN5bmNocm9uaXplU2hhcmVkQ29udGFjdENhcmQoZGV0YWlscywgY2hhbmdlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGFuZ2VzKFxuICAgIG5ld0ZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzLFxuICAgIG9sZEZpZWxkczogTWFpbkNvbnRhY3RDYXJkRmllbGRzXG4gICk6IEZpZWxkQ2hhbmdlW10ge1xuICAgIGNvbnN0IGNoYW5nZXM6IEZpZWxkQ2hhbmdlW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgRmllbGROYW1lcykge1xuICAgICAgY29uc3Qgb2xkRmllbGQgPSBvbGRGaWVsZHNbZmllbGRdO1xuICAgICAgaWYgKG9sZEZpZWxkICYmIG9sZEZpZWxkLnZhbHVlcykge1xuICAgICAgICBmb3IgKGNvbnN0IG9sZFZhbHVlIG9mIG9sZEZpZWxkLnZhbHVlcykge1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKG5ld0ZpZWxkc1tmaWVsZF0udmFsdWVzIGFzIGFueVtdKT8uZmluZChcbiAgICAgICAgICAgICh4KSA9PiB4LmlkID09PSBvbGRWYWx1ZS5pZFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XG4gICAgICAgICAgICBjaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgaWQ6IG9sZFZhbHVlLmlkLFxuICAgICAgICAgICAgICBsYWJlbDogb2xkVmFsdWUubGFiZWwsXG4gICAgICAgICAgICAgIG9sZFZhbHVlOiBvbGRWYWx1ZS52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWxvZGFzaC5pc0VxdWFsKG5ld1ZhbHVlLnZhbHVlLCBvbGRWYWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBpZDogb2xkVmFsdWUuaWQsXG4gICAgICAgICAgICAgIGxhYmVsOiBvbGRWYWx1ZS5sYWJlbCxcbiAgICAgICAgICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN5bmNocm9uaXplU2hhcmVkQ29udGFjdENhcmQoXG4gICAgZGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyxcbiAgICBjaGFuZ2VzOiBGaWVsZENoYW5nZVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgc3dpdGNoIChjaGFuZ2UuZmllbGQpIHtcbiAgICAgICAgY2FzZSBDb250YWN0RmllbGRzLlBob25lOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgICAgZGV0YWlscy5waG9uZXMgJiZcbiAgICAgICAgICAgICAgZGV0YWlscy5waG9uZXMuZmluZCgoeCkgPT4geC5sYWJlbCA9PT0gY2hhbmdlLmxhYmVsKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQ29udGFjdEZpZWxkcy5BZGRyZXNzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgICAgZGV0YWlscy5hZGRyZXNzZXMgJiZcbiAgICAgICAgICAgICAgZGV0YWlscy5hZGRyZXNzZXMuZmluZCgoeCkgPT4geC5sYWJlbCA9PT0gY2hhbmdlLmxhYmVsKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRldGFpbHNbY2hhbmdlLmZpZWxkXTtcblxuICAgICAgICAgIGlmIChsb2Rhc2guaXNFcXVhbCh2YWx1ZSwgY2hhbmdlLm9sZFZhbHVlKSkge1xuICAgICAgICAgICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICBkZXRhaWxzW2NoYW5nZS5maWVsZF0gPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7IGlkLCBvd25lZEtleUlkLCBzaGFyZWRLZXlJZCwgLi4uY29udGFjdENhcmQgfSA9IGRldGFpbHM7XG5cbiAgICAgIGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLnVwZGF0ZU15U2hhcmVkQ29udGFjdENhcmQoXG4gICAgICAgIGlkLFxuICAgICAgICBvd25lZEtleUlkLFxuICAgICAgICBzaGFyZWRLZXlJZCxcbiAgICAgICAgY29udGFjdENhcmRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZpZWxkPFQ+KFxuICAgIGZpZWxkOiBULFxuICAgIHByb3BlcnR5OiBNYWluQ29udGFjdENhcmRQcm9wZXJ0eTxUPixcbiAgICBsYWJlbDogc3RyaW5nID0gbnVsbFxuICApIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5IHx8IHsgdmFsdWU6IGZpZWxkLCBoYXNNdWx0aXBsZTogZmFsc2UgfTtcbiAgICBwcm9wZXJ0eS52YWx1ZXMgPSBwcm9wZXJ0eS52YWx1ZXMgfHwgW107XG5cbiAgICBpZiAoXG4gICAgICBwcm9wZXJ0eS52YWx1ZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICBwcm9wZXJ0eS52YWx1ZXMuZXZlcnkoKHgpID0+ICFsb2Rhc2guaXNFcXVhbChmaWVsZCwgeC52YWx1ZSkpXG4gICAgKSB7XG4gICAgICBwcm9wZXJ0eS52YWx1ZXMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtsYWJlbH0tJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWU6IGZpZWxkLFxuICAgICAgfSk7XG4gICAgICBwcm9wZXJ0eS5oYXNNdWx0aXBsZSA9IHByb3BlcnR5LnZhbHVlcy5sZW5ndGggPiAxO1xuICAgICAgcHJvcGVydHkudmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSB8fCBmaWVsZDtcbiAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import gql from 'graphql-tag';
|
|
3
|
-
import { KeyExchangeFields, UserSharedKeyFields, } from '../key-exchange/key-exchange.gql';
|
|
4
|
-
import { SharedContactCardFields } from '../shared-contact-card/shared-contact-card.service';
|
|
5
|
-
import { gqlTyped } from '../_common/ast';
|
|
6
|
-
import { KeyGraphFragment } from '../_common/queries.gql';
|
|
7
|
-
export const TrustedPartyProperties = `
|
|
8
|
-
id
|
|
9
|
-
user {
|
|
10
|
-
id
|
|
11
|
-
username
|
|
12
|
-
}
|
|
13
|
-
other{
|
|
14
|
-
id
|
|
15
|
-
username,
|
|
16
|
-
features {
|
|
17
|
-
shareVault
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
sharedContactCard {
|
|
21
|
-
${SharedContactCardFields}
|
|
22
|
-
}
|
|
23
|
-
myContactCard {
|
|
24
|
-
${SharedContactCardFields}
|
|
25
|
-
}
|
|
26
|
-
sharedScenarios {
|
|
27
|
-
edges {
|
|
28
|
-
node {
|
|
29
|
-
id
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
theirItems {
|
|
34
|
-
directories {
|
|
35
|
-
edges {
|
|
36
|
-
node {
|
|
37
|
-
id
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
currentUserSharedKey {
|
|
43
|
-
userSharedKey {
|
|
44
|
-
keyExchange {
|
|
45
|
-
${KeyExchangeFields}
|
|
46
|
-
}
|
|
47
|
-
${UserSharedKeyFields}
|
|
48
|
-
}
|
|
49
|
-
}`;
|
|
50
|
-
export const CurrentUserQuery = gql `
|
|
51
|
-
query {
|
|
52
|
-
currentUser {
|
|
53
|
-
id
|
|
54
|
-
username
|
|
55
|
-
currentUserKey {
|
|
56
|
-
passKey {
|
|
57
|
-
id
|
|
58
|
-
passKeyParams
|
|
59
|
-
passIdpParams
|
|
60
|
-
wrappedPassIdpVerifierPrk
|
|
61
|
-
created
|
|
62
|
-
}
|
|
63
|
-
masterKey {
|
|
64
|
-
id
|
|
65
|
-
}
|
|
66
|
-
rootKey {
|
|
67
|
-
id
|
|
68
|
-
}
|
|
69
|
-
pxk {
|
|
70
|
-
id
|
|
71
|
-
}
|
|
72
|
-
sigPxk {
|
|
73
|
-
id
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
userDelete {
|
|
77
|
-
id
|
|
78
|
-
created
|
|
79
|
-
state
|
|
80
|
-
}
|
|
81
|
-
features {
|
|
82
|
-
myVault
|
|
83
|
-
tpVault
|
|
84
|
-
shareVault
|
|
85
|
-
}
|
|
86
|
-
sessionEncryptionKey
|
|
87
|
-
dateJoined
|
|
88
|
-
}
|
|
89
|
-
userPlans {
|
|
90
|
-
id
|
|
91
|
-
stripe {
|
|
92
|
-
subscriptionId
|
|
93
|
-
}
|
|
94
|
-
plan {
|
|
95
|
-
name
|
|
96
|
-
data
|
|
97
|
-
state
|
|
98
|
-
}
|
|
99
|
-
periodEnd
|
|
100
|
-
}
|
|
101
|
-
contactCards(orderBy: "created") {
|
|
102
|
-
edges {
|
|
103
|
-
node {
|
|
104
|
-
id
|
|
105
|
-
key {
|
|
106
|
-
id
|
|
107
|
-
}
|
|
108
|
-
cipherData
|
|
109
|
-
plainData
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
keyGraph {
|
|
114
|
-
...KeyGraphFragment
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
${KeyGraphFragment}
|
|
118
|
-
`;
|
|
119
|
-
export const CreateContactCardMutation = gql `
|
|
120
|
-
mutation CreateContactCardMutation($input: CreateContactCardInput!) {
|
|
121
|
-
createContactCard(input: $input) {
|
|
122
|
-
contactCard {
|
|
123
|
-
id
|
|
124
|
-
key {
|
|
125
|
-
id
|
|
126
|
-
}
|
|
127
|
-
cipherData
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
`;
|
|
132
|
-
export const UpdateContactCardMutation = gql `
|
|
133
|
-
mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
|
|
134
|
-
updateContactCard(input: $input) {
|
|
135
|
-
contactCard {
|
|
136
|
-
id
|
|
137
|
-
key {
|
|
138
|
-
id
|
|
139
|
-
}
|
|
140
|
-
cipherData
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
`;
|
|
145
|
-
export const TrustedPartiesQuery = gqlTyped `
|
|
146
|
-
query TrustedPartiesQuery {
|
|
147
|
-
tps {
|
|
148
|
-
edges {
|
|
149
|
-
node {
|
|
150
|
-
${TrustedPartyProperties}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}`;
|
|
155
|
-
export const ContactCardsQuery = gqlTyped `
|
|
156
|
-
query ContactCardsQuery {
|
|
157
|
-
contactCards(orderBy: "created") {
|
|
158
|
-
edges {
|
|
159
|
-
node {
|
|
160
|
-
id
|
|
161
|
-
cipherData
|
|
162
|
-
key {
|
|
163
|
-
id
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
`;
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5ncWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRTlCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDN0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTFELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHOzs7Ozs7Ozs7Ozs7OztNQWNoQyx1QkFBdUI7OztNQUd2Qix1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXFCbkIsaUJBQWlCOztRQUVuQixtQkFBbUI7O0lBRXZCLENBQUM7QUFRTCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFtRS9CLGdCQUFnQjtDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Q0FZM0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7O0NBWTNDLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQTJCOzs7OztVQUs1RCxzQkFBc0I7Ozs7RUFJOUIsQ0FBQztBQUtILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBeUI7Ozs7Ozs7Ozs7Ozs7O0NBY2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IENvbm5lY3Rpb24sIENvbnRhY3RDYXJkTm9kZSwgVHBOb2RlIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7XG4gIEtleUV4Y2hhbmdlRmllbGRzLFxuICBVc2VyU2hhcmVkS2V5RmllbGRzLFxufSBmcm9tICcuLi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLmdxbCc7XG5pbXBvcnQgeyBIYXNLZXlHcmFwaCB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuaW1wb3J0IHsgU2hhcmVkQ29udGFjdENhcmRGaWVsZHMgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7IEtleUdyYXBoRnJhZ21lbnQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcbmltcG9ydCB7IEhhc0VkZ2VzIH0gZnJvbSAnLi8uLi9fY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IEFwaUNvbnRhY3RDYXJkLCBBcGlDdXJyZW50VXNlciB9IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBUcnVzdGVkUGFydHlQcm9wZXJ0aWVzID0gYFxuICBpZFxuICB1c2VyIHtcbiAgICBpZFxuICAgIHVzZXJuYW1lXG4gIH1cbiAgb3RoZXJ7XG4gICAgaWRcbiAgICB1c2VybmFtZSxcbiAgICBmZWF0dXJlcyB7XG4gICAgICBzaGFyZVZhdWx0XG4gICAgfVxuICB9XG4gIHNoYXJlZENvbnRhY3RDYXJkIHtcbiAgICAke1NoYXJlZENvbnRhY3RDYXJkRmllbGRzfVxuICB9XG4gIG15Q29udGFjdENhcmQge1xuICAgICR7U2hhcmVkQ29udGFjdENhcmRGaWVsZHN9XG4gIH1cbiAgc2hhcmVkU2NlbmFyaW9zIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdGhlaXJJdGVtcyB7XG4gICAgZGlyZWN0b3JpZXMge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGN1cnJlbnRVc2VyU2hhcmVkS2V5IHtcbiAgICB1c2VyU2hhcmVkS2V5IHtcbiAgICAgIGtleUV4Y2hhbmdlIHtcbiAgICAgICAgJHtLZXlFeGNoYW5nZUZpZWxkc31cbiAgICAgIH1cbiAgICAgICR7VXNlclNoYXJlZEtleUZpZWxkc31cbiAgICB9XG4gIH1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRVc2VyUXVlcnlUeXBlIGV4dGVuZHMgSGFzS2V5R3JhcGgge1xuICBjdXJyZW50VXNlcjogQXBpQ3VycmVudFVzZXI7XG4gIGNvbnRhY3RDYXJkczogSGFzRWRnZXM8QXBpQ29udGFjdENhcmQ+O1xuICB1c2VyUGxhbnM6IGFueVtdO1xufVxuXG5leHBvcnQgY29uc3QgQ3VycmVudFVzZXJRdWVyeSA9IGdxbGBcbiAgcXVlcnkge1xuICAgIGN1cnJlbnRVc2VyIHtcbiAgICAgIGlkXG4gICAgICB1c2VybmFtZVxuICAgICAgY3VycmVudFVzZXJLZXkge1xuICAgICAgICBwYXNzS2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICAgIHBhc3NLZXlQYXJhbXNcbiAgICAgICAgICBwYXNzSWRwUGFyYW1zXG4gICAgICAgICAgd3JhcHBlZFBhc3NJZHBWZXJpZmllclBya1xuICAgICAgICAgIGNyZWF0ZWRcbiAgICAgICAgfVxuICAgICAgICBtYXN0ZXJLZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgcm9vdEtleSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgICBweGsge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgc2lnUHhrIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB1c2VyRGVsZXRlIHtcbiAgICAgICAgaWRcbiAgICAgICAgY3JlYXRlZFxuICAgICAgICBzdGF0ZVxuICAgICAgfVxuICAgICAgZmVhdHVyZXMge1xuICAgICAgICBteVZhdWx0XG4gICAgICAgIHRwVmF1bHRcbiAgICAgICAgc2hhcmVWYXVsdFxuICAgICAgfVxuICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXlcbiAgICAgIGRhdGVKb2luZWRcbiAgICB9XG4gICAgdXNlclBsYW5zIHtcbiAgICAgIGlkXG4gICAgICBzdHJpcGUge1xuICAgICAgICBzdWJzY3JpcHRpb25JZFxuICAgICAgfVxuICAgICAgcGxhbiB7XG4gICAgICAgIG5hbWVcbiAgICAgICAgZGF0YVxuICAgICAgICBzdGF0ZVxuICAgICAgfVxuICAgICAgcGVyaW9kRW5kXG4gICAgfVxuICAgIGNvbnRhY3RDYXJkcyhvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBpZFxuICAgICAgICAgIGtleSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgIH1cbiAgICAgICAgICBjaXBoZXJEYXRhXG4gICAgICAgICAgcGxhaW5EYXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAga2V5R3JhcGgge1xuICAgICAgLi4uS2V5R3JhcGhGcmFnbWVudFxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRnJhZ21lbnR9XG5gO1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XG4gICAgY3JlYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgY29udGFjdENhcmQge1xuICAgICAgICBpZFxuICAgICAgICBrZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgY2lwaGVyRGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBVcGRhdGVDb250YWN0Q2FyZElucHV0ISkge1xuICAgIHVwZGF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICAgaWRcbiAgICAgICAga2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIGNpcGhlckRhdGFcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJ1c3RlZFBhcnRpZXNRdWVyeVJlc3VsdCB7XG4gIHRwczogQ29ubmVjdGlvbjxUcE5vZGU+O1xufVxuZXhwb3J0IGNvbnN0IFRydXN0ZWRQYXJ0aWVzUXVlcnkgPSBncWxUeXBlZDxUcnVzdGVkUGFydGllc1F1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFRydXN0ZWRQYXJ0aWVzUXVlcnkge1xuICB0cHMge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke1RydXN0ZWRQYXJ0eVByb3BlcnRpZXN9XG4gICAgICB9XG4gICAgfVxuICB9XG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2FyZHNRdWVyeVJlc3VsdCB7XG4gIGNvbnRhY3RDYXJkczogQ29ubmVjdGlvbjxDb250YWN0Q2FyZE5vZGU+O1xufVxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkc1F1ZXJ5ID0gZ3FsVHlwZWQ8Q29udGFjdENhcmRzUXVlcnlSZXN1bHQ+YFxucXVlcnkgQ29udGFjdENhcmRzUXVlcnkge1xuICBjb250YWN0Q2FyZHMob3JkZXJCeTogXCJjcmVhdGVkXCIpIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgaWRcbiAgICAgICAgY2lwaGVyRGF0YVxuICAgICAgICBrZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmA7XG4iXX0=
|