@lifeready/core 1.0.21 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/lifeready-core.umd.js +9745 -9700
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +2 -2
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/run-outside-angular.js +2 -2
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/api/lr-apollo.service.js +3 -3
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +3 -3
- package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +6 -5
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/auth.gql.js +1 -28
- package/esm2015/lib/auth/auth.types.js +1 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +32 -31
- package/esm2015/lib/category/category.gql.js +1 -1
- package/esm2015/lib/category/category.service.js +6 -6
- package/esm2015/lib/contact-card/contact-card.gql.js +79 -0
- package/esm2015/lib/contact-card/contact-card.service.js +154 -0
- package/esm2015/lib/contact-card/contact-card2.gql.js +29 -0
- package/esm2015/lib/contact-card/contact-card2.service.js +103 -0
- package/esm2015/lib/encryption/encryption.service.js +189 -0
- package/esm2015/lib/file-upload/file-upload.service.js +74 -0
- package/esm2015/lib/file-upload/file-upload.types.js +1 -0
- package/esm2015/lib/{auth → idle}/idle.service.js +7 -7
- package/esm2015/lib/{auth → idle}/idle.types.js +1 -1
- package/esm2015/lib/items2/item2.service.js +20 -20
- package/esm2015/lib/key/key-factory.service.js +237 -0
- package/esm2015/lib/{cryptography → key}/key-graph.service.js +10 -10
- package/esm2015/lib/key/key-meta.service.js +200 -0
- package/esm2015/lib/key/key.service.js +124 -0
- package/esm2015/lib/key/key.types.js +11 -0
- package/esm2015/lib/key-exchange/key-exchange.gql.js +188 -0
- package/esm2015/lib/key-exchange/key-exchange.service.js +443 -0
- package/esm2015/lib/key-exchange/key-exchange.types.js +7 -0
- package/esm2015/lib/key-exchange/key-exchange2.gql.js +171 -0
- package/esm2015/lib/key-exchange/key-exchange2.service.js +500 -0
- package/esm2015/lib/lbop/lbop.service.js +355 -0
- package/esm2015/lib/life-ready.module.js +2 -27
- package/esm2015/lib/lock/lock.gql.js +40 -0
- package/esm2015/lib/lock/lock.service.js +64 -0
- package/esm2015/lib/message/message.gql.js +32 -0
- package/esm2015/lib/message/message.service.js +116 -0
- package/esm2015/lib/message/message.types.js +1 -0
- package/esm2015/lib/password/password.gql.js +28 -0
- package/esm2015/lib/password/password.service.js +315 -0
- package/esm2015/lib/persist/persist.service.js +180 -0
- package/esm2015/lib/profile/profile-details.service.js +214 -0
- package/esm2015/lib/profile/profile.gql.js +97 -0
- package/esm2015/lib/profile/profile.service.js +169 -0
- package/esm2015/lib/profile/profile.types.js +34 -0
- package/esm2015/lib/record/record-attachment.service.js +15 -15
- package/esm2015/lib/record/record.service.js +3 -3
- package/esm2015/lib/register/register.service.js +172 -0
- package/esm2015/lib/scenario/scenario.controller.js +2 -2
- package/esm2015/lib/scenario/{scenario.gql.private.js → scenario.private.gql.js} +1 -1
- package/esm2015/lib/scenario/scenario.service.js +9 -9
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +119 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +41 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +117 -0
- package/esm2015/lib/slip39/slip39.service.js +169 -0
- package/esm2015/lib/time/time.service.js +146 -0
- package/esm2015/lib/tp-assembly/tp-assembly.js +365 -0
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +22 -0
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +1 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +100 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +117 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +4 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +34 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +74 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +165 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +54 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +92 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -0
- package/esm2015/lib/trusted-party/trusted-party.gql.js +148 -0
- package/esm2015/lib/trusted-party/trusted-party.service.js +326 -0
- package/esm2015/lib/trusted-party/trusted-party.types.js +41 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.js +64 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +25 -0
- package/esm2015/lib/trusted-party/trusted-party2.service.js +224 -0
- package/esm2015/lib/trusted-party/trusted-party2.types.js +1 -0
- package/esm2015/lib/two-factor/two-factor.service.js +74 -0
- package/esm2015/lib/user/user.gql.js +60 -0
- package/esm2015/lib/user/user.service.js +79 -0
- package/esm2015/lib/user/user.types.js +1 -0
- package/esm2015/lib/web-crypto/web-crypto.service.js +29 -0
- package/esm2015/lifeready-core.js +15 -13
- package/esm2015/public-api.js +49 -51
- package/fesm2015/lifeready-core.js +9232 -9214
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/types.d.ts +3 -1
- package/lib/api/lr-apollo.service.d.ts +1 -1
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +1 -1
- package/lib/api/query-processor/common-processors.service.d.ts +1 -1
- package/lib/api/query-processor/query-processor.service.d.ts +1 -1
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +11 -0
- package/lib/auth/auth.gql.d.ts +0 -3
- package/lib/auth/auth.types.d.ts +2 -2
- package/lib/auth/life-ready-auth.service.d.ts +12 -12
- package/lib/category/category.gql.d.ts +1 -1
- package/lib/category/category.service.d.ts +2 -2
- package/lib/{api → contact-card}/contact-card.service.d.ts +9 -9
- package/lib/contact-card/contact-card2.gql.d.ts +25 -0
- package/lib/{api → contact-card}/contact-card2.service.d.ts +11 -12
- package/lib/{cryptography → encryption}/encryption.service.d.ts +2 -2
- package/lib/{api/file.service.d.ts → file-upload/file-upload.service.d.ts} +3 -7
- package/lib/file-upload/file-upload.types.d.ts +5 -0
- package/lib/{auth → idle}/idle.service.d.ts +4 -4
- package/lib/items2/item2.service.d.ts +11 -11
- package/lib/{cryptography → key}/key-factory.service.d.ts +2 -2
- package/lib/{cryptography → key}/key-graph.service.d.ts +5 -5
- package/lib/{cryptography → key}/key-meta.service.d.ts +1 -1
- package/lib/{cryptography → key}/key.service.d.ts +2 -2
- package/lib/{cryptography/cryptography.types.d.ts → key/key.types.d.ts} +9 -13
- package/lib/{api → key-exchange}/key-exchange.service.d.ts +5 -5
- package/lib/{api → key-exchange}/key-exchange.types.d.ts +4 -4
- package/lib/{api → key-exchange}/key-exchange2.gql.d.ts +1 -1
- package/lib/{api → key-exchange}/key-exchange2.service.d.ts +71 -18
- package/lib/{auth → lbop}/lbop.service.d.ts +7 -7
- package/lib/{api → lock}/lock.gql.d.ts +1 -1
- package/lib/{api → lock}/lock.service.d.ts +1 -1
- package/lib/message/message.gql.d.ts +13 -0
- package/lib/message/message.service.d.ts +29 -0
- package/lib/message/message.types.d.ts +12 -0
- package/lib/password/password.gql.d.ts +3 -0
- package/lib/{auth → password}/password.service.d.ts +8 -8
- package/lib/{api → persist}/persist.service.d.ts +3 -3
- package/lib/{users → profile}/profile-details.service.d.ts +3 -3
- package/lib/{users → profile}/profile.gql.d.ts +2 -2
- package/lib/{users → profile}/profile.service.d.ts +6 -6
- package/lib/{users → profile}/profile.types.d.ts +1 -1
- package/lib/record/record-attachment.service.d.ts +6 -6
- package/lib/record/record.service.d.ts +1 -1
- package/lib/{auth → register}/register.service.d.ts +4 -4
- package/lib/scenario/scenario.controller.d.ts +1 -1
- package/lib/scenario/scenario.service.d.ts +2 -2
- package/lib/scenario/scenario.types.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card.service.d.ts +9 -9
- package/lib/{api → shared-contact-card}/shared-contact-card2.gql.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card2.service.d.ts +6 -6
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.d.ts +7 -7
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.types.d.ts +1 -1
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-request.service.d.ts +4 -8
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-user.service.d.ts +7 -13
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.controller.d.ts +1 -1
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +63 -0
- package/lib/{trusted-parties/tp-password-reset.gql.d.ts → tp-password-reset/tp-password-reset.private.gql.d.ts} +1 -63
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +59 -0
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.service.d.ts +6 -89
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +40 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party.service.d.ts +7 -7
- package/lib/{trusted-parties → trusted-party}/trusted-party.types.d.ts +2 -3
- package/lib/{trusted-parties → trusted-party}/trusted-party2.gql.d.ts +0 -22
- package/lib/trusted-party/trusted-party2.gql.private.d.ts +23 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party2.service.d.ts +11 -35
- package/lib/trusted-party/trusted-party2.types.d.ts +12 -0
- package/lib/{users → user}/user.gql.d.ts +1 -1
- package/lib/{users → user}/user.types.d.ts +1 -1
- package/lifeready-core.d.ts +14 -12
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +48 -50
- package/esm2015/lib/api/contact-card.gql.js +0 -79
- package/esm2015/lib/api/contact-card.service.js +0 -154
- package/esm2015/lib/api/contact-card2.gql.js +0 -60
- package/esm2015/lib/api/contact-card2.service.js +0 -103
- package/esm2015/lib/api/file.service.js +0 -74
- package/esm2015/lib/api/key-exchange.gql.js +0 -188
- package/esm2015/lib/api/key-exchange.service.js +0 -442
- package/esm2015/lib/api/key-exchange.types.js +0 -7
- package/esm2015/lib/api/key-exchange2.gql.js +0 -171
- package/esm2015/lib/api/key-exchange2.service.js +0 -480
- package/esm2015/lib/api/lock.gql.js +0 -40
- package/esm2015/lib/api/lock.service.js +0 -64
- package/esm2015/lib/api/message.service.js +0 -138
- package/esm2015/lib/api/persist.service.js +0 -181
- package/esm2015/lib/api/shared-contact-card.service.js +0 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/api/time.service.js +0 -146
- package/esm2015/lib/auth/lbop.service.js +0 -355
- package/esm2015/lib/auth/password.service.js +0 -315
- package/esm2015/lib/auth/register.service.js +0 -172
- package/esm2015/lib/auth/two-factor.service.js +0 -74
- package/esm2015/lib/cryptography/cryptography.types.js +0 -11
- package/esm2015/lib/cryptography/encryption.service.js +0 -189
- package/esm2015/lib/cryptography/key-factory.service.js +0 -237
- package/esm2015/lib/cryptography/key-meta.service.js +0 -200
- package/esm2015/lib/cryptography/key.service.js +0 -124
- package/esm2015/lib/cryptography/slip39.service.js +0 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +0 -22
- package/esm2015/lib/trusted-parties/tp-assembly.js +0 -365
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +0 -1
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -113
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -237
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -95
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -218
- package/esm2015/lib/users/profile-details.service.js +0 -214
- package/esm2015/lib/users/profile.gql.js +0 -97
- package/esm2015/lib/users/profile.service.js +0 -169
- package/esm2015/lib/users/profile.types.js +0 -34
- package/esm2015/lib/users/user.gql.js +0 -60
- package/esm2015/lib/users/user.service.js +0 -79
- package/esm2015/lib/users/user.types.js +0 -1
- package/lib/api/contact-card2.gql.d.ts +0 -34
- package/lib/api/message.service.d.ts +0 -59
- /package/lib/{api → contact-card}/contact-card.gql.d.ts +0 -0
- /package/lib/{auth → idle}/idle.types.d.ts +0 -0
- /package/lib/{api → key-exchange}/key-exchange.gql.d.ts +0 -0
- /package/lib/scenario/{scenario.gql.private.d.ts → scenario.private.gql.d.ts} +0 -0
- /package/lib/{cryptography → slip39}/slip39.service.d.ts +0 -0
- /package/lib/{api → time}/time.service.d.ts +0 -0
- /package/lib/{trusted-parties/tp-assembly.gql.private.d.ts → tp-assembly/tp-assembly.private.gql.d.ts} +0 -0
- /package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.constants.d.ts +0 -0
- /package/lib/{trusted-parties → trusted-party}/trusted-party.gql.d.ts +0 -0
- /package/lib/{auth → two-factor}/two-factor.service.d.ts +0 -0
- /package/lib/{users → user}/user.service.d.ts +0 -0
- /package/lib/{cryptography → web-crypto}/web-crypto.service.d.ts +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Injectable, Injector, NgZone } from '@angular/core';
|
|
3
|
+
import { LrMutation, LrService } from '../api/lr-graphql';
|
|
4
|
+
import { RunOutsideAngular } from '../_common/run-outside-angular';
|
|
5
|
+
import { TP_PASSWORD_RESET_SLIP39_PASSPHRASE } from './tp-password-reset.constants';
|
|
6
|
+
import { TpPasswordResetAssemblyController } from './tp-password-reset.controller';
|
|
7
|
+
import { CancelTpPasswordResetRequestMutation, CreateTpPasswordResetMutation, DeleteTpPasswordResetMutation, UpdateTpPasswordResetMutation, } from './tp-password-reset.gql';
|
|
8
|
+
import { TpPasswordResetPrivateService } from './tp-password-reset.private.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "./tp-password-reset.private.service";
|
|
11
|
+
import * as i2 from "./tp-password-reset.controller";
|
|
12
|
+
let TpPasswordResetService = class TpPasswordResetService extends LrService {
|
|
13
|
+
constructor(ngZone, injector, privateService, assemblyController) {
|
|
14
|
+
super(injector);
|
|
15
|
+
this.ngZone = ngZone;
|
|
16
|
+
this.injector = injector;
|
|
17
|
+
this.privateService = privateService;
|
|
18
|
+
this.assemblyController = assemblyController;
|
|
19
|
+
this.slip39Passphrase = TP_PASSWORD_RESET_SLIP39_PASSPHRASE;
|
|
20
|
+
}
|
|
21
|
+
cancelResetRequest() {
|
|
22
|
+
return this.mutate(this.cancelResetRequestMutation());
|
|
23
|
+
}
|
|
24
|
+
cancelResetRequestMutation() {
|
|
25
|
+
return new LrMutation({
|
|
26
|
+
mutation: CancelTpPasswordResetRequestMutation,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
deleteReset() {
|
|
30
|
+
return this.mutate(this.deleteResetMutation());
|
|
31
|
+
}
|
|
32
|
+
deleteResetMutation() {
|
|
33
|
+
return new LrMutation({
|
|
34
|
+
mutation: DeleteTpPasswordResetMutation,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
validateApprovers(approvers) {
|
|
38
|
+
return this.assemblyController.validateApprovers(approvers);
|
|
39
|
+
}
|
|
40
|
+
createReset(input) {
|
|
41
|
+
return this.mutate(this.createResetMutation(input));
|
|
42
|
+
}
|
|
43
|
+
createResetMutation(input) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const { mutationInput } = yield this.assemblyController.prepareCreate(input);
|
|
46
|
+
return new LrMutation({
|
|
47
|
+
mutation: CreateTpPasswordResetMutation,
|
|
48
|
+
variables: {
|
|
49
|
+
input: {
|
|
50
|
+
assembly: Object.assign({}, mutationInput),
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
updateReset(input) {
|
|
57
|
+
return this.mutate(this.updateResetMutation(input));
|
|
58
|
+
}
|
|
59
|
+
updateResetMutation(input) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const passwordReset = yield this.privateService.getReset();
|
|
62
|
+
const { mutationInput } = yield this.assemblyController.prepareUpdate(input, passwordReset.assembly);
|
|
63
|
+
return new LrMutation({
|
|
64
|
+
mutation: UpdateTpPasswordResetMutation,
|
|
65
|
+
variables: {
|
|
66
|
+
input: {
|
|
67
|
+
assembly: Object.assign({}, mutationInput),
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
TpPasswordResetService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TpPasswordResetService_Factory() { return new TpPasswordResetService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.TpPasswordResetPrivateService), i0.ɵɵinject(i2.TpPasswordResetAssemblyController)); }, token: TpPasswordResetService, providedIn: "root" });
|
|
75
|
+
TpPasswordResetService.decorators = [
|
|
76
|
+
{ type: Injectable, args: [{
|
|
77
|
+
providedIn: 'root',
|
|
78
|
+
},] }
|
|
79
|
+
];
|
|
80
|
+
TpPasswordResetService.ctorParameters = () => [
|
|
81
|
+
{ type: NgZone },
|
|
82
|
+
{ type: Injector },
|
|
83
|
+
{ type: TpPasswordResetPrivateService },
|
|
84
|
+
{ type: TpPasswordResetAssemblyController }
|
|
85
|
+
];
|
|
86
|
+
TpPasswordResetService = __decorate([
|
|
87
|
+
RunOutsideAngular({
|
|
88
|
+
ngZoneName: 'ngZone',
|
|
89
|
+
})
|
|
90
|
+
], TpPasswordResetService);
|
|
91
|
+
export { TpPasswordResetService };
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFNMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkYsT0FBTyxFQUNMLG9DQUFvQyxFQUNwQyw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLDZCQUE2QixHQUM5QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7O0lBUXZFLHNCQUFzQixTQUF0QixzQkFBdUIsU0FBUSxTQUFTO0lBR25ELFlBQ1UsTUFBYyxFQUNkLFFBQWtCLEVBQ2xCLGNBQTZDLEVBQzdDLGtCQUFxRDtRQUU3RCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMUixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBK0I7UUFDN0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQztRQU4vRCxxQkFBZ0IsR0FBRyxtQ0FBbUMsQ0FBQztJQVN2RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNwQixRQUFRLEVBQUUsb0NBQW9DO1NBQy9DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSw2QkFBNkI7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQW1CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBNEI7UUFDdEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFSyxtQkFBbUIsQ0FBQyxLQUE0Qjs7WUFDcEQsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FDbkUsS0FBSyxDQUNOLENBQUM7WUFFRixPQUFPLElBQUksVUFBVSxDQUFDO2dCQUNwQixRQUFRLEVBQUUsNkJBQTZCO2dCQUN2QyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLFFBQVEsb0JBQ0gsYUFBYSxDQUNqQjtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUVELFdBQVcsQ0FBQyxLQUE0QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVLLG1CQUFtQixDQUFDLEtBQTRCOztZQUNwRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFM0QsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FDbkUsS0FBSyxFQUNMLGFBQWEsQ0FBQyxRQUFRLENBQ3ZCLENBQUM7WUFFRixPQUFPLElBQUksVUFBVSxDQUFDO2dCQUNwQixRQUFRLEVBQUUsNkJBQTZCO2dCQUN2QyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLFFBQVEsb0JBQ0gsYUFBYSxDQUNqQjtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtDQUNGLENBQUE7OztZQW5GQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXZCOEIsTUFBTTtZQUFoQixRQUFRO1lBZ0JwQiw2QkFBNkI7WUFQN0IsaUNBQWlDOztBQWU3QixzQkFBc0I7SUFObEMsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLHNCQUFzQixDQWdGbEM7U0FoRlksc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTHJNdXRhdGlvbiwgTHJTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgVHBOb2RlIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7XG4gIENyZWF0ZVRwQXNzZW1ibHlJbnB1dCxcbiAgVXBkYXRlVHBBc3NlbWJseUlucHV0LFxufSBmcm9tICcuLi90cC1hc3NlbWJseS90cC1hc3NlbWJseS50eXBlcyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUUF9QQVNTV09SRF9SRVNFVF9TTElQMzlfUEFTU1BIUkFTRSB9IGZyb20gJy4vdHAtcGFzc3dvcmQtcmVzZXQuY29uc3RhbnRzJztcbmltcG9ydCB7IFRwUGFzc3dvcmRSZXNldEFzc2VtYmx5Q29udHJvbGxlciB9IGZyb20gJy4vdHAtcGFzc3dvcmQtcmVzZXQuY29udHJvbGxlcic7XG5pbXBvcnQge1xuICBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gIENyZWF0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uLFxuICBEZWxldGVUcFBhc3N3b3JkUmVzZXRNdXRhdGlvbixcbiAgVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG59IGZyb20gJy4vdHAtcGFzc3dvcmQtcmVzZXQuZ3FsJztcbmltcG9ydCB7IFRwUGFzc3dvcmRSZXNldFByaXZhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cC1wYXNzd29yZC1yZXNldC5wcml2YXRlLnNlcnZpY2UnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHBQYXNzd29yZFJlc2V0U2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XG4gIHNsaXAzOVBhc3NwaHJhc2UgPSBUUF9QQVNTV09SRF9SRVNFVF9TTElQMzlfUEFTU1BIUkFTRTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcHJpdmF0ZVNlcnZpY2U6IFRwUGFzc3dvcmRSZXNldFByaXZhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXNzZW1ibHlDb250cm9sbGVyOiBUcFBhc3N3b3JkUmVzZXRBc3NlbWJseUNvbnRyb2xsZXJcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgY2FuY2VsUmVzZXRSZXF1ZXN0KCkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNhbmNlbFJlc2V0UmVxdWVzdE11dGF0aW9uKCkpO1xuICB9XG5cbiAgY2FuY2VsUmVzZXRSZXF1ZXN0TXV0YXRpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDYW5jZWxUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0TXV0YXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVSZXNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5kZWxldGVSZXNldE11dGF0aW9uKCkpO1xuICB9XG5cbiAgZGVsZXRlUmVzZXRNdXRhdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZVRwUGFzc3dvcmRSZXNldE11dGF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVBcHByb3ZlcnMoYXBwcm92ZXJzOiBUcE5vZGVbXSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmFzc2VtYmx5Q29udHJvbGxlci52YWxpZGF0ZUFwcHJvdmVycyhhcHByb3ZlcnMpO1xuICB9XG5cbiAgY3JlYXRlUmVzZXQoaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZVJlc2V0TXV0YXRpb24oaW5wdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJlc2V0TXV0YXRpb24oaW5wdXQ6IENyZWF0ZVRwQXNzZW1ibHlJbnB1dCkge1xuICAgIGNvbnN0IHsgbXV0YXRpb25JbnB1dCB9ID0gYXdhaXQgdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucHJlcGFyZUNyZWF0ZShcbiAgICAgIGlucHV0XG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ3JlYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBhc3NlbWJseToge1xuICAgICAgICAgICAgLi4ubXV0YXRpb25JbnB1dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVJlc2V0KGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51cGRhdGVSZXNldE11dGF0aW9uKGlucHV0KSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVSZXNldE11dGF0aW9uKGlucHV0OiBVcGRhdGVUcEFzc2VtYmx5SW5wdXQpIHtcbiAgICBjb25zdCBwYXNzd29yZFJlc2V0ID0gYXdhaXQgdGhpcy5wcml2YXRlU2VydmljZS5nZXRSZXNldCgpO1xuXG4gICAgY29uc3QgeyBtdXRhdGlvbklucHV0IH0gPSBhd2FpdCB0aGlzLmFzc2VtYmx5Q29udHJvbGxlci5wcmVwYXJlVXBkYXRlKFxuICAgICAgaW5wdXQsXG4gICAgICBwYXNzd29yZFJlc2V0LmFzc2VtYmx5XG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlVHBQYXNzd29yZFJlc2V0TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBhc3NlbWJseToge1xuICAgICAgICAgICAgLi4ubXV0YXRpb25JbnB1dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3RwLXBhc3N3b3JkLXJlc2V0L3RwLXBhc3N3b3JkLXJlc2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKU09OT2JqZWN0IH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEtleSB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRwQXNzZW1ibHlBcHByb3ZlcnMge1xuICBpZDogc3RyaW5nO1xuICB0cDoge1xuICAgIGlkOiBzdHJpbmc7XG4gIH07XG4gIHNoYXJlZEtleTogS2V5O1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwU3ViQXNzZW1ibHkge1xuICBpZDogc3RyaW5nO1xuICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gIHF1b3J1bTogbnVtYmVyO1xuICBzdWJqZWN0Q2lwaGVyRGF0YTogc3RyaW5nO1xuICBwbGFpblN1YmplY3RDaXBoZXJEYXRhOiBhbnk7XG4gIGFwcHJvdmVyczogVHBBc3NlbWJseUFwcHJvdmVyc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwQXNzZW1ibHkge1xuICBzaW5nbGVSZWplY3Q6IGJvb2xlYW47XG4gIHF1b3J1bTogbnVtYmVyO1xuICBzdWJqZWN0S2V5OiBLZXk7XG4gIGFzc2VtYmx5S2V5OiBLZXk7XG4gIGFzc2VtYmx5Q2lwaGVyRGF0YTogc3RyaW5nO1xuICBwbGFpbkFzc2VtYmx5Q2lwaGVyRGF0YTogYW55O1xuICBzdWJBc3NlbWJsaWVzOiBUcFN1YkFzc2VtYmx5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0IHtcbiAgaWQ6IHN0cmluZztcbiAgYXNzZW1ibHk6IFRwQXNzZW1ibHk7XG4gIGFwcGxpZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFJlc2V0UmVzdWx0IHtcbiAgaWQ6IHN0cmluZztcbiAgYXNzb2NpYXRlX3Jlc2V0X3VzZXJfdG9rZW46IHN0cmluZztcbiAgcmVzZXRfdXNlcm5hbWU6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import gql from 'graphql-tag';
|
|
2
|
+
import { SharedContactCardFields } from '../shared-contact-card/shared-contact-card.service';
|
|
3
|
+
import { KeyExchangeFields, UserSharedKeyFields, } from '../key-exchange/key-exchange.gql';
|
|
4
|
+
import { KeyGraphField } from '../_common/queries.gql';
|
|
5
|
+
export const TrustedPartyProperties = `
|
|
6
|
+
id
|
|
7
|
+
user {
|
|
8
|
+
id
|
|
9
|
+
username
|
|
10
|
+
}
|
|
11
|
+
other{
|
|
12
|
+
id
|
|
13
|
+
username,
|
|
14
|
+
features {
|
|
15
|
+
shareVault
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
sharedContactCard {
|
|
19
|
+
${SharedContactCardFields}
|
|
20
|
+
}
|
|
21
|
+
myContactCard {
|
|
22
|
+
${SharedContactCardFields}
|
|
23
|
+
}
|
|
24
|
+
sharedScenarios {
|
|
25
|
+
edges {
|
|
26
|
+
node {
|
|
27
|
+
id
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
sharedItems {
|
|
32
|
+
directories {
|
|
33
|
+
edges {
|
|
34
|
+
node {
|
|
35
|
+
id
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
currentUserSharedKey {
|
|
41
|
+
userSharedKey {
|
|
42
|
+
keyExchange {
|
|
43
|
+
${KeyExchangeFields}
|
|
44
|
+
}
|
|
45
|
+
${UserSharedKeyFields}
|
|
46
|
+
}
|
|
47
|
+
}`;
|
|
48
|
+
export const GetTrustedPartiesQuery = gql `
|
|
49
|
+
query GetTrustedPartiesQuery {
|
|
50
|
+
tps {
|
|
51
|
+
edges {
|
|
52
|
+
node {
|
|
53
|
+
${TrustedPartyProperties}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
${KeyGraphField}
|
|
58
|
+
}`;
|
|
59
|
+
export const GetAllTrustedPartiesQuery = gql `
|
|
60
|
+
query GetAllTrustedPartiesQuery($userId: ID, $isExpired: Boolean, $inviteState: String, $sentInviteState: String) {
|
|
61
|
+
tps {
|
|
62
|
+
edges {
|
|
63
|
+
node {
|
|
64
|
+
${TrustedPartyProperties}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
invites: keyExchanges(
|
|
69
|
+
responder: $userId
|
|
70
|
+
isExpired: $isExpired
|
|
71
|
+
state: $inviteState
|
|
72
|
+
orderBy: "state,-created"
|
|
73
|
+
) {
|
|
74
|
+
edges {
|
|
75
|
+
node {
|
|
76
|
+
${KeyExchangeFields}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
sentInvites: keyExchanges(
|
|
81
|
+
initiator: $userId
|
|
82
|
+
isExpired: $isExpired
|
|
83
|
+
state: $sentInviteState
|
|
84
|
+
orderBy: "state,-created"
|
|
85
|
+
) {
|
|
86
|
+
edges {
|
|
87
|
+
node {
|
|
88
|
+
${KeyExchangeFields}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
${KeyGraphField}
|
|
93
|
+
}`;
|
|
94
|
+
export const GetTrustedPartyQuery = gql `
|
|
95
|
+
query GetTrustedPartyQuery($partyId: LrRelayIdInput!) {
|
|
96
|
+
tp(id: $partyId) {
|
|
97
|
+
${TrustedPartyProperties}
|
|
98
|
+
}
|
|
99
|
+
${KeyGraphField}
|
|
100
|
+
}`;
|
|
101
|
+
export const DeclineTrustedPartyInvitationMutation = gql `
|
|
102
|
+
mutation DeclineKeyExchange($input: DeclineKeyExchangeInput!) {
|
|
103
|
+
declineKeyExchange(input: $input) {
|
|
104
|
+
keyExchange {
|
|
105
|
+
id
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
`;
|
|
110
|
+
export const CancelTrustedPartyInvitationMutation = gql `
|
|
111
|
+
mutation CancelKeyExchange($input: CancelKeyExchangeInput!) {
|
|
112
|
+
cancelKeyExchange(input: $input) {
|
|
113
|
+
keyExchange {
|
|
114
|
+
id
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
`;
|
|
119
|
+
export const DeleteTrustedPartyMutation = gql `
|
|
120
|
+
mutation DeleteTpMutation($input: DeleteTpInput!) {
|
|
121
|
+
deleteTp(input: $input) {
|
|
122
|
+
id
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
`;
|
|
126
|
+
export const ShareCategoryMutation = gql `
|
|
127
|
+
mutation ShareDirectory($input: ShareDirectoryInput!) {
|
|
128
|
+
shareDirectory(input: $input) {
|
|
129
|
+
tpDirectory {
|
|
130
|
+
item {
|
|
131
|
+
plainMeta
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
`;
|
|
137
|
+
export const UnshareCategoryMutation = gql `
|
|
138
|
+
mutation UnshareDirectory($input: UnshareDirectoryInput!) {
|
|
139
|
+
unshareDirectory(input: $input) {
|
|
140
|
+
tpDirectory {
|
|
141
|
+
item {
|
|
142
|
+
plainMeta
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
`;
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3RydXN0ZWQtcGFydHkvdHJ1c3RlZC1wYXJ0eS5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQzlCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzdGLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHOzs7Ozs7Ozs7Ozs7OztNQWNoQyx1QkFBdUI7OztNQUd2Qix1QkFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXFCbkIsaUJBQWlCOztRQUVuQixtQkFBbUI7O0lBRXZCLENBQUM7QUFFTCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUE7Ozs7O1VBSy9CLHNCQUFzQjs7OztJQUk1QixhQUFhO0VBQ2YsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7VUFLbEMsc0JBQXNCOzs7Ozs7Ozs7Ozs7VUFZdEIsaUJBQWlCOzs7Ozs7Ozs7Ozs7VUFZakIsaUJBQWlCOzs7O0lBSXZCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFBOzs7TUFHakMsc0JBQXNCOztJQUV4QixhQUFhO0VBQ2YsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Q0FRdkQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Q0FRdEQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQTs7Ozs7O0NBTTVDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Q0FVdkMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztDQVV6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZEZpZWxkcyB9IGZyb20gJy4uL3NoYXJlZC1jb250YWN0LWNhcmQvc2hhcmVkLWNvbnRhY3QtY2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEtleUV4Y2hhbmdlRmllbGRzLFxuICBVc2VyU2hhcmVkS2V5RmllbGRzLFxufSBmcm9tICcuLi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLmdxbCc7XG5pbXBvcnQgeyBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5cbmV4cG9ydCBjb25zdCBUcnVzdGVkUGFydHlQcm9wZXJ0aWVzID0gYFxuICBpZFxuICB1c2VyIHtcbiAgICBpZFxuICAgIHVzZXJuYW1lXG4gIH1cbiAgb3RoZXJ7XG4gICAgaWRcbiAgICB1c2VybmFtZSxcbiAgICBmZWF0dXJlcyB7XG4gICAgICBzaGFyZVZhdWx0XG4gICAgfVxuICB9XG4gIHNoYXJlZENvbnRhY3RDYXJkIHtcbiAgICAke1NoYXJlZENvbnRhY3RDYXJkRmllbGRzfVxuICB9XG4gIG15Q29udGFjdENhcmQge1xuICAgICR7U2hhcmVkQ29udGFjdENhcmRGaWVsZHN9XG4gIH1cbiAgc2hhcmVkU2NlbmFyaW9zIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2hhcmVkSXRlbXMge1xuICAgIGRpcmVjdG9yaWVzIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjdXJyZW50VXNlclNoYXJlZEtleSB7XG4gICAgdXNlclNoYXJlZEtleSB7XG4gICAgICBrZXlFeGNoYW5nZSB7XG4gICAgICAgICR7S2V5RXhjaGFuZ2VGaWVsZHN9XG4gICAgICB9XG4gICAgICAke1VzZXJTaGFyZWRLZXlGaWVsZHN9XG4gICAgfVxuICB9YDtcblxuZXhwb3J0IGNvbnN0IEdldFRydXN0ZWRQYXJ0aWVzUXVlcnkgPSBncWxgXG5xdWVyeSBHZXRUcnVzdGVkUGFydGllc1F1ZXJ5IHtcbiAgdHBzIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgJHtUcnVzdGVkUGFydHlQcm9wZXJ0aWVzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IEdldEFsbFRydXN0ZWRQYXJ0aWVzUXVlcnkgPSBncWxgXG5xdWVyeSBHZXRBbGxUcnVzdGVkUGFydGllc1F1ZXJ5KCR1c2VySWQ6IElELCAkaXNFeHBpcmVkOiBCb29sZWFuLCAkaW52aXRlU3RhdGU6IFN0cmluZywgJHNlbnRJbnZpdGVTdGF0ZTogU3RyaW5nKSB7XG4gIHRwcyB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7VHJ1c3RlZFBhcnR5UHJvcGVydGllc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaW52aXRlczoga2V5RXhjaGFuZ2VzKFxuICAgIHJlc3BvbmRlcjogJHVzZXJJZFxuICAgIGlzRXhwaXJlZDogJGlzRXhwaXJlZFxuICAgIHN0YXRlOiAkaW52aXRlU3RhdGVcbiAgICBvcmRlckJ5OiBcInN0YXRlLC1jcmVhdGVkXCJcbiAgKSB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7S2V5RXhjaGFuZ2VGaWVsZHN9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNlbnRJbnZpdGVzOiBrZXlFeGNoYW5nZXMoXG4gICAgaW5pdGlhdG9yOiAkdXNlcklkXG4gICAgaXNFeHBpcmVkOiAkaXNFeHBpcmVkXG4gICAgc3RhdGU6ICRzZW50SW52aXRlU3RhdGVcbiAgICBvcmRlckJ5OiBcInN0YXRlLC1jcmVhdGVkXCJcbiAgKSB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7S2V5RXhjaGFuZ2VGaWVsZHN9XG4gICAgICB9XG4gICAgfVxuICB9XG4gICR7S2V5R3JhcGhGaWVsZH1cbn1gO1xuXG5leHBvcnQgY29uc3QgR2V0VHJ1c3RlZFBhcnR5UXVlcnkgPSBncWxgXG5xdWVyeSBHZXRUcnVzdGVkUGFydHlRdWVyeSgkcGFydHlJZDogTHJSZWxheUlkSW5wdXQhKSB7XG4gIHRwKGlkOiAkcGFydHlJZCkge1xuICAgICR7VHJ1c3RlZFBhcnR5UHJvcGVydGllc31cbiAgfVxuICAke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IERlY2xpbmVUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIERlY2xpbmVLZXlFeGNoYW5nZSgkaW5wdXQ6IERlY2xpbmVLZXlFeGNoYW5nZUlucHV0ISkge1xuICAgIGRlY2xpbmVLZXlFeGNoYW5nZShpbnB1dDogJGlucHV0KSB7XG4gICAgICBrZXlFeGNoYW5nZSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQ2FuY2VsVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBDYW5jZWxLZXlFeGNoYW5nZSgkaW5wdXQ6IENhbmNlbEtleUV4Y2hhbmdlSW5wdXQhKSB7XG4gICAgY2FuY2VsS2V5RXhjaGFuZ2UoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAga2V5RXhjaGFuZ2Uge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVRydXN0ZWRQYXJ0eU11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBEZWxldGVUcE11dGF0aW9uKCRpbnB1dDogRGVsZXRlVHBJbnB1dCEpIHtcbiAgICBkZWxldGVUcChpbnB1dDogJGlucHV0KSB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFNoYXJlQ2F0ZWdvcnlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gU2hhcmVEaXJlY3RvcnkoJGlucHV0OiBTaGFyZURpcmVjdG9yeUlucHV0ISkge1xuICAgIHNoYXJlRGlyZWN0b3J5KGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIHRwRGlyZWN0b3J5IHtcbiAgICAgICAgaXRlbSB7XG4gICAgICAgICAgcGxhaW5NZXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVbnNoYXJlQ2F0ZWdvcnlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gVW5zaGFyZURpcmVjdG9yeSgkaW5wdXQ6IFVuc2hhcmVEaXJlY3RvcnlJbnB1dCEpIHtcbiAgICB1bnNoYXJlRGlyZWN0b3J5KGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIHRwRGlyZWN0b3J5IHtcbiAgICAgICAgaXRlbSB7XG4gICAgICAgICAgcGxhaW5NZXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG4iXX0=
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { LrApolloService } from '../api/lr-apollo.service';
|
|
5
|
+
import { SharedContactCardService } from '../shared-contact-card/shared-contact-card.service';
|
|
6
|
+
import { LifeReadyAuthService } from '../auth/life-ready-auth.service';
|
|
7
|
+
import { EncryptionService } from '../encryption/encryption.service';
|
|
8
|
+
import { KeyExchangeService } from '../key-exchange/key-exchange.service';
|
|
9
|
+
import { KeyFactoryService } from '../key/key-factory.service';
|
|
10
|
+
import { KeyGraphService } from '../key/key-graph.service';
|
|
11
|
+
import { KeyService } from '../key/key.service';
|
|
12
|
+
import { ContactCardName } from '../profile/profile.types';
|
|
13
|
+
import { UserService } from '../user/user.service';
|
|
14
|
+
import { CancelTrustedPartyInvitationMutation, DeclineTrustedPartyInvitationMutation, DeleteTrustedPartyMutation, GetAllTrustedPartiesQuery, GetTrustedPartiesQuery, GetTrustedPartyQuery, ShareCategoryMutation, UnshareCategoryMutation, } from './trusted-party.gql';
|
|
15
|
+
import { TrustedPartyInviteStatus, TrustedPartyRoleType, TrustedPartyType, } from './trusted-party.types';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
import * as i1 from "@angular/common/http";
|
|
18
|
+
import * as i2 from "../api/lr-apollo.service";
|
|
19
|
+
import * as i3 from "../shared-contact-card/shared-contact-card.service";
|
|
20
|
+
import * as i4 from "../user/user.service";
|
|
21
|
+
import * as i5 from "../auth/life-ready-auth.service";
|
|
22
|
+
import * as i6 from "../key-exchange/key-exchange.service";
|
|
23
|
+
import * as i7 from "../key/key-graph.service";
|
|
24
|
+
import * as i8 from "../key/key.service";
|
|
25
|
+
import * as i9 from "../key/key-factory.service";
|
|
26
|
+
import * as i10 from "../encryption/encryption.service";
|
|
27
|
+
export class TrustedPartyService {
|
|
28
|
+
constructor(http, lrApollo, sharedContactCardService, userService, authService, keyExchangeService, keyGraphService, keyService, keyFactory, encryptionService) {
|
|
29
|
+
this.http = http;
|
|
30
|
+
this.lrApollo = lrApollo;
|
|
31
|
+
this.sharedContactCardService = sharedContactCardService;
|
|
32
|
+
this.userService = userService;
|
|
33
|
+
this.authService = authService;
|
|
34
|
+
this.keyExchangeService = keyExchangeService;
|
|
35
|
+
this.keyGraphService = keyGraphService;
|
|
36
|
+
this.keyService = keyService;
|
|
37
|
+
this.keyFactory = keyFactory;
|
|
38
|
+
this.encryptionService = encryptionService;
|
|
39
|
+
}
|
|
40
|
+
getTrustedParties() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const { tps } = yield this.lrApollo.query({
|
|
43
|
+
query: GetTrustedPartiesQuery,
|
|
44
|
+
});
|
|
45
|
+
return yield Promise.all(tps.edges.map((x) => this.mapTrustedParty(x.node)));
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
getAllTrustedParties() {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const user = yield this.authService.getUser();
|
|
51
|
+
const { tps, invites, sentInvites } = yield this.lrApollo.query({
|
|
52
|
+
query: GetAllTrustedPartiesQuery,
|
|
53
|
+
variables: {
|
|
54
|
+
userId: user.id,
|
|
55
|
+
isExpired: false,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
parties: (yield Promise.all(tps.edges.map((x) => this.mapTrustedParty(x.node)))).filter((x) => x),
|
|
60
|
+
invites: (yield Promise.all(invites.edges.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
return this.mapInvite(yield this.keyExchangeService.decryptKeyExchange(x.node));
|
|
62
|
+
}))))
|
|
63
|
+
.filter((x) => x.status !== TrustedPartyInviteStatus.Completed)
|
|
64
|
+
.filter((x) => x.status !== TrustedPartyInviteStatus.Invited || x.actionRequired),
|
|
65
|
+
sentInvites: (yield Promise.all(sentInvites.edges.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
return this.mapInvite(yield this.keyExchangeService.decryptKeyExchange(x.node));
|
|
67
|
+
})))).filter((x) => x.status !== TrustedPartyInviteStatus.Completed),
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
getTrustedParty(partyId) {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
const { tp } = yield this.lrApollo.query({
|
|
74
|
+
query: GetTrustedPartyQuery,
|
|
75
|
+
variables: { partyId },
|
|
76
|
+
});
|
|
77
|
+
return yield this.mapTrustedParty(tp);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
getTrustedPartyRoles(roleType = TrustedPartyRoleType.General) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
if (!this.trustedPartyRoles) {
|
|
83
|
+
this.trustedPartyRoles = yield this.http
|
|
84
|
+
.get('/assets/meta/trusted-party-roles.json')
|
|
85
|
+
.toPromise();
|
|
86
|
+
}
|
|
87
|
+
return Promise.resolve(this.trustedPartyRoles.filter((x) => x.roleType === roleType));
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
findByEmail(email) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
try {
|
|
93
|
+
const user = yield this.userService.getUserByEmail(email);
|
|
94
|
+
return user
|
|
95
|
+
? {
|
|
96
|
+
id: user.id,
|
|
97
|
+
email,
|
|
98
|
+
username: user.username,
|
|
99
|
+
isTrustedParty: user.haveTp,
|
|
100
|
+
isMe: user.isCurrentUser,
|
|
101
|
+
}
|
|
102
|
+
: null;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
inviteTrustedParty(invite) {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const params = {
|
|
112
|
+
responderUsername: invite.party.username,
|
|
113
|
+
email: invite.party.email,
|
|
114
|
+
message: {
|
|
115
|
+
name: invite.party.name,
|
|
116
|
+
email: invite.party.email,
|
|
117
|
+
message: invite.party.message,
|
|
118
|
+
permissions: invite.permissions,
|
|
119
|
+
},
|
|
120
|
+
contactCard: {
|
|
121
|
+
plainOwnerCipherDataJson: null,
|
|
122
|
+
plainSharedCipherDataJson: invite.mySharedDetails,
|
|
123
|
+
ownerPlainData: {
|
|
124
|
+
name: new ContactCardName(invite.mySharedDetails.name),
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
yield this.keyExchangeService.initiateOtk(params);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
cancelInvitation(inviteId) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
yield this.lrApollo.mutate({
|
|
134
|
+
mutation: CancelTrustedPartyInvitationMutation,
|
|
135
|
+
variables: {
|
|
136
|
+
input: {
|
|
137
|
+
id: inviteId,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
getInvitation(inviteId, inviteToken, key) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
const exchange = yield this.keyExchangeService.getKeyExchange(inviteId, {
|
|
146
|
+
token: inviteToken,
|
|
147
|
+
otKeyK: key,
|
|
148
|
+
});
|
|
149
|
+
return this.mapInvite(exchange);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
acceptInvitation(invite) {
|
|
153
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
const params = {
|
|
155
|
+
id: invite.inviteId,
|
|
156
|
+
token: invite.inviteToken,
|
|
157
|
+
decryptedOtk: invite.decryptedOtk,
|
|
158
|
+
initiatorContactCard: null,
|
|
159
|
+
responderContactCard: {
|
|
160
|
+
plainOwnerCipherDataJson: null,
|
|
161
|
+
plainSharedCipherDataJson: invite.mySharedDetails,
|
|
162
|
+
ownerPlainData: {
|
|
163
|
+
name: new ContactCardName(invite.mySharedDetails.name),
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
const { tp } = yield this.keyExchangeService.respondOtk(params);
|
|
168
|
+
return tp.id;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
declineInvitation(inviteId, inviteToken) {
|
|
172
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
173
|
+
yield this.lrApollo.mutate({
|
|
174
|
+
mutation: DeclineTrustedPartyInvitationMutation,
|
|
175
|
+
variables: {
|
|
176
|
+
input: {
|
|
177
|
+
id: inviteId,
|
|
178
|
+
token: inviteToken,
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
confirmInvitation(confirm) {
|
|
185
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
const { tp } = yield this.keyExchangeService.completeOtk(confirm.inviteId, confirm.initiatorRootKeyCipher, confirm.initiatorOneTimePbkCipher, null);
|
|
187
|
+
return tp.id;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
removeTrustedParty(partyId) {
|
|
191
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
192
|
+
yield this.lrApollo.mutate({
|
|
193
|
+
mutation: DeleteTrustedPartyMutation,
|
|
194
|
+
variables: {
|
|
195
|
+
input: {
|
|
196
|
+
id: partyId,
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
setCategoryAccessLevel(categoryId, keyId, trustedParty, accessLevel) {
|
|
203
|
+
return accessLevel
|
|
204
|
+
? this.shareDirectory(categoryId, keyId, trustedParty, accessLevel)
|
|
205
|
+
: this.unshareDirectory(categoryId, trustedParty.id);
|
|
206
|
+
}
|
|
207
|
+
setRecordAccessLevel(recordId, keyId, trustedParty, accessLevel) {
|
|
208
|
+
return accessLevel
|
|
209
|
+
? this.shareDirectory(recordId, keyId, trustedParty, accessLevel)
|
|
210
|
+
: this.unshareDirectory(recordId, trustedParty.id);
|
|
211
|
+
}
|
|
212
|
+
shareDirectory(directoryId, keyId, trustedParty, accessLevel) {
|
|
213
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
214
|
+
const key = yield this.keyGraphService.getKey(keyId);
|
|
215
|
+
const wrappingKey = yield this.keyGraphService.getKey(trustedParty.userSharedKey.sharedKey.id);
|
|
216
|
+
const wrappedKey = yield this.encryptionService.encrypt(wrappingKey.jwk, key.jwk.toJSON(true));
|
|
217
|
+
yield this.lrApollo.mutate({
|
|
218
|
+
mutation: ShareCategoryMutation,
|
|
219
|
+
variables: {
|
|
220
|
+
input: {
|
|
221
|
+
id: directoryId,
|
|
222
|
+
tpId: trustedParty.id,
|
|
223
|
+
accessRole: accessLevel,
|
|
224
|
+
keyId: key.id,
|
|
225
|
+
wrappingKeyId: wrappingKey.id,
|
|
226
|
+
wrappedKey: JSON.stringify(wrappedKey),
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
unshareDirectory(directoryId, trustedPartyId) {
|
|
233
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
yield this.lrApollo.mutate({
|
|
235
|
+
mutation: UnshareCategoryMutation,
|
|
236
|
+
variables: {
|
|
237
|
+
input: {
|
|
238
|
+
id: directoryId,
|
|
239
|
+
tpId: trustedPartyId,
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
mapTrustedParty(tp) {
|
|
246
|
+
var _a;
|
|
247
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
248
|
+
try {
|
|
249
|
+
const contactCard = tp.sharedContactCard &&
|
|
250
|
+
(yield this.sharedContactCardService.decryptTrustedPartyDetails(tp.sharedContactCard));
|
|
251
|
+
const myContactCard = tp.myContactCard &&
|
|
252
|
+
(yield this.sharedContactCardService.decryptSharedTrustedPartyDetails(tp.myContactCard));
|
|
253
|
+
return {
|
|
254
|
+
id: tp.id,
|
|
255
|
+
type: TrustedPartyType.User,
|
|
256
|
+
hasScenarios: !!tp.sharedScenarios.edges.length,
|
|
257
|
+
hasSharedVault: !!tp.sharedItems.directories.edges.length,
|
|
258
|
+
name: contactCard && contactCard.name && contactCard.name.name,
|
|
259
|
+
details: contactCard,
|
|
260
|
+
mySharedDetails: myContactCard,
|
|
261
|
+
userSharedKey: tp.currentUserSharedKey.userSharedKey,
|
|
262
|
+
username: tp.other.username,
|
|
263
|
+
features: {
|
|
264
|
+
sharedVault: {
|
|
265
|
+
hasAccess: (((_a = tp.other.features) === null || _a === void 0 ? void 0 : _a.shareVault) || ['noaccess'])[0] === 'access',
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
console.error('Failed to decrypt Trusted Party.', e, tp);
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
mapInvite(exchange) {
|
|
277
|
+
var _a, _b;
|
|
278
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
279
|
+
const contactCard = exchange.contactCard;
|
|
280
|
+
const name = exchange.isInitiator
|
|
281
|
+
? (_a = exchange.myMessage) === null || _a === void 0 ? void 0 : _a.name : contactCard && contactCard.name && contactCard.name.name;
|
|
282
|
+
const email = exchange.isInitiator
|
|
283
|
+
? (_b = exchange.myMessage) === null || _b === void 0 ? void 0 : _b.email : (contactCard && contactCard.email) || exchange.responderEmailAddress;
|
|
284
|
+
return {
|
|
285
|
+
id: exchange.id,
|
|
286
|
+
type: TrustedPartyType.User,
|
|
287
|
+
status: exchange.state,
|
|
288
|
+
token: exchange.token,
|
|
289
|
+
tokenExpiry: exchange.tokenExpiryTime,
|
|
290
|
+
decryptedOtk: exchange.decryptedOtk,
|
|
291
|
+
name,
|
|
292
|
+
email,
|
|
293
|
+
isSender: exchange.isInitiator,
|
|
294
|
+
actionRequired: exchange.isInitiator
|
|
295
|
+
? exchange.initiatorActionRequired
|
|
296
|
+
: exchange.responderActionRequired,
|
|
297
|
+
rootKeyCipher: exchange.initiatorRootKeyCipher,
|
|
298
|
+
pbkCipher: exchange.otk.initiatorOneTimePbkCipher,
|
|
299
|
+
isExpired: exchange.isExpired,
|
|
300
|
+
details: contactCard,
|
|
301
|
+
message: exchange.message,
|
|
302
|
+
mySharedDetails: exchange.myContactCard,
|
|
303
|
+
mySharedMessage: exchange.myMessage,
|
|
304
|
+
};
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
TrustedPartyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TrustedPartyService_Factory() { return new TrustedPartyService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.LrApolloService), i0.ɵɵinject(i3.SharedContactCardService), i0.ɵɵinject(i4.UserService), i0.ɵɵinject(i5.LifeReadyAuthService), i0.ɵɵinject(i6.KeyExchangeService), i0.ɵɵinject(i7.KeyGraphService), i0.ɵɵinject(i8.KeyService), i0.ɵɵinject(i9.KeyFactoryService), i0.ɵɵinject(i10.EncryptionService)); }, token: TrustedPartyService, providedIn: "root" });
|
|
309
|
+
TrustedPartyService.decorators = [
|
|
310
|
+
{ type: Injectable, args: [{
|
|
311
|
+
providedIn: 'root',
|
|
312
|
+
},] }
|
|
313
|
+
];
|
|
314
|
+
TrustedPartyService.ctorParameters = () => [
|
|
315
|
+
{ type: HttpClient },
|
|
316
|
+
{ type: LrApolloService },
|
|
317
|
+
{ type: SharedContactCardService },
|
|
318
|
+
{ type: UserService },
|
|
319
|
+
{ type: LifeReadyAuthService },
|
|
320
|
+
{ type: KeyExchangeService },
|
|
321
|
+
{ type: KeyGraphService },
|
|
322
|
+
{ type: KeyService },
|
|
323
|
+
{ type: KeyFactoryService },
|
|
324
|
+
{ type: EncryptionService }
|
|
325
|
+
];
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90cnVzdGVkLXBhcnR5L3RydXN0ZWQtcGFydHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBSzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQywwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFRTCx3QkFBd0IsRUFFeEIsb0JBQW9CLEVBQ3BC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UUFBUSxDQUFDLHNCQUFzQjtnQkFDOUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCO2dCQUNqRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzdCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYTtnQkFDdkMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxTQUFTO2FBQ3BDLENBQUM7O0tBQ0g7Ozs7WUE3VkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUEzQ1EsVUFBVTtZQUVWLGVBQWU7WUFDZix3QkFBd0I7WUFheEIsV0FBVztZQVpYLG9CQUFvQjtZQUdwQixrQkFBa0I7WUFNbEIsZUFBZTtZQUNmLFVBQVU7WUFGVixpQkFBaUI7WUFOakIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQgeyBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQtY29udGFjdC1jYXJkL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjZXNzTGV2ZWwgfSBmcm9tICcuLi9jYXRlZ29yeS9jYXRlZ29yeS50eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUV4Y2hhbmdlU2VydmljZSB9IGZyb20gJy4uL2tleS1leGNoYW5nZS9rZXktZXhjaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBEZWNyeXB0ZWRLZXlFeGNoYW5nZSxcbiAgUmVzcG9uZE90a0lucHV0LFxufSBmcm9tICcuLi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLnR5cGVzJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGFjdENhcmROYW1lIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2FuY2VsVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICBEZWNsaW5lVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICBEZWxldGVUcnVzdGVkUGFydHlNdXRhdGlvbixcbiAgR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgR2V0VHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgR2V0VHJ1c3RlZFBhcnR5UXVlcnksXG4gIFNoYXJlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgVW5zaGFyZUNhdGVnb3J5TXV0YXRpb24sXG59IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eS5ncWwnO1xuaW1wb3J0IHtcbiAgQWNjZXB0VHJ1c3RlZFBhcnR5SW52aXRlLFxuICBDb25maXJtVHJ1c3RlZFBhcnR5SW52aXRlLFxuICBGb3VuZFRydXN0ZWRQYXJ0eSxcbiAgSW52aXRlVHJ1c3RlZFBhcnR5LFxuICBUcnVzdGVkUGFydGllcyxcbiAgVHJ1c3RlZFBhcnR5LFxuICBUcnVzdGVkUGFydHlJbnZpdGUsXG4gIFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cyxcbiAgVHJ1c3RlZFBhcnR5Um9sZSxcbiAgVHJ1c3RlZFBhcnR5Um9sZVR5cGUsXG4gIFRydXN0ZWRQYXJ0eVR5cGUsXG59IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eS50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcnVzdGVkUGFydHlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0cnVzdGVkUGFydHlSb2xlczogVHJ1c3RlZFBhcnR5Um9sZVtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGxyQXBvbGxvOiBMckFwb2xsb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaGFyZWRDb250YWN0Q2FyZFNlcnZpY2U6IFNoYXJlZENvbnRhY3RDYXJkU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBMaWZlUmVhZHlBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIGtleUV4Y2hhbmdlU2VydmljZTogS2V5RXhjaGFuZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5R3JhcGhTZXJ2aWNlOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS2V5RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcnVzdGVkUGFydGllcygpOiBQcm9taXNlPFRydXN0ZWRQYXJ0eVtdPiB7XG4gICAgY29uc3QgeyB0cHMgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogR2V0VHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgICB9KTtcbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0cHMuZWRnZXMubWFwKCh4KSA9PiB0aGlzLm1hcFRydXN0ZWRQYXJ0eSh4Lm5vZGUpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsVHJ1c3RlZFBhcnRpZXMoKTogUHJvbWlzZTxUcnVzdGVkUGFydGllcz4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXIoKTtcbiAgICBjb25zdCB7IHRwcywgaW52aXRlcywgc2VudEludml0ZXMgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICB1c2VySWQ6IHVzZXIuaWQsXG4gICAgICAgIGlzRXhwaXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcnRpZXM6IChcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGw8VHJ1c3RlZFBhcnR5PihcbiAgICAgICAgICB0cHMuZWRnZXMubWFwKCh4KSA9PiB0aGlzLm1hcFRydXN0ZWRQYXJ0eSh4Lm5vZGUpKVxuICAgICAgICApXG4gICAgICApLmZpbHRlcigoeCkgPT4geCksXG4gICAgICBpbnZpdGVzOiAoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsPFRydXN0ZWRQYXJ0eUludml0ZT4oXG4gICAgICAgICAgaW52aXRlcy5lZGdlcy5tYXAoYXN5bmMgKHgpID0+XG4gICAgICAgICAgICB0aGlzLm1hcEludml0ZShcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuZGVjcnlwdEtleUV4Y2hhbmdlKHgubm9kZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5zdGF0dXMgIT09IFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cy5Db21wbGV0ZWQpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnN0YXR1cyAhPT0gVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLkludml0ZWQgfHwgeC5hY3Rpb25SZXF1aXJlZFxuICAgICAgICApLFxuICAgICAgc2VudEludml0ZXM6IChcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGw8VHJ1c3RlZFBhcnR5SW52aXRlPihcbiAgICAgICAgICBzZW50SW52aXRlcy5lZGdlcy5tYXAoYXN5bmMgKHgpID0+XG4gICAgICAgICAgICB0aGlzLm1hcEludml0ZShcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuZGVjcnlwdEtleUV4Y2hhbmdlKHgubm9kZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICkuZmlsdGVyKCh4KSA9PiB4LnN0YXR1cyAhPT0gVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLkNvbXBsZXRlZCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUcnVzdGVkUGFydHkocGFydHlJZDogc3RyaW5nKTogUHJvbWlzZTxUcnVzdGVkUGFydHk+IHtcbiAgICBjb25zdCB7IHRwIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PGFueT4oe1xuICAgICAgcXVlcnk6IEdldFRydXN0ZWRQYXJ0eVF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7IHBhcnR5SWQgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5tYXBUcnVzdGVkUGFydHkodHApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRydXN0ZWRQYXJ0eVJvbGVzKFxuICAgIHJvbGVUeXBlOiBUcnVzdGVkUGFydHlSb2xlVHlwZSA9IFRydXN0ZWRQYXJ0eVJvbGVUeXBlLkdlbmVyYWxcbiAgKTogUHJvbWlzZTxUcnVzdGVkUGFydHlSb2xlW10+IHtcbiAgICBpZiAoIXRoaXMudHJ1c3RlZFBhcnR5Um9sZXMpIHtcbiAgICAgIHRoaXMudHJ1c3RlZFBhcnR5Um9sZXMgPSBhd2FpdCB0aGlzLmh0dHBcbiAgICAgICAgLmdldDxUcnVzdGVkUGFydHlSb2xlW10+KCcvYXNzZXRzL21ldGEvdHJ1c3RlZC1wYXJ0eS1yb2xlcy5qc29uJylcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgdGhpcy50cnVzdGVkUGFydHlSb2xlcy5maWx0ZXIoKHgpID0+IHgucm9sZVR5cGUgPT09IHJvbGVUeXBlKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmluZEJ5RW1haWwoZW1haWw6IHN0cmluZyk6IFByb21pc2U8Rm91bmRUcnVzdGVkUGFydHk+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckJ5RW1haWwoZW1haWwpO1xuXG4gICAgICByZXR1cm4gdXNlclxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICB1c2VybmFtZTogdXNlci51c2VybmFtZSxcbiAgICAgICAgICAgIGlzVHJ1c3RlZFBhcnR5OiB1c2VyLmhhdmVUcCxcbiAgICAgICAgICAgIGlzTWU6IHVzZXIuaXNDdXJyZW50VXNlcixcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW52aXRlVHJ1c3RlZFBhcnR5KGludml0ZTogSW52aXRlVHJ1c3RlZFBhcnR5KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcmVzcG9uZGVyVXNlcm5hbWU6IGludml0ZS5wYXJ0eS51c2VybmFtZSxcbiAgICAgIGVtYWlsOiBpbnZpdGUucGFydHkuZW1haWwsXG4gICAgICBtZXNzYWdlOiB7XG4gICAgICAgIG5hbWU6IGludml0ZS5wYXJ0eS5uYW1lLFxuICAgICAgICBlbWFpbDogaW52aXRlLnBhcnR5LmVtYWlsLFxuICAgICAgICBtZXNzYWdlOiBpbnZpdGUucGFydHkubWVzc2FnZSxcbiAgICAgICAgcGVybWlzc2lvbnM6IGludml0ZS5wZXJtaXNzaW9ucyxcbiAgICAgIH0sXG4gICAgICBjb250YWN0Q2FyZDoge1xuICAgICAgICBwbGFpbk93bmVyQ2lwaGVyRGF0YUpzb246IG51bGwsXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YUpzb246IGludml0ZS5teVNoYXJlZERldGFpbHMsXG4gICAgICAgIG93bmVyUGxhaW5EYXRhOiB7XG4gICAgICAgICAgbmFtZTogbmV3IENvbnRhY3RDYXJkTmFtZShpbnZpdGUubXlTaGFyZWREZXRhaWxzLm5hbWUpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLmluaXRpYXRlT3RrKHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuY2VsSW52aXRhdGlvbihpbnZpdGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IENhbmNlbFRydXN0ZWRQYXJ0eUludml0YXRpb25NdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBpbnZpdGVJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52aXRhdGlvbihcbiAgICBpbnZpdGVJZDogc3RyaW5nLFxuICAgIGludml0ZVRva2VuOiBzdHJpbmcsXG4gICAga2V5OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxUcnVzdGVkUGFydHlJbnZpdGU+IHtcbiAgICBjb25zdCBleGNoYW5nZSA9IGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLmdldEtleUV4Y2hhbmdlKGludml0ZUlkLCB7XG4gICAgICB0b2tlbjogaW52aXRlVG9rZW4sXG4gICAgICBvdEtleUs6IGtleSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLm1hcEludml0ZShleGNoYW5nZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWNjZXB0SW52aXRhdGlvbihcbiAgICBpbnZpdGU6IEFjY2VwdFRydXN0ZWRQYXJ0eUludml0ZVxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHBhcmFtczogUmVzcG9uZE90a0lucHV0ID0ge1xuICAgICAgaWQ6IGludml0ZS5pbnZpdGVJZCxcbiAgICAgIHRva2VuOiBpbnZpdGUuaW52aXRlVG9rZW4sXG4gICAgICBkZWNyeXB0ZWRPdGs6IGludml0ZS5kZWNyeXB0ZWRPdGssXG4gICAgICBpbml0aWF0b3JDb250YWN0Q2FyZDogbnVsbCxcbiAgICAgIHJlc3BvbmRlckNvbnRhY3RDYXJkOiB7XG4gICAgICAgIHBsYWluT3duZXJDaXBoZXJEYXRhSnNvbjogbnVsbCxcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhSnNvbjogaW52aXRlLm15U2hhcmVkRGV0YWlscyxcbiAgICAgICAgb3duZXJQbGFpbkRhdGE6IHtcbiAgICAgICAgICBuYW1lOiBuZXcgQ29udGFjdENhcmROYW1lKGludml0ZS5teVNoYXJlZERldGFpbHMubmFtZSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCB7IHRwIH0gPSBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5yZXNwb25kT3RrKHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdHAuaWQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVjbGluZUludml0YXRpb24oXG4gICAgaW52aXRlSWQ6IHN0cmluZyxcbiAgICBpbnZpdGVUb2tlbjogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBEZWNsaW5lVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IGludml0ZUlkLFxuICAgICAgICAgIHRva2VuOiBpbnZpdGVUb2tlbixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29uZmlybUludml0YXRpb24oXG4gICAgY29uZmlybTogQ29uZmlybVRydXN0ZWRQYXJ0eUludml0ZVxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHsgdHAgfSA9IGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLmNvbXBsZXRlT3RrKFxuICAgICAgY29uZmlybS5pbnZpdGVJZCxcbiAgICAgIGNvbmZpcm0uaW5pdGlhdG9yUm9vdEtleUNpcGhlcixcbiAgICAgIGNvbmZpcm0uaW5pdGlhdG9yT25lVGltZVBia0NpcGhlcixcbiAgICAgIG51bGxcbiAgICApO1xuICAgIHJldHVybiB0cC5pZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZW1vdmVUcnVzdGVkUGFydHkocGFydHlJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IERlbGV0ZVRydXN0ZWRQYXJ0eU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQ6IHBhcnR5SWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldENhdGVnb3J5QWNjZXNzTGV2ZWwoXG4gICAgY2F0ZWdvcnlJZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgdHJ1c3RlZFBhcnR5OiBUcnVzdGVkUGFydHksXG4gICAgYWNjZXNzTGV2ZWw/OiBBY2Nlc3NMZXZlbFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYWNjZXNzTGV2ZWxcbiAgICAgID8gdGhpcy5zaGFyZURpcmVjdG9yeShjYXRlZ29yeUlkLCBrZXlJZCwgdHJ1c3RlZFBhcnR5LCBhY2Nlc3NMZXZlbClcbiAgICAgIDogdGhpcy51bnNoYXJlRGlyZWN0b3J5KGNhdGVnb3J5SWQsIHRydXN0ZWRQYXJ0eS5pZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVjb3JkQWNjZXNzTGV2ZWwoXG4gICAgcmVjb3JkSWQ6IHN0cmluZyxcbiAgICBrZXlJZDogc3RyaW5nLFxuICAgIHRydXN0ZWRQYXJ0eTogVHJ1c3RlZFBhcnR5LFxuICAgIGFjY2Vzc0xldmVsOiBBY2Nlc3NMZXZlbFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYWNjZXNzTGV2ZWxcbiAgICAgID8gdGhpcy5zaGFyZURpcmVjdG9yeShyZWNvcmRJZCwga2V5SWQsIHRydXN0ZWRQYXJ0eSwgYWNjZXNzTGV2ZWwpXG4gICAgICA6IHRoaXMudW5zaGFyZURpcmVjdG9yeShyZWNvcmRJZCwgdHJ1c3RlZFBhcnR5LmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2hhcmVEaXJlY3RvcnkoXG4gICAgZGlyZWN0b3J5SWQ6IHN0cmluZyxcbiAgICBrZXlJZDogc3RyaW5nLFxuICAgIHRydXN0ZWRQYXJ0eTogVHJ1c3RlZFBhcnR5LFxuICAgIGFjY2Vzc0xldmVsOiBBY2Nlc3NMZXZlbFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRLZXkoa2V5SWQpO1xuICAgIGNvbnN0IHdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UuZ2V0S2V5KFxuICAgICAgdHJ1c3RlZFBhcnR5LnVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkXG4gICAgKTtcbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KFxuICAgICAgd3JhcHBpbmdLZXkuandrLFxuICAgICAga2V5Lmp3ay50b0pTT04odHJ1ZSlcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IFNoYXJlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBkaXJlY3RvcnlJZCxcbiAgICAgICAgICB0cElkOiB0cnVzdGVkUGFydHkuaWQsXG4gICAgICAgICAgYWNjZXNzUm9sZTogYWNjZXNzTGV2ZWwsXG4gICAgICAgICAga2V5SWQ6IGtleS5pZCxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiB3cmFwcGluZ0tleS5pZCxcbiAgICAgICAgICB3cmFwcGVkS2V5OiBKU09OLnN0cmluZ2lmeSh3cmFwcGVkS2V5KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVuc2hhcmVEaXJlY3RvcnkoXG4gICAgZGlyZWN0b3J5SWQ6IHN0cmluZyxcbiAgICB0cnVzdGVkUGFydHlJZDogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBVbnNoYXJlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkOiBkaXJlY3RvcnlJZCxcbiAgICAgICAgICB0cElkOiB0cnVzdGVkUGFydHlJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWFwVHJ1c3RlZFBhcnR5KHRwOiBhbnkpOiBQcm9taXNlPFRydXN0ZWRQYXJ0eT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb250YWN0Q2FyZCA9XG4gICAgICAgIHRwLnNoYXJlZENvbnRhY3RDYXJkICYmXG4gICAgICAgIChhd2FpdCB0aGlzLnNoYXJlZENvbnRhY3RDYXJkU2VydmljZS5kZWNyeXB0VHJ1c3RlZFBhcnR5RGV0YWlscyhcbiAgICAgICAgICB0cC5zaGFyZWRDb250YWN0Q2FyZFxuICAgICAgICApKTtcbiAgICAgIGNvbnN0IG15Q29udGFjdENhcmQgPVxuICAgICAgICB0cC5teUNvbnRhY3RDYXJkICYmXG4gICAgICAgIChhd2FpdCB0aGlzLnNoYXJlZENvbnRhY3RDYXJkU2VydmljZS5kZWNyeXB0U2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscyhcbiAgICAgICAgICB0cC5teUNvbnRhY3RDYXJkXG4gICAgICAgICkpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdHAuaWQsXG4gICAgICAgIHR5cGU6IFRydXN0ZWRQYXJ0eVR5cGUuVXNlciwgLy8gVE9ETzogd2hlbiBwYXJ0bmVyc1xuICAgICAgICBoYXNTY2VuYXJpb3M6ICEhdHAuc2hhcmVkU2NlbmFyaW9zLmVkZ2VzLmxlbmd0aCxcbiAgICAgICAgaGFzU2hhcmVkVmF1bHQ6ICEhdHAuc2hhcmVkSXRlbXMuZGlyZWN0b3JpZXMuZWRnZXMubGVuZ3RoLFxuICAgICAgICBuYW1lOiBjb250YWN0Q2FyZCAmJiBjb250YWN0Q2FyZC5uYW1lICYmIGNvbnRhY3RDYXJkLm5hbWUubmFtZSxcbiAgICAgICAgZGV0YWlsczogY29udGFjdENhcmQsXG4gICAgICAgIG15U2hhcmVkRGV0YWlsczogbXlDb250YWN0Q2FyZCxcbiAgICAgICAgdXNlclNoYXJlZEtleTogdHAuY3VycmVudFVzZXJTaGFyZWRLZXkudXNlclNoYXJlZEtleSxcbiAgICAgICAgdXNlcm5hbWU6IHRwLm90aGVyLnVzZXJuYW1lLFxuICAgICAgICBmZWF0dXJlczoge1xuICAgICAgICAgIHNoYXJlZFZhdWx0OiB7XG4gICAgICAgICAgICBoYXNBY2Nlc3M6XG4gICAgICAgICAgICAgICh0cC5vdGhlci5mZWF0dXJlcz8uc2hhcmVWYXVsdCB8fCBbJ25vYWNjZXNzJ10pWzBdID09PSAnYWNjZXNzJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZGVjcnlwdCBUcnVzdGVkIFBhcnR5LicsIGUsIHRwKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbWFwSW52aXRlKFxuICAgIGV4Y2hhbmdlOiBEZWNyeXB0ZWRLZXlFeGNoYW5nZVxuICApOiBQcm9taXNlPFRydXN0ZWRQYXJ0eUludml0ZT4ge1xuICAgIGNvbnN0IGNvbnRhY3RDYXJkID0gZXhjaGFuZ2UuY29udGFjdENhcmQ7XG4gICAgY29uc3QgbmFtZSA9IGV4Y2hhbmdlLmlzSW5pdGlhdG9yXG4gICAgICA/IGV4Y2hhbmdlLm15TWVzc2FnZT8ubmFtZVxuICAgICAgOiBjb250YWN0Q2FyZCAmJiBjb250YWN0Q2FyZC5uYW1lICYmIGNvbnRhY3RDYXJkLm5hbWUubmFtZTtcbiAgICBjb25zdCBlbWFpbCA9IGV4Y2hhbmdlLmlzSW5pdGlhdG9yXG4gICAgICA/IGV4Y2hhbmdlLm15TWVzc2FnZT8uZW1haWxcbiAgICAgIDogKGNvbnRhY3RDYXJkICYmIGNvbnRhY3RDYXJkLmVtYWlsKSB8fCBleGNoYW5nZS5yZXNwb25kZXJFbWFpbEFkZHJlc3M7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGV4Y2hhbmdlLmlkLFxuICAgICAgdHlwZTogVHJ1c3RlZFBhcnR5VHlwZS5Vc2VyLCAvLyB0b2RvIHdoZW4gcGFydG5lcnNcbiAgICAgIHN0YXR1czogZXhjaGFuZ2Uuc3RhdGUgYXMgdW5rbm93biBhcyBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMsXG4gICAgICB0b2tlbjogZXhjaGFuZ2UudG9rZW4sXG4gICAgICB0b2tlbkV4cGlyeTogZXhjaGFuZ2UudG9rZW5FeHBpcnlUaW1lLFxuICAgICAgZGVjcnlwdGVkT3RrOiBleGNoYW5nZS5kZWNyeXB0ZWRPdGssXG4gICAgICBuYW1lLFxuICAgICAgZW1haWwsXG4gICAgICBpc1NlbmRlcjogZXhjaGFuZ2UuaXNJbml0aWF0b3IsXG4gICAgICBhY3Rpb25SZXF1aXJlZDogZXhjaGFuZ2UuaXNJbml0aWF0b3JcbiAgICAgICAgPyBleGNoYW5nZS5pbml0aWF0b3JBY3Rpb25SZXF1aXJlZFxuICAgICAgICA6IGV4Y2hhbmdlLnJlc3BvbmRlckFjdGlvblJlcXVpcmVkLFxuICAgICAgcm9vdEtleUNpcGhlcjogZXhjaGFuZ2UuaW5pdGlhdG9yUm9vdEtleUNpcGhlcixcbiAgICAgIHBia0NpcGhlcjogZXhjaGFuZ2Uub3RrLmluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXIsXG4gICAgICBpc0V4cGlyZWQ6IGV4Y2hhbmdlLmlzRXhwaXJlZCxcbiAgICAgIGRldGFpbHM6IGNvbnRhY3RDYXJkLFxuICAgICAgbWVzc2FnZTogZXhjaGFuZ2UubWVzc2FnZSxcbiAgICAgIG15U2hhcmVkRGV0YWlsczogZXhjaGFuZ2UubXlDb250YWN0Q2FyZCxcbiAgICAgIG15U2hhcmVkTWVzc2FnZTogZXhjaGFuZ2UubXlNZXNzYWdlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|