@lifeready/core 0.6.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/bundles/lifeready-core.umd.js +15939 -0
- package/bundles/lifeready-core.umd.js.map +1 -0
- package/bundles/lifeready-core.umd.min.js +2 -0
- package/bundles/lifeready-core.umd.min.js.map +1 -0
- package/esm2015/lib/_common/ast.js +40 -0
- package/esm2015/lib/_common/deferred-promise.js +24 -0
- package/esm2015/lib/_common/exceptions.js +157 -0
- package/esm2015/lib/_common/queries.gql.js +190 -0
- package/esm2015/lib/_common/run-outside-angular.js +79 -0
- package/esm2015/lib/_common/types.js +1 -0
- package/esm2015/lib/_common/utils.js +44 -0
- package/esm2015/lib/api/contact-card.gql.js +79 -0
- package/esm2015/lib/api/contact-card.service.js +154 -0
- package/esm2015/lib/api/contact-card2.gql.js +60 -0
- package/esm2015/lib/api/contact-card2.service.js +103 -0
- package/esm2015/lib/api/file.service.js +74 -0
- package/esm2015/lib/api/item2.gql.js +110 -0
- package/esm2015/lib/api/item2.service.js +311 -0
- package/esm2015/lib/api/key-exchange.gql.js +188 -0
- package/esm2015/lib/api/key-exchange.service.js +442 -0
- package/esm2015/lib/api/key-exchange.types.js +18 -0
- package/esm2015/lib/api/key-exchange2.gql.js +171 -0
- package/esm2015/lib/api/key-exchange2.service.js +479 -0
- package/esm2015/lib/api/lock.gql.js +40 -0
- package/esm2015/lib/api/lock.service.js +64 -0
- package/esm2015/lib/api/lr-apollo.service.js +46 -0
- package/esm2015/lib/api/lr-graphql/index.js +6 -0
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
- package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
- package/esm2015/lib/api/message.service.js +138 -0
- package/esm2015/lib/api/persist.service.js +181 -0
- package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
- package/esm2015/lib/api/query-processor/index.js +3 -0
- package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
- package/esm2015/lib/api/shared-contact-card.service.js +119 -0
- package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
- package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
- package/esm2015/lib/api/time.service.js +146 -0
- package/esm2015/lib/api/types/graphql.types.js +7 -0
- package/esm2015/lib/api/types/index.js +3 -0
- package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
- package/esm2015/lib/auth/auth.config.js +57 -0
- package/esm2015/lib/auth/auth.gql.js +48 -0
- package/esm2015/lib/auth/auth.types.js +27 -0
- package/esm2015/lib/auth/idle.service.js +168 -0
- package/esm2015/lib/auth/idle.types.js +7 -0
- package/esm2015/lib/auth/lbop.service.js +355 -0
- package/esm2015/lib/auth/life-ready-auth.service.js +333 -0
- package/esm2015/lib/auth/password.service.js +320 -0
- package/esm2015/lib/auth/register.service.js +172 -0
- package/esm2015/lib/auth/two-factor.service.js +74 -0
- package/esm2015/lib/category/category-meta.service.js +99 -0
- package/esm2015/lib/category/category.gql.js +406 -0
- package/esm2015/lib/category/category.service.js +390 -0
- package/esm2015/lib/category/category.types.js +29 -0
- package/esm2015/lib/cryptography/cryptography.types.js +11 -0
- package/esm2015/lib/cryptography/encryption.service.js +189 -0
- package/esm2015/lib/cryptography/key-factory.service.js +237 -0
- package/esm2015/lib/cryptography/key-graph.service.js +280 -0
- package/esm2015/lib/cryptography/key-meta.service.js +200 -0
- package/esm2015/lib/cryptography/key.service.js +124 -0
- package/esm2015/lib/cryptography/slip39.service.js +169 -0
- package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
- package/esm2015/lib/life-ready.config.js +84 -0
- package/esm2015/lib/life-ready.module.js +74 -0
- package/esm2015/lib/plan/plan.gql.js +123 -0
- package/esm2015/lib/plan/plan.service.js +149 -0
- package/esm2015/lib/plan/plan.types.js +11 -0
- package/esm2015/lib/record/record-attachment.service.js +101 -0
- package/esm2015/lib/record/record.gql.js +179 -0
- package/esm2015/lib/record/record.service.js +206 -0
- package/esm2015/lib/record/record.types.js +15 -0
- package/esm2015/lib/record-type/record-type.service.js +75 -0
- package/esm2015/lib/record-type/record-type.types.js +28 -0
- package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
- package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
- package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
- package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
- package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
- package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
- package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
- package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
- package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
- package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
- package/esm2015/lib/scenario/scenario.gql.js +368 -0
- package/esm2015/lib/scenario/scenario.service.js +611 -0
- package/esm2015/lib/scenario/scenario.types.js +64 -0
- package/esm2015/lib/search/search.gql.js +62 -0
- package/esm2015/lib/search/search.service.js +156 -0
- package/esm2015/lib/search/search.types.js +6 -0
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +266 -0
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -0
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +300 -0
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -0
- package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -0
- package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -0
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -0
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -0
- package/esm2015/lib/users/profile-details.service.js +214 -0
- package/esm2015/lib/users/profile.gql.js +97 -0
- package/esm2015/lib/users/profile.service.js +169 -0
- package/esm2015/lib/users/profile.types.js +34 -0
- package/esm2015/lib/users/user.gql.js +60 -0
- package/esm2015/lib/users/user.service.js +79 -0
- package/esm2015/lib/users/user.types.js +5 -0
- package/esm2015/lifeready-core.js +10 -0
- package/esm2015/public-api.js +81 -0
- package/fesm2015/lifeready-core.js +13290 -0
- package/fesm2015/lifeready-core.js.map +1 -0
- package/lib/_common/ast.d.ts +11 -0
- package/lib/_common/deferred-promise.d.ts +12 -0
- package/lib/_common/exceptions.d.ts +109 -0
- package/lib/_common/queries.gql.d.ts +10 -0
- package/lib/_common/run-outside-angular.d.ts +14 -0
- package/lib/_common/types.d.ts +10 -0
- package/lib/_common/utils.d.ts +3 -0
- package/lib/api/contact-card.gql.d.ts +7 -0
- package/lib/api/contact-card.service.d.ts +52 -0
- package/lib/api/contact-card2.gql.d.ts +34 -0
- package/lib/api/contact-card2.service.d.ts +49 -0
- package/lib/api/file.service.d.ts +18 -0
- package/lib/api/item2.gql.d.ts +96 -0
- package/lib/api/item2.service.d.ts +177 -0
- package/lib/api/key-exchange.gql.d.ts +9 -0
- package/lib/api/key-exchange.service.d.ts +39 -0
- package/lib/api/key-exchange.types.d.ts +196 -0
- package/lib/api/key-exchange2.gql.d.ts +125 -0
- package/lib/api/key-exchange2.service.d.ts +187 -0
- package/lib/api/lock.gql.d.ts +27 -0
- package/lib/api/lock.service.d.ts +25 -0
- package/lib/api/lr-apollo.service.d.ts +15 -0
- package/lib/api/lr-graphql/index.d.ts +5 -0
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -0
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
- package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
- package/lib/api/lr-graphql/lr.service.d.ts +9 -0
- package/lib/api/message.service.d.ts +58 -0
- package/lib/api/persist.service.d.ts +31 -0
- package/lib/api/query-processor/common-processors.service.d.ts +36 -0
- package/lib/api/query-processor/index.d.ts +2 -0
- package/lib/api/query-processor/query-processor.service.d.ts +18 -0
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
- package/lib/api/shared-contact-card.service.d.ts +33 -0
- package/lib/api/shared-contact-card2.gql.d.ts +36 -0
- package/lib/api/shared-contact-card2.service.d.ts +45 -0
- package/lib/api/time.service.d.ts +16 -0
- package/lib/api/types/graphql.types.d.ts +29 -0
- package/lib/api/types/index.d.ts +2 -0
- package/lib/api/types/lr-graphql.types.d.ts +385 -0
- package/lib/auth/auth.config.d.ts +5 -0
- package/lib/auth/auth.gql.d.ts +15 -0
- package/lib/auth/auth.types.d.ts +66 -0
- package/lib/auth/idle.service.d.ts +40 -0
- package/lib/auth/idle.types.d.ts +10 -0
- package/lib/auth/lbop.service.d.ts +91 -0
- package/lib/auth/life-ready-auth.service.d.ts +46 -0
- package/lib/auth/password.service.d.ts +78 -0
- package/lib/auth/register.service.d.ts +25 -0
- package/lib/auth/two-factor.service.d.ts +15 -0
- package/lib/category/category-meta.service.d.ts +23 -0
- package/lib/category/category.gql.d.ts +45 -0
- package/lib/category/category.service.d.ts +67 -0
- package/lib/category/category.types.d.ts +79 -0
- package/lib/cryptography/cryptography.types.d.ts +83 -0
- package/lib/cryptography/encryption.service.d.ts +41 -0
- package/lib/cryptography/key-factory.service.d.ts +38 -0
- package/lib/cryptography/key-graph.service.d.ts +33 -0
- package/lib/cryptography/key-meta.service.d.ts +44 -0
- package/lib/cryptography/key.service.d.ts +36 -0
- package/lib/cryptography/slip39.service.d.ts +43 -0
- package/lib/cryptography/web-crypto.service.d.ts +5 -0
- package/lib/life-ready.config.d.ts +14 -0
- package/lib/life-ready.module.d.ts +5 -0
- package/lib/plan/plan.gql.d.ts +11 -0
- package/lib/plan/plan.service.d.ts +33 -0
- package/lib/plan/plan.types.d.ts +31 -0
- package/lib/record/record-attachment.service.d.ts +16 -0
- package/lib/record/record.gql.d.ts +14 -0
- package/lib/record/record.service.d.ts +25 -0
- package/lib/record/record.types.d.ts +57 -0
- package/lib/record-type/record-type.service.d.ts +11 -0
- package/lib/record-type/record-type.types.d.ts +50 -0
- package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
- package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
- package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
- package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
- package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
- package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
- package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
- package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
- package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
- package/lib/scenario/scenario-setup.service.d.ts +22 -0
- package/lib/scenario/scenario.gql.d.ts +34 -0
- package/lib/scenario/scenario.service.d.ts +58 -0
- package/lib/scenario/scenario.types.d.ts +217 -0
- package/lib/search/search.gql.d.ts +1 -0
- package/lib/search/search.service.d.ts +25 -0
- package/lib/search/search.types.d.ts +20 -0
- package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
- package/lib/trusted-parties/tp-password-reset-user.service.d.ts +41 -0
- package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
- package/lib/trusted-parties/tp-password-reset.service.d.ts +131 -0
- package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
- package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
- package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
- package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
- package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
- package/lib/users/profile-details.service.d.ts +21 -0
- package/lib/users/profile.gql.d.ts +11 -0
- package/lib/users/profile.service.d.ts +35 -0
- package/lib/users/profile.types.d.ts +96 -0
- package/lib/users/user.gql.d.ts +9 -0
- package/lib/users/user.service.d.ts +12 -0
- package/lib/users/user.types.d.ts +23 -0
- package/lifeready-core.d.ts +9 -0
- package/lifeready-core.metadata.json +1 -0
- package/package.json +29 -0
- package/public-api.d.ts +77 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { LrNotFoundException } from '../_common/exceptions';
|
|
4
|
+
import { PersistService } from '../api/persist.service';
|
|
5
|
+
import { KeyFactoryService as KFS } from './key-factory.service';
|
|
6
|
+
import { LR_CONFIG } from '../life-ready.config';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../life-ready.config";
|
|
9
|
+
import * as i2 from "../api/persist.service";
|
|
10
|
+
export class UserKeys {
|
|
11
|
+
}
|
|
12
|
+
export class KeyService {
|
|
13
|
+
constructor(config, persistService) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.persistService = persistService;
|
|
16
|
+
this.STORE_MASTER_KEY = 'masterKey';
|
|
17
|
+
// AZ: This can't be change easily. It's basically a PassK or PassIdp rotation.
|
|
18
|
+
// todo: we should eventually increase this periodically to match with Moore's law.
|
|
19
|
+
// The iterations for each key are kept by the server as well but we assume the value
|
|
20
|
+
// from the server is not trustworthy, so need to have minimum thresholds here.
|
|
21
|
+
// If creating new keys, these minimum are used.
|
|
22
|
+
this.MIN_PASS_IDP_PBKDF_ITER = 100000;
|
|
23
|
+
this.MIN_PASS_KEY_PBKDF_ITER = 100000;
|
|
24
|
+
this.MIN_LBOP_KEY_PBKDF_ITER = 100000;
|
|
25
|
+
// These are used as the default values. They must be larger than the minimum values.
|
|
26
|
+
this.DEFAULT_PASS_IDP_PBKDF_ITER = this.MIN_PASS_IDP_PBKDF_ITER;
|
|
27
|
+
this.DEFAULT_PASS_KEY_PBKDF_ITER = this.MIN_PASS_KEY_PBKDF_ITER;
|
|
28
|
+
this.DEFAULT_LBOP_KEY_PBKDF_ITER = this.MIN_LBOP_KEY_PBKDF_ITER;
|
|
29
|
+
this.resetKeys();
|
|
30
|
+
}
|
|
31
|
+
resetKeys() {
|
|
32
|
+
this.keys = null;
|
|
33
|
+
this.masterKey = null;
|
|
34
|
+
}
|
|
35
|
+
purgeKeys() {
|
|
36
|
+
this.resetKeys();
|
|
37
|
+
this.persistService.clear();
|
|
38
|
+
}
|
|
39
|
+
populateKeys(keys) {
|
|
40
|
+
this.keys = keys;
|
|
41
|
+
}
|
|
42
|
+
getCurrentPassKey() {
|
|
43
|
+
return this.keys.passKey;
|
|
44
|
+
}
|
|
45
|
+
getCurrentMasterKey() {
|
|
46
|
+
return this.keys.masterKey;
|
|
47
|
+
}
|
|
48
|
+
getCurrentRootKey() {
|
|
49
|
+
return this.keys.rootKey;
|
|
50
|
+
}
|
|
51
|
+
getCurrentPxk() {
|
|
52
|
+
return this.keys.pxk;
|
|
53
|
+
}
|
|
54
|
+
getCurrentSigPxk() {
|
|
55
|
+
return this.keys.sigPxk;
|
|
56
|
+
}
|
|
57
|
+
expiresAfter(seconds) {
|
|
58
|
+
return new Date(Date.now() + 1000 * seconds);
|
|
59
|
+
}
|
|
60
|
+
persistMasterKey(masterKey, expiresAfterSeconds) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const storedKey = {
|
|
63
|
+
id: masterKey.id,
|
|
64
|
+
jwk: masterKey.jwk.toJSON(true),
|
|
65
|
+
};
|
|
66
|
+
this.masterKey = masterKey;
|
|
67
|
+
// Save in an expirable cookie.
|
|
68
|
+
yield this.persistService.set({
|
|
69
|
+
name: this.STORE_MASTER_KEY,
|
|
70
|
+
value: storedKey,
|
|
71
|
+
expiry: this.expiresAfter(expiresAfterSeconds),
|
|
72
|
+
serverSession: !this.config.disableSessionEncryptionKey,
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
setMasterKeyExpiresAfterSeconds(seconds) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
const storedKey = yield this.persistService.get(this.STORE_MASTER_KEY);
|
|
79
|
+
if (storedKey == null) {
|
|
80
|
+
throw new LrNotFoundException(`Can not find masterKey in persisted storage using name: ${this.STORE_MASTER_KEY}`);
|
|
81
|
+
}
|
|
82
|
+
yield this.persistService.set({
|
|
83
|
+
name: this.STORE_MASTER_KEY,
|
|
84
|
+
value: storedKey,
|
|
85
|
+
expiry: this.expiresAfter(seconds),
|
|
86
|
+
serverSession: !this.config.disableSessionEncryptionKey,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
// There's little benefit in using WebCrypto's none-extractable keys because if there
|
|
91
|
+
// is an XSS attack, then the attacker has control over the js that downloads the keys. The
|
|
92
|
+
// attacker can modify the code to import the keys as extractable. So none-extractable keys
|
|
93
|
+
// are only useful if they are already persisted and the user cannot download any more keys,
|
|
94
|
+
// which is not feasible.
|
|
95
|
+
// So storing the PassKey in localstorage for now, at least till we know what the usage
|
|
96
|
+
// pattern is, i.e. how often do we need to use the RootK, MaterK, and PassK.
|
|
97
|
+
loadMasterKey(masterKeyId) {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
if (!this.masterKey) {
|
|
100
|
+
const storedKey = yield this.persistService.get(this.STORE_MASTER_KEY);
|
|
101
|
+
if (!storedKey) {
|
|
102
|
+
throw new LrNotFoundException('Could not find masterKey in persisted storage');
|
|
103
|
+
}
|
|
104
|
+
if (storedKey.id !== masterKeyId) {
|
|
105
|
+
throw new LrNotFoundException(`masterKeyId ${storedKey.id} in persisted storage does not match the one requested ${masterKeyId}`);
|
|
106
|
+
}
|
|
107
|
+
storedKey.jwk = yield KFS.asKey(storedKey.jwk);
|
|
108
|
+
this.masterKey = storedKey;
|
|
109
|
+
}
|
|
110
|
+
return this.masterKey;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
KeyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function KeyService_Factory() { return new KeyService(i0.ɵɵinject(i1.LR_CONFIG), i0.ɵɵinject(i2.PersistService)); }, token: KeyService, providedIn: "root" });
|
|
115
|
+
KeyService.decorators = [
|
|
116
|
+
{ type: Injectable, args: [{
|
|
117
|
+
providedIn: 'root',
|
|
118
|
+
},] }
|
|
119
|
+
];
|
|
120
|
+
KeyService.ctorParameters = () => [
|
|
121
|
+
{ type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
|
|
122
|
+
{ type: PersistService }
|
|
123
|
+
];
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLElBQUksR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUVsRSxNQUFNLE9BQU8sUUFBUTtDQU1wQjtBQVVELE1BQU0sT0FBTyxVQUFVO0lBb0JyQixZQUM2QixNQUF1QixFQUMxQyxjQUE4QjtRQURYLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXJCdkIscUJBQWdCLEdBQUcsV0FBVyxDQUFDO1FBS2hELCtFQUErRTtRQUMvRSxtRkFBbUY7UUFDbkYscUZBQXFGO1FBQ3JGLCtFQUErRTtRQUMvRSxnREFBZ0Q7UUFDaEMsNEJBQXVCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLDRCQUF1QixHQUFHLE1BQU0sQ0FBQztRQUNqQyw0QkFBdUIsR0FBRyxNQUFNLENBQUM7UUFFakQscUZBQXFGO1FBQ3JFLGdDQUEyQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCxnQ0FBMkIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDM0QsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBTXpFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsU0FBUztRQUNQLElB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LG1CQUFtQixDQUMzQiwrQ0FBK0MsQ0FDaEQsQ0FBQztpQkFDSDtnQkFFRCxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssV0FBVyxFQUFFO29CQUNoQyxNQUFNLElBQUksbUJBQW1CLENBQzNCLGVBQWUsU0FBUyxDQUFDLEVBQUUsMERBQTBELFdBQVcsRUFBRSxDQUNuRyxDQUFDO2lCQUNIO2dCQUVELFNBQVMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7YUFDNUI7WUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEIsQ0FBQztLQUFBOzs7O1lBcElGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQXNCSSxNQUFNLFNBQUMsU0FBUztZQXpDWixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEtleSwgUGFzc0tleSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5LnR5cGVzJztcclxuaW1wb3J0IHsgTHJOb3RGb3VuZEV4Y2VwdGlvbiB9IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XHJcbmltcG9ydCB7IFBlcnNpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL3BlcnNpc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIGFzIEtGUyB9IGZyb20gJy4va2V5LWZhY3Rvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IExpZmVSZWFkeUNvbmZpZywgTFJfQ09ORklHIH0gZnJvbSAnLi4vbGlmZS1yZWFkeS5jb25maWcnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJLZXlzIHtcclxuICBwYXNzS2V5OiBQYXNzS2V5O1xyXG4gIG1hc3RlcktleTogS2V5O1xyXG4gIHJvb3RLZXk/OiBLZXk7XHJcbiAgcHhrPzogS2V5O1xyXG4gIHNpZ1B4az86IEtleTtcclxufVxyXG5cclxuaW50ZXJmYWNlIFN0b3JlZFBhc3NLZXkge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgandrOiBvYmplY3Q7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLZXlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IFNUT1JFX01BU1RFUl9LRVkgPSAnbWFzdGVyS2V5JztcclxuICAvLyB2YXJpYWJsZXNcclxuICBwcml2YXRlIGtleXM6IFVzZXJLZXlzO1xyXG4gIHByaXZhdGUgbWFzdGVyS2V5OiBLZXk7XHJcblxyXG4gIC8vIEFaOiBUaGlzIGNhbid0IGJlIGNoYW5nZSBlYXNpbHkuIEl0J3MgYmFzaWNhbGx5IGEgUGFzc0sgb3IgUGFzc0lkcCByb3RhdGlvbi5cclxuICAvLyB0b2RvOiB3ZSBzaG91bGQgZXZlbnR1YWxseSBpbmNyZWFzZSB0aGlzIHBlcmlvZGljYWxseSB0byBtYXRjaCB3aXRoIE1vb3JlJ3MgbGF3LlxyXG4gIC8vIFRoZSBpdGVyYXRpb25zIGZvciBlYWNoIGtleSBhcmUga2VwdCBieSB0aGUgc2VydmVyIGFzIHdlbGwgYnV0IHdlIGFzc3VtZSB0aGUgdmFsdWVcclxuICAvLyBmcm9tIHRoZSBzZXJ2ZXIgaXMgbm90IHRydXN0d29ydGh5LCBzbyBuZWVkIHRvIGhhdmUgbWluaW11bSB0aHJlc2hvbGRzIGhlcmUuXHJcbiAgLy8gSWYgY3JlYXRpbmcgbmV3IGtleXMsIHRoZXNlIG1pbmltdW0gYXJlIHVzZWQuXHJcbiAgcHVibGljIHJlYWRvbmx5IE1JTl9QQVNTX0lEUF9QQktERl9JVEVSID0gMTAwMDAwO1xyXG4gIHB1YmxpYyByZWFkb25seSBNSU5fUEFTU19LRVlfUEJLREZfSVRFUiA9IDEwMDAwMDtcclxuICBwdWJsaWMgcmVhZG9ubHkgTUlOX0xCT1BfS0VZX1BCS0RGX0lURVIgPSAxMDAwMDA7XHJcblxyXG4gIC8vIFRoZXNlIGFyZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlcy4gVGhleSBtdXN0IGJlIGxhcmdlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlcy5cclxuICBwdWJsaWMgcmVhZG9ubHkgREVGQVVMVF9QQVNTX0lEUF9QQktERl9JVEVSID0gdGhpcy5NSU5fUEFTU19JRFBfUEJLREZfSVRFUjtcclxuICBwdWJsaWMgcmVhZG9ubHkgREVGQVVMVF9QQVNTX0tFWV9QQktERl9JVEVSID0gdGhpcy5NSU5fUEFTU19LRVlfUEJLREZfSVRFUjtcclxuICBwdWJsaWMgcmVhZG9ubHkgREVGQVVMVF9MQk9QX0tFWV9QQktERl9JVEVSID0gdGhpcy5NSU5fTEJPUF9LRVlfUEJLREZfSVRFUjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KExSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IExpZmVSZWFkeUNvbmZpZyxcclxuICAgIHByaXZhdGUgcGVyc2lzdFNlcnZpY2U6IFBlcnNpc3RTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnJlc2V0S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRLZXlzKCkge1xyXG4gICAgdGhpcy5rZXlzID0gbnVsbDtcclxuICAgIHRoaXMubWFzdGVyS2V5ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1cmdlS2V5cygpIHtcclxuICAgIHRoaXMucmVzZXRLZXlzKCk7XHJcbiAgICB0aGlzLnBlcnNpc3RTZXJ2aWNlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZUtleXMoa2V5czogVXNlcktleXMpIHtcclxuICAgIHRoaXMua2V5cyA9IGtleXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q3VycmVudFBhc3NLZXkoKTogS2V5IHtcclxuICAgIHJldHVybiB0aGlzLmtleXMucGFzc0tleTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDdXJyZW50TWFzdGVyS2V5KCk6IEtleSB7XHJcbiAgICByZXR1cm4gdGhpcy5rZXlzLm1hc3RlcktleTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDdXJyZW50Um9vdEtleSgpOiBLZXkge1xyXG4gICAgcmV0dXJuIHRoaXMua2V5cy5yb290S2V5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEN1cnJlbnRQeGsoKTogS2V5IHtcclxuICAgIHJldHVybiB0aGlzLmtleXMucHhrO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEN1cnJlbnRTaWdQeGsoKTogS2V5IHtcclxuICAgIHJldHVybiB0aGlzLmtleXMuc2lnUHhrO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBpcmVzQWZ0ZXIoc2Vjb25kczogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSArIDEwMDAgKiBzZWNvbmRzKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBlcnNpc3RNYXN0ZXJLZXkoXHJcbiAgICBtYXN0ZXJLZXk6IEtleSxcclxuICAgIGV4cGlyZXNBZnRlclNlY29uZHM6IG51bWJlclxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3Qgc3RvcmVkS2V5ID0ge1xyXG4gICAgICBpZDogbWFzdGVyS2V5LmlkLFxyXG4gICAgICBqd2s6IG1hc3RlcktleS5qd2sudG9KU09OKHRydWUpLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLm1hc3RlcktleSA9IG1hc3RlcktleTtcclxuXHJcbiAgICAvLyBTYXZlIGluIGFuIGV4cGlyYWJsZSBjb29raWUuXHJcbiAgICBhd2FpdCB0aGlzLnBlcnNpc3RTZXJ2aWNlLnNldCh7XHJcbiAgICAgIG5hbWU6IHRoaXMuU1RPUkVfTUFTVEVSX0tFWSxcclxuICAgICAgdmFsdWU6IHN0b3JlZEtleSxcclxuICAgICAgZXhwaXJ5OiB0aGlzLmV4cGlyZXNBZnRlcihleHBpcmVzQWZ0ZXJTZWNvbmRzKSxcclxuICAgICAgc2VydmVyU2Vzc2lvbjogIXRoaXMuY29uZmlnLmRpc2FibGVTZXNzaW9uRW5jcnlwdGlvbktleSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2V0TWFzdGVyS2V5RXhwaXJlc0FmdGVyU2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHN0b3JlZEtleSA9IGF3YWl0IHRoaXMucGVyc2lzdFNlcnZpY2UuZ2V0KHRoaXMuU1RPUkVfTUFTVEVSX0tFWSk7XHJcbiAgICBpZiAoc3RvcmVkS2V5ID09IG51bGwpIHtcclxuICAgICAgdGhyb3cgbmV3IExyTm90Rm91bmRFeGNlcHRpb24oXHJcbiAgICAgICAgYENhbiBub3QgZmluZCBtYXN0ZXJLZXkgaW4gcGVyc2lzdGVkIHN0b3JhZ2UgdXNpbmcgbmFtZTogJHt0aGlzLlNUT1JFX01BU1RFUl9LRVl9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5wZXJzaXN0U2VydmljZS5zZXQoe1xyXG4gICAgICBuYW1lOiB0aGlzLlNUT1JFX01BU1RFUl9LRVksXHJcbiAgICAgIHZhbHVlOiBzdG9yZWRLZXksXHJcbiAgICAgIGV4cGlyeTogdGhpcy5leHBpcmVzQWZ0ZXIoc2Vjb25kcyksXHJcbiAgICAgIHNlcnZlclNlc3Npb246ICF0aGlzLmNvbmZpZy5kaXNhYmxlU2Vzc2lvbkVuY3J5cHRpb25LZXksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIFRoZXJlJ3MgbGl0dGxlIGJlbmVmaXQgaW4gdXNpbmcgV2ViQ3J5cHRvJ3Mgbm9uZS1leHRyYWN0YWJsZSBrZXlzIGJlY2F1c2UgaWYgdGhlcmVcclxuICAvLyBpcyBhbiBYU1MgYXR0YWNrLCB0aGVuIHRoZSBhdHRhY2tlciBoYXMgY29udHJvbCBvdmVyIHRoZSBqcyB0aGF0IGRvd25sb2FkcyB0aGUga2V5cy4gVGhlXHJcbiAgLy8gYXR0YWNrZXIgY2FuIG1vZGlmeSB0aGUgY29kZSB0byBpbXBvcnQgdGhlIGtleXMgYXMgZXh0cmFjdGFibGUuIFNvIG5vbmUtZXh0cmFjdGFibGUga2V5c1xyXG4gIC8vIGFyZSBvbmx5IHVzZWZ1bCBpZiB0aGV5IGFyZSBhbHJlYWR5IHBlcnNpc3RlZCBhbmQgdGhlIHVzZXIgY2Fubm90IGRvd25sb2FkIGFueSBtb3JlIGtleXMsXHJcbiAgLy8gd2hpY2ggaXMgbm90IGZlYXNpYmxlLlxyXG4gIC8vIFNvIHN0b3JpbmcgdGhlIFBhc3NLZXkgaW4gbG9jYWxzdG9yYWdlIGZvciBub3csIGF0IGxlYXN0IHRpbGwgd2Uga25vdyB3aGF0IHRoZSB1c2FnZVxyXG4gIC8vIHBhdHRlcm4gaXMsIGkuZS4gaG93IG9mdGVuIGRvIHdlIG5lZWQgdG8gdXNlIHRoZSBSb290SywgTWF0ZXJLLCBhbmQgUGFzc0suXHJcbiAgYXN5bmMgbG9hZE1hc3RlcktleShtYXN0ZXJLZXlJZDogc3RyaW5nKTogUHJvbWlzZTxLZXk+IHtcclxuICAgIGlmICghdGhpcy5tYXN0ZXJLZXkpIHtcclxuICAgICAgY29uc3Qgc3RvcmVkS2V5ID0gYXdhaXQgdGhpcy5wZXJzaXN0U2VydmljZS5nZXQodGhpcy5TVE9SRV9NQVNURVJfS0VZKTtcclxuXHJcbiAgICAgIGlmICghc3RvcmVkS2V5KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IExyTm90Rm91bmRFeGNlcHRpb24oXHJcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgbWFzdGVyS2V5IGluIHBlcnNpc3RlZCBzdG9yYWdlJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzdG9yZWRLZXkuaWQgIT09IG1hc3RlcktleUlkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IExyTm90Rm91bmRFeGNlcHRpb24oXHJcbiAgICAgICAgICBgbWFzdGVyS2V5SWQgJHtzdG9yZWRLZXkuaWR9IGluIHBlcnNpc3RlZCBzdG9yYWdlIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgcmVxdWVzdGVkICR7bWFzdGVyS2V5SWR9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0b3JlZEtleS5qd2sgPSBhd2FpdCBLRlMuYXNLZXkoc3RvcmVkS2V5Lmp3ayk7XHJcblxyXG4gICAgICB0aGlzLm1hc3RlcktleSA9IHN0b3JlZEtleTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5tYXN0ZXJLZXk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Slip39, Slip39Helper } from 'slip39';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class SecretShare {
|
|
6
|
+
constructor(assembly = 0, subAssembly = 0, mnemonics = '') {
|
|
7
|
+
this.assembly = assembly;
|
|
8
|
+
this.subAssembly = subAssembly;
|
|
9
|
+
this.mnemonics = mnemonics;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class SubAssembly {
|
|
13
|
+
constructor(index, threshold = 0, size = 0) {
|
|
14
|
+
this.index = index;
|
|
15
|
+
this.threshold = threshold;
|
|
16
|
+
this.size = size;
|
|
17
|
+
this.clearShares();
|
|
18
|
+
}
|
|
19
|
+
clearShares() {
|
|
20
|
+
this.shares = Array();
|
|
21
|
+
}
|
|
22
|
+
addShare(share) {
|
|
23
|
+
this.shares.push(share);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class Assembly {
|
|
27
|
+
constructor(threshold = 0) {
|
|
28
|
+
this.threshold = threshold;
|
|
29
|
+
this.clearSubAssemblies();
|
|
30
|
+
}
|
|
31
|
+
size() {
|
|
32
|
+
return this.subAssemblies.length;
|
|
33
|
+
}
|
|
34
|
+
clearSubAssemblies() {
|
|
35
|
+
this.subAssemblies = new Array();
|
|
36
|
+
}
|
|
37
|
+
addSubAssembly(subAssembly) {
|
|
38
|
+
this.subAssemblies.push(subAssembly);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class SubQuorum {
|
|
42
|
+
constructor(subAssemblyIndex) {
|
|
43
|
+
this.subAssemblyIndex = subAssemblyIndex;
|
|
44
|
+
this.clearShares();
|
|
45
|
+
}
|
|
46
|
+
clearShares() {
|
|
47
|
+
this.shares = new Array();
|
|
48
|
+
}
|
|
49
|
+
addShare(share) {
|
|
50
|
+
this.shares.push(share);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class Quorum {
|
|
54
|
+
constructor() {
|
|
55
|
+
this.clearSubQuora();
|
|
56
|
+
}
|
|
57
|
+
clearSubQuora() {
|
|
58
|
+
this.subQuora = new Array();
|
|
59
|
+
}
|
|
60
|
+
addSubQuorum(subQuorum) {
|
|
61
|
+
this.subQuora.push(subQuorum);
|
|
62
|
+
}
|
|
63
|
+
serialiseShares() {
|
|
64
|
+
let shares = [];
|
|
65
|
+
this.subQuora.forEach((subQuorum) => {
|
|
66
|
+
shares = shares.concat(subQuorum.shares);
|
|
67
|
+
});
|
|
68
|
+
return shares;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export class Slip39Service {
|
|
72
|
+
constructor() { }
|
|
73
|
+
generateShares(secret, passphrase, assembly) {
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
// Hex-encode secret.
|
|
76
|
+
let ems = btoa(secret);
|
|
77
|
+
ems = Slip39Helper.slip39EncodeHex(ems);
|
|
78
|
+
// Construct group specifications
|
|
79
|
+
const groups = [];
|
|
80
|
+
for (const sa of assembly.subAssemblies) {
|
|
81
|
+
groups.push([sa.threshold, sa.size]);
|
|
82
|
+
}
|
|
83
|
+
// Split!
|
|
84
|
+
const slip = yield Slip39.fromArray(ems, {
|
|
85
|
+
passphrase,
|
|
86
|
+
threshold: assembly.threshold,
|
|
87
|
+
groups,
|
|
88
|
+
title: '',
|
|
89
|
+
});
|
|
90
|
+
// Extract shares
|
|
91
|
+
assembly.subAssemblies.forEach((sa, isa) => {
|
|
92
|
+
// Remove any existing shares
|
|
93
|
+
sa.clearShares();
|
|
94
|
+
for (let im = 0; im < sa.size; im++) {
|
|
95
|
+
// Construct the path to the share, formatted as "r/<subassembly index>/<member index>"
|
|
96
|
+
// with <subassembly index> and <member index> being two-digit, zero-padded integers.
|
|
97
|
+
const path = 'r/' +
|
|
98
|
+
isa.toString().padStart(2, '0') +
|
|
99
|
+
'/' +
|
|
100
|
+
im.toString().padStart(2, '0');
|
|
101
|
+
const mnemonics = slip.fromPath(path).mnemonics[0];
|
|
102
|
+
const share = new SecretShare(isa, im, mnemonics);
|
|
103
|
+
sa.addShare(share);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Remove all redundant shares. i.e. keep only enough members and groups to satisfy the thresholds.
|
|
109
|
+
minimalSet(mnemonics) {
|
|
110
|
+
// Decode the mnemonics and sort then into groups.
|
|
111
|
+
let groupThresh = null;
|
|
112
|
+
const groups = new Map();
|
|
113
|
+
for (const mnemonic of mnemonics) {
|
|
114
|
+
const decoded = Slip39Helper.decodeMnemonic(mnemonic);
|
|
115
|
+
if (groupThresh && groupThresh !== decoded.groupThreshold) {
|
|
116
|
+
throw new Error('groupThreshold is different in mnemonics');
|
|
117
|
+
}
|
|
118
|
+
groupThresh = decoded.groupThreshold;
|
|
119
|
+
// Note that Slip39.recoverSecret() will do all the error checking again. So it's not critical
|
|
120
|
+
// that we error check here. So we just optimistically assume it's all good.
|
|
121
|
+
let g = groups.get(decoded.groupIndex);
|
|
122
|
+
if (g == null) {
|
|
123
|
+
g = {
|
|
124
|
+
memberThreshold: decoded.memberThreshold,
|
|
125
|
+
members: [],
|
|
126
|
+
};
|
|
127
|
+
groups.set(decoded.groupIndex, g);
|
|
128
|
+
}
|
|
129
|
+
g.members.push({
|
|
130
|
+
mnemonic,
|
|
131
|
+
decoded,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// Keep the minimum set of groups that meet threshold.
|
|
135
|
+
const mnemonicsMinSet = [];
|
|
136
|
+
let groupCount = 0;
|
|
137
|
+
for (const g of groups.values()) {
|
|
138
|
+
// Keep only groups that meet threshold
|
|
139
|
+
if (g.members.length < g.memberThreshold) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
// Keep minimum number of approvals needed for group
|
|
143
|
+
g.members.slice(0, g.memberThreshold).forEach((member) => {
|
|
144
|
+
mnemonicsMinSet.push(member.mnemonic);
|
|
145
|
+
});
|
|
146
|
+
++groupCount;
|
|
147
|
+
if (groupCount >= groupThresh) {
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return mnemonicsMinSet;
|
|
152
|
+
}
|
|
153
|
+
recoverSecret(shares, passphrase) {
|
|
154
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
+
shares = this.minimalSet(shares);
|
|
156
|
+
const recovered = yield Slip39.recoverSecret(shares, passphrase);
|
|
157
|
+
const secret = Slip39Helper.slip39DecodeHex(recovered);
|
|
158
|
+
return atob(secret);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
Slip39Service.ɵprov = i0.ɵɵdefineInjectable({ factory: function Slip39Service_Factory() { return new Slip39Service(); }, token: Slip39Service, providedIn: "root" });
|
|
163
|
+
Slip39Service.decorators = [
|
|
164
|
+
{ type: Injectable, args: [{
|
|
165
|
+
providedIn: 'root',
|
|
166
|
+
},] }
|
|
167
|
+
];
|
|
168
|
+
Slip39Service.ctorParameters = () => [];
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpcDM5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jcnlwdG9ncmFwaHkvc2xpcDM5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7O0FBRTlDLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ1MsV0FBbUIsQ0FBQyxFQUNwQixjQUFzQixDQUFDLEVBQ3ZCLFlBQW9CLEVBQUU7UUFGdEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUNwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFhO0lBQzVCLENBQUM7Q0FDTDtBQUVELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ1MsS0FBYSxFQUNiLFlBQW9CLENBQUMsRUFDckIsT0FBZSxDQUFDO1FBRmhCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixjQUFTLEdBQVQsU0FBUyxDQUFZO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQVk7UUFFdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFJTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFrQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sUUFBUTtJQUNuQixZQUFtQixZQUFvQixDQUFDO1FBQXJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUlNLElBQUk7UUFDVCxPQUFPLElB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YmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNsaXAzOSwgU2xpcDM5SGVscGVyIH0gZnJvbSAnc2xpcDM5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBTZWNyZXRTaGFyZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXNzZW1ibHk6IG51bWJlciA9IDAsXHJcbiAgICBwdWJsaWMgc3ViQXNzZW1ibHk6IG51bWJlciA9IDAsXHJcbiAgICBwdWJsaWMgbW5lbW9uaWNzOiBzdHJpbmcgPSAnJ1xyXG4gICkge31cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFN1YkFzc2VtYmx5IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLFxyXG4gICAgcHVibGljIHRocmVzaG9sZDogbnVtYmVyID0gMCxcclxuICAgIHB1YmxpYyBzaXplOiBudW1iZXIgPSAwXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNsZWFyU2hhcmVzKCk7XHJcbiAgfVxyXG5cclxuICBzaGFyZXM6IFNlY3JldFNoYXJlW107XHJcblxyXG4gIHB1YmxpYyBjbGVhclNoYXJlcygpIHtcclxuICAgIHRoaXMuc2hhcmVzID0gQXJyYXkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRTaGFyZShzaGFyZTogU2VjcmV0U2hhcmUpIHtcclxuICAgIHRoaXMuc2hhcmVzLnB1c2goc2hhcmUpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFzc2VtYmx5IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGhyZXNob2xkOiBudW1iZXIgPSAwKSB7XHJcbiAgICB0aGlzLmNsZWFyU3ViQXNzZW1ibGllcygpO1xyXG4gIH1cclxuXHJcbiAgc3ViQXNzZW1ibGllczogU3ViQXNzZW1ibHlbXTtcclxuXHJcbiAgcHVibGljIHNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWJBc3NlbWJsaWVzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhclN1YkFzc2VtYmxpZXMoKSB7XHJcbiAgICB0aGlzLnN1YkFzc2VtYmxpZXMgPSBuZXcgQXJyYXkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRTdWJBc3NlbWJseShzdWJBc3NlbWJseTogU3ViQXNzZW1ibHkpIHtcclxuICAgIHRoaXMuc3ViQXNzZW1ibGllcy5wdXNoKHN1YkFzc2VtYmx5KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdWJRdW9ydW0ge1xyXG4gIHNoYXJlczogc3RyaW5nW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdWJBc3NlbWJseUluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuY2xlYXJTaGFyZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhclNoYXJlcygpIHtcclxuICAgIHRoaXMuc2hhcmVzID0gbmV3IEFycmF5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkU2hhcmUoc2hhcmU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaGFyZXMucHVzaChzaGFyZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUXVvcnVtIHtcclxuICBzdWJRdW9yYTogU3ViUXVvcnVtW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jbGVhclN1YlF1b3JhKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJTdWJRdW9yYSgpIHtcclxuICAgIHRoaXMuc3ViUXVvcmEgPSBuZXcgQXJyYXkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRTdWJRdW9ydW0oc3ViUXVvcnVtOiBTdWJRdW9ydW0pIHtcclxuICAgIHRoaXMuc3ViUXVvcmEucHVzaChzdWJRdW9ydW0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlcmlhbGlzZVNoYXJlcygpIHtcclxuICAgIGxldCBzaGFyZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLnN1YlF1b3JhLmZvckVhY2goKHN1YlF1b3J1bSkgPT4ge1xyXG4gICAgICBzaGFyZXMgPSBzaGFyZXMuY29uY2F0KHN1YlF1b3J1bS5zaGFyZXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHNoYXJlcztcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlwMzlTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZVNoYXJlcyhzZWNyZXQsIHBhc3NwaHJhc2U6IHN0cmluZywgYXNzZW1ibHk6IEFzc2VtYmx5KSB7XHJcbiAgICAvLyBIZXgtZW5jb2RlIHNlY3JldC5cclxuICAgIGxldCBlbXMgPSBidG9hKHNlY3JldCk7XHJcbiAgICBlbXMgPSBTbGlwMzlIZWxwZXIuc2xpcDM5RW5jb2RlSGV4KGVtcyk7XHJcblxyXG4gICAgLy8gQ29uc3RydWN0IGdyb3VwIHNwZWNpZmljYXRpb25zXHJcbiAgICBjb25zdCBncm91cHMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHNhIG9mIGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMpIHtcclxuICAgICAgZ3JvdXBzLnB1c2goW3NhLnRocmVzaG9sZCwgc2Euc2l6ZV0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNwbGl0IVxyXG4gICAgY29uc3Qgc2xpcCA9IGF3YWl0IFNsaXAzOS5mcm9tQXJyYXkoZW1zLCB7XHJcbiAgICAgIHBhc3NwaHJhc2UsXHJcbiAgICAgIHRocmVzaG9sZDogYXNzZW1ibHkudGhyZXNob2xkLFxyXG4gICAgICBncm91cHMsXHJcbiAgICAgIHRpdGxlOiAnJyxcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEV4dHJhY3Qgc2hhcmVzXHJcbiAgICBhc3NlbWJseS5zdWJBc3NlbWJsaWVzLmZvckVhY2goKHNhLCBpc2EpID0+IHtcclxuICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBzaGFyZXNcclxuICAgICAgc2EuY2xlYXJTaGFyZXMoKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGltID0gMDsgaW0gPCBzYS5zaXplOyBpbSsrKSB7XHJcbiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBwYXRoIHRvIHRoZSBzaGFyZSwgZm9ybWF0dGVkIGFzIFwici88c3ViYXNzZW1ibHkgaW5kZXg+LzxtZW1iZXIgaW5kZXg+XCJcclxuICAgICAgICAvLyB3aXRoIDxzdWJhc3NlbWJseSBpbmRleD4gYW5kIDxtZW1iZXIgaW5kZXg+IGJlaW5nIHR3by1kaWdpdCwgemVyby1wYWRkZWQgaW50ZWdlcnMuXHJcbiAgICAgICAgY29uc3QgcGF0aCA9XHJcbiAgICAgICAgICAnci8nICtcclxuICAgICAgICAgIGlzYS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJykgK1xyXG4gICAgICAgICAgJy8nICtcclxuICAgICAgICAgIGltLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtbmVtb25pY3MgPSBzbGlwLmZyb21QYXRoKHBhdGgpLm1uZW1vbmljc1swXTtcclxuICAgICAgICBjb25zdCBzaGFyZSA9IG5ldyBTZWNyZXRTaGFyZShpc2EsIGltLCBtbmVtb25pY3MpO1xyXG5cclxuICAgICAgICBzYS5hZGRTaGFyZShzaGFyZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVtb3ZlIGFsbCByZWR1bmRhbnQgc2hhcmVzLiBpLmUuIGtlZXAgb25seSBlbm91Z2ggbWVtYmVycyBhbmQgZ3JvdXBzIHRvIHNhdGlzZnkgdGhlIHRocmVzaG9sZHMuXHJcbiAgcHJpdmF0ZSBtaW5pbWFsU2V0KG1uZW1vbmljczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XHJcbiAgICAvLyBEZWNvZGUgdGhlIG1uZW1vbmljcyBhbmQgc29ydCB0aGVuIGludG8gZ3JvdXBzLlxyXG4gICAgbGV0IGdyb3VwVGhyZXNoID0gbnVsbDtcclxuICAgIGNvbnN0IGdyb3VwcyA9IG5ldyBNYXAoKTtcclxuICAgIGZvciAoY29uc3QgbW5lbW9uaWMgb2YgbW5lbW9uaWNzKSB7XHJcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBTbGlwMzlIZWxwZXIuZGVjb2RlTW5lbW9uaWMobW5lbW9uaWMpO1xyXG5cclxuICAgICAgaWYgKGdyb3VwVGhyZXNoICYmIGdyb3VwVGhyZXNoICE9PSBkZWNvZGVkLmdyb3VwVGhyZXNob2xkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdncm91cFRocmVzaG9sZCBpcyBkaWZmZXJlbnQgaW4gbW5lbW9uaWNzJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdyb3VwVGhyZXNoID0gZGVjb2RlZC5ncm91cFRocmVzaG9sZDtcclxuXHJcbiAgICAgIC8vIE5vdGUgdGhhdCBTbGlwMzkucmVjb3ZlclNlY3JldCgpIHdpbGwgZG8gYWxsIHRoZSBlcnJvciBjaGVja2luZyBhZ2Fpbi4gU28gaXQncyBub3QgY3JpdGljYWxcclxuICAgICAgLy8gdGhhdCB3ZSBlcnJvciBjaGVjayBoZXJlLiBTbyB3ZSBqdXN0IG9wdGltaXN0aWNhbGx5IGFzc3VtZSBpdCdzIGFsbCBnb29kLlxyXG4gICAgICBsZXQgZyA9IGdyb3Vwcy5nZXQoZGVjb2RlZC5ncm91cEluZGV4KTtcclxuICAgICAgaWYgKGcgPT0gbnVsbCkge1xyXG4gICAgICAgIGcgPSB7XHJcbiAgICAgICAgICBtZW1iZXJUaHJlc2hvbGQ6IGRlY29kZWQubWVtYmVyVGhyZXNob2xkLFxyXG4gICAgICAgICAgbWVtYmVyczogW10sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBncm91cHMuc2V0KGRlY29kZWQuZ3JvdXBJbmRleCwgZyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGcubWVtYmVycy5wdXNoKHtcclxuICAgICAgICBtbmVtb25pYyxcclxuICAgICAgICBkZWNvZGVkLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBLZWVwIHRoZSBtaW5pbXVtIHNldCBvZiBncm91cHMgdGhhdCBtZWV0IHRocmVzaG9sZC5cclxuICAgIGNvbnN0IG1uZW1vbmljc01pblNldCA9IFtdO1xyXG4gICAgbGV0IGdyb3VwQ291bnQgPSAwO1xyXG4gICAgZm9yIChjb25zdCBnIG9mIGdyb3Vwcy52YWx1ZXMoKSkge1xyXG4gICAgICAvLyBLZWVwIG9ubHkgZ3JvdXBzIHRoYXQgbWVldCB0aHJlc2hvbGRcclxuICAgICAgaWYgKGcubWVtYmVycy5sZW5ndGggPCBnLm1lbWJlclRocmVzaG9sZCkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBLZWVwIG1pbmltdW0gbnVtYmVyIG9mIGFwcHJvdmFscyBuZWVkZWQgZm9yIGdyb3VwXHJcbiAgICAgIGcubWVtYmVycy5zbGljZSgwLCBnLm1lbWJlclRocmVzaG9sZCkuZm9yRWFjaCgobWVtYmVyKSA9PiB7XHJcbiAgICAgICAgbW5lbW9uaWNzTWluU2V0LnB1c2gobWVtYmVyLm1uZW1vbmljKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICArK2dyb3VwQ291bnQ7XHJcbiAgICAgIGlmIChncm91cENvdW50ID49IGdyb3VwVGhyZXNoKSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbW5lbW9uaWNzTWluU2V0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlY292ZXJTZWNyZXQoc2hhcmVzOiBzdHJpbmdbXSwgcGFzc3BocmFzZTogc3RyaW5nKSB7XHJcbiAgICBzaGFyZXMgPSB0aGlzLm1pbmltYWxTZXQoc2hhcmVzKTtcclxuXHJcbiAgICBjb25zdCByZWNvdmVyZWQgPSBhd2FpdCBTbGlwMzkucmVjb3ZlclNlY3JldChzaGFyZXMsIHBhc3NwaHJhc2UpO1xyXG5cclxuICAgIGNvbnN0IHNlY3JldCA9IFNsaXAzOUhlbHBlci5zbGlwMzlEZWNvZGVIZXgocmVjb3ZlcmVkKTtcclxuXHJcbiAgICByZXR1cm4gYXRvYihzZWNyZXQpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class WebCryptoService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.crypto = window.crypto;
|
|
7
|
+
}
|
|
8
|
+
toHex(buffer) {
|
|
9
|
+
// Ref: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
|
|
10
|
+
const array = Array.from(new Uint8Array(buffer)); // convert buffer to byte array
|
|
11
|
+
const hex = array.map((b) => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string
|
|
12
|
+
return hex;
|
|
13
|
+
}
|
|
14
|
+
stringDigest(algorithm, message) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
const encoder = new TextEncoder();
|
|
17
|
+
const data = encoder.encode(message);
|
|
18
|
+
const hash = yield this.crypto.subtle.digest(algorithm, data);
|
|
19
|
+
return this.toHex(hash);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
WebCryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WebCryptoService_Factory() { return new WebCryptoService(); }, token: WebCryptoService, providedIn: "root" });
|
|
24
|
+
WebCryptoService.decorators = [
|
|
25
|
+
{ type: Injectable, args: [{
|
|
26
|
+
providedIn: 'root',
|
|
27
|
+
},] }
|
|
28
|
+
];
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWNyeXB0by5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY3J5cHRvZ3JhcGh5L3dlYi1jcnlwdG8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUg3QjtRQUlFLFdBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDO0tBZWhDO0lBYkMsS0FBSyxDQUFDLE1BQW1CO1FBQ3ZCLDRFQUE0RTtRQUM1RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7UUFDakYsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsOEJBQThCO1FBQ3RHLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVLLFlBQVksQ0FBQyxTQUFpQixFQUFFLE9BQWU7O1lBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7S0FBQTs7OztZQWxCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV2ViQ3J5cHRvU2VydmljZSB7XHJcbiAgY3J5cHRvOiBDcnlwdG8gPSB3aW5kb3cuY3J5cHRvO1xyXG5cclxuICB0b0hleChidWZmZXI6IEFycmF5QnVmZmVyKSB7XHJcbiAgICAvLyBSZWY6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TdWJ0bGVDcnlwdG8vZGlnZXN0XHJcbiAgICBjb25zdCBhcnJheSA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSk7IC8vIGNvbnZlcnQgYnVmZmVyIHRvIGJ5dGUgYXJyYXlcclxuICAgIGNvbnN0IGhleCA9IGFycmF5Lm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7IC8vIGNvbnZlcnQgYnl0ZXMgdG8gaGV4IHN0cmluZ1xyXG4gICAgcmV0dXJuIGhleDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN0cmluZ0RpZ2VzdChhbGdvcml0aG06IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcclxuICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShtZXNzYWdlKTtcclxuICAgIGNvbnN0IGhhc2ggPSBhd2FpdCB0aGlzLmNyeXB0by5zdWJ0bGUuZGlnZXN0KGFsZ29yaXRobSwgZGF0YSk7XHJcbiAgICByZXR1cm4gdGhpcy50b0hleChoYXNoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
import { ApolloLink, createHttpLink, from, InMemoryCache, } from '@apollo/client/core';
|
|
4
|
+
import { setContext } from '@apollo/client/link/context';
|
|
5
|
+
import { RetryLink } from '@apollo/client/link/retry';
|
|
6
|
+
import { LrApiErrorCode } from './_common/exceptions';
|
|
7
|
+
export const LR_CONFIG = new InjectionToken('LR.AUTH');
|
|
8
|
+
const RETRY_ERROR_CODES = [LrApiErrorCode.CONCURRENT_ACCESS];
|
|
9
|
+
export const configureApollo = (config, auth) => {
|
|
10
|
+
const defaultOptions = {
|
|
11
|
+
watchQuery: {
|
|
12
|
+
fetchPolicy: 'no-cache',
|
|
13
|
+
errorPolicy: 'all',
|
|
14
|
+
},
|
|
15
|
+
query: {
|
|
16
|
+
fetchPolicy: 'no-cache',
|
|
17
|
+
errorPolicy: 'all',
|
|
18
|
+
},
|
|
19
|
+
mutate: {
|
|
20
|
+
errorPolicy: 'all',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
const authLink = setContext((_, { headers }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
let accessJwt = null;
|
|
25
|
+
try {
|
|
26
|
+
accessJwt = (yield auth.currentSession()).getAccessToken();
|
|
27
|
+
}
|
|
28
|
+
catch (_a) {
|
|
29
|
+
console.log('User not signed in');
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
headers: Object.assign(Object.assign({}, headers), { authorization: accessJwt ? `Bearer ${accessJwt.jwtToken}` : '' }),
|
|
33
|
+
};
|
|
34
|
+
}));
|
|
35
|
+
// We are only retrying on certain errors, like the CONCURRENT_ACCESS gql
|
|
36
|
+
// error which indicates DB race condition. So can be safely retried.
|
|
37
|
+
const retryIf = (error, _) => {
|
|
38
|
+
// The RetryLink is called on network error as well, so we need to filter for GraphQL errors.
|
|
39
|
+
if (error instanceof GraphQLErrorException) {
|
|
40
|
+
if (error.errors.some((e) => { var _a; return RETRY_ERROR_CODES.includes((_a = e.extensions) === null || _a === void 0 ? void 0 : _a.code); })) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
};
|
|
46
|
+
const retryLink = new RetryLink({
|
|
47
|
+
delay: {
|
|
48
|
+
initial: 300,
|
|
49
|
+
max: Infinity,
|
|
50
|
+
jitter: true,
|
|
51
|
+
},
|
|
52
|
+
attempts: {
|
|
53
|
+
max: 3,
|
|
54
|
+
retryIf,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
class GraphQLErrorException extends Error {
|
|
58
|
+
constructor(errors) {
|
|
59
|
+
super(errors.map((e) => e.message).join(', '));
|
|
60
|
+
this.errors = errors;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Throw exception on gql errors which effectively promotes it to a network
|
|
64
|
+
// error, which can then be handled by the RetryLink.
|
|
65
|
+
const promoteGqlErrors = new ApolloLink((operation, forward) => {
|
|
66
|
+
return forward(operation).map((data) => {
|
|
67
|
+
if (data && data.errors) {
|
|
68
|
+
const errors = data.errors.filter((e) => { var _a; return RETRY_ERROR_CODES.includes((_a = e.extensions) === null || _a === void 0 ? void 0 : _a.code); });
|
|
69
|
+
if (errors.length > 0) {
|
|
70
|
+
throw new GraphQLErrorException(data.errors);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return data;
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
const httpLink = createHttpLink({
|
|
77
|
+
uri: config.apolloUrl,
|
|
78
|
+
// Sending the sessionid cookie so that the server can use session data when needed.
|
|
79
|
+
// eg. setting the session encryption key.
|
|
80
|
+
credentials: 'include',
|
|
81
|
+
});
|
|
82
|
+
return Object.assign({ link: from([retryLink, promoteGqlErrors, authLink, httpLink]), cache: new InMemoryCache(), defaultOptions }, config.apolloConfig);
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZS1yZWFkeS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9saWZlLXJlYWR5LmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBRUwsVUFBVSxFQUNWLGNBQWMsRUFFZCxJQUFJLEVBQ0osYUFBYSxHQUNkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFrQixTQUFTLENBQUMsQ0FBQztBQUN4RSxNQUFNLGlCQUFpQixHQUFHLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFhN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQzdCLE1BQXVCLEVBQ3ZCLElBQWUsRUFDVyxFQUFFO0lBQzVCLE1BQU0sY0FBYyxHQUFtQjtRQUNyQyxVQUFVLEVBQUU7WUFDVixXQUFXLEVBQUUsVUFBVTtZQUN2QixXQUFXLEVBQUUsS0FBSztTQUNuQjtRQUNELEtBQUssRUFBRTtZQUNMLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFdBQVcsRUFBRSxLQUFLO1NBQ25CO1FBQ0QsTUFBTSxFQUFFO1lBQ04sV0FBVyxFQUFFLEtBQUs7U0FDbkI7S0FDRixDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQU8sQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUNuRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSTtZQUNGLFNBQVMs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QUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhDbGFzcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoL2xpYi1lc20vQXV0aCc7XHJcbmltcG9ydCB7XHJcbiAgQXBvbGxvQ2xpZW50T3B0aW9ucyxcclxuICBBcG9sbG9MaW5rLFxyXG4gIGNyZWF0ZUh0dHBMaW5rLFxyXG4gIERlZmF1bHRPcHRpb25zLFxyXG4gIGZyb20sXHJcbiAgSW5NZW1vcnlDYWNoZSxcclxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcclxuaW1wb3J0IHsgc2V0Q29udGV4dCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29udGV4dCc7XHJcbmltcG9ydCB7IFJldHJ5TGluayB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvcmV0cnknO1xyXG5pbXBvcnQgeyBMckFwaUVycm9yQ29kZSB9IGZyb20gJy4vX2NvbW1vbi9leGNlcHRpb25zJztcclxuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnZ3JhcGhxbCc7XHJcblxyXG5leHBvcnQgY29uc3QgTFJfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPExpZmVSZWFkeUNvbmZpZz4oJ0xSLkFVVEgnKTtcclxuY29uc3QgUkVUUllfRVJST1JfQ09ERVMgPSBbTHJBcGlFcnJvckNvZGUuQ09OQ1VSUkVOVF9BQ0NFU1NdO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaWZlUmVhZHlDb25maWcge1xyXG4gIGF1dGhVcmw6IHN0cmluZztcclxuICBhcGlVcmw6IHN0cmluZztcclxuICBhcG9sbG9Vcmw6IHN0cmluZztcclxuICB1c2VyUG9vbElkOiBzdHJpbmc7XHJcbiAgdXNlclBvb2xXZWJDbGllbnRJZDogc3RyaW5nO1xyXG4gIGFwb2xsb0NvbmZpZz86IEFwb2xsb0NsaWVudE9wdGlvbnM8YW55PjtcclxuICAvLyBNYWlubHkgdG8gYWxsb3cgbG9jYWxob3N0IHRvIG5vdCBuZWVkaW5nIHRoaXMuIERlZmF1bHQgdG8gZmFsc3lcclxuICBkaXNhYmxlU2Vzc2lvbkVuY3J5cHRpb25LZXk/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29uZmlndXJlQXBvbGxvID0gKFxyXG4gIGNvbmZpZzogTGlmZVJlYWR5Q29uZmlnLFxyXG4gIGF1dGg6IEF1dGhDbGFzc1xyXG4pOiBBcG9sbG9DbGllbnRPcHRpb25zPGFueT4gPT4ge1xyXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBEZWZhdWx0T3B0aW9ucyA9IHtcclxuICAgIHdhdGNoUXVlcnk6IHtcclxuICAgICAgZmV0Y2hQb2xpY3k6ICduby1jYWNoZScsXHJcbiAgICAgIGVycm9yUG9saWN5OiAnYWxsJyxcclxuICAgIH0sXHJcbiAgICBxdWVyeToge1xyXG4gICAgICBmZXRjaFBvbGljeTogJ25vLWNhY2hlJyxcclxuICAgICAgZXJyb3JQb2xpY3k6ICdhbGwnLFxyXG4gICAgfSxcclxuICAgIG11dGF0ZToge1xyXG4gICAgICBlcnJvclBvbGljeTogJ2FsbCcsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGF1dGhMaW5rID0gc2V0Q29udGV4dChhc3luYyAoXywgeyBoZWFkZXJzIH0pID0+IHtcclxuICAgIGxldCBhY2Nlc3NKd3QgPSBudWxsO1xyXG4gICAgdHJ5IHtcclxuICAgICAgYWNjZXNzSnd0ID0gKGF3YWl0IGF1dGguY3VycmVudFNlc3Npb24oKSkuZ2V0QWNjZXNzVG9rZW4oKTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICBjb25zb2xlLmxvZygnVXNlciBub3Qgc2lnbmVkIGluJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgIC4uLmhlYWRlcnMsXHJcbiAgICAgICAgYXV0aG9yaXphdGlvbjogYWNjZXNzSnd0ID8gYEJlYXJlciAke2FjY2Vzc0p3dC5qd3RUb2tlbn1gIDogJycsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICAvLyBXZSBhcmUgb25seSByZXRyeWluZyBvbiBjZXJ0YWluIGVycm9ycywgbGlrZSB0aGUgQ09OQ1VSUkVOVF9BQ0NFU1MgZ3FsXHJcbiAgLy8gZXJyb3Igd2hpY2ggaW5kaWNhdGVzIERCIHJhY2UgY29uZGl0aW9uLiBTbyBjYW4gYmUgc2FmZWx5IHJldHJpZWQuXHJcbiAgY29uc3QgcmV0cnlJZiA9IChlcnJvciwgXykgPT4ge1xyXG4gICAgLy8gVGhlIFJldHJ5TGluayBpcyBjYWxsZWQgb24gbmV0d29yayBlcnJvciBhcyB3ZWxsLCBzbyB3ZSBuZWVkIHRvIGZpbHRlciBmb3IgR3JhcGhRTCBlcnJvcnMuXHJcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBHcmFwaFFMRXJyb3JFeGNlcHRpb24pIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVycm9yLmVycm9ycy5zb21lKChlKSA9PiBSRVRSWV9FUlJPUl9DT0RFUy5pbmNsdWRlcyhlLmV4dGVuc2lvbnM/LmNvZGUpKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9O1xyXG5cclxuICBjb25zdCByZXRyeUxpbmsgPSBuZXcgUmV0cnlMaW5rKHtcclxuICAgIGRlbGF5OiB7XHJcbiAgICAgIGluaXRpYWw6IDMwMCxcclxuICAgICAgbWF4OiBJbmZpbml0eSxcclxuICAgICAgaml0dGVyOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIGF0dGVtcHRzOiB7XHJcbiAgICAgIG1heDogMyxcclxuICAgICAgcmV0cnlJZixcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIGNsYXNzIEdyYXBoUUxFcnJvckV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlcnJvcnM6IHJlYWRvbmx5IEdyYXBoUUxFcnJvcltdKSB7XHJcbiAgICAgIHN1cGVyKGVycm9ycy5tYXAoKGUpID0+IGUubWVzc2FnZSkuam9pbignLCAnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUaHJvdyBleGNlcHRpb24gb24gZ3FsIGVycm9ycyB3aGljaCBlZmZlY3RpdmVseSBwcm9tb3RlcyBpdCB0byBhIG5ldHdvcmtcclxuICAvLyBlcnJvciwgd2hpY2ggY2FuIHRoZW4gYmUgaGFuZGxlZCBieSB0aGUgUmV0cnlMaW5rLlxyXG4gIGNvbnN0IHByb21vdGVHcWxFcnJvcnMgPSBuZXcgQXBvbGxvTGluaygob3BlcmF0aW9uLCBmb3J3YXJkKSA9PiB7XHJcbiAgICByZXR1cm4gZm9yd2FyZChvcGVyYXRpb24pLm1hcCgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLmVycm9ycykge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IGRhdGEuZXJyb3JzLmZpbHRlcigoZSkgPT5cclxuICAgICAgICAgIFJFVFJZX0VSUk9SX0NPREVTLmluY2x1ZGVzKGUuZXh0ZW5zaW9ucz8uY29kZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3JFeGNlcHRpb24oZGF0YS5lcnJvcnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBodHRwTGluayA9IGNyZWF0ZUh0dHBMaW5rKHtcclxuICAgIHVyaTogY29uZmlnLmFwb2xsb1VybCxcclxuICAgIC8vIFNlbmRpbmcgdGhlIHNlc3Npb25pZCBjb29raWUgc28gdGhhdCB0aGUgc2VydmVyIGNhbiB1c2Ugc2Vzc2lvbiBkYXRhIHdoZW4gbmVlZGVkLlxyXG4gICAgLy8gZWcuIHNldHRpbmcgdGhlIHNlc3Npb24gZW5jcnlwdGlvbiBrZXkuXHJcbiAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgbGluazogZnJvbShbcmV0cnlMaW5rLCBwcm9tb3RlR3FsRXJyb3JzLCBhdXRoTGluaywgaHR0cExpbmtdKSxcclxuICAgIGNhY2hlOiBuZXcgSW5NZW1vcnlDYWNoZSgpLFxyXG4gICAgZGVmYXVsdE9wdGlvbnMsXHJcbiAgICAuLi5jb25maWcuYXBvbGxvQ29uZmlnLFxyXG4gIH07XHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
2
|
+
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
|
3
|
+
import Auth from '@aws-amplify/auth';
|
|
4
|
+
import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
|
|
5
|
+
import { APOLLO_OPTIONS } from 'apollo-angular';
|
|
6
|
+
import { CookieService } from 'ngx-cookie-service';
|
|
7
|
+
import { FileService } from './api/file.service';
|
|
8
|
+
import { ProfileService } from './users/profile.service';
|
|
9
|
+
import { configureAmplifyAuth } from './auth/auth.config';
|
|
10
|
+
import { initialiseAuth, LifeReadyAuthService, } from './auth/life-ready-auth.service';
|
|
11
|
+
import { PasswordService } from './auth/password.service';
|
|
12
|
+
import { RegisterService } from './auth/register.service';
|
|
13
|
+
import { EncryptionService } from './cryptography/encryption.service';
|
|
14
|
+
import { KeyGraphService } from './cryptography/key-graph.service';
|
|
15
|
+
import { KeyService } from './cryptography/key.service';
|
|
16
|
+
import { KeyFactoryService } from './cryptography/key-factory.service';
|
|
17
|
+
import { WebCryptoService } from './cryptography/web-crypto.service';
|
|
18
|
+
import { configureApollo, LR_CONFIG, } from './life-ready.config';
|
|
19
|
+
import { TimeService } from './api/time.service';
|
|
20
|
+
import { NgIdleKeepaliveModule } from '@ng-idle/keepalive';
|
|
21
|
+
export class LifeReadyModule {
|
|
22
|
+
static forRoot(config) {
|
|
23
|
+
return {
|
|
24
|
+
ngModule: LifeReadyModule,
|
|
25
|
+
providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: LR_CONFIG,
|
|
28
|
+
useValue: config,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
provide: AuthClass,
|
|
32
|
+
useValue: Auth,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
provide: APP_INITIALIZER,
|
|
36
|
+
useFactory: configureAmplifyAuth,
|
|
37
|
+
deps: [LR_CONFIG, AuthClass],
|
|
38
|
+
multi: true,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
provide: APP_INITIALIZER,
|
|
42
|
+
useFactory: initialiseAuth,
|
|
43
|
+
deps: [LifeReadyAuthService],
|
|
44
|
+
multi: true,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
provide: APOLLO_OPTIONS,
|
|
48
|
+
useFactory: configureApollo,
|
|
49
|
+
deps: [LR_CONFIG, AuthClass],
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
LifeReadyModule.decorators = [
|
|
56
|
+
{ type: NgModule, args: [{
|
|
57
|
+
imports: [HttpClientModule, NgIdleKeepaliveModule.forRoot()],
|
|
58
|
+
providers: [
|
|
59
|
+
CookieService,
|
|
60
|
+
TimeService,
|
|
61
|
+
FileService,
|
|
62
|
+
ProfileService,
|
|
63
|
+
RegisterService,
|
|
64
|
+
LifeReadyAuthService,
|
|
65
|
+
PasswordService,
|
|
66
|
+
WebCryptoService,
|
|
67
|
+
EncryptionService,
|
|
68
|
+
KeyGraphService,
|
|
69
|
+
KeyService,
|
|
70
|
+
KeyFactoryService,
|
|
71
|
+
],
|
|
72
|
+
},] }
|
|
73
|
+
];
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZS1yZWFkeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9saWZlLXJlYWR5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixHQUNyQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsZUFBZSxFQUVmLFNBQVMsR0FDVixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQW1CM0QsTUFBTSxPQUFPLGVBQWU7SUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FDbkIsTUFBdUI7UUFFdkIsT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsU0FBUztvQkFDbEIsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxTQUFTO29CQUNsQixRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsVUFBVSxFQUFFLG9CQUFvQjtvQkFDaEMsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztvQkFDNUIsS0FBSyxFQUFFLElBQUk7aUJBQ1o7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxjQUFjO29CQUMxQixJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDNUIsS0FBSyxFQUFFLElBQUk7aUJBQ1o7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLFVBQVUsRUFBRSxlQUFlO29CQUMzQixJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2lCQUM3QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQW5ERixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzVELFNBQVMsRUFBRTtvQkFDVCxhQUFhO29CQUNiLFdBQVc7b0JBQ1gsV0FBVztvQkFDWCxjQUFjO29CQUNkLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQixlQUFlO29CQUNmLGdCQUFnQjtvQkFDaEIsaUJBQWlCO29CQUNqQixlQUFlO29CQUNmLFVBQVU7b0JBQ1YsaUJBQWlCO2lCQUNsQjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgQXV0aCBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aCc7XHJcbmltcG9ydCB7IEF1dGhDbGFzcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoL2xpYi1lc20vQXV0aCc7XHJcbmltcG9ydCB7IEFQT0xMT19PUFRJT05TIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZVNlcnZpY2UgfSBmcm9tICcuL2FwaS9maWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4vdXNlcnMvcHJvZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgY29uZmlndXJlQW1wbGlmeUF1dGggfSBmcm9tICcuL2F1dGgvYXV0aC5jb25maWcnO1xyXG5pbXBvcnQge1xyXG4gIGluaXRpYWxpc2VBdXRoLFxyXG4gIExpZmVSZWFkeUF1dGhTZXJ2aWNlLFxyXG59IGZyb20gJy4vYXV0aC9saWZlLXJlYWR5LWF1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBhc3N3b3JkU2VydmljZSB9IGZyb20gJy4vYXV0aC9wYXNzd29yZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoL3JlZ2lzdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2ViQ3J5cHRvU2VydmljZSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5L3dlYi1jcnlwdG8uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgY29uZmlndXJlQXBvbGxvLFxyXG4gIExpZmVSZWFkeUNvbmZpZyxcclxuICBMUl9DT05GSUcsXHJcbn0gZnJvbSAnLi9saWZlLXJlYWR5LmNvbmZpZyc7XHJcbmltcG9ydCB7IFRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9hcGkvdGltZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdJZGxlS2VlcGFsaXZlTW9kdWxlIH0gZnJvbSAnQG5nLWlkbGUva2VlcGFsaXZlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGUsIE5nSWRsZUtlZXBhbGl2ZU1vZHVsZS5mb3JSb290KCldLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ29va2llU2VydmljZSxcclxuICAgIFRpbWVTZXJ2aWNlLFxyXG4gICAgRmlsZVNlcnZpY2UsXHJcbiAgICBQcm9maWxlU2VydmljZSxcclxuICAgIFJlZ2lzdGVyU2VydmljZSxcclxuICAgIExpZmVSZWFkeUF1dGhTZXJ2aWNlLFxyXG4gICAgUGFzc3dvcmRTZXJ2aWNlLFxyXG4gICAgV2ViQ3J5cHRvU2VydmljZSxcclxuICAgIEVuY3J5cHRpb25TZXJ2aWNlLFxyXG4gICAgS2V5R3JhcGhTZXJ2aWNlLFxyXG4gICAgS2V5U2VydmljZSxcclxuICAgIEtleUZhY3RvcnlTZXJ2aWNlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWZlUmVhZHlNb2R1bGUge1xyXG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChcclxuICAgIGNvbmZpZzogTGlmZVJlYWR5Q29uZmlnXHJcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMaWZlUmVhZHlNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBMaWZlUmVhZHlNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IExSX0NPTkZJRyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBBdXRoQ2xhc3MsXHJcbiAgICAgICAgICB1c2VWYWx1ZTogQXV0aCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ3VyZUFtcGxpZnlBdXRoLFxyXG4gICAgICAgICAgZGVwczogW0xSX0NPTkZJRywgQXV0aENsYXNzXSxcclxuICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG4gICAgICAgICAgdXNlRmFjdG9yeTogaW5pdGlhbGlzZUF1dGgsXHJcbiAgICAgICAgICBkZXBzOiBbTGlmZVJlYWR5QXV0aFNlcnZpY2VdLFxyXG4gICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBBUE9MTE9fT1BUSU9OUyxcclxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ3VyZUFwb2xsbyxcclxuICAgICAgICAgIGRlcHM6IFtMUl9DT05GSUcsIEF1dGhDbGFzc10sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|