@lifeready/core 1.1.18 → 1.1.20

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.
Files changed (38) hide show
  1. package/bundles/lifeready-core.umd.js +284 -204
  2. package/bundles/lifeready-core.umd.js.map +1 -1
  3. package/bundles/lifeready-core.umd.min.js +1 -1
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/utils.js +27 -3
  6. package/esm2015/lib/auth/auth.config.js +1 -1
  7. package/esm2015/lib/auth/auth.types.js +1 -1
  8. package/esm2015/lib/auth/life-ready-auth.service.js +83 -13
  9. package/esm2015/lib/file-upload/file-upload.service.js +12 -20
  10. package/esm2015/lib/idle/idle.service.js +8 -15
  11. package/esm2015/lib/key/key.service.js +4 -4
  12. package/esm2015/lib/lbop/lbop.service.js +4 -4
  13. package/esm2015/lib/life-ready.config.js +8 -12
  14. package/esm2015/lib/life-ready.module.js +5 -5
  15. package/esm2015/lib/password/password.service.js +11 -17
  16. package/esm2015/lib/profile/profile.service.js +4 -4
  17. package/esm2015/lib/register/register.service.js +4 -4
  18. package/esm2015/lib/time/time.service.js +4 -16
  19. package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +4 -4
  20. package/fesm2015/lifeready-core.js +196 -146
  21. package/fesm2015/lifeready-core.js.map +1 -1
  22. package/lib/_common/utils.d.ts +10 -0
  23. package/lib/auth/auth.config.d.ts +2 -2
  24. package/lib/auth/auth.types.d.ts +0 -1
  25. package/lib/auth/life-ready-auth.service.d.ts +14 -5
  26. package/lib/file-upload/file-upload.service.d.ts +4 -4
  27. package/lib/idle/idle.service.d.ts +2 -2
  28. package/lib/key/key.service.d.ts +2 -2
  29. package/lib/lbop/lbop.service.d.ts +2 -2
  30. package/lib/life-ready.config.d.ts +6 -3
  31. package/lib/life-ready.module.d.ts +2 -2
  32. package/lib/password/password.service.d.ts +6 -5
  33. package/lib/profile/profile.service.d.ts +2 -2
  34. package/lib/register/register.service.d.ts +2 -2
  35. package/lib/time/time.service.d.ts +0 -1
  36. package/lib/tp-password-reset/tp-password-reset-user.service.d.ts +2 -2
  37. package/lifeready-core.metadata.json +1 -1
  38. package/package.json +1 -1
@@ -13,9 +13,9 @@ import { RetryLink } from '@apollo/client/link/retry';
13
13
  import { CookieService } from 'ngx-cookie-service';
14
14
  import { print } from 'graphql/language/printer';
15
15
  import Auth, { CognitoUser } from '@aws-amplify/auth';
16
+ import { HttpClient, HttpClientModule } from '@angular/common/http';
16
17
  import { Hub } from '@aws-amplify/core';
17
18
  import { ReplaySubject } from 'rxjs';
18
- import { HttpClient, HttpClientModule } from '@angular/common/http';
19
19
  import { DEFAULT_INTERRUPTSOURCES, Idle } from '@ng-idle/core';
20
20
  import { Keepalive, NgIdleKeepaliveModule } from '@ng-idle/keepalive';
21
21
  import { Slip39Helper, Slip39 } from 'slip39';
@@ -177,6 +177,82 @@ class LrBadStateException extends LrException {
177
177
  }
178
178
  }
179
179
 
180
+ /* eslint-disable @typescript-eslint/no-explicit-any */
181
+ // promote everything to a promise.
182
+ function promiseAllMayAsync(values) {
183
+ if (!Array.isArray(values)) {
184
+ throw new Error('not array');
185
+ }
186
+ if (values.some((value) => value === null || value === void 0 ? void 0 : value.then)) {
187
+ const ret = Promise.all(values);
188
+ return ret;
189
+ }
190
+ else {
191
+ return values;
192
+ }
193
+ }
194
+ function remap(obj, values) {
195
+ const ret = {};
196
+ for (const [i, key] of Object.keys(obj).entries()) {
197
+ ret[key] = values[i];
198
+ }
199
+ return ret;
200
+ }
201
+ function mapValuesMayAsync(obj,
202
+ // callback can either return a Promise, or a value.
203
+ // The Promise<any> type is redundant but it shows that it can return a promise
204
+ callback) {
205
+ const values = promiseAllMayAsync(Object.entries(obj).map(([key, value]) => callback(value, key, obj)));
206
+ if (values.then) {
207
+ return values.then((resolvedValues) => remap(obj, resolvedValues));
208
+ }
209
+ else {
210
+ return remap(obj, values);
211
+ }
212
+ }
213
+ function mapValuesAsync(obj,
214
+ // callback can either return a Promise, or a value.
215
+ // The Promise<any> type is redundant but it shows that it can return a promise
216
+ // By default, it returns the value without any process, so you can use
217
+ // this to simply wait for all promises in an object to resolve.
218
+ callback) {
219
+ const values = Promise.all(Object.entries(obj).map(([key, value]) => callback ? callback(value, key, obj) : value));
220
+ return values.then((resolvedValues) => remap(obj, resolvedValues));
221
+ }
222
+ /**
223
+ * Returns the defaultValue when value is undefined
224
+ * @param value The value to check
225
+ * @param defaultValue The value to return if value is undefined.
226
+ */
227
+ function undefinedDefault(value, defaultValue) {
228
+ return value === undefined ? defaultValue : value;
229
+ }
230
+ function getAccessJwtToken(auth) {
231
+ return __awaiter(this, void 0, void 0, function* () {
232
+ try {
233
+ return (yield auth.currentSession()).getAccessToken().getJwtToken();
234
+ }
235
+ catch (error) {
236
+ // The error thrown by Cognito is of type string.
237
+ if (error == 'No current user') {
238
+ return '';
239
+ }
240
+ throw error;
241
+ }
242
+ });
243
+ }
244
+ function httpOptions(auth, config) {
245
+ var _a;
246
+ return __awaiter(this, void 0, void 0, function* () {
247
+ const token = yield getAccessJwtToken(auth);
248
+ const debugUsername = (_a = config.debug) === null || _a === void 0 ? void 0 : _a.username;
249
+ return {
250
+ withCredentials: true,
251
+ headers: Object.assign(Object.assign({}, (token && { authorization: `Bearer ${token}` })), (debugUsername && { 'x-kc-dev-user': debugUsername })),
252
+ };
253
+ });
254
+ }
255
+
180
256
  // Ref: https://stackoverflow.com/questions/59735280/angular-8-moment-error-cannot-call-a-namespace-moment
181
257
  const moment = moment_;
182
258
  const ServerTimeQuery = gql `
@@ -197,23 +273,10 @@ class TimeService {
197
273
  this.offsetMs = null; // Millisecond offset of local clock.
198
274
  this.verified = false; // Verified with independent time source
199
275
  }
200
- getAccessToken() {
201
- return __awaiter(this, void 0, void 0, function* () {
202
- try {
203
- return (yield this.auth.currentAuthenticatedUser())
204
- .getSignInUserSession()
205
- .getAccessToken()
206
- .getJwtToken();
207
- }
208
- catch (error) {
209
- return ''; // Not authenticated
210
- }
211
- });
212
- }
213
276
  // Get time from independent source to confirm.
214
277
  verifyCognito() {
215
278
  return __awaiter(this, void 0, void 0, function* () {
216
- const accessToken = yield this.getAccessToken();
279
+ const accessToken = yield getAccessJwtToken(this.auth);
217
280
  if (!accessToken) {
218
281
  return;
219
282
  }
@@ -291,7 +354,7 @@ class TimeService {
291
354
  }
292
355
  if (this.VERIFY_ENABLED) {
293
356
  // logged in but not yet verified time matches.
294
- if (!this.verified && (yield this.getAccessToken())) {
357
+ if (!this.verified && (yield getAccessJwtToken(this.auth))) {
295
358
  needsRefresh = true;
296
359
  }
297
360
  }
@@ -761,7 +824,10 @@ KeyFactoryService.ctorParameters = () => [
761
824
  { type: WebCryptoService }
762
825
  ];
763
826
 
764
- const LR_CONFIG = new InjectionToken('LR.AUTH');
827
+ // The injection token string is set to be the same as the const stand name since you
828
+ // can possibly have different tokens with the same type (i.e. KcConfig). So it would not
829
+ // be appropriate to use "KcConfig" as the token string.
830
+ const KC_CONFIG = new InjectionToken('KC_CONFIG');
765
831
  const RETRY_ERROR_CODES = [LrApiErrorCode.CONCURRENT_ACCESS];
766
832
  const configureApollo = (config, auth) => {
767
833
  const defaultOptions = {
@@ -778,16 +844,8 @@ const configureApollo = (config, auth) => {
778
844
  },
779
845
  };
780
846
  const authLink = setContext((_, { headers }) => __awaiter(void 0, void 0, void 0, function* () {
781
- let accessJwt = null;
782
- try {
783
- accessJwt = (yield auth.currentSession()).getAccessToken();
784
- }
785
- catch (_a) {
786
- console.log('User not signed in');
787
- }
788
- return {
789
- headers: Object.assign(Object.assign({}, headers), { authorization: accessJwt ? `Bearer ${accessJwt.jwtToken}` : '' }),
790
- };
847
+ const options = yield httpOptions(auth, config);
848
+ return Object.assign(Object.assign({}, options), { headers: Object.assign(Object.assign({}, headers), options.headers) });
791
849
  }));
792
850
  // We are only retrying on certain errors, like the CONCURRENT_ACCESS gql
793
851
  // error which indicates DB race condition. So can be safely retried.
@@ -1113,14 +1171,14 @@ class KeyService {
1113
1171
  });
1114
1172
  }
1115
1173
  }
1116
- KeyService.ɵprov = ɵɵdefineInjectable({ factory: function KeyService_Factory() { return new KeyService(ɵɵinject(LR_CONFIG), ɵɵinject(PersistService)); }, token: KeyService, providedIn: "root" });
1174
+ KeyService.ɵprov = ɵɵdefineInjectable({ factory: function KeyService_Factory() { return new KeyService(ɵɵinject(KC_CONFIG), ɵɵinject(PersistService)); }, token: KeyService, providedIn: "root" });
1117
1175
  KeyService.decorators = [
1118
1176
  { type: Injectable, args: [{
1119
1177
  providedIn: 'root',
1120
1178
  },] }
1121
1179
  ];
1122
1180
  KeyService.ctorParameters = () => [
1123
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
1181
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
1124
1182
  { type: PersistService }
1125
1183
  ];
1126
1184
 
@@ -1762,59 +1820,6 @@ function RunOutsideAngular({ ngZoneName, exceptLastPromise = true, excludeMethod
1762
1820
  };
1763
1821
  }
1764
1822
 
1765
- /* eslint-disable @typescript-eslint/no-explicit-any */
1766
- // Promise.all always returns a promise, even if all the values are not async.
1767
- // During processing of deep hierarchies of nested objects we don't always need to
1768
- // promote everything to a promise.
1769
- function promiseAllMayAsync(values) {
1770
- if (!Array.isArray(values)) {
1771
- throw new Error('not array');
1772
- }
1773
- if (values.some((value) => value === null || value === void 0 ? void 0 : value.then)) {
1774
- const ret = Promise.all(values);
1775
- return ret;
1776
- }
1777
- else {
1778
- return values;
1779
- }
1780
- }
1781
- function remap(obj, values) {
1782
- const ret = {};
1783
- for (const [i, key] of Object.keys(obj).entries()) {
1784
- ret[key] = values[i];
1785
- }
1786
- return ret;
1787
- }
1788
- function mapValuesMayAsync(obj,
1789
- // callback can either return a Promise, or a value.
1790
- // The Promise<any> type is redundant but it shows that it can return a promise
1791
- callback) {
1792
- const values = promiseAllMayAsync(Object.entries(obj).map(([key, value]) => callback(value, key, obj)));
1793
- if (values.then) {
1794
- return values.then((resolvedValues) => remap(obj, resolvedValues));
1795
- }
1796
- else {
1797
- return remap(obj, values);
1798
- }
1799
- }
1800
- function mapValuesAsync(obj,
1801
- // callback can either return a Promise, or a value.
1802
- // The Promise<any> type is redundant but it shows that it can return a promise
1803
- // By default, it returns the value without any process, so you can use
1804
- // this to simply wait for all promises in an object to resolve.
1805
- callback) {
1806
- const values = Promise.all(Object.entries(obj).map(([key, value]) => callback ? callback(value, key, obj) : value));
1807
- return values.then((resolvedValues) => remap(obj, resolvedValues));
1808
- }
1809
- /**
1810
- * Returns the defaultValue when value is undefined
1811
- * @param value The value to check
1812
- * @param defaultValue The value to return if value is undefined.
1813
- */
1814
- function undefinedDefault(value, defaultValue) {
1815
- return value === undefined ? defaultValue : value;
1816
- }
1817
-
1818
1823
  const DefaultProcessorOptions = {
1819
1824
  hasKeys: true,
1820
1825
  };
@@ -3071,18 +3076,10 @@ class IdleService {
3071
3076
  }
3072
3077
  keepalivePost() {
3073
3078
  return __awaiter(this, void 0, void 0, function* () {
3074
- // currentAuthenticatedUser() refreshes the access token if required.
3075
- const cognitoUser = yield this.auth.currentAuthenticatedUser();
3076
3079
  const keepaliveResult = yield this.http
3077
- .post(`${this.config.authUrl}auth/keepalive/`, null, {
3078
- withCredentials: true,
3079
- headers: {
3080
- Authorization: `Bearer ${cognitoUser
3081
- .getSignInUserSession()
3082
- .getAccessToken()
3083
- .getJwtToken()}`,
3084
- },
3085
- })
3080
+ .post(`${this.config.authUrl}auth/keepalive/`, null,
3081
+ // /auth/keepalive/ will be extending the sessions cookie.
3082
+ yield httpOptions(this.auth, this.config))
3086
3083
  .toPromise();
3087
3084
  return {
3088
3085
  keepaliveResult,
@@ -3137,14 +3134,14 @@ class IdleService {
3137
3134
  localStorage.removeItem(this.IDLING_KEY);
3138
3135
  }
3139
3136
  }
3140
- IdleService.ɵprov = ɵɵdefineInjectable({ factory: function IdleService_Factory() { return new IdleService(ɵɵinject(LR_CONFIG), ɵɵinject(HttpClient), ɵɵinject(Idle), ɵɵinject(Keepalive), ɵɵinject(KeyService), ɵɵinject(AuthClass)); }, token: IdleService, providedIn: "root" });
3137
+ IdleService.ɵprov = ɵɵdefineInjectable({ factory: function IdleService_Factory() { return new IdleService(ɵɵinject(KC_CONFIG), ɵɵinject(HttpClient), ɵɵinject(Idle), ɵɵinject(Keepalive), ɵɵinject(KeyService), ɵɵinject(AuthClass)); }, token: IdleService, providedIn: "root" });
3141
3138
  IdleService.decorators = [
3142
3139
  { type: Injectable, args: [{
3143
3140
  providedIn: 'root',
3144
3141
  },] }
3145
3142
  ];
3146
3143
  IdleService.ctorParameters = () => [
3147
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
3144
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
3148
3145
  { type: HttpClient },
3149
3146
  { type: Idle },
3150
3147
  { type: Keepalive },
@@ -4324,14 +4321,14 @@ class ProfileService {
4324
4321
  });
4325
4322
  }
4326
4323
  }
4327
- ProfileService.ɵprov = ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(ɵɵinject(LR_CONFIG), ɵɵinject(HttpClient), ɵɵinject(LrApolloService), ɵɵinject(KeyService), ɵɵinject(KeyMetaService), ɵɵinject(KeyGraphService), ɵɵinject(EncryptionService)); }, token: ProfileService, providedIn: "root" });
4324
+ ProfileService.ɵprov = ɵɵdefineInjectable({ factory: function ProfileService_Factory() { return new ProfileService(ɵɵinject(KC_CONFIG), ɵɵinject(HttpClient), ɵɵinject(LrApolloService), ɵɵinject(KeyService), ɵɵinject(KeyMetaService), ɵɵinject(KeyGraphService), ɵɵinject(EncryptionService)); }, token: ProfileService, providedIn: "root" });
4328
4325
  ProfileService.decorators = [
4329
4326
  { type: Injectable, args: [{
4330
4327
  providedIn: 'root',
4331
4328
  },] }
4332
4329
  ];
4333
4330
  ProfileService.ctorParameters = () => [
4334
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
4331
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
4335
4332
  { type: HttpClient },
4336
4333
  { type: LrApolloService },
4337
4334
  { type: KeyService },
@@ -4372,7 +4369,7 @@ const moment$1 = moment_;
4372
4369
  class PasswordCheck {
4373
4370
  }
4374
4371
  class PasswordService {
4375
- constructor(config, http, apollo, auth, profileService, keyFactory, encryptionService, keyGraph, webCryptoService, idleService) {
4372
+ constructor(config, http, apollo, auth, profileService, keyFactory, encryptionService, keyGraph, webCryptoService) {
4376
4373
  this.config = config;
4377
4374
  this.http = http;
4378
4375
  this.apollo = apollo;
@@ -4382,7 +4379,6 @@ class PasswordService {
4382
4379
  this.encryptionService = encryptionService;
4383
4380
  this.keyGraph = keyGraph;
4384
4381
  this.webCryptoService = webCryptoService;
4385
- this.idleService = idleService;
4386
4382
  this.CLIENT_NONCE_LENGTH = 32;
4387
4383
  }
4388
4384
  checkPassword(plainPassword) {
@@ -4508,17 +4504,14 @@ class PasswordService {
4508
4504
  // a network timeout for example. But we don't know if it's the response that timed out and
4509
4505
  // the idp password change was actually carried out. So we have to be extra conservative and
4510
4506
  // only act on a clear success. Otherwise we go into recover mode.
4511
- yield this.changePasswordComplete(cognitoUser.getSignInUserSession().getAccessToken().getJwtToken(), true, token);
4507
+ yield this.changePasswordComplete({ useNewPassword: true, token });
4512
4508
  });
4513
4509
  }
4514
- changePasswordComplete(accessToken, useNewPassword, token = null) {
4510
+ changePasswordComplete(options) {
4515
4511
  return __awaiter(this, void 0, void 0, function* () {
4512
+ const { useNewPassword, token } = options;
4516
4513
  return this.http
4517
- .post(`${this.config.authUrl}users/password-change-complete/`, Object.assign({ use_new_password: useNewPassword }, (token && { token })), {
4518
- headers: {
4519
- Authorization: `Bearer ${accessToken}`,
4520
- },
4521
- })
4514
+ .post(`${this.config.authUrl}users/password-change-complete/`, Object.assign({ use_new_password: useNewPassword }, (token && { token })), yield httpOptions(this.auth, this.config))
4522
4515
  .toPromise();
4523
4516
  });
4524
4517
  }
@@ -4638,14 +4631,14 @@ class PasswordService {
4638
4631
  };
4639
4632
  }
4640
4633
  }
4641
- PasswordService.ɵprov = ɵɵdefineInjectable({ factory: function PasswordService_Factory() { return new PasswordService(ɵɵinject(LR_CONFIG), ɵɵinject(HttpClient), ɵɵinject(LrApolloService), ɵɵinject(AuthClass), ɵɵinject(ProfileService), ɵɵinject(KeyFactoryService), ɵɵinject(EncryptionService), ɵɵinject(KeyGraphService), ɵɵinject(WebCryptoService), ɵɵinject(IdleService)); }, token: PasswordService, providedIn: "root" });
4634
+ PasswordService.ɵprov = ɵɵdefineInjectable({ factory: function PasswordService_Factory() { return new PasswordService(ɵɵinject(KC_CONFIG), ɵɵinject(HttpClient), ɵɵinject(LrApolloService), ɵɵinject(AuthClass), ɵɵinject(ProfileService), ɵɵinject(KeyFactoryService), ɵɵinject(EncryptionService), ɵɵinject(KeyGraphService), ɵɵinject(WebCryptoService)); }, token: PasswordService, providedIn: "root" });
4642
4635
  PasswordService.decorators = [
4643
4636
  { type: Injectable, args: [{
4644
4637
  providedIn: 'root',
4645
4638
  },] }
4646
4639
  ];
4647
4640
  PasswordService.ctorParameters = () => [
4648
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
4641
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
4649
4642
  { type: HttpClient },
4650
4643
  { type: LrApolloService },
4651
4644
  { type: AuthClass },
@@ -4653,8 +4646,7 @@ PasswordService.ctorParameters = () => [
4653
4646
  { type: KeyFactoryService },
4654
4647
  { type: EncryptionService },
4655
4648
  { type: KeyGraphService },
4656
- { type: WebCryptoService },
4657
- { type: IdleService }
4649
+ { type: WebCryptoService }
4658
4650
  ];
4659
4651
 
4660
4652
  const TP_PASSWORD_RESET_CLIENT_NONCE_LENGTH = 32;
@@ -5482,7 +5474,7 @@ const initialiseAuth = (authService) => {
5482
5474
  return () => authService.initialise();
5483
5475
  };
5484
5476
  class LifeReadyAuthService {
5485
- constructor(config, auth, keyFactory, keyService, profileService, keyGraphService, passwordService, idleService, lrGraphQL, tpPasswordResetProcessorService, persistService, encryptionService, assemblyController) {
5477
+ constructor(config, auth, keyFactory, keyService, profileService, keyGraphService, passwordService, idleService, lrGraphQL, tpPasswordResetProcessorService, persistService, encryptionService, assemblyController, http) {
5486
5478
  this.config = config;
5487
5479
  this.auth = auth;
5488
5480
  this.keyFactory = keyFactory;
@@ -5496,17 +5488,82 @@ class LifeReadyAuthService {
5496
5488
  this.persistService = persistService;
5497
5489
  this.encryptionService = encryptionService;
5498
5490
  this.assemblyController = assemblyController;
5491
+ this.http = http;
5499
5492
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5500
5493
  this.hubSubject = new ReplaySubject(1);
5501
5494
  // Could use rxjs observables here. But trying to have kc-client use as little angular
5502
5495
  // features as possible. Rxjs is not used anywhere else in kc-client.
5503
5496
  this.logoutListeners = new Set();
5497
+ if (!isDevMode()) {
5498
+ if (this.config.debug != null) {
5499
+ throw new LrBadLogicException('In production mode, "config.debug" must be set to null');
5500
+ }
5501
+ }
5504
5502
  }
5505
5503
  initialise() {
5506
5504
  return __awaiter(this, void 0, void 0, function* () {
5507
5505
  Hub.listen('auth', (data) => this.hubSubject.next(data.payload));
5508
5506
  });
5509
5507
  }
5508
+ debugLogin(username, password) {
5509
+ // This will fail if debug is null. But when debug is null, this function
5510
+ // should not be called.
5511
+ this.config.debug.username = username;
5512
+ return this.debugLoadUser(password);
5513
+ }
5514
+ // ------------------------------------------------------------------------
5515
+ // ------------------------------------------------------------------------
5516
+ // ------------------------------------------------------------------------
5517
+ /**
5518
+ * Login using the server side session method.
5519
+ */
5520
+ debugLoginUsingSession(username) {
5521
+ return this.http
5522
+ .get(this.config.apiUrl +
5523
+ 'debug_only/users/login/?username=' +
5524
+ encodeURIComponent(username), {
5525
+ // Non-obvious alert: if you want the cookies to be set, you must use the
5526
+ // "withCredentials" header. I would have thought the withCredentials header
5527
+ // is only used to send the cookies with the requests. But, if you don't include
5528
+ // the "withCredentials" header, the cookies in the response DOES NOT get set!
5529
+ //
5530
+ // ref: https://github.com/github/fetch/issues/386#issuecomment-243229388
5531
+ withCredentials: true,
5532
+ })
5533
+ .toPromise();
5534
+ }
5535
+ debugLoadUser(password) {
5536
+ return __awaiter(this, void 0, void 0, function* () {
5537
+ const { currentUser, contactCard, userPlans } = yield this.profileService.getCurrentUser();
5538
+ // Debug mode can not deal with session encryption key yet.
5539
+ // NO SESSION ENCRYPTION KEY.
5540
+ const passKey = (yield this.keyFactory.derivePassKey(Object.assign({ password }, currentUser.currentUserKey.passKey.passKeyParams))).jwk;
5541
+ const masterKey = yield this.keyGraphService.unwrapWithPassKey(currentUser.currentUserKey.passKey.id, passKey, currentUser.currentUserKey.masterKey.id);
5542
+ yield this.idleService.persistMasterKey(masterKey);
5543
+ yield this.keyGraphService.populateKeys(currentUser.currentUserKey);
5544
+ return {
5545
+ id: currentUser.id,
5546
+ sub: 'DEBUG_MODE',
5547
+ username: currentUser.username,
5548
+ currentUserKey: currentUser.currentUserKey,
5549
+ email: 'DEBUG_MODE',
5550
+ emailVerified: false,
5551
+ phone: 'DEBUG_MODE',
5552
+ phoneVerified: false,
5553
+ contactCard: Object.assign({}, (yield this.profileService.decryptContactCard(contactCard))),
5554
+ userDelete: currentUser.userDelete,
5555
+ userPlans,
5556
+ hasTPVaultAccess: this.mapTPVaultAccess(currentUser.features),
5557
+ features: currentUser.features,
5558
+ sessionEncryptionKey: currentUser.sessionEncryptionKey,
5559
+ };
5560
+ });
5561
+ }
5562
+ getAccessJwtToken() {
5563
+ return __awaiter(this, void 0, void 0, function* () {
5564
+ return getAccessJwtToken(this.auth);
5565
+ });
5566
+ }
5510
5567
  importPassword(plainPassword) {
5511
5568
  return this.keyFactory.importPassword(plainPassword);
5512
5569
  }
@@ -5672,11 +5729,9 @@ class LifeReadyAuthService {
5672
5729
  handlePasswordRecovery(user) {
5673
5730
  return __awaiter(this, void 0, void 0, function* () {
5674
5731
  if (user.recoveryStatus !== RecoveryStatus.NONE) {
5675
- const jwtToken = user
5676
- .getSignInUserSession()
5677
- .getAccessToken()
5678
- .getJwtToken();
5679
- yield this.passwordService.changePasswordComplete(jwtToken, user.recoveryStatus === RecoveryStatus.NEW_PASSWORD);
5732
+ yield this.passwordService.changePasswordComplete({
5733
+ useNewPassword: user.recoveryStatus === RecoveryStatus.NEW_PASSWORD,
5734
+ });
5680
5735
  }
5681
5736
  });
5682
5737
  }
@@ -5734,7 +5789,6 @@ class LifeReadyAuthService {
5734
5789
  sub: this.getUserAttribute('sub', userAttributes),
5735
5790
  username: currentUser.username,
5736
5791
  currentUserKey: currentUser.currentUserKey,
5737
- getAccessJwtToken: () => cognitoUser.getSignInUserSession().getAccessToken().getJwtToken(),
5738
5792
  email: this.getUserAttribute('email', userAttributes),
5739
5793
  emailVerified: this.getUserAttribute('email_verified', userAttributes) === 'true',
5740
5794
  phone: this.getUserAttribute('phone_number', userAttributes),
@@ -5753,6 +5807,7 @@ class LifeReadyAuthService {
5753
5807
  return this.hubSubject;
5754
5808
  }
5755
5809
  logout() {
5810
+ var _a;
5756
5811
  return __awaiter(this, void 0, void 0, function* () {
5757
5812
  // Notify all listeners to clean up.
5758
5813
  yield Promise.all([...this.logoutListeners].map((callback) => callback()));
@@ -5760,6 +5815,9 @@ class LifeReadyAuthService {
5760
5815
  this.keyService.purgeKeys();
5761
5816
  this.keyGraphService.purgeKeys();
5762
5817
  yield Promise.all([this.auth.signOut(), this.profileService.signOut()]);
5818
+ if ((_a = this.config.debug) === null || _a === void 0 ? void 0 : _a.username) {
5819
+ this.config.debug.username = null;
5820
+ }
5763
5821
  });
5764
5822
  }
5765
5823
  getUserAttribute(attributeName, userAttributes) {
@@ -5914,14 +5972,14 @@ class LifeReadyAuthService {
5914
5972
  });
5915
5973
  }
5916
5974
  }
5917
- LifeReadyAuthService.ɵprov = ɵɵdefineInjectable({ factory: function LifeReadyAuthService_Factory() { return new LifeReadyAuthService(ɵɵinject(LR_CONFIG), ɵɵinject(AuthClass), ɵɵinject(KeyFactoryService), ɵɵinject(KeyService), ɵɵinject(ProfileService), ɵɵinject(KeyGraphService), ɵɵinject(PasswordService), ɵɵinject(IdleService), ɵɵinject(LrGraphQLService), ɵɵinject(TpPasswordResetProcessorService), ɵɵinject(PersistService), ɵɵinject(EncryptionService), ɵɵinject(TpPasswordResetAssemblyController)); }, token: LifeReadyAuthService, providedIn: "root" });
5975
+ LifeReadyAuthService.ɵprov = ɵɵdefineInjectable({ factory: function LifeReadyAuthService_Factory() { return new LifeReadyAuthService(ɵɵinject(KC_CONFIG), ɵɵinject(AuthClass), ɵɵinject(KeyFactoryService), ɵɵinject(KeyService), ɵɵinject(ProfileService), ɵɵinject(KeyGraphService), ɵɵinject(PasswordService), ɵɵinject(IdleService), ɵɵinject(LrGraphQLService), ɵɵinject(TpPasswordResetProcessorService), ɵɵinject(PersistService), ɵɵinject(EncryptionService), ɵɵinject(TpPasswordResetAssemblyController), ɵɵinject(HttpClient)); }, token: LifeReadyAuthService, providedIn: "root" });
5918
5976
  LifeReadyAuthService.decorators = [
5919
5977
  { type: Injectable, args: [{
5920
5978
  providedIn: 'root',
5921
5979
  },] }
5922
5980
  ];
5923
5981
  LifeReadyAuthService.ctorParameters = () => [
5924
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
5982
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
5925
5983
  { type: AuthClass },
5926
5984
  { type: KeyFactoryService },
5927
5985
  { type: KeyService },
@@ -5933,7 +5991,8 @@ LifeReadyAuthService.ctorParameters = () => [
5933
5991
  { type: TpPasswordResetProcessorService },
5934
5992
  { type: PersistService },
5935
5993
  { type: EncryptionService },
5936
- { type: TpPasswordResetAssemblyController }
5994
+ { type: TpPasswordResetAssemblyController },
5995
+ { type: HttpClient }
5937
5996
  ];
5938
5997
 
5939
5998
  var FileType;
@@ -6699,10 +6758,10 @@ ContactCard2Service = __decorate([
6699
6758
  ], ContactCard2Service);
6700
6759
 
6701
6760
  class FileUploadService {
6702
- constructor(config, http, lrAuth) {
6761
+ constructor(config, http, auth) {
6703
6762
  this.config = config;
6704
6763
  this.http = http;
6705
- this.lrAuth = lrAuth;
6764
+ this.auth = auth;
6706
6765
  }
6707
6766
  downloadEncryptedFile(fileStateNodeId) {
6708
6767
  return __awaiter(this, void 0, void 0, function* () {
@@ -6713,12 +6772,7 @@ class FileUploadService {
6713
6772
  return __awaiter(this, void 0, void 0, function* () {
6714
6773
  const url = `${this.config.apiUrl}files/download/?file_state_node_id=${fileStateNodeId}`;
6715
6774
  const content = yield this.http
6716
- .get(url, {
6717
- responseType: 'text',
6718
- headers: {
6719
- Authorization: `Bearer ${(yield this.lrAuth.getUser()).getAccessJwtToken()}`,
6720
- },
6721
- })
6775
+ .get(url, Object.assign(Object.assign({}, (yield httpOptions(this.auth, this.config))), { responseType: 'text' }))
6722
6776
  .toPromise();
6723
6777
  return content;
6724
6778
  });
@@ -6741,26 +6795,22 @@ class FileUploadService {
6741
6795
  const formData = new FormData();
6742
6796
  formData.append('content', new Blob([encryptedContent]), fileName);
6743
6797
  const { content_resource } = yield this.http
6744
- .post(`${this.config.apiUrl}files/upload/`, formData, {
6745
- headers: {
6746
- Authorization: `Bearer ${(yield this.lrAuth.getUser()).getAccessJwtToken()}`,
6747
- },
6748
- })
6798
+ .post(`${this.config.apiUrl}files/upload/`, formData, yield httpOptions(this.auth, this.config))
6749
6799
  .toPromise();
6750
6800
  return content_resource;
6751
6801
  });
6752
6802
  }
6753
6803
  }
6754
- FileUploadService.ɵprov = ɵɵdefineInjectable({ factory: function FileUploadService_Factory() { return new FileUploadService(ɵɵinject(LR_CONFIG), ɵɵinject(HttpClient), ɵɵinject(LifeReadyAuthService)); }, token: FileUploadService, providedIn: "root" });
6804
+ FileUploadService.ɵprov = ɵɵdefineInjectable({ factory: function FileUploadService_Factory() { return new FileUploadService(ɵɵinject(KC_CONFIG), ɵɵinject(HttpClient), ɵɵinject(AuthClass)); }, token: FileUploadService, providedIn: "root" });
6755
6805
  FileUploadService.decorators = [
6756
6806
  { type: Injectable, args: [{
6757
6807
  providedIn: 'root',
6758
6808
  },] }
6759
6809
  ];
6760
6810
  FileUploadService.ctorParameters = () => [
6761
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
6811
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
6762
6812
  { type: HttpClient },
6763
- { type: LifeReadyAuthService }
6813
+ { type: AuthClass }
6764
6814
  ];
6765
6815
 
6766
6816
  const LockFragment = gqlTyped `
@@ -9303,14 +9353,14 @@ class LbopService {
9303
9353
  });
9304
9354
  }
9305
9355
  }
9306
- LbopService.ɵprov = ɵɵdefineInjectable({ factory: function LbopService_Factory() { return new LbopService(ɵɵinject(LR_CONFIG), ɵɵinject(HttpClient), ɵɵinject(LrApolloService), ɵɵinject(AuthClass), ɵɵinject(LifeReadyAuthService), ɵɵinject(KeyFactoryService), ɵɵinject(KeyService), ɵɵinject(EncryptionService), ɵɵinject(KeyGraphService), ɵɵinject(PasswordService)); }, token: LbopService, providedIn: "root" });
9356
+ LbopService.ɵprov = ɵɵdefineInjectable({ factory: function LbopService_Factory() { return new LbopService(ɵɵinject(KC_CONFIG), ɵɵinject(HttpClient), ɵɵinject(LrApolloService), ɵɵinject(AuthClass), ɵɵinject(LifeReadyAuthService), ɵɵinject(KeyFactoryService), ɵɵinject(KeyService), ɵɵinject(EncryptionService), ɵɵinject(KeyGraphService), ɵɵinject(PasswordService)); }, token: LbopService, providedIn: "root" });
9307
9357
  LbopService.decorators = [
9308
9358
  { type: Injectable, args: [{
9309
9359
  providedIn: 'root',
9310
9360
  },] }
9311
9361
  ];
9312
9362
  LbopService.ctorParameters = () => [
9313
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
9363
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
9314
9364
  { type: HttpClient },
9315
9365
  { type: LrApolloService },
9316
9366
  { type: AuthClass },
@@ -9328,7 +9378,7 @@ class LifeReadyModule {
9328
9378
  ngModule: LifeReadyModule,
9329
9379
  providers: [
9330
9380
  {
9331
- provide: LR_CONFIG,
9381
+ provide: KC_CONFIG,
9332
9382
  useValue: config,
9333
9383
  },
9334
9384
  {
@@ -9338,7 +9388,7 @@ class LifeReadyModule {
9338
9388
  {
9339
9389
  provide: APP_INITIALIZER,
9340
9390
  useFactory: configureAmplifyAuth,
9341
- deps: [LR_CONFIG, AuthClass],
9391
+ deps: [KC_CONFIG, AuthClass],
9342
9392
  multi: true,
9343
9393
  },
9344
9394
  {
@@ -9350,7 +9400,7 @@ class LifeReadyModule {
9350
9400
  {
9351
9401
  provide: APOLLO_OPTIONS,
9352
9402
  useFactory: configureApollo,
9353
- deps: [LR_CONFIG, AuthClass],
9403
+ deps: [KC_CONFIG, AuthClass],
9354
9404
  },
9355
9405
  ],
9356
9406
  };
@@ -10959,14 +11009,14 @@ class RegisterService {
10959
11009
  });
10960
11010
  }
10961
11011
  }
10962
- RegisterService.ɵprov = ɵɵdefineInjectable({ factory: function RegisterService_Factory() { return new RegisterService(ɵɵinject(LR_CONFIG), ɵɵinject(AuthClass), ɵɵinject(HttpClient), ɵɵinject(KeyFactoryService), ɵɵinject(EncryptionService), ɵɵinject(PasswordService)); }, token: RegisterService, providedIn: "root" });
11012
+ RegisterService.ɵprov = ɵɵdefineInjectable({ factory: function RegisterService_Factory() { return new RegisterService(ɵɵinject(KC_CONFIG), ɵɵinject(AuthClass), ɵɵinject(HttpClient), ɵɵinject(KeyFactoryService), ɵɵinject(EncryptionService), ɵɵinject(PasswordService)); }, token: RegisterService, providedIn: "root" });
10963
11013
  RegisterService.decorators = [
10964
11014
  { type: Injectable, args: [{
10965
11015
  providedIn: 'root',
10966
11016
  },] }
10967
11017
  ];
10968
11018
  RegisterService.ctorParameters = () => [
10969
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
11019
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
10970
11020
  { type: AuthClass },
10971
11021
  { type: HttpClient },
10972
11022
  { type: KeyFactoryService },
@@ -12246,7 +12296,7 @@ let TpPasswordResetUserService = class TpPasswordResetUserService extends LrServ
12246
12296
  });
12247
12297
  }
12248
12298
  };
12249
- TpPasswordResetUserService.ɵprov = ɵɵdefineInjectable({ factory: function TpPasswordResetUserService_Factory() { return new TpPasswordResetUserService(ɵɵinject(NgZone), ɵɵinject(INJECTOR), ɵɵinject(LR_CONFIG), ɵɵinject(KeyFactoryService), ɵɵinject(EncryptionService), ɵɵinject(PasswordService), ɵɵinject(HttpClient), ɵɵinject(AuthClass)); }, token: TpPasswordResetUserService, providedIn: "root" });
12299
+ TpPasswordResetUserService.ɵprov = ɵɵdefineInjectable({ factory: function TpPasswordResetUserService_Factory() { return new TpPasswordResetUserService(ɵɵinject(NgZone), ɵɵinject(INJECTOR), ɵɵinject(KC_CONFIG), ɵɵinject(KeyFactoryService), ɵɵinject(EncryptionService), ɵɵinject(PasswordService), ɵɵinject(HttpClient), ɵɵinject(AuthClass)); }, token: TpPasswordResetUserService, providedIn: "root" });
12250
12300
  TpPasswordResetUserService.decorators = [
12251
12301
  { type: Injectable, args: [{
12252
12302
  providedIn: 'root',
@@ -12255,7 +12305,7 @@ TpPasswordResetUserService.decorators = [
12255
12305
  TpPasswordResetUserService.ctorParameters = () => [
12256
12306
  { type: NgZone },
12257
12307
  { type: Injector },
12258
- { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
12308
+ { type: undefined, decorators: [{ type: Inject, args: [KC_CONFIG,] }] },
12259
12309
  { type: KeyFactoryService },
12260
12310
  { type: EncryptionService },
12261
12311
  { type: PasswordService },
@@ -12732,5 +12782,5 @@ TwoFactorService.ctorParameters = () => [
12732
12782
  * Generated bundle index. Do not edit.
12733
12783
  */
12734
12784
 
12735
- export { AccessLevel, AccessRoleChoice, AccessRoleMethodChoice, ApiContactCard, ApiCurrentUser, ArchiveDirectoryMutation, CancelUserDeleteMutation, Category, CategoryFields, CategoryFilter, CategoryMetaService, CategoryService, ClaimApproverState, ClaimState, CognitoChallengeUser, CommonProcessorsService, CompleteOtkMutation, Config, ContactCard2Service, ContactCardAddress, ContactCardName, CreateCategoryMutation, CreateContactCardMutation$1 as CreateContactCardMutation, CreateFileMutation, CreateFileQuery, CreateLbopQuery, CreateRecordContainerMutation, CreateRecordMutation, CreateVaultMutation, CurrentCategory, CurrentUser, CurrentUserKey, CurrentUserQuery, CurrentUserSharedKeyQuery, DEFAULT_BREADCRUMB_DEPTH, DEFAULT_DESCENDANTS_DEPTH, DefaultCategory, DefaultProcessorOptions, DefaultVaultFilter, DeleteCategoryMutation, DeleteFileMutation, DeleteLbopQuery, DeleteRecordMutation, DirectoryQuery, DirectoryType, FeatureAction, Features, FetchKeyGraphField, FileOperationField, FileQuery, FileType, FileUploadService, GetCategoriesQuery, GetCategoryKeyIdQuery, GetCategoryQuery, GetMySharedCategoriesQuery, GetRecordQuery, GetRootDirectoryIdsQuery, GetTrustedPartyCategoriesQuery, GetVaultsQuery, IdleService, InitiateOtkMutation, Item2Service, KeyExchange2Service, KeyExchangeFields, KeyExchangeMode, KeyExchangeOtkState, KeyExchangeQuery, KeyExchangeService, KeyExchangeState, KeyExchangeTokenQuery, KeyExchangesQuery, KeyGraphField, KeyGraphFragment, LR_CONFIG, LbopQuery, LbopService, LbopsQuery, LifeReadyAuthService, LifeReadyModule, LinkTypeField, LoadedCategoryTree, LockService, LockState, LoginHistoryQuery, LoginResult, LrApiErrorCode, LrApolloService, LrAuthException, LrBadArgumentException, LrBadLogicException, LrBadRequestException, LrBadStateException, LrCodeMismatchException, LrConcurrentAccessException, LrEncryptionException, LrError, LrErrorCode, LrException, LrExpiredCodeException, LrExpiredException, LrGraphQLService, LrLockedException, LrMergedMutation, LrMutation, LrMutationBase, LrNotFoundException, LrRecord, LrService, LrSuspiciousException, LrUnsupportedException, MainContactCard, MainContactCardFields, MainContactCardPlainFields, MainContactCardProperty, MessageService, MoveDirectoryQuery, MoveFileQuery, NewAttachment, NewCategory, NewOrUpdatedAttachment, NewRecord, NotificationService, OtkState, OwnerPlainDataJson, PassIdpApiResult, PasswordChangeStatus, PasswordCheck, PasswordService, PermissionChoice, PersistService, Plan, PlanService, PlanState, ProfileDetailsService, ProfileService, QueryProcessorService, RecordAttachment, RecordAttachmentFilter, RecordAttachmentService, RecordContentFilter, RecordField, RecordFieldType, RecordFilter, RecordService, RecordType, RecordTypeField, RecordTypeFieldOption, RecordTypeService, RecordTypeSummary, RecoveryStatus, RegisterResult, RegisterService, RequestUserDeleteMutation, RespondOtkMutation, RevertFileQuery, ScenarioLastClaimState, ScenarioService, ScenarioState, ServerConfigService, ServerTimeQuery, SharedAccess, SharedContactCard2Service, StripeBillingPortalSession, StripeCheckoutSession, Subscription, TimeService, TpAssemblyState, TpClaimApproverState, TpClaimState, TpPasswordResetRequestService, TpPasswordResetService, TpPasswordResetUserService, TrustedParty2Service, TrustedPartyDetails, TwoFactorService, UnarchiveDirectoryMutation, UpdateCategoryMutation, UpdateContactCardMutation$1 as UpdateContactCardMutation, UpdateFileQuery, UpdateLbopQuery, UpdateRecordContainerMutation, UpdateRecordMutation, UpdatedCategory, UpdatedRecord, UserDeleteState, UserPlan, UserService, UserSharedKeyFields, Vault, VaultCategory, VaultFields, VaultRecord, VaultRecordType, WebCryptoService, awsFetch, configureAmplifyAuth, configureApollo, fragmentSpreadAstSelection, gqlTyped, handleApolloError, handleCognitoCallback, initialiseAuth, mapEdges, mapUserPlans, parentCategoriesField, processConnection, throwClaimIdMismatch, throwClaimNotApproved, ɵ0, KeyGraphService as ɵa, EncryptionService as ɵb, KeyService as ɵc, KeyFactoryService as ɵd, KeyMetaService as ɵe, LrGraphQLService as ɵf, TpPasswordResetProcessorService as ɵg, RunOutsideAngular as ɵh, TpPasswordResetAssemblyController as ɵi, TpAssemblyController as ɵj, LrService as ɵk, SharedContactCardService as ɵl, TrustedPartyService as ɵm, ScenarioAssemblyController as ɵn, TpPasswordResetPrivateService as ɵo };
12785
+ export { AccessLevel, AccessRoleChoice, AccessRoleMethodChoice, ApiContactCard, ApiCurrentUser, ArchiveDirectoryMutation, CancelUserDeleteMutation, Category, CategoryFields, CategoryFilter, CategoryMetaService, CategoryService, ClaimApproverState, ClaimState, CognitoChallengeUser, CommonProcessorsService, CompleteOtkMutation, Config, ContactCard2Service, ContactCardAddress, ContactCardName, CreateCategoryMutation, CreateContactCardMutation$1 as CreateContactCardMutation, CreateFileMutation, CreateFileQuery, CreateLbopQuery, CreateRecordContainerMutation, CreateRecordMutation, CreateVaultMutation, CurrentCategory, CurrentUser, CurrentUserKey, CurrentUserQuery, CurrentUserSharedKeyQuery, DEFAULT_BREADCRUMB_DEPTH, DEFAULT_DESCENDANTS_DEPTH, DefaultCategory, DefaultProcessorOptions, DefaultVaultFilter, DeleteCategoryMutation, DeleteFileMutation, DeleteLbopQuery, DeleteRecordMutation, DirectoryQuery, DirectoryType, FeatureAction, Features, FetchKeyGraphField, FileOperationField, FileQuery, FileType, FileUploadService, GetCategoriesQuery, GetCategoryKeyIdQuery, GetCategoryQuery, GetMySharedCategoriesQuery, GetRecordQuery, GetRootDirectoryIdsQuery, GetTrustedPartyCategoriesQuery, GetVaultsQuery, IdleService, InitiateOtkMutation, Item2Service, KC_CONFIG, KeyExchange2Service, KeyExchangeFields, KeyExchangeMode, KeyExchangeOtkState, KeyExchangeQuery, KeyExchangeService, KeyExchangeState, KeyExchangeTokenQuery, KeyExchangesQuery, KeyGraphField, KeyGraphFragment, LbopQuery, LbopService, LbopsQuery, LifeReadyAuthService, LifeReadyModule, LinkTypeField, LoadedCategoryTree, LockService, LockState, LoginHistoryQuery, LoginResult, LrApiErrorCode, LrApolloService, LrAuthException, LrBadArgumentException, LrBadLogicException, LrBadRequestException, LrBadStateException, LrCodeMismatchException, LrConcurrentAccessException, LrEncryptionException, LrError, LrErrorCode, LrException, LrExpiredCodeException, LrExpiredException, LrGraphQLService, LrLockedException, LrMergedMutation, LrMutation, LrMutationBase, LrNotFoundException, LrRecord, LrService, LrSuspiciousException, LrUnsupportedException, MainContactCard, MainContactCardFields, MainContactCardPlainFields, MainContactCardProperty, MessageService, MoveDirectoryQuery, MoveFileQuery, NewAttachment, NewCategory, NewOrUpdatedAttachment, NewRecord, NotificationService, OtkState, OwnerPlainDataJson, PassIdpApiResult, PasswordChangeStatus, PasswordCheck, PasswordService, PermissionChoice, PersistService, Plan, PlanService, PlanState, ProfileDetailsService, ProfileService, QueryProcessorService, RecordAttachment, RecordAttachmentFilter, RecordAttachmentService, RecordContentFilter, RecordField, RecordFieldType, RecordFilter, RecordService, RecordType, RecordTypeField, RecordTypeFieldOption, RecordTypeService, RecordTypeSummary, RecoveryStatus, RegisterResult, RegisterService, RequestUserDeleteMutation, RespondOtkMutation, RevertFileQuery, ScenarioLastClaimState, ScenarioService, ScenarioState, ServerConfigService, ServerTimeQuery, SharedAccess, SharedContactCard2Service, StripeBillingPortalSession, StripeCheckoutSession, Subscription, TimeService, TpAssemblyState, TpClaimApproverState, TpClaimState, TpPasswordResetRequestService, TpPasswordResetService, TpPasswordResetUserService, TrustedParty2Service, TrustedPartyDetails, TwoFactorService, UnarchiveDirectoryMutation, UpdateCategoryMutation, UpdateContactCardMutation$1 as UpdateContactCardMutation, UpdateFileQuery, UpdateLbopQuery, UpdateRecordContainerMutation, UpdateRecordMutation, UpdatedCategory, UpdatedRecord, UserDeleteState, UserPlan, UserService, UserSharedKeyFields, Vault, VaultCategory, VaultFields, VaultRecord, VaultRecordType, WebCryptoService, awsFetch, configureAmplifyAuth, configureApollo, fragmentSpreadAstSelection, gqlTyped, handleApolloError, handleCognitoCallback, initialiseAuth, mapEdges, mapUserPlans, parentCategoriesField, processConnection, throwClaimIdMismatch, throwClaimNotApproved, ɵ0, KeyGraphService as ɵa, EncryptionService as ɵb, KeyService as ɵc, KeyFactoryService as ɵd, KeyMetaService as ɵe, LrGraphQLService as ɵf, TpPasswordResetProcessorService as ɵg, RunOutsideAngular as ɵh, TpPasswordResetAssemblyController as ɵi, TpAssemblyController as ɵj, LrService as ɵk, SharedContactCardService as ɵl, TrustedPartyService as ɵm, ScenarioAssemblyController as ɵn, TpPasswordResetPrivateService as ɵo };
12736
12786
  //# sourceMappingURL=lifeready-core.js.map