@lifeready/core 1.1.15 → 1.1.17

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.
@@ -518,7 +518,7 @@ EncryptionService.ctorParameters = () => [
518
518
 
519
519
  class WebCryptoService {
520
520
  constructor() {
521
- this.crypto = window.crypto;
521
+ this.kcCrypto = window.crypto;
522
522
  }
523
523
  toHex(buffer) {
524
524
  // Ref: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
@@ -530,7 +530,7 @@ class WebCryptoService {
530
530
  return __awaiter(this, void 0, void 0, function* () {
531
531
  const encoder = new TextEncoder();
532
532
  const data = encoder.encode(message);
533
- const hash = yield this.crypto.subtle.digest(algorithm, data);
533
+ const hash = yield this.kcCrypto.subtle.digest(algorithm, data);
534
534
  return this.toHex(hash);
535
535
  });
536
536
  }
@@ -542,21 +542,6 @@ WebCryptoService.decorators = [
542
542
  },] }
543
543
  ];
544
544
 
545
- function sha256(message) {
546
- return __awaiter(this, void 0, void 0, function* () {
547
- // encode as UTF-8
548
- const msgBuffer = new TextEncoder().encode(message);
549
- // hash the message
550
- const hashBuffer = yield crypto.subtle.digest('SHA-256', msgBuffer);
551
- // convert ArrayBuffer to Array
552
- const hashArray = Array.from(new Uint8Array(hashBuffer));
553
- // convert bytes to hex string
554
- const hashHex = hashArray
555
- .map((b) => ('00' + b.toString(16)).slice(-2))
556
- .join('');
557
- return hashHex;
558
- });
559
- }
560
545
  class KeyFactoryService {
561
546
  constructor(webCryptoService) {
562
547
  this.webCryptoService = webCryptoService;
@@ -575,7 +560,7 @@ class KeyFactoryService {
575
560
  this.DEFAULT_PASS_IDP_PBKDF_ITER = this.MIN_PASS_IDP_PBKDF_ITER;
576
561
  this.DEFAULT_PASS_KEY_PBKDF_ITER = this.MIN_PASS_KEY_PBKDF_ITER;
577
562
  this.DEFAULT_LBOP_KEY_PBKDF_ITER = this.MIN_LBOP_KEY_PBKDF_ITER;
578
- this.crypto = this.webCryptoService.crypto;
563
+ this.kcCrypto = this.webCryptoService.kcCrypto;
579
564
  }
580
565
  static asKey(key, form, extras) {
581
566
  // <AZ> Using a single global key store did not seem to improve speed.
@@ -588,7 +573,7 @@ class KeyFactoryService {
588
573
  }
589
574
  const validChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
590
575
  let array = new Uint32Array(digits);
591
- this.crypto.getRandomValues(array);
576
+ this.kcCrypto.getRandomValues(array);
592
577
  array = array.map((x) => validChars.charCodeAt(x % validChars.length));
593
578
  return String.fromCharCode.apply(null, array);
594
579
  }
@@ -603,7 +588,7 @@ class KeyFactoryService {
603
588
  throw new LrBadArgumentException('chooseN <= 0');
604
589
  }
605
590
  const values = new Uint32Array(chooseN);
606
- this.crypto.getRandomValues(values);
591
+ this.kcCrypto.getRandomValues(values);
607
592
  const ret = [];
608
593
  values.forEach((v) => ret.push(array[v % array.length]));
609
594
  return ret;
@@ -613,13 +598,13 @@ class KeyFactoryService {
613
598
  }
614
599
  createKey() {
615
600
  return __awaiter(this, void 0, void 0, function* () {
616
- const key = yield this.crypto.subtle.generateKey({
601
+ const key = yield this.kcCrypto.subtle.generateKey({
617
602
  name: 'AES-GCM',
618
603
  length: 256,
619
604
  }, true, // whether the key is extractable (i.e. can be used in exportKey)
620
605
  ['encrypt', 'decrypt'] // must be ["encrypt", "decrypt"] or ["wrapKey", "unwrapKey"]
621
606
  );
622
- const jwk = yield this.crypto.subtle.exportKey('jwk', key);
607
+ const jwk = yield this.kcCrypto.subtle.exportKey('jwk', key);
623
608
  // Removing the fields not needed by node-jose
624
609
  delete jwk.ext;
625
610
  delete jwk.key_ops;
@@ -628,11 +613,11 @@ class KeyFactoryService {
628
613
  }
629
614
  createSignKey() {
630
615
  return __awaiter(this, void 0, void 0, function* () {
631
- const key = yield this.crypto.subtle.generateKey({
616
+ const key = yield this.kcCrypto.subtle.generateKey({
632
617
  name: 'HMAC',
633
618
  hash: { name: 'SHA-512' },
634
619
  }, true, ['sign', 'verify']);
635
- const jwk = yield this.crypto.subtle.exportKey('jwk', key);
620
+ const jwk = yield this.kcCrypto.subtle.exportKey('jwk', key);
636
621
  // Removing the fields not needed by node-jose
637
622
  delete jwk.key_ops;
638
623
  delete jwk.ext;
@@ -646,7 +631,7 @@ class KeyFactoryService {
646
631
  // does not support sync version, so it uses the javascript implementation, which is way too slow.
647
632
  // So we generate using webcrypto and import the key.
648
633
  // Unfortunately Elliptical Curve is not supported by Webcrypto. So we have to settle for RSA.
649
- const key = yield this.crypto.subtle.generateKey({
634
+ const key = yield this.kcCrypto.subtle.generateKey({
650
635
  name: 'RSA-OAEP',
651
636
  modulusLength: 2048,
652
637
  // As per suggestion: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams
@@ -655,7 +640,7 @@ class KeyFactoryService {
655
640
  }, true, // whether the key is extractable (i.e. can be used in exportKey)
656
641
  ['encrypt', 'decrypt'] // must be ["encrypt", "decrypt"] or ["wrapKey", "unwrapKey"]
657
642
  );
658
- const jwk = yield this.crypto.subtle.exportKey('jwk', key.privateKey);
643
+ const jwk = yield this.kcCrypto.subtle.exportKey('jwk', key.privateKey);
659
644
  // Removing the fields not needed by node-jose
660
645
  delete jwk.key_ops;
661
646
  delete jwk.ext;
@@ -664,7 +649,7 @@ class KeyFactoryService {
664
649
  }
665
650
  createPkcSignKey() {
666
651
  return __awaiter(this, void 0, void 0, function* () {
667
- const key = yield this.crypto.subtle.generateKey({
652
+ const key = yield this.kcCrypto.subtle.generateKey({
668
653
  name: 'RSASSA-PKCS1-v1_5',
669
654
  modulusLength: 2048,
670
655
  // As per suggestion: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams
@@ -673,24 +658,28 @@ class KeyFactoryService {
673
658
  }, true, // whether the key is extractable (i.e. can be used in exportKey)
674
659
  ['sign', 'verify'] // can be any combination of "sign" and "verify"
675
660
  );
676
- const jwk = yield this.crypto.subtle.exportKey('jwk', key.privateKey);
661
+ const jwk = yield this.kcCrypto.subtle.exportKey('jwk', key.privateKey);
677
662
  // Removing the fields not needed by node-jose
678
663
  delete jwk.key_ops;
679
664
  delete jwk.ext;
680
665
  return KeyFactoryService.asKey(jwk);
681
666
  });
682
667
  }
683
- deriveKey({ password, salt, iterations, kid, }) {
668
+ importPassword(plainPassword) {
684
669
  return __awaiter(this, void 0, void 0, function* () {
685
670
  const enc = new TextEncoder();
686
- const rawKey = yield this.crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveBits', 'deriveKey']);
687
- const passKey = yield crypto.subtle.deriveKey({
671
+ return this.kcCrypto.subtle.importKey('raw', enc.encode(plainPassword), 'PBKDF2', false, ['deriveKey']);
672
+ });
673
+ }
674
+ deriveKey({ password, salt, iterations, kid, }) {
675
+ return __awaiter(this, void 0, void 0, function* () {
676
+ const passKey = yield this.kcCrypto.subtle.deriveKey({
688
677
  name: 'PBKDF2',
689
678
  salt: new TextEncoder().encode(salt),
690
679
  iterations,
691
680
  hash: 'SHA-256',
692
- }, rawKey, { name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']);
693
- const passKeyJson = yield crypto.subtle.exportKey('jwk', passKey);
681
+ }, password, { name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']);
682
+ const passKeyJson = yield this.kcCrypto.subtle.exportKey('jwk', passKey);
694
683
  if (kid) {
695
684
  passKeyJson.kid = kid;
696
685
  }
@@ -4396,19 +4385,19 @@ class PasswordService {
4396
4385
  this.idleService = idleService;
4397
4386
  this.CLIENT_NONCE_LENGTH = 32;
4398
4387
  }
4399
- checkPassword(password) {
4388
+ checkPassword(plainPassword) {
4400
4389
  return __awaiter(this, void 0, void 0, function* () {
4401
- const { years } = this.passwordStrength(password);
4390
+ const { years } = this.passwordStrength(plainPassword);
4402
4391
  return {
4403
- length: password.length,
4392
+ length: plainPassword.length,
4404
4393
  timeToCrack: moment$1.duration({ years }),
4405
- passwordExposed: yield this.getExposureCount(password),
4394
+ passwordExposed: yield this.getExposureCount(plainPassword),
4406
4395
  };
4407
4396
  });
4408
4397
  }
4409
- getExposureCount(password) {
4398
+ getExposureCount(plainPassword) {
4410
4399
  return __awaiter(this, void 0, void 0, function* () {
4411
- const sha1Password = yield this.webCryptoService.stringDigest('SHA-1', password);
4400
+ const sha1Password = yield this.webCryptoService.stringDigest('SHA-1', plainPassword);
4412
4401
  const first5sha1 = sha1Password.substring(0, 5);
4413
4402
  const response = yield this.http
4414
4403
  .get(`https://api.pwnedpasswords.com/range/${first5sha1}`, {
@@ -4668,6 +4657,10 @@ PasswordService.ctorParameters = () => [
4668
4657
  { type: IdleService }
4669
4658
  ];
4670
4659
 
4660
+ const TP_PASSWORD_RESET_CLIENT_NONCE_LENGTH = 32;
4661
+ const TP_PASSWORD_RESET_SLIP39_PASSPHRASE = 'lifeready';
4662
+ const TP_PASSWORD_RESET_USERNAME_SUFFIX = '.tp_password_reset';
4663
+
4671
4664
  class SecretShare {
4672
4665
  constructor(assembly = 0, subAssembly = 0, mnemonics = '') {
4673
4666
  this.assembly = assembly;
@@ -4831,10 +4824,6 @@ Slip39Service.decorators = [
4831
4824
  },] }
4832
4825
  ];
4833
4826
 
4834
- const TP_PASSWORD_RESET_CLIENT_NONCE_LENGTH = 32;
4835
- const TP_PASSWORD_RESET_SLIP39_PASSPHRASE = 'lifeready';
4836
- const TP_PASSWORD_RESET_USERNAME_SUFFIX = '.tp_password_reset';
4837
-
4838
4827
  const TpsKeysQuery = gqlTyped `
4839
4828
  query TpsKeysQuery($ids: [ID]) {
4840
4829
  tps(id_In: $ids) {
@@ -5493,7 +5482,7 @@ const initialiseAuth = (authService) => {
5493
5482
  return () => authService.initialise();
5494
5483
  };
5495
5484
  class LifeReadyAuthService {
5496
- constructor(config, auth, keyFactory, keyService, profileService, keyGraphService, passwordService, idleService, lrGraphQL, tpPasswordResetProcessorService, persistService, encryptionService, slip39Service, assemblyController) {
5485
+ constructor(config, auth, keyFactory, keyService, profileService, keyGraphService, passwordService, idleService, lrGraphQL, tpPasswordResetProcessorService, persistService, encryptionService, assemblyController) {
5497
5486
  this.config = config;
5498
5487
  this.auth = auth;
5499
5488
  this.keyFactory = keyFactory;
@@ -5506,7 +5495,6 @@ class LifeReadyAuthService {
5506
5495
  this.tpPasswordResetProcessorService = tpPasswordResetProcessorService;
5507
5496
  this.persistService = persistService;
5508
5497
  this.encryptionService = encryptionService;
5509
- this.slip39Service = slip39Service;
5510
5498
  this.assemblyController = assemblyController;
5511
5499
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5512
5500
  this.hubSubject = new ReplaySubject(1);
@@ -5519,6 +5507,9 @@ class LifeReadyAuthService {
5519
5507
  Hub.listen('auth', (data) => this.hubSubject.next(data.payload));
5520
5508
  });
5521
5509
  }
5510
+ importPassword(plainPassword) {
5511
+ return this.keyFactory.importPassword(plainPassword);
5512
+ }
5522
5513
  addLogoutListener(callback) {
5523
5514
  this.logoutListeners.add(callback);
5524
5515
  }
@@ -5923,7 +5914,7 @@ class LifeReadyAuthService {
5923
5914
  });
5924
5915
  }
5925
5916
  }
5926
- 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(Slip39Service), ɵɵinject(TpPasswordResetAssemblyController)); }, token: LifeReadyAuthService, providedIn: "root" });
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" });
5927
5918
  LifeReadyAuthService.decorators = [
5928
5919
  { type: Injectable, args: [{
5929
5920
  providedIn: 'root',
@@ -5942,7 +5933,6 @@ LifeReadyAuthService.ctorParameters = () => [
5942
5933
  { type: TpPasswordResetProcessorService },
5943
5934
  { type: PersistService },
5944
5935
  { type: EncryptionService },
5945
- { type: Slip39Service },
5946
5936
  { type: TpPasswordResetAssemblyController }
5947
5937
  ];
5948
5938
 
@@ -9142,7 +9132,7 @@ class LbopService {
9142
9132
  }
9143
9133
  }
9144
9134
  const lbopKeyParams = yield this.keyFactory.createLbopKeyParams();
9145
- const lbopKey = (yield this.keyFactory.deriveLbopKey(Object.assign({ password: lbopString }, lbopKeyParams))).jwk;
9135
+ const lbopKey = (yield this.keyFactory.deriveLbopKey(Object.assign({ password: yield this.keyFactory.importPassword(lbopString) }, lbopKeyParams))).jwk;
9146
9136
  const lbopKeyVerifier = yield this.keyFactory.createSignKey();
9147
9137
  const wrappedLbopKeyVerifier = yield this.encryptionService.encrypt(lbopKey, lbopKeyVerifier.toJSON(true));
9148
9138
  // Re-encrypt master key with new key
@@ -9186,7 +9176,7 @@ class LbopService {
9186
9176
  return __awaiter(this, void 0, void 0, function* () {
9187
9177
  const clientNonce = this.keyFactory.randomString(this.CLIENT_NONCE_LENGTH);
9188
9178
  for (const lbop of challengeResult.lbops) {
9189
- const lbopKey = (yield this.keyFactory.deriveLbopKey(Object.assign({ password: lbopString }, lbop.lbopKeyParams))).jwk;
9179
+ const lbopKey = (yield this.keyFactory.deriveLbopKey(Object.assign({ password: yield this.keyFactory.importPassword(lbopString) }, lbop.lbopKeyParams))).jwk;
9190
9180
  // If decoding successful then it's the correct lbop
9191
9181
  try {
9192
9182
  const lbopKeyVerifier = (yield this.encryptionService.decrypt(lbopKey, lbop.wrappedLbopKeyVerifier));
@@ -12149,6 +12139,33 @@ TpPasswordResetRequestService = __decorate([
12149
12139
  })
12150
12140
  ], TpPasswordResetRequestService);
12151
12141
 
12142
+ const COGNITO_LOCALSTORAGE_PREFIX = 'CognitoIdentityServiceProvider';
12143
+ /**
12144
+ * Remove all keys in localstorage with matching prefix.
12145
+ * A prefix must be specified. If you want to remove everything, then just use localStorage.clear().
12146
+ *
12147
+ * @param prefix Keys with this prefix will be removed.
12148
+ */
12149
+ function clearLocalStorage(prefix) {
12150
+ if (!prefix) {
12151
+ throw new LrBadArgumentException('You must specify a non empty prefix.');
12152
+ }
12153
+ // Remove all persisted session variables
12154
+ Object.keys(localStorage).forEach((key) => {
12155
+ if (key.startsWith(prefix)) {
12156
+ localStorage.removeItem(key);
12157
+ }
12158
+ });
12159
+ }
12160
+ /**
12161
+ * Clear all items related to cognito in localstorage.
12162
+ * The remember device function sometimes interferes with creating new users
12163
+ * on TP based password reset.
12164
+ */
12165
+ function clearCognitoLocalStorage() {
12166
+ clearLocalStorage(COGNITO_LOCALSTORAGE_PREFIX);
12167
+ }
12168
+
12152
12169
  let TpPasswordResetUserService = class TpPasswordResetUserService extends LrService {
12153
12170
  constructor(ngZone, injector, config, keyFactory, encryptionService, passwordService, http, auth) {
12154
12171
  super(injector);
@@ -12185,6 +12202,9 @@ let TpPasswordResetUserService = class TpPasswordResetUserService extends LrServ
12185
12202
  }
12186
12203
  requestReset(password, claimId, claimToken) {
12187
12204
  return __awaiter(this, void 0, void 0, function* () {
12205
+ // Clearing all localstorage data because cognito has the "remember device" functionality which sometimes
12206
+ // does not work properly. Clearing localstorage seems to solve this issue.
12207
+ clearCognitoLocalStorage();
12188
12208
  // Generate the key materials
12189
12209
  const passKeyBundle = yield this.passwordService.createPassKeyBundle(password);
12190
12210
  const masterKey = yield this.keyFactory.createKey();
@@ -12712,5 +12732,5 @@ TwoFactorService.ctorParameters = () => [
12712
12732
  * Generated bundle index. Do not edit.
12713
12733
  */
12714
12734
 
12715
- 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, Slip39Service as ɵi, TpPasswordResetAssemblyController as ɵj, TpAssemblyController as ɵk, LrService as ɵl, SharedContactCardService as ɵm, TrustedPartyService as ɵn, ScenarioAssemblyController as ɵo, TpPasswordResetPrivateService as ɵp };
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 };
12716
12736
  //# sourceMappingURL=lifeready-core.js.map