@lifeready/core 1.0.10 → 1.0.12
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 +7390 -8456
- 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/utils.js +9 -1
- package/esm2015/lib/api/lock.service.js +10 -10
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +1 -1
- package/esm2015/lib/api/query-processor/query-processor.service.js +71 -1
- package/esm2015/lib/api/types/lr-graphql.types.js +31 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +12 -24
- package/esm2015/lib/cryptography/encryption.service.js +3 -3
- package/esm2015/lib/cryptography/key-graph.service.js +24 -5
- package/esm2015/lib/items2/item2.gql.js +139 -0
- package/esm2015/lib/items2/item2.service.js +498 -0
- package/esm2015/lib/items2/item2.types.js +1 -0
- package/esm2015/lib/scenario/scenario.constants.js +2 -0
- package/esm2015/lib/scenario/scenario.controller.js +34 -0
- package/esm2015/lib/scenario/scenario.gql.js +35 -331
- package/esm2015/lib/scenario/scenario.gql.private.js +198 -0
- package/esm2015/lib/scenario/scenario.service.js +420 -493
- package/esm2015/lib/scenario/scenario.types.js +1 -64
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +22 -0
- package/esm2015/lib/trusted-parties/tp-assembly.js +362 -0
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +1 -0
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +4 -3
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +34 -0
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +5 -1
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +36 -240
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +3 -3
- package/esm2015/lifeready-core.js +6 -3
- package/esm2015/public-api.js +6 -15
- package/fesm2015/lifeready-core.js +6127 -6909
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/utils.d.ts +6 -0
- package/lib/api/lock.service.d.ts +12 -3
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +1 -0
- package/lib/api/query-processor/query-processor.service.d.ts +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +107 -2
- package/lib/auth/life-ready-auth.service.d.ts +3 -1
- package/lib/cryptography/key-graph.service.d.ts +9 -1
- package/lib/{api → items2}/item2.gql.d.ts +28 -1
- package/lib/items2/item2.service.d.ts +203 -0
- package/lib/items2/item2.types.d.ts +70 -0
- package/lib/scenario/scenario.constants.d.ts +1 -0
- package/lib/scenario/scenario.controller.d.ts +10 -0
- package/lib/scenario/scenario.gql.d.ts +52 -24
- package/lib/scenario/scenario.gql.private.d.ts +16 -0
- package/lib/scenario/scenario.service.d.ts +229 -54
- package/lib/scenario/scenario.types.d.ts +47 -214
- package/lib/trusted-parties/tp-assembly.d.ts +177 -0
- package/lib/trusted-parties/tp-assembly.gql.private.d.ts +5 -0
- package/lib/trusted-parties/tp-assembly.types.d.ts +38 -0
- package/lib/trusted-parties/tp-password-reset-request.service.d.ts +3 -3
- package/lib/trusted-parties/tp-password-reset.controller.d.ts +10 -0
- package/lib/trusted-parties/tp-password-reset.gql.d.ts +5 -0
- package/lib/trusted-parties/tp-password-reset.service.d.ts +99 -41
- package/lib/trusted-parties/trusted-party2.service.d.ts +1 -1
- package/lifeready-core.d.ts +5 -2
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +5 -14
- package/esm2015/lib/api/item2.gql.js +0 -110
- package/esm2015/lib/api/item2.service.js +0 -311
- package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +0 -105
- package/esm2015/lib/scenario/approvals/scenario-approval.types.js +0 -1
- package/esm2015/lib/scenario/approvals/scenario-approver.service.js +0 -300
- package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +0 -52
- package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +0 -97
- package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +0 -1
- package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +0 -150
- package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +0 -229
- package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +0 -1
- package/esm2015/lib/scenario/scenario-setup.service.js +0 -269
- package/lib/api/item2.service.d.ts +0 -177
- package/lib/scenario/approvals/scenario-approval.gql.d.ts +0 -7
- package/lib/scenario/approvals/scenario-approval.types.d.ts +0 -63
- package/lib/scenario/approvals/scenario-approver.service.d.ts +0 -32
- package/lib/scenario/claimants/scenario-claimant.gql.d.ts +0 -5
- package/lib/scenario/claimants/scenario-claimant.service.d.ts +0 -17
- package/lib/scenario/claimants/scenario-claimant.types.d.ts +0 -18
- package/lib/scenario/receivers/scenario-receiver.gql.d.ts +0 -8
- package/lib/scenario/receivers/scenario-receiver.service.d.ts +0 -30
- package/lib/scenario/receivers/scenario-receiver.types.d.ts +0 -54
- package/lib/scenario/scenario-setup.service.d.ts +0 -22
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { ScenarioApproverService } from './approvals/scenario-approver.service';
|
|
4
|
-
import { ScenarioClaimantService } from './claimants/scenario-claimant.service';
|
|
5
|
-
import { ScenarioReceiverService } from './receivers/scenario-receiver.service';
|
|
6
|
-
import { ScenarioService } from './scenario.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./scenario.service";
|
|
9
|
-
import * as i2 from "./claimants/scenario-claimant.service";
|
|
10
|
-
import * as i3 from "./approvals/scenario-approver.service";
|
|
11
|
-
import * as i4 from "./receivers/scenario-receiver.service";
|
|
12
|
-
export class ScenarioSetupService {
|
|
13
|
-
constructor(scenarioService, scenarioClaimantService, scenarioApproverService, scenarioReceiverService) {
|
|
14
|
-
this.scenarioService = scenarioService;
|
|
15
|
-
this.scenarioClaimantService = scenarioClaimantService;
|
|
16
|
-
this.scenarioApproverService = scenarioApproverService;
|
|
17
|
-
this.scenarioReceiverService = scenarioReceiverService;
|
|
18
|
-
}
|
|
19
|
-
setupScenario(newScenario) {
|
|
20
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const scenarioId = yield this.scenarioService.createScenario({
|
|
22
|
-
plainSubjectCipherData: {
|
|
23
|
-
event: newScenario.event,
|
|
24
|
-
name: newScenario.name,
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
try {
|
|
28
|
-
yield Promise.all(newScenario.claimants.map((x) => this.updateClaimant(scenarioId, newScenario.event, x)));
|
|
29
|
-
const scenario = yield this.scenarioService.getScenario(scenarioId);
|
|
30
|
-
if (newScenario.approvalGroups.length) {
|
|
31
|
-
const approvalGroups = {
|
|
32
|
-
scenarioId,
|
|
33
|
-
keyId: scenario.keyId,
|
|
34
|
-
event: scenario.event,
|
|
35
|
-
singleReject: false,
|
|
36
|
-
quorum: 1,
|
|
37
|
-
plainAssemblyCipherData: null,
|
|
38
|
-
approvalGroups: newScenario.approvalGroups.map((x) => ({
|
|
39
|
-
quorum: x.quorum,
|
|
40
|
-
singleReject: x.singleReject,
|
|
41
|
-
plainSubAssemblyCipherData: { name: x.name },
|
|
42
|
-
approvers: x.approvers.map((y) => ({
|
|
43
|
-
trustedPartyId: y.trustedPartyId,
|
|
44
|
-
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
45
|
-
plainSharedCipherData: {
|
|
46
|
-
message: y.message,
|
|
47
|
-
event: newScenario.event,
|
|
48
|
-
},
|
|
49
|
-
})),
|
|
50
|
-
})),
|
|
51
|
-
};
|
|
52
|
-
scenario.assemblyKeyId = yield this.scenarioApproverService.createScenarioApproverAssembly(approvalGroups);
|
|
53
|
-
}
|
|
54
|
-
yield Promise.all(newScenario.receivers.map((x) => this.updateReceiver(scenarioId, scenario.assemblyKeyId, newScenario.event, x)));
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
return { scenarioId, error: e };
|
|
58
|
-
}
|
|
59
|
-
return { scenarioId };
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
updateScenario(updateScenario) {
|
|
63
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
const params = {
|
|
65
|
-
scenarioId: updateScenario.scenarioId,
|
|
66
|
-
keyId: updateScenario.keyId,
|
|
67
|
-
plainSubjectCipherData: {
|
|
68
|
-
event: updateScenario.event,
|
|
69
|
-
name: updateScenario.name,
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
yield this.scenarioService.updateScenario(params);
|
|
73
|
-
yield Promise.all(updateScenario.claimants.map((x) => this.updateClaimant(updateScenario.scenarioId, updateScenario.event, x)));
|
|
74
|
-
yield Promise.all(updateScenario.deletedClaimantIds.map((x) => this.scenarioClaimantService.deleteClaimant(x)));
|
|
75
|
-
const assemblyKeyId = yield this.updateApprovalGroups(updateScenario);
|
|
76
|
-
yield Promise.all(updateScenario.receivers.map((x) => this.updateReceiver(updateScenario.scenarioId, assemblyKeyId, updateScenario.event, x)));
|
|
77
|
-
yield Promise.all(updateScenario.deletedReceiverIds.map((x) => this.scenarioReceiverService.deleteReceiver(x)));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
updateClaimant(scenarioId, event, claimant) {
|
|
81
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
if (claimant.claimantId) {
|
|
83
|
-
yield this.scenarioClaimantService.updateClaimant({
|
|
84
|
-
id: claimant.claimantId,
|
|
85
|
-
keyId: claimant.keyId,
|
|
86
|
-
plainSharedCipherData: { message: claimant.message, event },
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
yield this.scenarioClaimantService.addClaimant({
|
|
91
|
-
scenarioId,
|
|
92
|
-
trustedPartyId: claimant.trustedPartyId,
|
|
93
|
-
trustedPartySharedKeyId: claimant.trustedPartySharedKeyId,
|
|
94
|
-
plainSharedCipherData: { message: claimant.message, event },
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
updateApprovalGroups(updateScenario) {
|
|
100
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
-
if (updateScenario.assemblyKeyId) {
|
|
102
|
-
if (updateScenario.approvalGroups.length) {
|
|
103
|
-
const approvalGroups = {
|
|
104
|
-
scenarioId: updateScenario.scenarioId,
|
|
105
|
-
assemblyKeyId: updateScenario.assemblyKeyId,
|
|
106
|
-
singleReject: false,
|
|
107
|
-
quorum: 1,
|
|
108
|
-
approvalGroups: updateScenario.approvalGroups.map((x) => ({
|
|
109
|
-
subAssemblyId: x.subAssemblyId,
|
|
110
|
-
quorum: x.quorum,
|
|
111
|
-
singleReject: x.singleReject,
|
|
112
|
-
plainSubAssemblyCipherData: { name: x.name },
|
|
113
|
-
approvers: x.approvers.map((y) => ({
|
|
114
|
-
approverId: y.approverId,
|
|
115
|
-
keyId: y.keyId,
|
|
116
|
-
trustedPartyId: y.trustedPartyId,
|
|
117
|
-
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
118
|
-
plainSharedCipherData: {
|
|
119
|
-
message: y.message,
|
|
120
|
-
event: updateScenario.event,
|
|
121
|
-
},
|
|
122
|
-
})),
|
|
123
|
-
deletedApproverIds: x.deletedApproverIds,
|
|
124
|
-
})),
|
|
125
|
-
deletedGroupIds: updateScenario.deletedGroupIds,
|
|
126
|
-
};
|
|
127
|
-
yield this.scenarioApproverService.updateScenarioApproverAssembly(approvalGroups);
|
|
128
|
-
return updateScenario.assemblyKeyId;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
const { receivers } = yield this.scenarioService.getScenario(updateScenario.scenarioId);
|
|
132
|
-
yield this.scenarioApproverService.deleteScenarioApproverAssembly(updateScenario.scenarioId, updateScenario.event, receivers);
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
// update or delete
|
|
136
|
-
}
|
|
137
|
-
else if (updateScenario.approvalGroups.length) {
|
|
138
|
-
const { receivers } = yield this.scenarioService.getScenario(updateScenario.scenarioId);
|
|
139
|
-
const approvalGroups = {
|
|
140
|
-
scenarioId: updateScenario.scenarioId,
|
|
141
|
-
keyId: updateScenario.keyId,
|
|
142
|
-
event: updateScenario.event,
|
|
143
|
-
singleReject: false,
|
|
144
|
-
quorum: 1,
|
|
145
|
-
approvalGroups: updateScenario.approvalGroups.map((x) => ({
|
|
146
|
-
quorum: x.quorum,
|
|
147
|
-
singleReject: x.singleReject,
|
|
148
|
-
plainSubAssemblyCipherData: { name: x.name },
|
|
149
|
-
approvers: x.approvers.map((y) => ({
|
|
150
|
-
trustedPartyId: y.trustedPartyId,
|
|
151
|
-
trustedPartySharedKeyId: y.trustedPartySharedKeyId,
|
|
152
|
-
plainSharedCipherData: {
|
|
153
|
-
message: y.message,
|
|
154
|
-
event: updateScenario.event,
|
|
155
|
-
},
|
|
156
|
-
})),
|
|
157
|
-
})),
|
|
158
|
-
receivers,
|
|
159
|
-
};
|
|
160
|
-
return yield this.scenarioApproverService.createScenarioApproverAssembly(approvalGroups);
|
|
161
|
-
}
|
|
162
|
-
return null;
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
updateReceiver(scenarioId, assemblyKeyId, event, receiver) {
|
|
166
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
-
let receiverId = receiver.receiverId;
|
|
168
|
-
// Currently deleting all receivers below assembly logic.
|
|
169
|
-
if (receiverId) {
|
|
170
|
-
yield this.scenarioReceiverService.updateReceiver({
|
|
171
|
-
id: receiver.receiverId,
|
|
172
|
-
keyId: receiver.keyId,
|
|
173
|
-
plainSharedCipherData: { message: receiver.message, event },
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
const newReceiver = {
|
|
178
|
-
scenarioId,
|
|
179
|
-
trustedPartyId: receiver.trustedPartyId,
|
|
180
|
-
trustedPartySharedKeyId: receiver.trustedPartySharedKeyId,
|
|
181
|
-
plainSharedCipherData: { message: receiver.message, event },
|
|
182
|
-
};
|
|
183
|
-
receiverId = yield this.scenarioReceiverService.addReceiver(newReceiver);
|
|
184
|
-
}
|
|
185
|
-
const loadedReceiver = yield this.scenarioReceiverService.getReceiver(receiverId);
|
|
186
|
-
yield this.updateReceiverItems(scenarioId, assemblyKeyId, loadedReceiver, receiver.permissions);
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
updateReceiverItems(scenarioId, assemblyKeyId, receiver, permissions) {
|
|
190
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
-
permissions = permissions || {};
|
|
192
|
-
permissions.categories = permissions.categories || [];
|
|
193
|
-
permissions.records = permissions.records || [];
|
|
194
|
-
yield Promise.all(permissions.categories
|
|
195
|
-
.filter((x) => !receiver.categories.some((y) => y.category.id === x.categoryId))
|
|
196
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
197
|
-
const params = {
|
|
198
|
-
scenarioId,
|
|
199
|
-
assemblyKeyId,
|
|
200
|
-
receiverId: receiver.id,
|
|
201
|
-
receiverKeyId: receiver.keyId,
|
|
202
|
-
accessRole: x.accessLevel,
|
|
203
|
-
categoryId: x.categoryId,
|
|
204
|
-
};
|
|
205
|
-
yield this.scenarioReceiverService.addReceiverCategory(params);
|
|
206
|
-
})));
|
|
207
|
-
yield Promise.all(permissions.records
|
|
208
|
-
.filter((x) => !receiver.records.some((y) => y.record.id === x.recordId))
|
|
209
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
210
|
-
const params = {
|
|
211
|
-
scenarioId,
|
|
212
|
-
assemblyKeyId,
|
|
213
|
-
receiverId: receiver.id,
|
|
214
|
-
receiverKeyId: receiver.keyId,
|
|
215
|
-
accessRole: x.accessLevel,
|
|
216
|
-
recordId: x.recordId,
|
|
217
|
-
};
|
|
218
|
-
yield this.scenarioReceiverService.addReceiverRecord(params);
|
|
219
|
-
})));
|
|
220
|
-
yield Promise.all(permissions.categories
|
|
221
|
-
.map((x) => ({
|
|
222
|
-
accessLevel: x.accessLevel,
|
|
223
|
-
category: receiver.categories.find((y) => y.category.id === x.categoryId),
|
|
224
|
-
}))
|
|
225
|
-
.filter((x) => x.category)
|
|
226
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
227
|
-
const params = {
|
|
228
|
-
id: x.category.id,
|
|
229
|
-
keyId: x.category.keyId,
|
|
230
|
-
accessRole: x.accessLevel,
|
|
231
|
-
};
|
|
232
|
-
yield this.scenarioReceiverService.updateReceiverItem(params);
|
|
233
|
-
})));
|
|
234
|
-
yield Promise.all(permissions.records
|
|
235
|
-
.map((x) => ({
|
|
236
|
-
accessLevel: x.accessLevel,
|
|
237
|
-
record: receiver.records.find((y) => y.record.id === x.recordId),
|
|
238
|
-
}))
|
|
239
|
-
.filter((x) => x.record)
|
|
240
|
-
.map((x) => __awaiter(this, void 0, void 0, function* () {
|
|
241
|
-
const params = {
|
|
242
|
-
id: x.record.id,
|
|
243
|
-
keyId: x.record.keyId,
|
|
244
|
-
accessRole: x.accessLevel,
|
|
245
|
-
};
|
|
246
|
-
yield this.scenarioReceiverService.updateReceiverItem(params);
|
|
247
|
-
})));
|
|
248
|
-
yield Promise.all(receiver.categories
|
|
249
|
-
.filter((x) => !permissions.categories.some((y) => y.categoryId === x.category.id))
|
|
250
|
-
.map((x) => this.scenarioReceiverService.deleteReceiverItem(x.id)));
|
|
251
|
-
yield Promise.all(receiver.records
|
|
252
|
-
.filter((x) => !permissions.records.some((y) => y.recordId === x.record.id))
|
|
253
|
-
.map((x) => this.scenarioReceiverService.deleteReceiverItem(x.id)));
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
ScenarioSetupService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScenarioSetupService_Factory() { return new ScenarioSetupService(i0.ɵɵinject(i1.ScenarioService), i0.ɵɵinject(i2.ScenarioClaimantService), i0.ɵɵinject(i3.ScenarioApproverService), i0.ɵɵinject(i4.ScenarioReceiverService)); }, token: ScenarioSetupService, providedIn: "root" });
|
|
258
|
-
ScenarioSetupService.decorators = [
|
|
259
|
-
{ type: Injectable, args: [{
|
|
260
|
-
providedIn: 'root',
|
|
261
|
-
},] }
|
|
262
|
-
];
|
|
263
|
-
ScenarioSetupService.ctorParameters = () => [
|
|
264
|
-
{ type: ScenarioService },
|
|
265
|
-
{ type: ScenarioClaimantService },
|
|
266
|
-
{ type: ScenarioApproverService },
|
|
267
|
-
{ type: ScenarioReceiverService }
|
|
268
|
-
];
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tc2V0dXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvc2NlbmFyaW8vc2NlbmFyaW8tc2V0dXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUtoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQVdyRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1UsZUFBZ0MsRUFDaEMsdUJBQWdELEVBQ2hELHVCQUFnRCxFQUNoRCx1QkFBZ0Q7UUFIaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO0lBQ3ZELENBQUM7SUFFUyxhQUFhLENBQ3hCLFdBQXdCOztZQUV4QixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDO2dCQUMzRCxzQkFBc0IsRUFBRTtvQkFDdEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO29CQUN4QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSTtnQkFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVB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QUNKLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FDdEU7aUJBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3JFLENBQUM7WUFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsUUFBUSxDQUFDLE9BQU87aUJBQ2IsTUFBTSxDQUNMLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQ3BFO2lCQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNyRSxDQUFDO1FBQ0osQ0FBQztLQUFBOzs7O1lBelZGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBVlEsZUFBZTtZQU5mLHVCQUF1QjtZQUR2Qix1QkFBdUI7WUFFdkIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTHJFeGNlcHRpb24gfSBmcm9tICcuLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmVwYXJlZFBlcm1pc3Npb25zIH0gZnJvbSAnLi8uLi9hcGkva2V5LWV4Y2hhbmdlLnR5cGVzJztcbmltcG9ydCB7XG4gIENyZWF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMsXG4gIFVwZGF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMsXG59IGZyb20gJy4vYXBwcm92YWxzL3NjZW5hcmlvLWFwcHJvdmFsLnR5cGVzJztcbmltcG9ydCB7IFNjZW5hcmlvQXBwcm92ZXJTZXJ2aWNlIH0gZnJvbSAnLi9hcHByb3ZhbHMvc2NlbmFyaW8tYXBwcm92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTY2VuYXJpb0NsYWltYW50U2VydmljZSB9IGZyb20gJy4vY2xhaW1hbnRzL3NjZW5hcmlvLWNsYWltYW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NlbmFyaW9SZWNlaXZlclNlcnZpY2UgfSBmcm9tICcuL3JlY2VpdmVycy9zY2VuYXJpby1yZWNlaXZlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFJlY2VpdmVyLFxuICBVcGRhdGVTY2VuYXJpb1JlY2VpdmVySXRlbUlucHV0LFxufSBmcm9tICcuL3JlY2VpdmVycy9zY2VuYXJpby1yZWNlaXZlci50eXBlcyc7XG5pbXBvcnQgeyBTY2VuYXJpb1NlcnZpY2UgfSBmcm9tICcuL3NjZW5hcmlvLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTmV3U2NlbmFyaW8sXG4gIFVwZGF0ZWRTY2VuYXJpb0NsYWltYW50LFxuICBVcGRhdGVkU2NlbmFyaW9SZWNlaXZlcixcbiAgVXBkYXRlU2NlbmFyaW8sXG59IGZyb20gJy4vc2NlbmFyaW8udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NlbmFyaW9TZXR1cFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjZW5hcmlvU2VydmljZTogU2NlbmFyaW9TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NlbmFyaW9DbGFpbWFudFNlcnZpY2U6IFNjZW5hcmlvQ2xhaW1hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NlbmFyaW9BcHByb3ZlclNlcnZpY2U6IFNjZW5hcmlvQXBwcm92ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NlbmFyaW9SZWNlaXZlclNlcnZpY2U6IFNjZW5hcmlvUmVjZWl2ZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgc2V0dXBTY2VuYXJpbyhcbiAgICBuZXdTY2VuYXJpbzogTmV3U2NlbmFyaW9cbiAgKTogUHJvbWlzZTx7IHNjZW5hcmlvSWQ6IHN0cmluZzsgZXJyb3I/OiBMckV4Y2VwdGlvbiB9PiB7XG4gICAgY29uc3Qgc2NlbmFyaW9JZCA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmNyZWF0ZVNjZW5hcmlvKHtcbiAgICAgIHBsYWluU3ViamVjdENpcGhlckRhdGE6IHtcbiAgICAgICAgZXZlbnQ6IG5ld1NjZW5hcmlvLmV2ZW50LFxuICAgICAgICBuYW1lOiBuZXdTY2VuYXJpby5uYW1lLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgbmV3U2NlbmFyaW8uY2xhaW1hbnRzLm1hcCgoeCkgPT5cbiAgICAgICAgICB0aGlzLnVwZGF0ZUNsYWltYW50KHNjZW5hcmlvSWQsIG5ld1NjZW5hcmlvLmV2ZW50LCB4KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzY2VuYXJpbyA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvKHNjZW5hcmlvSWQpO1xuICAgICAgaWYgKG5ld1NjZW5hcmlvLmFwcHJvdmFsR3JvdXBzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBhcHByb3ZhbEdyb3VwczogQ3JlYXRlU2NlbmFyaW9BcHByb3ZhbEdyb3VwcyA9IHtcbiAgICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICAgIGtleUlkOiBzY2VuYXJpby5rZXlJZCxcbiAgICAgICAgICBldmVudDogc2NlbmFyaW8uZXZlbnQsXG4gICAgICAgICAgc2luZ2xlUmVqZWN0OiBmYWxzZSxcbiAgICAgICAgICBxdW9ydW06IDEsXG4gICAgICAgICAgcGxhaW5Bc3NlbWJseUNpcGhlckRhdGE6IG51bGwsXG5cbiAgICAgICAgICBhcHByb3ZhbEdyb3VwczogbmV3U2NlbmFyaW8uYXBwcm92YWxHcm91cHMubWFwKCh4KSA9PiAoe1xuICAgICAgICAgICAgcXVvcnVtOiB4LnF1b3J1bSxcbiAgICAgICAgICAgIHNpbmdsZVJlamVjdDogeC5zaW5nbGVSZWplY3QsXG4gICAgICAgICAgICBwbGFpblN1YkFzc2VtYmx5Q2lwaGVyRGF0YTogeyBuYW1lOiB4Lm5hbWUgfSxcbiAgICAgICAgICAgIGFwcHJvdmVyczogeC5hcHByb3ZlcnMubWFwKCh5KSA9PiAoe1xuICAgICAgICAgICAgICB0cnVzdGVkUGFydHlJZDogeS50cnVzdGVkUGFydHlJZCxcbiAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQ6IHkudHJ1c3RlZFBhcnR5U2hhcmVkS2V5SWQsXG4gICAgICAgICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YToge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHkubWVzc2FnZSxcbiAgICAgICAgICAgICAgICBldmVudDogbmV3U2NlbmFyaW8uZXZlbnQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9O1xuICAgICAgICBzY2VuYXJpby5hc3NlbWJseUtleUlkID0gYXdhaXQgdGhpcy5zY2VuYXJpb0FwcHJvdmVyU2VydmljZS5jcmVhdGVTY2VuYXJpb0FwcHJvdmVyQXNzZW1ibHkoXG4gICAgICAgICAgYXBwcm92YWxHcm91cHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBuZXdTY2VuYXJpby5yZWNlaXZlcnMubWFwKCh4KSA9PlxuICAgICAgICAgIHRoaXMudXBkYXRlUmVjZWl2ZXIoXG4gICAgICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICAgICAgc2NlbmFyaW8uYXNzZW1ibHlLZXlJZCxcbiAgICAgICAgICAgIG5ld1NjZW5hcmlvLmV2ZW50LFxuICAgICAgICAgICAgeFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4geyBzY2VuYXJpb0lkLCBlcnJvcjogZSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBzY2VuYXJpb0lkIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlU2NlbmFyaW8odXBkYXRlU2NlbmFyaW86IFVwZGF0ZVNjZW5hcmlvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgc2NlbmFyaW9JZDogdXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCxcbiAgICAgIGtleUlkOiB1cGRhdGVTY2VuYXJpby5rZXlJZCxcbiAgICAgIHBsYWluU3ViamVjdENpcGhlckRhdGE6IHtcbiAgICAgICAgZXZlbnQ6IHVwZGF0ZVNjZW5hcmlvLmV2ZW50LFxuICAgICAgICBuYW1lOiB1cGRhdGVTY2VuYXJpby5uYW1lLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLnVwZGF0ZVNjZW5hcmlvKHBhcmFtcyk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVwZGF0ZVNjZW5hcmlvLmNsYWltYW50cy5tYXAoKHgpID0+XG4gICAgICAgIHRoaXMudXBkYXRlQ2xhaW1hbnQodXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCwgdXBkYXRlU2NlbmFyaW8uZXZlbnQsIHgpXG4gICAgICApXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHVwZGF0ZVNjZW5hcmlvLmRlbGV0ZWRDbGFpbWFudElkcy5tYXAoKHgpID0+XG4gICAgICAgIHRoaXMuc2NlbmFyaW9DbGFpbWFudFNlcnZpY2UuZGVsZXRlQ2xhaW1hbnQoeClcbiAgICAgIClcbiAgICApO1xuXG4gICAgY29uc3QgYXNzZW1ibHlLZXlJZCA9IGF3YWl0IHRoaXMudXBkYXRlQXBwcm92YWxHcm91cHModXBkYXRlU2NlbmFyaW8pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB1cGRhdGVTY2VuYXJpby5yZWNlaXZlcnMubWFwKCh4KSA9PlxuICAgICAgICB0aGlzLnVwZGF0ZVJlY2VpdmVyKFxuICAgICAgICAgIHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXG4gICAgICAgICAgYXNzZW1ibHlLZXlJZCxcbiAgICAgICAgICB1cGRhdGVTY2VuYXJpby5ldmVudCxcbiAgICAgICAgICB4XG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdXBkYXRlU2NlbmFyaW8uZGVsZXRlZFJlY2VpdmVySWRzLm1hcCgoeCkgPT5cbiAgICAgICAgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5kZWxldGVSZWNlaXZlcih4KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNsYWltYW50KFxuICAgIHNjZW5hcmlvSWQ6IHN0cmluZyxcbiAgICBldmVudDogc3RyaW5nLFxuICAgIGNsYWltYW50OiBVcGRhdGVkU2NlbmFyaW9DbGFpbWFudFxuICApIHtcbiAgICBpZiAoY2xhaW1hbnQuY2xhaW1hbnRJZCkge1xuICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb0NsYWltYW50U2VydmljZS51cGRhdGVDbGFpbWFudCh7XG4gICAgICAgIGlkOiBjbGFpbWFudC5jbGFpbWFudElkLFxuICAgICAgICBrZXlJZDogY2xhaW1hbnQua2V5SWQsXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YTogeyBtZXNzYWdlOiBjbGFpbWFudC5tZXNzYWdlLCBldmVudCB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9DbGFpbWFudFNlcnZpY2UuYWRkQ2xhaW1hbnQoe1xuICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICB0cnVzdGVkUGFydHlJZDogY2xhaW1hbnQudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgIHRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkOiBjbGFpbWFudC50cnVzdGVkUGFydHlTaGFyZWRLZXlJZCxcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiB7IG1lc3NhZ2U6IGNsYWltYW50Lm1lc3NhZ2UsIGV2ZW50IH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFwcHJvdmFsR3JvdXBzKFxuICAgIHVwZGF0ZVNjZW5hcmlvOiBVcGRhdGVTY2VuYXJpb1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh1cGRhdGVTY2VuYXJpby5hc3NlbWJseUtleUlkKSB7XG4gICAgICBpZiAodXBkYXRlU2NlbmFyaW8uYXBwcm92YWxHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmFsR3JvdXBzOiBVcGRhdGVTY2VuYXJpb0FwcHJvdmFsR3JvdXBzID0ge1xuICAgICAgICAgIHNjZW5hcmlvSWQ6IHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXG4gICAgICAgICAgYXNzZW1ibHlLZXlJZDogdXBkYXRlU2NlbmFyaW8uYXNzZW1ibHlLZXlJZCxcblxuICAgICAgICAgIHNpbmdsZVJlamVjdDogZmFsc2UsXG4gICAgICAgICAgcXVvcnVtOiAxLFxuXG4gICAgICAgICAgYXBwcm92YWxHcm91cHM6IHVwZGF0ZVNjZW5hcmlvLmFwcHJvdmFsR3JvdXBzLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICAgIHN1YkFzc2VtYmx5SWQ6IHguc3ViQXNzZW1ibHlJZCxcbiAgICAgICAgICAgIHF1b3J1bTogeC5xdW9ydW0sXG4gICAgICAgICAgICBzaW5nbGVSZWplY3Q6IHguc2luZ2xlUmVqZWN0LFxuICAgICAgICAgICAgcGxhaW5TdWJBc3NlbWJseUNpcGhlckRhdGE6IHsgbmFtZTogeC5uYW1lIH0sXG4gICAgICAgICAgICBhcHByb3ZlcnM6IHguYXBwcm92ZXJzLm1hcCgoeSkgPT4gKHtcbiAgICAgICAgICAgICAgYXBwcm92ZXJJZDogeS5hcHByb3ZlcklkLFxuICAgICAgICAgICAgICBrZXlJZDogeS5rZXlJZCxcbiAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5SWQ6IHkudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgICAgICAgIHRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkOiB5LnRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkLFxuICAgICAgICAgICAgICBwbGFpblNoYXJlZENpcGhlckRhdGE6IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB5Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgZXZlbnQ6IHVwZGF0ZVNjZW5hcmlvLmV2ZW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgZGVsZXRlZEFwcHJvdmVySWRzOiB4LmRlbGV0ZWRBcHByb3ZlcklkcyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgZGVsZXRlZEdyb3VwSWRzOiB1cGRhdGVTY2VuYXJpby5kZWxldGVkR3JvdXBJZHMsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9BcHByb3ZlclNlcnZpY2UudXBkYXRlU2NlbmFyaW9BcHByb3ZlckFzc2VtYmx5KFxuICAgICAgICAgIGFwcHJvdmFsR3JvdXBzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1cGRhdGVTY2VuYXJpby5hc3NlbWJseUtleUlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyByZWNlaXZlcnMgfSA9IGF3YWl0IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvKFxuICAgICAgICAgIHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWRcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb0FwcHJvdmVyU2VydmljZS5kZWxldGVTY2VuYXJpb0FwcHJvdmVyQXNzZW1ibHkoXG4gICAgICAgICAgdXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZCxcbiAgICAgICAgICB1cGRhdGVTY2VuYXJpby5ldmVudCxcbiAgICAgICAgICByZWNlaXZlcnNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICAvLyB1cGRhdGUgb3IgZGVsZXRlXG4gICAgfSBlbHNlIGlmICh1cGRhdGVTY2VuYXJpby5hcHByb3ZhbEdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVjZWl2ZXJzIH0gPSBhd2FpdCB0aGlzLnNjZW5hcmlvU2VydmljZS5nZXRTY2VuYXJpbyhcbiAgICAgICAgdXBkYXRlU2NlbmFyaW8uc2NlbmFyaW9JZFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXBwcm92YWxHcm91cHM6IENyZWF0ZVNjZW5hcmlvQXBwcm92YWxHcm91cHMgPSB7XG4gICAgICAgIHNjZW5hcmlvSWQ6IHVwZGF0ZVNjZW5hcmlvLnNjZW5hcmlvSWQsXG4gICAgICAgIGtleUlkOiB1cGRhdGVTY2VuYXJpby5rZXlJZCxcbiAgICAgICAgZXZlbnQ6IHVwZGF0ZVNjZW5hcmlvLmV2ZW50LFxuICAgICAgICBzaW5nbGVSZWplY3Q6IGZhbHNlLFxuICAgICAgICBxdW9ydW06IDEsXG4gICAgICAgIGFwcHJvdmFsR3JvdXBzOiB1cGRhdGVTY2VuYXJpby5hcHByb3ZhbEdyb3Vwcy5tYXAoKHgpID0+ICh7XG4gICAgICAgICAgcXVvcnVtOiB4LnF1b3J1bSxcbiAgICAgICAgICBzaW5nbGVSZWplY3Q6IHguc2luZ2xlUmVqZWN0LFxuICAgICAgICAgIHBsYWluU3ViQXNzZW1ibHlDaXBoZXJEYXRhOiB7IG5hbWU6IHgubmFtZSB9LFxuICAgICAgICAgIGFwcHJvdmVyczogeC5hcHByb3ZlcnMubWFwKCh5KSA9PiAoe1xuICAgICAgICAgICAgdHJ1c3RlZFBhcnR5SWQ6IHkudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgICAgICB0cnVzdGVkUGFydHlTaGFyZWRLZXlJZDogeS50cnVzdGVkUGFydHlTaGFyZWRLZXlJZCxcbiAgICAgICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YToge1xuICAgICAgICAgICAgICBtZXNzYWdlOiB5Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgIGV2ZW50OiB1cGRhdGVTY2VuYXJpby5ldmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9KSksXG4gICAgICAgIHJlY2VpdmVycyxcbiAgICAgIH07XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zY2VuYXJpb0FwcHJvdmVyU2VydmljZS5jcmVhdGVTY2VuYXJpb0FwcHJvdmVyQXNzZW1ibHkoXG4gICAgICAgIGFwcHJvdmFsR3JvdXBzXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUmVjZWl2ZXIoXG4gICAgc2NlbmFyaW9JZDogc3RyaW5nLFxuICAgIGFzc2VtYmx5S2V5SWQ6IHN0cmluZyxcbiAgICBldmVudDogc3RyaW5nLFxuICAgIHJlY2VpdmVyOiBVcGRhdGVkU2NlbmFyaW9SZWNlaXZlclxuICApIHtcbiAgICBsZXQgcmVjZWl2ZXJJZCA9IHJlY2VpdmVyLnJlY2VpdmVySWQ7XG5cbiAgICAvLyBDdXJyZW50bHkgZGVsZXRpbmcgYWxsIHJlY2VpdmVycyBiZWxvdyBhc3NlbWJseSBsb2dpYy5cbiAgICBpZiAocmVjZWl2ZXJJZCkge1xuICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS51cGRhdGVSZWNlaXZlcih7XG4gICAgICAgIGlkOiByZWNlaXZlci5yZWNlaXZlcklkLFxuICAgICAgICBrZXlJZDogcmVjZWl2ZXIua2V5SWQsXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YTogeyBtZXNzYWdlOiByZWNlaXZlci5tZXNzYWdlLCBldmVudCB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1JlY2VpdmVyID0ge1xuICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICB0cnVzdGVkUGFydHlJZDogcmVjZWl2ZXIudHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgIHRydXN0ZWRQYXJ0eVNoYXJlZEtleUlkOiByZWNlaXZlci50cnVzdGVkUGFydHlTaGFyZWRLZXlJZCxcbiAgICAgICAgcGxhaW5TaGFyZWRDaXBoZXJEYXRhOiB7IG1lc3NhZ2U6IHJlY2VpdmVyLm1lc3NhZ2UsIGV2ZW50IH0sXG4gICAgICB9O1xuICAgICAgcmVjZWl2ZXJJZCA9IGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuYWRkUmVjZWl2ZXIobmV3UmVjZWl2ZXIpO1xuICAgIH1cbiAgICBjb25zdCBsb2FkZWRSZWNlaXZlciA9IGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuZ2V0UmVjZWl2ZXIoXG4gICAgICByZWNlaXZlcklkXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVJlY2VpdmVySXRlbXMoXG4gICAgICBzY2VuYXJpb0lkLFxuICAgICAgYXNzZW1ibHlLZXlJZCxcbiAgICAgIGxvYWRlZFJlY2VpdmVyLFxuICAgICAgcmVjZWl2ZXIucGVybWlzc2lvbnNcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVSZWNlaXZlckl0ZW1zKFxuICAgIHNjZW5hcmlvSWQ6IHN0cmluZyxcbiAgICBhc3NlbWJseUtleUlkOiBzdHJpbmcsXG4gICAgcmVjZWl2ZXI6IFJlY2VpdmVyLFxuICAgIHBlcm1pc3Npb25zOiBQcmVwYXJlZFBlcm1pc3Npb25zXG4gICkge1xuICAgIHBlcm1pc3Npb25zID0gcGVybWlzc2lvbnMgfHwge307XG4gICAgcGVybWlzc2lvbnMuY2F0ZWdvcmllcyA9IHBlcm1pc3Npb25zLmNhdGVnb3JpZXMgfHwgW107XG4gICAgcGVybWlzc2lvbnMucmVjb3JkcyA9IHBlcm1pc3Npb25zLnJlY29yZHMgfHwgW107XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBlcm1pc3Npb25zLmNhdGVnb3JpZXNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICFyZWNlaXZlci5jYXRlZ29yaWVzLnNvbWUoKHkpID0+IHkuY2F0ZWdvcnkuaWQgPT09IHguY2F0ZWdvcnlJZClcbiAgICAgICAgKVxuICAgICAgICAubWFwKGFzeW5jICh4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgc2NlbmFyaW9JZCxcbiAgICAgICAgICAgIGFzc2VtYmx5S2V5SWQsXG4gICAgICAgICAgICByZWNlaXZlcklkOiByZWNlaXZlci5pZCxcbiAgICAgICAgICAgIHJlY2VpdmVyS2V5SWQ6IHJlY2VpdmVyLmtleUlkLFxuICAgICAgICAgICAgYWNjZXNzUm9sZTogeC5hY2Nlc3NMZXZlbCxcbiAgICAgICAgICAgIGNhdGVnb3J5SWQ6IHguY2F0ZWdvcnlJZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UuYWRkUmVjZWl2ZXJDYXRlZ29yeShwYXJhbXMpO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwZXJtaXNzaW9ucy5yZWNvcmRzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHgpID0+ICFyZWNlaXZlci5yZWNvcmRzLnNvbWUoKHkpID0+IHkucmVjb3JkLmlkID09PSB4LnJlY29yZElkKVxuICAgICAgICApXG4gICAgICAgIC5tYXAoYXN5bmMgKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBzY2VuYXJpb0lkLFxuICAgICAgICAgICAgYXNzZW1ibHlLZXlJZCxcbiAgICAgICAgICAgIHJlY2VpdmVySWQ6IHJlY2VpdmVyLmlkLFxuICAgICAgICAgICAgcmVjZWl2ZXJLZXlJZDogcmVjZWl2ZXIua2V5SWQsXG4gICAgICAgICAgICBhY2Nlc3NSb2xlOiB4LmFjY2Vzc0xldmVsLFxuICAgICAgICAgICAgcmVjb3JkSWQ6IHgucmVjb3JkSWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNjZW5hcmlvUmVjZWl2ZXJTZXJ2aWNlLmFkZFJlY2VpdmVyUmVjb3JkKHBhcmFtcyk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcGVybWlzc2lvbnMuY2F0ZWdvcmllc1xuICAgICAgICAubWFwKCh4KSA9PiAoe1xuICAgICAgICAgIGFjY2Vzc0xldmVsOiB4LmFjY2Vzc0xldmVsLFxuICAgICAgICAgIGNhdGVnb3J5OiByZWNlaXZlci5jYXRlZ29yaWVzLmZpbmQoXG4gICAgICAgICAgICAoeSkgPT4geS5jYXRlZ29yeS5pZCA9PT0geC5jYXRlZ29yeUlkXG4gICAgICAgICAgKSxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIoKHgpID0+IHguY2F0ZWdvcnkpXG4gICAgICAgIC5tYXAoYXN5bmMgKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbXM6IFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQgPSB7XG4gICAgICAgICAgICBpZDogeC5jYXRlZ29yeS5pZCxcbiAgICAgICAgICAgIGtleUlkOiB4LmNhdGVnb3J5LmtleUlkLFxuICAgICAgICAgICAgYWNjZXNzUm9sZTogeC5hY2Nlc3NMZXZlbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2NlbmFyaW9SZWNlaXZlclNlcnZpY2UudXBkYXRlUmVjZWl2ZXJJdGVtKHBhcmFtcyk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBlcm1pc3Npb25zLnJlY29yZHNcbiAgICAgICAgLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICBhY2Nlc3NMZXZlbDogeC5hY2Nlc3NMZXZlbCxcbiAgICAgICAgICByZWNvcmQ6IHJlY2VpdmVyLnJlY29yZHMuZmluZCgoeSkgPT4geS5yZWNvcmQuaWQgPT09IHgucmVjb3JkSWQpLFxuICAgICAgICB9KSlcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5yZWNvcmQpXG4gICAgICAgIC5tYXAoYXN5bmMgKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJhbXM6IFVwZGF0ZVNjZW5hcmlvUmVjZWl2ZXJJdGVtSW5wdXQgPSB7XG4gICAgICAgICAgICBpZDogeC5yZWNvcmQuaWQsXG4gICAgICAgICAgICBrZXlJZDogeC5yZWNvcmQua2V5SWQsXG4gICAgICAgICAgICBhY2Nlc3NSb2xlOiB4LmFjY2Vzc0xldmVsLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYXdhaXQgdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS51cGRhdGVSZWNlaXZlckl0ZW0ocGFyYW1zKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICByZWNlaXZlci5jYXRlZ29yaWVzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAhcGVybWlzc2lvbnMuY2F0ZWdvcmllcy5zb21lKCh5KSA9PiB5LmNhdGVnb3J5SWQgPT09IHguY2F0ZWdvcnkuaWQpXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoeCkgPT4gdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5kZWxldGVSZWNlaXZlckl0ZW0oeC5pZCkpXG4gICAgKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHJlY2VpdmVyLnJlY29yZHNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoeCkgPT4gIXBlcm1pc3Npb25zLnJlY29yZHMuc29tZSgoeSkgPT4geS5yZWNvcmRJZCA9PT0geC5yZWNvcmQuaWQpXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoeCkgPT4gdGhpcy5zY2VuYXJpb1JlY2VpdmVyU2VydmljZS5kZWxldGVSZWNlaXZlckl0ZW0oeC5pZCkpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { Injector, NgZone } from '@angular/core';
|
|
2
|
-
import { JWK } from 'node-jose';
|
|
3
|
-
import { KeyFactoryService } from '../cryptography/key-factory.service';
|
|
4
|
-
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
5
|
-
import { KeyMetaService } from '../cryptography/key-meta.service';
|
|
6
|
-
import { KeyService } from '../cryptography/key.service';
|
|
7
|
-
import { FileService } from './file.service';
|
|
8
|
-
import { LrMutation, LrService } from './lr-graphql';
|
|
9
|
-
import { CreateDirectoryMutation, DeleteDirectoryMutation, CreateFileMutation, DeleteFileMutation, UpdateFileMutation, UpdateDirectoryMutation, ArchiveDirectoryMutation, UnarchiveDirectoryMutation } from './item2.gql';
|
|
10
|
-
import { ID, LrRelayIdInput } from './types';
|
|
11
|
-
export declare enum DirectoryLinkType {
|
|
12
|
-
HARD = "HARD"
|
|
13
|
-
}
|
|
14
|
-
export interface ParentDirectoryOptions {
|
|
15
|
-
directoryId: LrRelayIdInput;
|
|
16
|
-
wrappingKeyId?: LrRelayIdInput;
|
|
17
|
-
linkType?: DirectoryLinkType.HARD;
|
|
18
|
-
}
|
|
19
|
-
export interface ParentRootDirectoryInput {
|
|
20
|
-
wrappedKey: string;
|
|
21
|
-
wrappingKeyId: LrRelayIdInput;
|
|
22
|
-
}
|
|
23
|
-
export interface ParentDirectoryInputBase {
|
|
24
|
-
directoryId: LrRelayIdInput;
|
|
25
|
-
wrappingKeyId: LrRelayIdInput;
|
|
26
|
-
linkType?: DirectoryLinkType.HARD;
|
|
27
|
-
}
|
|
28
|
-
export interface ParentDirectoryInput extends ParentDirectoryInputBase {
|
|
29
|
-
wrappedKey: string;
|
|
30
|
-
}
|
|
31
|
-
export interface FileParentDirectoryInput extends ParentDirectoryInputBase {
|
|
32
|
-
wrappedFileKey: string;
|
|
33
|
-
}
|
|
34
|
-
export interface DownloadFileContentOptions {
|
|
35
|
-
fileStateNodeId: LrRelayIdInput;
|
|
36
|
-
fileStateKeyId?: LrRelayIdInput;
|
|
37
|
-
}
|
|
38
|
-
export interface CommonDirectoryOptions {
|
|
39
|
-
plainMetaJson?: any;
|
|
40
|
-
cipherMetaClearJson?: any;
|
|
41
|
-
}
|
|
42
|
-
export interface CreateDirectoryOptions extends CommonDirectoryOptions {
|
|
43
|
-
asRootDirectory?: boolean;
|
|
44
|
-
parentDirectories?: ParentDirectoryOptions[];
|
|
45
|
-
}
|
|
46
|
-
export interface UpdateDirectoryOptions extends CommonDirectoryOptions {
|
|
47
|
-
directoryId: LrRelayIdInput;
|
|
48
|
-
directoryKeyId?: LrRelayIdInput;
|
|
49
|
-
}
|
|
50
|
-
export interface CommonFileOptions {
|
|
51
|
-
plainMetaJson?: any;
|
|
52
|
-
cipherMetaClearJson?: any;
|
|
53
|
-
file?: File;
|
|
54
|
-
upload?: (cipherFileContent: string) => Promise<string>;
|
|
55
|
-
}
|
|
56
|
-
export interface CreateFileOptions extends CommonFileOptions {
|
|
57
|
-
parentDirectories: ParentDirectoryOptions[];
|
|
58
|
-
}
|
|
59
|
-
export interface UpdateFileOptions extends CommonFileOptions {
|
|
60
|
-
fileId: LrRelayIdInput;
|
|
61
|
-
fileKeyId?: LrRelayIdInput;
|
|
62
|
-
}
|
|
63
|
-
interface ChangeItemParentsOptions {
|
|
64
|
-
parentsToRemove: LrRelayIdInput[];
|
|
65
|
-
parentsToAdd: ParentDirectoryOptions[];
|
|
66
|
-
}
|
|
67
|
-
export interface ChangeDirectoryParentsOptions extends ChangeItemParentsOptions {
|
|
68
|
-
directoryId: LrRelayIdInput;
|
|
69
|
-
directoryKeyId?: LrRelayIdInput;
|
|
70
|
-
}
|
|
71
|
-
export interface ChangeFileParentsOptions extends ChangeItemParentsOptions {
|
|
72
|
-
fileId: LrRelayIdInput;
|
|
73
|
-
fileKeyId?: LrRelayIdInput;
|
|
74
|
-
}
|
|
75
|
-
export declare class Item2Service extends LrService {
|
|
76
|
-
private ngZone;
|
|
77
|
-
private injector;
|
|
78
|
-
private fileService;
|
|
79
|
-
private keyService;
|
|
80
|
-
private keyMeta;
|
|
81
|
-
private keyFactory;
|
|
82
|
-
private keyGraph;
|
|
83
|
-
constructor(ngZone: NgZone, injector: Injector, fileService: FileService, keyService: KeyService, keyMeta: KeyMetaService, keyFactory: KeyFactoryService, keyGraph: KeyGraphService);
|
|
84
|
-
downloadFileContent(options: DownloadFileContentOptions): Promise<ArrayBuffer>;
|
|
85
|
-
createDirectory(options: CreateDirectoryOptions): Promise<LrMutation<CreateDirectoryMutation, {
|
|
86
|
-
input: {
|
|
87
|
-
parentDirectories: ParentDirectoryInput[];
|
|
88
|
-
parentRootDirectory: ParentRootDirectoryInput;
|
|
89
|
-
plainMeta: string;
|
|
90
|
-
cipherMeta: string;
|
|
91
|
-
};
|
|
92
|
-
}>>;
|
|
93
|
-
updateDirectoryExec(options: UpdateDirectoryOptions): Promise<UpdateDirectoryMutation>;
|
|
94
|
-
updateDirectory(options: UpdateDirectoryOptions): Promise<LrMutation<UpdateDirectoryMutation, {
|
|
95
|
-
input: {
|
|
96
|
-
directoryId: string;
|
|
97
|
-
plainMeta: string;
|
|
98
|
-
cipherMeta: string;
|
|
99
|
-
};
|
|
100
|
-
}>>;
|
|
101
|
-
updateDirectoryMutation(options: UpdateDirectoryOptions): Promise<LrMutation<UpdateDirectoryMutation, {
|
|
102
|
-
input: {
|
|
103
|
-
directoryId: string;
|
|
104
|
-
plainMeta: string;
|
|
105
|
-
cipherMeta: string;
|
|
106
|
-
};
|
|
107
|
-
}>>;
|
|
108
|
-
deleteDirectory(id: ID): LrMutation<DeleteDirectoryMutation, {
|
|
109
|
-
input: {
|
|
110
|
-
directoryId: string;
|
|
111
|
-
};
|
|
112
|
-
}>;
|
|
113
|
-
createFile(options: CreateFileOptions): Promise<LrMutation<CreateFileMutation, {
|
|
114
|
-
input: {
|
|
115
|
-
parentDirectories: FileParentDirectoryInput[];
|
|
116
|
-
wrappedStateKey: string;
|
|
117
|
-
contentResource: string;
|
|
118
|
-
plainMeta: string;
|
|
119
|
-
cipherMeta: string;
|
|
120
|
-
};
|
|
121
|
-
}>>;
|
|
122
|
-
updateFile(options: UpdateFileOptions): Promise<LrMutation<UpdateFileMutation, {
|
|
123
|
-
input: {
|
|
124
|
-
fileId: string;
|
|
125
|
-
wrappedStateKey: string;
|
|
126
|
-
contentResource: string;
|
|
127
|
-
plainMeta: string;
|
|
128
|
-
cipherMeta: string;
|
|
129
|
-
};
|
|
130
|
-
}>>;
|
|
131
|
-
deleteFile(id: ID): LrMutation<DeleteFileMutation, {
|
|
132
|
-
input: {
|
|
133
|
-
fileId: string;
|
|
134
|
-
};
|
|
135
|
-
}>;
|
|
136
|
-
private getParentDirectoryInput;
|
|
137
|
-
getFileStateKeyId(fileStateNodeId: LrRelayIdInput): Promise<string>;
|
|
138
|
-
getDirectoryKeyId(directoryId: LrRelayIdInput): Promise<string>;
|
|
139
|
-
getFileKeyId(fileId: LrRelayIdInput): Promise<string>;
|
|
140
|
-
getDirectoryKey(directoryId: LrRelayIdInput, directoryKeyId?: LrRelayIdInput): Promise<import("../cryptography/cryptography.types").Key>;
|
|
141
|
-
getFileKey(fileId: LrRelayIdInput, fileKeyId?: LrRelayIdInput): Promise<import("../cryptography/cryptography.types").Key>;
|
|
142
|
-
private getInput;
|
|
143
|
-
private createFileState;
|
|
144
|
-
archiveDirectory(directoryId: string, recursive: boolean): LrMutation<ArchiveDirectoryMutation, {
|
|
145
|
-
input: {
|
|
146
|
-
directoryId: string;
|
|
147
|
-
recursive: boolean;
|
|
148
|
-
};
|
|
149
|
-
}>;
|
|
150
|
-
unarchiveDirectory(directoryId: string, recursive: boolean): LrMutation<UnarchiveDirectoryMutation, {
|
|
151
|
-
input: {
|
|
152
|
-
directoryId: string;
|
|
153
|
-
recursive: boolean;
|
|
154
|
-
};
|
|
155
|
-
}>;
|
|
156
|
-
protected getChangeItemParentsInput(options: ChangeItemParentsOptions, itemKey: JWK.Key): Promise<{
|
|
157
|
-
directoriesToRemove: string[];
|
|
158
|
-
directoriesToAdd: ParentDirectoryInput[];
|
|
159
|
-
}>;
|
|
160
|
-
changeDirectoryParents(options: ChangeDirectoryParentsOptions): Promise<import("./item2.gql").ChangeDirectoryParentsMutationResult>;
|
|
161
|
-
changeDirectoryParentsMutation(options: ChangeDirectoryParentsOptions): Promise<LrMutation<import("./item2.gql").ChangeDirectoryParentsMutationResult, {
|
|
162
|
-
input: {
|
|
163
|
-
directoryId: string;
|
|
164
|
-
directoriesToRemove: string[];
|
|
165
|
-
directoriesToAdd: ParentDirectoryInput[];
|
|
166
|
-
};
|
|
167
|
-
}>>;
|
|
168
|
-
changeFileParents(options: ChangeFileParentsOptions): Promise<import("./item2.gql").ChangeFileParentsMutationResult>;
|
|
169
|
-
changeFileParentsMutation(options: ChangeFileParentsOptions): Promise<LrMutation<import("./item2.gql").ChangeFileParentsMutationResult, {
|
|
170
|
-
input: {
|
|
171
|
-
fileId: string;
|
|
172
|
-
directoriesToRemove: string[];
|
|
173
|
-
directoriesToAdd: ParentDirectoryInput[];
|
|
174
|
-
};
|
|
175
|
-
}>>;
|
|
176
|
-
}
|
|
177
|
-
export {};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare const SubAssemblyFields: string;
|
|
2
|
-
export declare const CreateScenarioApproverAssemblyMutation: import("graphql").DocumentNode;
|
|
3
|
-
export declare const UpdateScenarioApproverAssemblyMutation: import("graphql").DocumentNode;
|
|
4
|
-
export declare const DeleteScenarioApproverAssemblyMutation: import("graphql").DocumentNode;
|
|
5
|
-
export declare const GetScenarioApproverQuery: import("graphql").DocumentNode;
|
|
6
|
-
export declare const AddScenarioApproverMutation: import("graphql").DocumentNode;
|
|
7
|
-
export declare const UpdateScenarioApproverMutation: import("graphql").DocumentNode;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { Receiver } from './../receivers/scenario-receiver.types';
|
|
2
|
-
import { TrustedParty } from '../../trusted-parties/trusted-party.types';
|
|
3
|
-
export interface ApprovalGroup {
|
|
4
|
-
id: string;
|
|
5
|
-
keyId: string;
|
|
6
|
-
name: string;
|
|
7
|
-
singleReject: boolean;
|
|
8
|
-
quorum: number;
|
|
9
|
-
approvers?: Approver[];
|
|
10
|
-
}
|
|
11
|
-
export interface Approver {
|
|
12
|
-
id: string;
|
|
13
|
-
keyId: string;
|
|
14
|
-
trustedParty: TrustedParty;
|
|
15
|
-
message?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface ScenarioApproverAssemblyInput {
|
|
18
|
-
scenarioId: string;
|
|
19
|
-
keyId: string;
|
|
20
|
-
singleReject: boolean;
|
|
21
|
-
quorum: number;
|
|
22
|
-
plainAssemblyCipherData?: any;
|
|
23
|
-
}
|
|
24
|
-
export interface CreateSubAssemblyInput {
|
|
25
|
-
quorum: number;
|
|
26
|
-
singleReject: boolean;
|
|
27
|
-
plainSubAssemblyCipherData: any;
|
|
28
|
-
}
|
|
29
|
-
export interface CreateScenarioApprovalGroups {
|
|
30
|
-
scenarioId: string;
|
|
31
|
-
event: string;
|
|
32
|
-
keyId: string;
|
|
33
|
-
quorum: number;
|
|
34
|
-
singleReject: boolean;
|
|
35
|
-
plainAssemblyCipherData?: string;
|
|
36
|
-
approvalGroups: UpdateScenarioApprovalGroup[];
|
|
37
|
-
receivers?: Receiver[];
|
|
38
|
-
}
|
|
39
|
-
export interface UpdateScenarioApprovalGroups {
|
|
40
|
-
scenarioId: string;
|
|
41
|
-
assemblyKeyId: string;
|
|
42
|
-
quorum: number;
|
|
43
|
-
singleReject: boolean;
|
|
44
|
-
plainAssemblyCipherData?: string;
|
|
45
|
-
approvalGroups: UpdateScenarioApprovalGroup[];
|
|
46
|
-
deletedGroupIds: string[];
|
|
47
|
-
}
|
|
48
|
-
export interface UpdateScenarioApprovalGroup {
|
|
49
|
-
subAssemblyId?: string;
|
|
50
|
-
quorum: number;
|
|
51
|
-
singleReject: boolean;
|
|
52
|
-
plainSubAssemblyCipherData: object;
|
|
53
|
-
approvers: UpdateScenarioApprover[];
|
|
54
|
-
deletedApproverIds?: string[];
|
|
55
|
-
}
|
|
56
|
-
export interface UpdateScenarioApprover {
|
|
57
|
-
approverId?: string;
|
|
58
|
-
keyId?: string;
|
|
59
|
-
trustedPartyId: string;
|
|
60
|
-
trustedPartySharedKeyId: string;
|
|
61
|
-
plainSharedCipherData: object;
|
|
62
|
-
approvalData?: string;
|
|
63
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { LrApolloService } from '../../api/lr-apollo.service';
|
|
2
|
-
import { EncryptionService } from '../../cryptography/encryption.service';
|
|
3
|
-
import { KeyFactoryService } from '../../cryptography/key-factory.service';
|
|
4
|
-
import { KeyGraphService } from '../../cryptography/key-graph.service';
|
|
5
|
-
import { KeyMetaService } from '../../cryptography/key-meta.service';
|
|
6
|
-
import * as slip from '../../cryptography/slip39.service';
|
|
7
|
-
import { TrustedPartyService } from '../../trusted-parties/trusted-party.service';
|
|
8
|
-
import { Receiver } from '../receivers/scenario-receiver.types';
|
|
9
|
-
import { ApprovalGroup, Approver, CreateScenarioApprovalGroups, UpdateScenarioApprovalGroups, UpdateScenarioApprover } from './scenario-approval.types';
|
|
10
|
-
export declare class ScenarioApproverService {
|
|
11
|
-
private lrApollo;
|
|
12
|
-
private keyFactory;
|
|
13
|
-
private keyMetaService;
|
|
14
|
-
private keyGraph;
|
|
15
|
-
private slip39Service;
|
|
16
|
-
private encryptionService;
|
|
17
|
-
private trustedPartyService;
|
|
18
|
-
static SLIP39_PASSPHRASE: string;
|
|
19
|
-
constructor(lrApollo: LrApolloService, keyFactory: KeyFactoryService, keyMetaService: KeyMetaService, keyGraph: KeyGraphService, slip39Service: slip.Slip39Service, encryptionService: EncryptionService, trustedPartyService: TrustedPartyService);
|
|
20
|
-
getApprover(approverId: string): Promise<Approver>;
|
|
21
|
-
mapApproverGroup(group: any): Promise<ApprovalGroup>;
|
|
22
|
-
private mapApprover;
|
|
23
|
-
updateApprover(approver: UpdateScenarioApprover): Promise<void>;
|
|
24
|
-
createScenarioApproverAssembly(input: CreateScenarioApprovalGroups): Promise<string>;
|
|
25
|
-
updateScenarioApproverAssembly(input: UpdateScenarioApprovalGroups): Promise<void>;
|
|
26
|
-
deleteScenarioApproverAssembly(scenarioId: string, event: string, receivers: Receiver[]): Promise<void>;
|
|
27
|
-
private rewrapReceivers;
|
|
28
|
-
private mapApprovalGroups;
|
|
29
|
-
private mapApprovalGroup;
|
|
30
|
-
private mapApprovers;
|
|
31
|
-
private createSlipAssembly;
|
|
32
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare const ClaimantFields: string;
|
|
2
|
-
export declare const GetScenarioClaimantQuery: import("graphql").DocumentNode;
|
|
3
|
-
export declare const AddScenarioClaimantMutation: import("graphql").DocumentNode;
|
|
4
|
-
export declare const UpdateScenarioClaimantMutation: import("graphql").DocumentNode;
|
|
5
|
-
export declare const DeleteScenarioClaimantMutation: import("graphql").DocumentNode;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { LrApolloService } from '../../api/lr-apollo.service';
|
|
2
|
-
import { KeyGraphService } from '../../cryptography/key-graph.service';
|
|
3
|
-
import { KeyMetaService } from '../../cryptography/key-meta.service';
|
|
4
|
-
import { TrustedPartyService } from '../../trusted-parties/trusted-party.service';
|
|
5
|
-
import { Claimant, AddScenarioClaimant, UpdateScenarioClaimant } from './scenario-claimant.types';
|
|
6
|
-
export declare class ScenarioClaimantService {
|
|
7
|
-
private lrApollo;
|
|
8
|
-
private keyMetaService;
|
|
9
|
-
private keyGraph;
|
|
10
|
-
private tpService;
|
|
11
|
-
constructor(lrApollo: LrApolloService, keyMetaService: KeyMetaService, keyGraph: KeyGraphService, tpService: TrustedPartyService);
|
|
12
|
-
getClaimant(claimantId: string): Promise<Claimant>;
|
|
13
|
-
mapClaimant(claimant: any): Promise<Claimant>;
|
|
14
|
-
addClaimant(claimant: AddScenarioClaimant): Promise<string>;
|
|
15
|
-
updateClaimant(claimant: UpdateScenarioClaimant): Promise<string>;
|
|
16
|
-
deleteClaimant(claimantId: string): Promise<void>;
|
|
17
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { TrustedParty } from '../../trusted-parties/trusted-party.types';
|
|
2
|
-
export interface Claimant {
|
|
3
|
-
id: string;
|
|
4
|
-
keyId: string;
|
|
5
|
-
trustedParty: TrustedParty;
|
|
6
|
-
message?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface AddScenarioClaimant {
|
|
9
|
-
scenarioId: string;
|
|
10
|
-
trustedPartyId: string;
|
|
11
|
-
trustedPartySharedKeyId: string;
|
|
12
|
-
plainSharedCipherData: object;
|
|
13
|
-
}
|
|
14
|
-
export interface UpdateScenarioClaimant {
|
|
15
|
-
id: string;
|
|
16
|
-
keyId: string;
|
|
17
|
-
plainSharedCipherData: object;
|
|
18
|
-
}
|