@dynamic-labs-wallet/browser 0.0.237 → 0.0.239
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/index.cjs.js +421 -2
- package/index.esm.js +418 -3
- package/package.json +5 -3
- package/src/backup/providers/iCloud.d.ts +44 -0
- package/src/backup/providers/iCloud.d.ts.map +1 -0
- package/src/client.d.ts +12 -3
- package/src/client.d.ts.map +1 -1
- package/src/constants.d.ts +1 -1
- package/src/constants.d.ts.map +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -1
package/index.cjs.js
CHANGED
|
@@ -454,7 +454,7 @@ const logError = ({ message, error, context })=>{
|
|
|
454
454
|
});
|
|
455
455
|
};
|
|
456
456
|
|
|
457
|
-
const DEFAULT_LOG_LEVEL = logger$1.LogLevel.
|
|
457
|
+
const DEFAULT_LOG_LEVEL = logger$1.LogLevel.INFO;
|
|
458
458
|
const STORAGE_KEY = 'dynamic-waas-wallet-client';
|
|
459
459
|
const CLIENT_KEYSHARE_EXPORT_FILENAME_PREFIX = 'dynamicWalletKeyShareBackup';
|
|
460
460
|
const SIGNED_SESSION_ID_MIN_VERSION = '4.25.4';
|
|
@@ -658,6 +658,365 @@ const downloadStringAsFile = ({ filename, content, mimeType = 'application/json'
|
|
|
658
658
|
URL.revokeObjectURL(url);
|
|
659
659
|
};
|
|
660
660
|
|
|
661
|
+
// CloudKit Web Services API token for public operations
|
|
662
|
+
// This token only allows access to the iCloud.KeyShareBackup container
|
|
663
|
+
// and is safe to include in client-side code
|
|
664
|
+
const DEFAULT_CONFIG = {
|
|
665
|
+
containerIdentifier: 'iCloud.KeyShareBackup',
|
|
666
|
+
// apiToken: '1221c5ccdf2ddb9abdb035befe7c197b07102972b30bbcbe363f6d722f3127a1', // prod
|
|
667
|
+
apiToken: '332a46c457183332f8d2a3d94d2ac87e9e9ae2af81d8a6d1ea89c27bb2fc0e97',
|
|
668
|
+
// environment: 'production',
|
|
669
|
+
environment: 'development'
|
|
670
|
+
};
|
|
671
|
+
const CLOUDKIT_CDN_URL = 'https://cdn.apple-cloudkit.com/ck/2/cloudkit.js';
|
|
672
|
+
const BACKUP_RECORD_TYPE = 'Backup';
|
|
673
|
+
let cloudKitLoaded = false;
|
|
674
|
+
let cloudKitConfigured = false;
|
|
675
|
+
let currentSignInButtonId = null;
|
|
676
|
+
let authenticationAbortController = null;
|
|
677
|
+
/**
|
|
678
|
+
* Map CloudKit errors to user-friendly messages
|
|
679
|
+
*/ const mapCloudKitError = (error)=>{
|
|
680
|
+
const errorCode = (error == null ? void 0 : error.ckErrorCode) || (error == null ? void 0 : error.serverErrorCode);
|
|
681
|
+
switch(errorCode){
|
|
682
|
+
case 'NOT_AUTHENTICATED':
|
|
683
|
+
return 'iCloud authentication required. Please sign in to iCloud.';
|
|
684
|
+
case 'QUOTA_EXCEEDED':
|
|
685
|
+
return 'iCloud storage quota exceeded. Please free up space in your iCloud account.';
|
|
686
|
+
case 'NETWORK_UNAVAILABLE':
|
|
687
|
+
return 'Network connection lost. Please check your internet connection and try again.';
|
|
688
|
+
case 'ACCESS_DENIED':
|
|
689
|
+
return 'Access denied. Please ensure iCloud Drive is enabled in your device settings.';
|
|
690
|
+
case 'CONFLICT':
|
|
691
|
+
return 'A conflict occurred while saving to iCloud. Please try again.';
|
|
692
|
+
default:
|
|
693
|
+
logger.error('[iCloud] Unmapped error:', error);
|
|
694
|
+
return 'Failed to save backup to iCloud. Please try again.';
|
|
695
|
+
}
|
|
696
|
+
};
|
|
697
|
+
const loadCloudKit = ()=>{
|
|
698
|
+
if (cloudKitLoaded) {
|
|
699
|
+
return Promise.resolve();
|
|
700
|
+
}
|
|
701
|
+
return new Promise((resolve, reject)=>{
|
|
702
|
+
const script = document.createElement('script');
|
|
703
|
+
script.src = CLOUDKIT_CDN_URL;
|
|
704
|
+
script.onload = ()=>{
|
|
705
|
+
cloudKitLoaded = true;
|
|
706
|
+
logger.debug('[iCloud] CloudKit JS loaded successfully');
|
|
707
|
+
resolve();
|
|
708
|
+
};
|
|
709
|
+
script.onerror = (error)=>{
|
|
710
|
+
logger.error('[iCloud] Failed to load CloudKit JS:', error);
|
|
711
|
+
reject(new Error('Failed to load iCloud services. Please check your internet connection and try again.'));
|
|
712
|
+
};
|
|
713
|
+
document.head.appendChild(script);
|
|
714
|
+
});
|
|
715
|
+
};
|
|
716
|
+
const configureCloudKit = (config, signInButtonId)=>{
|
|
717
|
+
if (cloudKitConfigured && currentSignInButtonId === signInButtonId) {
|
|
718
|
+
return;
|
|
719
|
+
}
|
|
720
|
+
const mergedConfig = _extends({}, DEFAULT_CONFIG, config);
|
|
721
|
+
const containerConfig = {
|
|
722
|
+
containerIdentifier: mergedConfig.containerIdentifier,
|
|
723
|
+
environment: mergedConfig.environment,
|
|
724
|
+
apiTokenAuth: {
|
|
725
|
+
apiToken: mergedConfig.apiToken,
|
|
726
|
+
persist: true,
|
|
727
|
+
signInButton: signInButtonId ? {
|
|
728
|
+
id: signInButtonId,
|
|
729
|
+
theme: 'black'
|
|
730
|
+
} : undefined
|
|
731
|
+
}
|
|
732
|
+
};
|
|
733
|
+
CloudKit.configure({
|
|
734
|
+
containers: [
|
|
735
|
+
containerConfig
|
|
736
|
+
]
|
|
737
|
+
});
|
|
738
|
+
cloudKitConfigured = true;
|
|
739
|
+
currentSignInButtonId = signInButtonId || null;
|
|
740
|
+
logger.debug('[iCloud] CloudKit configured', {
|
|
741
|
+
containerIdentifier: mergedConfig.containerIdentifier,
|
|
742
|
+
environment: mergedConfig.environment
|
|
743
|
+
});
|
|
744
|
+
};
|
|
745
|
+
const resetCloudKitConfig = ()=>{
|
|
746
|
+
cloudKitConfigured = false;
|
|
747
|
+
currentSignInButtonId = null;
|
|
748
|
+
logger.debug('[iCloud] CloudKit config reset');
|
|
749
|
+
};
|
|
750
|
+
/**
|
|
751
|
+
* Check if user is already authenticated using fetchCurrentUserIdentity.
|
|
752
|
+
* This is more reliable than setUpAuth which sometimes returns undefined
|
|
753
|
+
* even when the user has an existing session.
|
|
754
|
+
*/ const isUserAuthenticated = async (container)=>{
|
|
755
|
+
try {
|
|
756
|
+
const identity = await container.fetchCurrentUserIdentity();
|
|
757
|
+
return !!(identity == null ? void 0 : identity.userRecordName);
|
|
758
|
+
} catch (e) {
|
|
759
|
+
return false;
|
|
760
|
+
}
|
|
761
|
+
};
|
|
762
|
+
/**
|
|
763
|
+
* Cancel any ongoing authentication attempt
|
|
764
|
+
*/ const cancelICloudAuth = ()=>{
|
|
765
|
+
if (authenticationAbortController) {
|
|
766
|
+
authenticationAbortController.abort();
|
|
767
|
+
authenticationAbortController = null;
|
|
768
|
+
logger.info('[iCloud] Authentication cancelled by user');
|
|
769
|
+
}
|
|
770
|
+
};
|
|
771
|
+
const ensureICloudAuth = async (onSignInRequired, onSignInComplete, onAuthStatusUpdate, options)=>{
|
|
772
|
+
const { pollIntervalMs = 3000, timeoutMs = 120000, signal } = {};
|
|
773
|
+
const container = CloudKit.getDefaultContainer();
|
|
774
|
+
// Create abort controller for this auth attempt
|
|
775
|
+
authenticationAbortController = new AbortController();
|
|
776
|
+
var _authenticationAbortController_signal;
|
|
777
|
+
const abortSignal = signal || ((_authenticationAbortController_signal = authenticationAbortController == null ? void 0 : authenticationAbortController.signal) != null ? _authenticationAbortController_signal : new AbortController().signal);
|
|
778
|
+
try {
|
|
779
|
+
// Check if cancelled
|
|
780
|
+
if (abortSignal.aborted) {
|
|
781
|
+
throw new Error('Authentication cancelled');
|
|
782
|
+
}
|
|
783
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Checking authentication status...');
|
|
784
|
+
// First, check if user is already authenticated (more reliable than setUpAuth)
|
|
785
|
+
const alreadyAuthenticated = await isUserAuthenticated(container);
|
|
786
|
+
if (alreadyAuthenticated) {
|
|
787
|
+
logger.info('[iCloud] User already authenticated');
|
|
788
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Authenticated');
|
|
789
|
+
return;
|
|
790
|
+
}
|
|
791
|
+
// Set up auth to initialize CloudKit's auth state and render sign-in button
|
|
792
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Initializing authentication...');
|
|
793
|
+
await container.setUpAuth();
|
|
794
|
+
// Double-check authentication after setUpAuth
|
|
795
|
+
if (await isUserAuthenticated(container)) {
|
|
796
|
+
logger.info('[iCloud] User authenticated after setUpAuth');
|
|
797
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Authenticated');
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
// User needs to sign in
|
|
801
|
+
logger.info('[iCloud] User authentication required');
|
|
802
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Waiting for sign-in...');
|
|
803
|
+
if (onSignInRequired) ;
|
|
804
|
+
return new Promise((resolve, reject)=>{
|
|
805
|
+
let resolved = false;
|
|
806
|
+
let pollInterval = null;
|
|
807
|
+
let timeoutId = null;
|
|
808
|
+
const cleanup = ()=>{
|
|
809
|
+
if (pollInterval) clearInterval(pollInterval);
|
|
810
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
811
|
+
authenticationAbortController = null;
|
|
812
|
+
};
|
|
813
|
+
// Handle abort signal
|
|
814
|
+
const onAbort = ()=>{
|
|
815
|
+
if (!resolved) {
|
|
816
|
+
resolved = true;
|
|
817
|
+
cleanup();
|
|
818
|
+
reject(new Error('Authentication cancelled'));
|
|
819
|
+
}
|
|
820
|
+
};
|
|
821
|
+
if (abortSignal.aborted) {
|
|
822
|
+
onAbort();
|
|
823
|
+
return;
|
|
824
|
+
}
|
|
825
|
+
abortSignal.addEventListener('abort', onAbort);
|
|
826
|
+
const checkAuth = async ()=>{
|
|
827
|
+
if (resolved || abortSignal.aborted) return;
|
|
828
|
+
try {
|
|
829
|
+
if (await isUserAuthenticated(container)) {
|
|
830
|
+
resolved = true;
|
|
831
|
+
cleanup();
|
|
832
|
+
logger.info('[iCloud] Authentication successful');
|
|
833
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Authenticated');
|
|
834
|
+
if (onSignInComplete) ;
|
|
835
|
+
resolve();
|
|
836
|
+
}
|
|
837
|
+
} catch (error) {
|
|
838
|
+
logger.error('[iCloud] Auth check error:', error);
|
|
839
|
+
}
|
|
840
|
+
};
|
|
841
|
+
timeoutId = setTimeout(()=>{
|
|
842
|
+
if (!resolved) {
|
|
843
|
+
resolved = true;
|
|
844
|
+
cleanup();
|
|
845
|
+
if (onSignInComplete) ;
|
|
846
|
+
logger.warn('[iCloud] Authentication timed out');
|
|
847
|
+
reject(new Error('iCloud sign-in timed out. Please ensure you are signed into iCloud ' + 'in your browser settings and try again. If the problem persists, ' + 'check your internet connection or try a different backup method.'));
|
|
848
|
+
}
|
|
849
|
+
}, timeoutMs);
|
|
850
|
+
// Poll every 3 seconds for faster response after user signs in
|
|
851
|
+
pollInterval = setInterval(checkAuth, pollIntervalMs);
|
|
852
|
+
// Also do an immediate check
|
|
853
|
+
checkAuth();
|
|
854
|
+
});
|
|
855
|
+
} catch (error) {
|
|
856
|
+
authenticationAbortController = null;
|
|
857
|
+
throw error;
|
|
858
|
+
}
|
|
859
|
+
};
|
|
860
|
+
/**
|
|
861
|
+
* Save backup data to iCloud with retry logic
|
|
862
|
+
* Stores data in the same format as Google Drive for consistency
|
|
863
|
+
*/ const saveBackupToICloud = async (backupData, retryOptions)=>{
|
|
864
|
+
const { maxAttempts = 3, retryInterval = 1000 } = {};
|
|
865
|
+
return retryPromise(async ()=>{
|
|
866
|
+
const container = CloudKit.getDefaultContainer();
|
|
867
|
+
const privateDB = container.privateCloudDatabase;
|
|
868
|
+
const record = {
|
|
869
|
+
recordType: BACKUP_RECORD_TYPE,
|
|
870
|
+
fields: {
|
|
871
|
+
// Store as JSON string to match Google Drive format
|
|
872
|
+
backupData: {
|
|
873
|
+
value: JSON.stringify(backupData)
|
|
874
|
+
},
|
|
875
|
+
timestamp: {
|
|
876
|
+
value: Date.now()
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
};
|
|
880
|
+
logger.debug('[iCloud] Saving backup record to CloudKit');
|
|
881
|
+
const response = await privateDB.saveRecords([
|
|
882
|
+
record
|
|
883
|
+
]);
|
|
884
|
+
if (response.hasErrors) {
|
|
885
|
+
logger.error('[iCloud] saveRecords errors:', response.errors);
|
|
886
|
+
const errorMessage = mapCloudKitError(response.errors[0]);
|
|
887
|
+
throw new Error(errorMessage);
|
|
888
|
+
}
|
|
889
|
+
const savedRecord = response.records[0];
|
|
890
|
+
logger.info('[iCloud] Backup saved successfully', {
|
|
891
|
+
recordName: savedRecord.recordName
|
|
892
|
+
});
|
|
893
|
+
return savedRecord;
|
|
894
|
+
}, {
|
|
895
|
+
maxAttempts,
|
|
896
|
+
retryInterval,
|
|
897
|
+
operationName: 'saveBackupToICloud',
|
|
898
|
+
logContext: {}
|
|
899
|
+
});
|
|
900
|
+
};
|
|
901
|
+
/**
|
|
902
|
+
* List all backups from iCloud
|
|
903
|
+
*/ const listICloudBackups = async ()=>{
|
|
904
|
+
const container = CloudKit.getDefaultContainer();
|
|
905
|
+
const privateDB = container.privateCloudDatabase;
|
|
906
|
+
try {
|
|
907
|
+
logger.debug('[iCloud] Querying backup records');
|
|
908
|
+
const response = await privateDB.performQuery({
|
|
909
|
+
recordType: BACKUP_RECORD_TYPE,
|
|
910
|
+
sortBy: [
|
|
911
|
+
{
|
|
912
|
+
fieldName: 'timestamp',
|
|
913
|
+
ascending: false
|
|
914
|
+
}
|
|
915
|
+
]
|
|
916
|
+
});
|
|
917
|
+
if (response.hasErrors) {
|
|
918
|
+
logger.error('[iCloud] Query errors:', response.errors);
|
|
919
|
+
throw new Error(mapCloudKitError(response.errors[0]));
|
|
920
|
+
}
|
|
921
|
+
const records = response.records.map((record)=>{
|
|
922
|
+
var _fields_backupData;
|
|
923
|
+
const fields = record.fields;
|
|
924
|
+
if (!((_fields_backupData = fields.backupData) == null ? void 0 : _fields_backupData.value)) {
|
|
925
|
+
throw new Error('Invalid backup record: missing backupData field');
|
|
926
|
+
}
|
|
927
|
+
return {
|
|
928
|
+
recordName: record.recordName,
|
|
929
|
+
created: record.created.timestamp,
|
|
930
|
+
modified: record.modified.timestamp,
|
|
931
|
+
backupData: JSON.parse(fields.backupData.value)
|
|
932
|
+
};
|
|
933
|
+
});
|
|
934
|
+
logger.info('[iCloud] Found backups', {
|
|
935
|
+
count: records.length
|
|
936
|
+
});
|
|
937
|
+
return records;
|
|
938
|
+
} catch (error) {
|
|
939
|
+
logger.error('[iCloud] Failed to list backups:', error);
|
|
940
|
+
throw error;
|
|
941
|
+
}
|
|
942
|
+
};
|
|
943
|
+
/**
|
|
944
|
+
* Retrieve a specific backup from iCloud by record name
|
|
945
|
+
*/ const getICloudBackup = async (recordName)=>{
|
|
946
|
+
const container = CloudKit.getDefaultContainer();
|
|
947
|
+
const privateDB = container.privateCloudDatabase;
|
|
948
|
+
try {
|
|
949
|
+
var _fields_backupData;
|
|
950
|
+
logger.debug('[iCloud] Fetching backup record', {
|
|
951
|
+
recordName
|
|
952
|
+
});
|
|
953
|
+
const response = await privateDB.fetchRecords([
|
|
954
|
+
recordName
|
|
955
|
+
]);
|
|
956
|
+
if (response.hasErrors) {
|
|
957
|
+
logger.error('[iCloud] Fetch error:', response.errors);
|
|
958
|
+
throw new Error(mapCloudKitError(response.errors[0]));
|
|
959
|
+
}
|
|
960
|
+
const record = response.records[0];
|
|
961
|
+
if (!record) {
|
|
962
|
+
logger.warn('[iCloud] Backup record not found', {
|
|
963
|
+
recordName
|
|
964
|
+
});
|
|
965
|
+
return null;
|
|
966
|
+
}
|
|
967
|
+
const fields = record.fields;
|
|
968
|
+
if (!((_fields_backupData = fields.backupData) == null ? void 0 : _fields_backupData.value)) {
|
|
969
|
+
throw new Error('Invalid backup record: missing backupData field');
|
|
970
|
+
}
|
|
971
|
+
const backupRecord = {
|
|
972
|
+
recordName: record.recordName,
|
|
973
|
+
created: record.created.timestamp,
|
|
974
|
+
modified: record.modified.timestamp,
|
|
975
|
+
backupData: JSON.parse(fields.backupData.value)
|
|
976
|
+
};
|
|
977
|
+
logger.info('[iCloud] Backup retrieved successfully', {
|
|
978
|
+
recordName
|
|
979
|
+
});
|
|
980
|
+
return backupRecord;
|
|
981
|
+
} catch (error) {
|
|
982
|
+
logger.error('[iCloud] Failed to get backup:', error);
|
|
983
|
+
throw error;
|
|
984
|
+
}
|
|
985
|
+
};
|
|
986
|
+
/**
|
|
987
|
+
* Delete a backup from iCloud
|
|
988
|
+
*/ const deleteICloudBackup = async (recordName)=>{
|
|
989
|
+
const container = CloudKit.getDefaultContainer();
|
|
990
|
+
const privateDB = container.privateCloudDatabase;
|
|
991
|
+
try {
|
|
992
|
+
logger.debug('[iCloud] Deleting backup record', {
|
|
993
|
+
recordName
|
|
994
|
+
});
|
|
995
|
+
const response = await privateDB.deleteRecords([
|
|
996
|
+
recordName
|
|
997
|
+
]);
|
|
998
|
+
if (response.hasErrors) {
|
|
999
|
+
logger.error('[iCloud] Delete error:', response.errors);
|
|
1000
|
+
throw new Error(mapCloudKitError(response.errors[0]));
|
|
1001
|
+
}
|
|
1002
|
+
logger.info('[iCloud] Backup deleted successfully', {
|
|
1003
|
+
recordName
|
|
1004
|
+
});
|
|
1005
|
+
} catch (error) {
|
|
1006
|
+
logger.error('[iCloud] Failed to delete backup:', error);
|
|
1007
|
+
throw error;
|
|
1008
|
+
}
|
|
1009
|
+
};
|
|
1010
|
+
const initializeCloudKit = async (config, signInButtonId, onSignInRequired, onSignInComplete, onAuthStatusUpdate, authOptions)=>{
|
|
1011
|
+
logger.info('[iCloud] Initializing CloudKit');
|
|
1012
|
+
await loadCloudKit();
|
|
1013
|
+
if (signInButtonId) {
|
|
1014
|
+
resetCloudKitConfig();
|
|
1015
|
+
}
|
|
1016
|
+
configureCloudKit(config, signInButtonId);
|
|
1017
|
+
await ensureICloudAuth(onSignInRequired, onSignInComplete, onAuthStatusUpdate);
|
|
1018
|
+
};
|
|
1019
|
+
|
|
661
1020
|
/**
|
|
662
1021
|
* Uploads a backup to Google Drive App
|
|
663
1022
|
* @param accessToken - The access token for the Google Drive API
|
|
@@ -2508,6 +2867,62 @@ class DynamicWalletClient {
|
|
|
2508
2867
|
throw error;
|
|
2509
2868
|
}
|
|
2510
2869
|
}
|
|
2870
|
+
async backupKeySharesToICloud({ accountAddress, password, signedSessionId, signInButtonId, onProgress, onAuthStatusUpdate }) {
|
|
2871
|
+
try {
|
|
2872
|
+
var _environmentSettings_sdk_waas, _environmentSettings_sdk;
|
|
2873
|
+
await this.getWallet({
|
|
2874
|
+
accountAddress,
|
|
2875
|
+
walletOperation: core.WalletOperation.REACH_THRESHOLD,
|
|
2876
|
+
password,
|
|
2877
|
+
signedSessionId
|
|
2878
|
+
});
|
|
2879
|
+
const environmentSettings = await this.apiClient.getEnvironmentSettings();
|
|
2880
|
+
const iCloudConfig = environmentSettings == null ? void 0 : (_environmentSettings_sdk = environmentSettings.sdk) == null ? void 0 : (_environmentSettings_sdk_waas = _environmentSettings_sdk.waas) == null ? void 0 : _environmentSettings_sdk_waas.icloud;
|
|
2881
|
+
await initializeCloudKit(iCloudConfig, signInButtonId, undefined, undefined, onAuthStatusUpdate);
|
|
2882
|
+
const clientKeyShares = await this.getClientKeySharesFromLocalStorage({
|
|
2883
|
+
accountAddress
|
|
2884
|
+
});
|
|
2885
|
+
if (clientKeyShares.length === 0) {
|
|
2886
|
+
throw new Error('No key shares found to backup');
|
|
2887
|
+
}
|
|
2888
|
+
const wallet = this.walletMap[accountAddress];
|
|
2889
|
+
const thresholdSignatureScheme = (wallet == null ? void 0 : wallet.thresholdSignatureScheme) || core.ThresholdSignatureScheme.TWO_OF_TWO;
|
|
2890
|
+
const savedRecords = [];
|
|
2891
|
+
const encryptedKeyShares = [];
|
|
2892
|
+
for(let i = 0; i < clientKeyShares.length; i++){
|
|
2893
|
+
const keyShare = clientKeyShares[i];
|
|
2894
|
+
const encryptedKeyShare = await this.encryptKeyShare({
|
|
2895
|
+
keyShare,
|
|
2896
|
+
password
|
|
2897
|
+
});
|
|
2898
|
+
encryptedKeyShares.push(encryptedKeyShare);
|
|
2899
|
+
}
|
|
2900
|
+
const backupData = createBackupData({
|
|
2901
|
+
encryptedKeyShares,
|
|
2902
|
+
accountAddress,
|
|
2903
|
+
thresholdSignatureScheme,
|
|
2904
|
+
hasPassword: !!password
|
|
2905
|
+
});
|
|
2906
|
+
if (onProgress) {
|
|
2907
|
+
onProgress(0, 1);
|
|
2908
|
+
}
|
|
2909
|
+
const savedRecord = await saveBackupToICloud(backupData);
|
|
2910
|
+
savedRecords.push(savedRecord);
|
|
2911
|
+
if (onProgress) {
|
|
2912
|
+
onProgress(1, 1);
|
|
2913
|
+
}
|
|
2914
|
+
return savedRecords;
|
|
2915
|
+
} catch (error) {
|
|
2916
|
+
logError({
|
|
2917
|
+
message: 'Error in backupKeySharesToICloud',
|
|
2918
|
+
error: error,
|
|
2919
|
+
context: {
|
|
2920
|
+
accountAddress
|
|
2921
|
+
}
|
|
2922
|
+
});
|
|
2923
|
+
throw error;
|
|
2924
|
+
}
|
|
2925
|
+
}
|
|
2511
2926
|
/**
|
|
2512
2927
|
* This method handles only the Google Drive upload mechanics without any reshare logic.
|
|
2513
2928
|
* It encrypts the provided key shares, uploads them to Google Drive, and updates the
|
|
@@ -3078,7 +3493,7 @@ class DynamicWalletClient {
|
|
|
3078
3493
|
}, traceContext);
|
|
3079
3494
|
}
|
|
3080
3495
|
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, authMode = core.AuthMode.HEADER, authToken = undefined, backupServiceAuthToken, // Represents the version of the client SDK used by developer
|
|
3081
|
-
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl }){
|
|
3496
|
+
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig }){
|
|
3082
3497
|
this.userId = undefined;
|
|
3083
3498
|
this.sessionId = undefined;
|
|
3084
3499
|
this.initializePromise = null;
|
|
@@ -3208,12 +3623,14 @@ exports.ERROR_SIGN_TYPED_DATA = ERROR_SIGN_TYPED_DATA;
|
|
|
3208
3623
|
exports.ERROR_VERIFY_MESSAGE_SIGNATURE = ERROR_VERIFY_MESSAGE_SIGNATURE;
|
|
3209
3624
|
exports.ERROR_VERIFY_TRANSACTION_SIGNATURE = ERROR_VERIFY_TRANSACTION_SIGNATURE;
|
|
3210
3625
|
exports.WalletBusyError = WalletBusyError;
|
|
3626
|
+
exports.cancelICloudAuth = cancelICloudAuth;
|
|
3211
3627
|
exports.createAddGoogleDriveToExistingDelegationDistribution = createAddGoogleDriveToExistingDelegationDistribution;
|
|
3212
3628
|
exports.createBackupData = createBackupData;
|
|
3213
3629
|
exports.createDelegationOnlyDistribution = createDelegationOnlyDistribution;
|
|
3214
3630
|
exports.createDelegationWithGoogleDriveDistribution = createDelegationWithGoogleDriveDistribution;
|
|
3215
3631
|
exports.createDynamicOnlyDistribution = createDynamicOnlyDistribution;
|
|
3216
3632
|
exports.createGoogleDriveOnlyDistribution = createGoogleDriveOnlyDistribution;
|
|
3633
|
+
exports.deleteICloudBackup = deleteICloudBackup;
|
|
3217
3634
|
exports.downloadStringAsFile = downloadStringAsFile;
|
|
3218
3635
|
exports.extractPubkey = extractPubkey;
|
|
3219
3636
|
exports.formatEvmMessage = formatEvmMessage;
|
|
@@ -3221,12 +3638,14 @@ exports.formatMessage = formatMessage;
|
|
|
3221
3638
|
exports.getClientKeyShareBackupInfo = getClientKeyShareBackupInfo;
|
|
3222
3639
|
exports.getClientKeyShareExportFileName = getClientKeyShareExportFileName;
|
|
3223
3640
|
exports.getGoogleOAuthAccountId = getGoogleOAuthAccountId;
|
|
3641
|
+
exports.getICloudBackup = getICloudBackup;
|
|
3224
3642
|
exports.getMPCSignatureScheme = getMPCSignatureScheme;
|
|
3225
3643
|
exports.getMPCSigner = getMPCSigner;
|
|
3226
3644
|
exports.hasDelegatedBackup = hasDelegatedBackup;
|
|
3227
3645
|
exports.hasGoogleDriveBackup = hasGoogleDriveBackup;
|
|
3228
3646
|
exports.isBrowser = isBrowser;
|
|
3229
3647
|
exports.isHexString = isHexString;
|
|
3648
|
+
exports.listICloudBackups = listICloudBackups;
|
|
3230
3649
|
exports.mergeUniqueKeyShares = mergeUniqueKeyShares;
|
|
3231
3650
|
exports.retryPromise = retryPromise;
|
|
3232
3651
|
exports.timeoutPromise = timeoutPromise;
|
package/index.esm.js
CHANGED
|
@@ -455,7 +455,7 @@ const logError = ({ message, error, context })=>{
|
|
|
455
455
|
});
|
|
456
456
|
};
|
|
457
457
|
|
|
458
|
-
const DEFAULT_LOG_LEVEL = LogLevel.
|
|
458
|
+
const DEFAULT_LOG_LEVEL = LogLevel.INFO;
|
|
459
459
|
const STORAGE_KEY = 'dynamic-waas-wallet-client';
|
|
460
460
|
const CLIENT_KEYSHARE_EXPORT_FILENAME_PREFIX = 'dynamicWalletKeyShareBackup';
|
|
461
461
|
const SIGNED_SESSION_ID_MIN_VERSION = '4.25.4';
|
|
@@ -659,6 +659,365 @@ const downloadStringAsFile = ({ filename, content, mimeType = 'application/json'
|
|
|
659
659
|
URL.revokeObjectURL(url);
|
|
660
660
|
};
|
|
661
661
|
|
|
662
|
+
// CloudKit Web Services API token for public operations
|
|
663
|
+
// This token only allows access to the iCloud.KeyShareBackup container
|
|
664
|
+
// and is safe to include in client-side code
|
|
665
|
+
const DEFAULT_CONFIG = {
|
|
666
|
+
containerIdentifier: 'iCloud.KeyShareBackup',
|
|
667
|
+
// apiToken: '1221c5ccdf2ddb9abdb035befe7c197b07102972b30bbcbe363f6d722f3127a1', // prod
|
|
668
|
+
apiToken: '332a46c457183332f8d2a3d94d2ac87e9e9ae2af81d8a6d1ea89c27bb2fc0e97',
|
|
669
|
+
// environment: 'production',
|
|
670
|
+
environment: 'development'
|
|
671
|
+
};
|
|
672
|
+
const CLOUDKIT_CDN_URL = 'https://cdn.apple-cloudkit.com/ck/2/cloudkit.js';
|
|
673
|
+
const BACKUP_RECORD_TYPE = 'Backup';
|
|
674
|
+
let cloudKitLoaded = false;
|
|
675
|
+
let cloudKitConfigured = false;
|
|
676
|
+
let currentSignInButtonId = null;
|
|
677
|
+
let authenticationAbortController = null;
|
|
678
|
+
/**
|
|
679
|
+
* Map CloudKit errors to user-friendly messages
|
|
680
|
+
*/ const mapCloudKitError = (error)=>{
|
|
681
|
+
const errorCode = (error == null ? void 0 : error.ckErrorCode) || (error == null ? void 0 : error.serverErrorCode);
|
|
682
|
+
switch(errorCode){
|
|
683
|
+
case 'NOT_AUTHENTICATED':
|
|
684
|
+
return 'iCloud authentication required. Please sign in to iCloud.';
|
|
685
|
+
case 'QUOTA_EXCEEDED':
|
|
686
|
+
return 'iCloud storage quota exceeded. Please free up space in your iCloud account.';
|
|
687
|
+
case 'NETWORK_UNAVAILABLE':
|
|
688
|
+
return 'Network connection lost. Please check your internet connection and try again.';
|
|
689
|
+
case 'ACCESS_DENIED':
|
|
690
|
+
return 'Access denied. Please ensure iCloud Drive is enabled in your device settings.';
|
|
691
|
+
case 'CONFLICT':
|
|
692
|
+
return 'A conflict occurred while saving to iCloud. Please try again.';
|
|
693
|
+
default:
|
|
694
|
+
logger.error('[iCloud] Unmapped error:', error);
|
|
695
|
+
return 'Failed to save backup to iCloud. Please try again.';
|
|
696
|
+
}
|
|
697
|
+
};
|
|
698
|
+
const loadCloudKit = ()=>{
|
|
699
|
+
if (cloudKitLoaded) {
|
|
700
|
+
return Promise.resolve();
|
|
701
|
+
}
|
|
702
|
+
return new Promise((resolve, reject)=>{
|
|
703
|
+
const script = document.createElement('script');
|
|
704
|
+
script.src = CLOUDKIT_CDN_URL;
|
|
705
|
+
script.onload = ()=>{
|
|
706
|
+
cloudKitLoaded = true;
|
|
707
|
+
logger.debug('[iCloud] CloudKit JS loaded successfully');
|
|
708
|
+
resolve();
|
|
709
|
+
};
|
|
710
|
+
script.onerror = (error)=>{
|
|
711
|
+
logger.error('[iCloud] Failed to load CloudKit JS:', error);
|
|
712
|
+
reject(new Error('Failed to load iCloud services. Please check your internet connection and try again.'));
|
|
713
|
+
};
|
|
714
|
+
document.head.appendChild(script);
|
|
715
|
+
});
|
|
716
|
+
};
|
|
717
|
+
const configureCloudKit = (config, signInButtonId)=>{
|
|
718
|
+
if (cloudKitConfigured && currentSignInButtonId === signInButtonId) {
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
const mergedConfig = _extends({}, DEFAULT_CONFIG, config);
|
|
722
|
+
const containerConfig = {
|
|
723
|
+
containerIdentifier: mergedConfig.containerIdentifier,
|
|
724
|
+
environment: mergedConfig.environment,
|
|
725
|
+
apiTokenAuth: {
|
|
726
|
+
apiToken: mergedConfig.apiToken,
|
|
727
|
+
persist: true,
|
|
728
|
+
signInButton: signInButtonId ? {
|
|
729
|
+
id: signInButtonId,
|
|
730
|
+
theme: 'black'
|
|
731
|
+
} : undefined
|
|
732
|
+
}
|
|
733
|
+
};
|
|
734
|
+
CloudKit.configure({
|
|
735
|
+
containers: [
|
|
736
|
+
containerConfig
|
|
737
|
+
]
|
|
738
|
+
});
|
|
739
|
+
cloudKitConfigured = true;
|
|
740
|
+
currentSignInButtonId = signInButtonId || null;
|
|
741
|
+
logger.debug('[iCloud] CloudKit configured', {
|
|
742
|
+
containerIdentifier: mergedConfig.containerIdentifier,
|
|
743
|
+
environment: mergedConfig.environment
|
|
744
|
+
});
|
|
745
|
+
};
|
|
746
|
+
const resetCloudKitConfig = ()=>{
|
|
747
|
+
cloudKitConfigured = false;
|
|
748
|
+
currentSignInButtonId = null;
|
|
749
|
+
logger.debug('[iCloud] CloudKit config reset');
|
|
750
|
+
};
|
|
751
|
+
/**
|
|
752
|
+
* Check if user is already authenticated using fetchCurrentUserIdentity.
|
|
753
|
+
* This is more reliable than setUpAuth which sometimes returns undefined
|
|
754
|
+
* even when the user has an existing session.
|
|
755
|
+
*/ const isUserAuthenticated = async (container)=>{
|
|
756
|
+
try {
|
|
757
|
+
const identity = await container.fetchCurrentUserIdentity();
|
|
758
|
+
return !!(identity == null ? void 0 : identity.userRecordName);
|
|
759
|
+
} catch (e) {
|
|
760
|
+
return false;
|
|
761
|
+
}
|
|
762
|
+
};
|
|
763
|
+
/**
|
|
764
|
+
* Cancel any ongoing authentication attempt
|
|
765
|
+
*/ const cancelICloudAuth = ()=>{
|
|
766
|
+
if (authenticationAbortController) {
|
|
767
|
+
authenticationAbortController.abort();
|
|
768
|
+
authenticationAbortController = null;
|
|
769
|
+
logger.info('[iCloud] Authentication cancelled by user');
|
|
770
|
+
}
|
|
771
|
+
};
|
|
772
|
+
const ensureICloudAuth = async (onSignInRequired, onSignInComplete, onAuthStatusUpdate, options)=>{
|
|
773
|
+
const { pollIntervalMs = 3000, timeoutMs = 120000, signal } = {};
|
|
774
|
+
const container = CloudKit.getDefaultContainer();
|
|
775
|
+
// Create abort controller for this auth attempt
|
|
776
|
+
authenticationAbortController = new AbortController();
|
|
777
|
+
var _authenticationAbortController_signal;
|
|
778
|
+
const abortSignal = signal || ((_authenticationAbortController_signal = authenticationAbortController == null ? void 0 : authenticationAbortController.signal) != null ? _authenticationAbortController_signal : new AbortController().signal);
|
|
779
|
+
try {
|
|
780
|
+
// Check if cancelled
|
|
781
|
+
if (abortSignal.aborted) {
|
|
782
|
+
throw new Error('Authentication cancelled');
|
|
783
|
+
}
|
|
784
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Checking authentication status...');
|
|
785
|
+
// First, check if user is already authenticated (more reliable than setUpAuth)
|
|
786
|
+
const alreadyAuthenticated = await isUserAuthenticated(container);
|
|
787
|
+
if (alreadyAuthenticated) {
|
|
788
|
+
logger.info('[iCloud] User already authenticated');
|
|
789
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Authenticated');
|
|
790
|
+
return;
|
|
791
|
+
}
|
|
792
|
+
// Set up auth to initialize CloudKit's auth state and render sign-in button
|
|
793
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Initializing authentication...');
|
|
794
|
+
await container.setUpAuth();
|
|
795
|
+
// Double-check authentication after setUpAuth
|
|
796
|
+
if (await isUserAuthenticated(container)) {
|
|
797
|
+
logger.info('[iCloud] User authenticated after setUpAuth');
|
|
798
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Authenticated');
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
// User needs to sign in
|
|
802
|
+
logger.info('[iCloud] User authentication required');
|
|
803
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Waiting for sign-in...');
|
|
804
|
+
if (onSignInRequired) ;
|
|
805
|
+
return new Promise((resolve, reject)=>{
|
|
806
|
+
let resolved = false;
|
|
807
|
+
let pollInterval = null;
|
|
808
|
+
let timeoutId = null;
|
|
809
|
+
const cleanup = ()=>{
|
|
810
|
+
if (pollInterval) clearInterval(pollInterval);
|
|
811
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
812
|
+
authenticationAbortController = null;
|
|
813
|
+
};
|
|
814
|
+
// Handle abort signal
|
|
815
|
+
const onAbort = ()=>{
|
|
816
|
+
if (!resolved) {
|
|
817
|
+
resolved = true;
|
|
818
|
+
cleanup();
|
|
819
|
+
reject(new Error('Authentication cancelled'));
|
|
820
|
+
}
|
|
821
|
+
};
|
|
822
|
+
if (abortSignal.aborted) {
|
|
823
|
+
onAbort();
|
|
824
|
+
return;
|
|
825
|
+
}
|
|
826
|
+
abortSignal.addEventListener('abort', onAbort);
|
|
827
|
+
const checkAuth = async ()=>{
|
|
828
|
+
if (resolved || abortSignal.aborted) return;
|
|
829
|
+
try {
|
|
830
|
+
if (await isUserAuthenticated(container)) {
|
|
831
|
+
resolved = true;
|
|
832
|
+
cleanup();
|
|
833
|
+
logger.info('[iCloud] Authentication successful');
|
|
834
|
+
onAuthStatusUpdate == null ? void 0 : onAuthStatusUpdate('Authenticated');
|
|
835
|
+
if (onSignInComplete) ;
|
|
836
|
+
resolve();
|
|
837
|
+
}
|
|
838
|
+
} catch (error) {
|
|
839
|
+
logger.error('[iCloud] Auth check error:', error);
|
|
840
|
+
}
|
|
841
|
+
};
|
|
842
|
+
timeoutId = setTimeout(()=>{
|
|
843
|
+
if (!resolved) {
|
|
844
|
+
resolved = true;
|
|
845
|
+
cleanup();
|
|
846
|
+
if (onSignInComplete) ;
|
|
847
|
+
logger.warn('[iCloud] Authentication timed out');
|
|
848
|
+
reject(new Error('iCloud sign-in timed out. Please ensure you are signed into iCloud ' + 'in your browser settings and try again. If the problem persists, ' + 'check your internet connection or try a different backup method.'));
|
|
849
|
+
}
|
|
850
|
+
}, timeoutMs);
|
|
851
|
+
// Poll every 3 seconds for faster response after user signs in
|
|
852
|
+
pollInterval = setInterval(checkAuth, pollIntervalMs);
|
|
853
|
+
// Also do an immediate check
|
|
854
|
+
checkAuth();
|
|
855
|
+
});
|
|
856
|
+
} catch (error) {
|
|
857
|
+
authenticationAbortController = null;
|
|
858
|
+
throw error;
|
|
859
|
+
}
|
|
860
|
+
};
|
|
861
|
+
/**
|
|
862
|
+
* Save backup data to iCloud with retry logic
|
|
863
|
+
* Stores data in the same format as Google Drive for consistency
|
|
864
|
+
*/ const saveBackupToICloud = async (backupData, retryOptions)=>{
|
|
865
|
+
const { maxAttempts = 3, retryInterval = 1000 } = {};
|
|
866
|
+
return retryPromise(async ()=>{
|
|
867
|
+
const container = CloudKit.getDefaultContainer();
|
|
868
|
+
const privateDB = container.privateCloudDatabase;
|
|
869
|
+
const record = {
|
|
870
|
+
recordType: BACKUP_RECORD_TYPE,
|
|
871
|
+
fields: {
|
|
872
|
+
// Store as JSON string to match Google Drive format
|
|
873
|
+
backupData: {
|
|
874
|
+
value: JSON.stringify(backupData)
|
|
875
|
+
},
|
|
876
|
+
timestamp: {
|
|
877
|
+
value: Date.now()
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
};
|
|
881
|
+
logger.debug('[iCloud] Saving backup record to CloudKit');
|
|
882
|
+
const response = await privateDB.saveRecords([
|
|
883
|
+
record
|
|
884
|
+
]);
|
|
885
|
+
if (response.hasErrors) {
|
|
886
|
+
logger.error('[iCloud] saveRecords errors:', response.errors);
|
|
887
|
+
const errorMessage = mapCloudKitError(response.errors[0]);
|
|
888
|
+
throw new Error(errorMessage);
|
|
889
|
+
}
|
|
890
|
+
const savedRecord = response.records[0];
|
|
891
|
+
logger.info('[iCloud] Backup saved successfully', {
|
|
892
|
+
recordName: savedRecord.recordName
|
|
893
|
+
});
|
|
894
|
+
return savedRecord;
|
|
895
|
+
}, {
|
|
896
|
+
maxAttempts,
|
|
897
|
+
retryInterval,
|
|
898
|
+
operationName: 'saveBackupToICloud',
|
|
899
|
+
logContext: {}
|
|
900
|
+
});
|
|
901
|
+
};
|
|
902
|
+
/**
|
|
903
|
+
* List all backups from iCloud
|
|
904
|
+
*/ const listICloudBackups = async ()=>{
|
|
905
|
+
const container = CloudKit.getDefaultContainer();
|
|
906
|
+
const privateDB = container.privateCloudDatabase;
|
|
907
|
+
try {
|
|
908
|
+
logger.debug('[iCloud] Querying backup records');
|
|
909
|
+
const response = await privateDB.performQuery({
|
|
910
|
+
recordType: BACKUP_RECORD_TYPE,
|
|
911
|
+
sortBy: [
|
|
912
|
+
{
|
|
913
|
+
fieldName: 'timestamp',
|
|
914
|
+
ascending: false
|
|
915
|
+
}
|
|
916
|
+
]
|
|
917
|
+
});
|
|
918
|
+
if (response.hasErrors) {
|
|
919
|
+
logger.error('[iCloud] Query errors:', response.errors);
|
|
920
|
+
throw new Error(mapCloudKitError(response.errors[0]));
|
|
921
|
+
}
|
|
922
|
+
const records = response.records.map((record)=>{
|
|
923
|
+
var _fields_backupData;
|
|
924
|
+
const fields = record.fields;
|
|
925
|
+
if (!((_fields_backupData = fields.backupData) == null ? void 0 : _fields_backupData.value)) {
|
|
926
|
+
throw new Error('Invalid backup record: missing backupData field');
|
|
927
|
+
}
|
|
928
|
+
return {
|
|
929
|
+
recordName: record.recordName,
|
|
930
|
+
created: record.created.timestamp,
|
|
931
|
+
modified: record.modified.timestamp,
|
|
932
|
+
backupData: JSON.parse(fields.backupData.value)
|
|
933
|
+
};
|
|
934
|
+
});
|
|
935
|
+
logger.info('[iCloud] Found backups', {
|
|
936
|
+
count: records.length
|
|
937
|
+
});
|
|
938
|
+
return records;
|
|
939
|
+
} catch (error) {
|
|
940
|
+
logger.error('[iCloud] Failed to list backups:', error);
|
|
941
|
+
throw error;
|
|
942
|
+
}
|
|
943
|
+
};
|
|
944
|
+
/**
|
|
945
|
+
* Retrieve a specific backup from iCloud by record name
|
|
946
|
+
*/ const getICloudBackup = async (recordName)=>{
|
|
947
|
+
const container = CloudKit.getDefaultContainer();
|
|
948
|
+
const privateDB = container.privateCloudDatabase;
|
|
949
|
+
try {
|
|
950
|
+
var _fields_backupData;
|
|
951
|
+
logger.debug('[iCloud] Fetching backup record', {
|
|
952
|
+
recordName
|
|
953
|
+
});
|
|
954
|
+
const response = await privateDB.fetchRecords([
|
|
955
|
+
recordName
|
|
956
|
+
]);
|
|
957
|
+
if (response.hasErrors) {
|
|
958
|
+
logger.error('[iCloud] Fetch error:', response.errors);
|
|
959
|
+
throw new Error(mapCloudKitError(response.errors[0]));
|
|
960
|
+
}
|
|
961
|
+
const record = response.records[0];
|
|
962
|
+
if (!record) {
|
|
963
|
+
logger.warn('[iCloud] Backup record not found', {
|
|
964
|
+
recordName
|
|
965
|
+
});
|
|
966
|
+
return null;
|
|
967
|
+
}
|
|
968
|
+
const fields = record.fields;
|
|
969
|
+
if (!((_fields_backupData = fields.backupData) == null ? void 0 : _fields_backupData.value)) {
|
|
970
|
+
throw new Error('Invalid backup record: missing backupData field');
|
|
971
|
+
}
|
|
972
|
+
const backupRecord = {
|
|
973
|
+
recordName: record.recordName,
|
|
974
|
+
created: record.created.timestamp,
|
|
975
|
+
modified: record.modified.timestamp,
|
|
976
|
+
backupData: JSON.parse(fields.backupData.value)
|
|
977
|
+
};
|
|
978
|
+
logger.info('[iCloud] Backup retrieved successfully', {
|
|
979
|
+
recordName
|
|
980
|
+
});
|
|
981
|
+
return backupRecord;
|
|
982
|
+
} catch (error) {
|
|
983
|
+
logger.error('[iCloud] Failed to get backup:', error);
|
|
984
|
+
throw error;
|
|
985
|
+
}
|
|
986
|
+
};
|
|
987
|
+
/**
|
|
988
|
+
* Delete a backup from iCloud
|
|
989
|
+
*/ const deleteICloudBackup = async (recordName)=>{
|
|
990
|
+
const container = CloudKit.getDefaultContainer();
|
|
991
|
+
const privateDB = container.privateCloudDatabase;
|
|
992
|
+
try {
|
|
993
|
+
logger.debug('[iCloud] Deleting backup record', {
|
|
994
|
+
recordName
|
|
995
|
+
});
|
|
996
|
+
const response = await privateDB.deleteRecords([
|
|
997
|
+
recordName
|
|
998
|
+
]);
|
|
999
|
+
if (response.hasErrors) {
|
|
1000
|
+
logger.error('[iCloud] Delete error:', response.errors);
|
|
1001
|
+
throw new Error(mapCloudKitError(response.errors[0]));
|
|
1002
|
+
}
|
|
1003
|
+
logger.info('[iCloud] Backup deleted successfully', {
|
|
1004
|
+
recordName
|
|
1005
|
+
});
|
|
1006
|
+
} catch (error) {
|
|
1007
|
+
logger.error('[iCloud] Failed to delete backup:', error);
|
|
1008
|
+
throw error;
|
|
1009
|
+
}
|
|
1010
|
+
};
|
|
1011
|
+
const initializeCloudKit = async (config, signInButtonId, onSignInRequired, onSignInComplete, onAuthStatusUpdate, authOptions)=>{
|
|
1012
|
+
logger.info('[iCloud] Initializing CloudKit');
|
|
1013
|
+
await loadCloudKit();
|
|
1014
|
+
if (signInButtonId) {
|
|
1015
|
+
resetCloudKitConfig();
|
|
1016
|
+
}
|
|
1017
|
+
configureCloudKit(config, signInButtonId);
|
|
1018
|
+
await ensureICloudAuth(onSignInRequired, onSignInComplete, onAuthStatusUpdate);
|
|
1019
|
+
};
|
|
1020
|
+
|
|
662
1021
|
/**
|
|
663
1022
|
* Uploads a backup to Google Drive App
|
|
664
1023
|
* @param accessToken - The access token for the Google Drive API
|
|
@@ -2509,6 +2868,62 @@ class DynamicWalletClient {
|
|
|
2509
2868
|
throw error;
|
|
2510
2869
|
}
|
|
2511
2870
|
}
|
|
2871
|
+
async backupKeySharesToICloud({ accountAddress, password, signedSessionId, signInButtonId, onProgress, onAuthStatusUpdate }) {
|
|
2872
|
+
try {
|
|
2873
|
+
var _environmentSettings_sdk_waas, _environmentSettings_sdk;
|
|
2874
|
+
await this.getWallet({
|
|
2875
|
+
accountAddress,
|
|
2876
|
+
walletOperation: WalletOperation.REACH_THRESHOLD,
|
|
2877
|
+
password,
|
|
2878
|
+
signedSessionId
|
|
2879
|
+
});
|
|
2880
|
+
const environmentSettings = await this.apiClient.getEnvironmentSettings();
|
|
2881
|
+
const iCloudConfig = environmentSettings == null ? void 0 : (_environmentSettings_sdk = environmentSettings.sdk) == null ? void 0 : (_environmentSettings_sdk_waas = _environmentSettings_sdk.waas) == null ? void 0 : _environmentSettings_sdk_waas.icloud;
|
|
2882
|
+
await initializeCloudKit(iCloudConfig, signInButtonId, undefined, undefined, onAuthStatusUpdate);
|
|
2883
|
+
const clientKeyShares = await this.getClientKeySharesFromLocalStorage({
|
|
2884
|
+
accountAddress
|
|
2885
|
+
});
|
|
2886
|
+
if (clientKeyShares.length === 0) {
|
|
2887
|
+
throw new Error('No key shares found to backup');
|
|
2888
|
+
}
|
|
2889
|
+
const wallet = this.walletMap[accountAddress];
|
|
2890
|
+
const thresholdSignatureScheme = (wallet == null ? void 0 : wallet.thresholdSignatureScheme) || ThresholdSignatureScheme.TWO_OF_TWO;
|
|
2891
|
+
const savedRecords = [];
|
|
2892
|
+
const encryptedKeyShares = [];
|
|
2893
|
+
for(let i = 0; i < clientKeyShares.length; i++){
|
|
2894
|
+
const keyShare = clientKeyShares[i];
|
|
2895
|
+
const encryptedKeyShare = await this.encryptKeyShare({
|
|
2896
|
+
keyShare,
|
|
2897
|
+
password
|
|
2898
|
+
});
|
|
2899
|
+
encryptedKeyShares.push(encryptedKeyShare);
|
|
2900
|
+
}
|
|
2901
|
+
const backupData = createBackupData({
|
|
2902
|
+
encryptedKeyShares,
|
|
2903
|
+
accountAddress,
|
|
2904
|
+
thresholdSignatureScheme,
|
|
2905
|
+
hasPassword: !!password
|
|
2906
|
+
});
|
|
2907
|
+
if (onProgress) {
|
|
2908
|
+
onProgress(0, 1);
|
|
2909
|
+
}
|
|
2910
|
+
const savedRecord = await saveBackupToICloud(backupData);
|
|
2911
|
+
savedRecords.push(savedRecord);
|
|
2912
|
+
if (onProgress) {
|
|
2913
|
+
onProgress(1, 1);
|
|
2914
|
+
}
|
|
2915
|
+
return savedRecords;
|
|
2916
|
+
} catch (error) {
|
|
2917
|
+
logError({
|
|
2918
|
+
message: 'Error in backupKeySharesToICloud',
|
|
2919
|
+
error: error,
|
|
2920
|
+
context: {
|
|
2921
|
+
accountAddress
|
|
2922
|
+
}
|
|
2923
|
+
});
|
|
2924
|
+
throw error;
|
|
2925
|
+
}
|
|
2926
|
+
}
|
|
2512
2927
|
/**
|
|
2513
2928
|
* This method handles only the Google Drive upload mechanics without any reshare logic.
|
|
2514
2929
|
* It encrypts the provided key shares, uploads them to Google Drive, and updates the
|
|
@@ -3079,7 +3494,7 @@ class DynamicWalletClient {
|
|
|
3079
3494
|
}, traceContext);
|
|
3080
3495
|
}
|
|
3081
3496
|
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, authMode = AuthMode.HEADER, authToken = undefined, backupServiceAuthToken, // Represents the version of the client SDK used by developer
|
|
3082
|
-
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl }){
|
|
3497
|
+
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig }){
|
|
3083
3498
|
this.userId = undefined;
|
|
3084
3499
|
this.sessionId = undefined;
|
|
3085
3500
|
this.initializePromise = null;
|
|
@@ -3146,4 +3561,4 @@ const ERROR_VERIFY_TRANSACTION_SIGNATURE = '[DynamicWaasWalletClient]: Error ver
|
|
|
3146
3561
|
const ERROR_EXPORT_PRIVATE_KEY = '[DynamicWaasWalletClient]: Error exporting private key';
|
|
3147
3562
|
const ERROR_IMPORT_PRIVATE_KEY = '[DynamicWaasWalletClient]: Error importing private key';
|
|
3148
3563
|
|
|
3149
|
-
export { DynamicWalletClient, ERROR_ACCOUNT_ADDRESS_REQUIRED, ERROR_CREATE_WALLET_ACCOUNT, ERROR_EXPORT_PRIVATE_KEY, ERROR_IMPORT_PRIVATE_KEY, ERROR_KEYGEN_FAILED, ERROR_SIGN_MESSAGE, ERROR_SIGN_TYPED_DATA, ERROR_VERIFY_MESSAGE_SIGNATURE, ERROR_VERIFY_TRANSACTION_SIGNATURE, WalletBusyError, createAddGoogleDriveToExistingDelegationDistribution, createBackupData, createDelegationOnlyDistribution, createDelegationWithGoogleDriveDistribution, createDynamicOnlyDistribution, createGoogleDriveOnlyDistribution, downloadStringAsFile, extractPubkey, formatEvmMessage, formatMessage, getClientKeyShareBackupInfo, getClientKeyShareExportFileName, getGoogleOAuthAccountId, getMPCSignatureScheme, getMPCSigner, hasDelegatedBackup, hasGoogleDriveBackup, isBrowser, isHexString, mergeUniqueKeyShares, retryPromise, timeoutPromise };
|
|
3564
|
+
export { DynamicWalletClient, ERROR_ACCOUNT_ADDRESS_REQUIRED, ERROR_CREATE_WALLET_ACCOUNT, ERROR_EXPORT_PRIVATE_KEY, ERROR_IMPORT_PRIVATE_KEY, ERROR_KEYGEN_FAILED, ERROR_SIGN_MESSAGE, ERROR_SIGN_TYPED_DATA, ERROR_VERIFY_MESSAGE_SIGNATURE, ERROR_VERIFY_TRANSACTION_SIGNATURE, WalletBusyError, cancelICloudAuth, createAddGoogleDriveToExistingDelegationDistribution, createBackupData, createDelegationOnlyDistribution, createDelegationWithGoogleDriveDistribution, createDynamicOnlyDistribution, createGoogleDriveOnlyDistribution, deleteICloudBackup, downloadStringAsFile, extractPubkey, formatEvmMessage, formatMessage, getClientKeyShareBackupInfo, getClientKeyShareExportFileName, getGoogleOAuthAccountId, getICloudBackup, getMPCSignatureScheme, getMPCSigner, hasDelegatedBackup, hasGoogleDriveBackup, isBrowser, isHexString, listICloudBackups, mergeUniqueKeyShares, retryPromise, timeoutPromise };
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/browser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.239",
|
|
4
4
|
"license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@dynamic-labs-wallet/core": "0.0.
|
|
7
|
+
"@dynamic-labs-wallet/core": "0.0.239",
|
|
8
8
|
"@dynamic-labs/logger": "^4.25.3",
|
|
9
9
|
"@dynamic-labs/sdk-api-core": "^0.0.828",
|
|
10
10
|
"argon2id": "1.0.1",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"http-errors": "2.0.0",
|
|
13
13
|
"semver": "^7.6.3",
|
|
14
14
|
"uuid": "11.1.0",
|
|
15
|
+
"tsl-apple-cloudkit": "0.2.34",
|
|
15
16
|
"@noble/hashes": "1.7.1"
|
|
16
17
|
},
|
|
17
18
|
"files": [
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
50
51
|
"@rollup/plugin-wasm": "^6.2.2",
|
|
51
52
|
"@types/http-errors": "^2.0.0",
|
|
52
|
-
"@types/semver": "^7.5.8"
|
|
53
|
+
"@types/semver": "^7.5.8",
|
|
54
|
+
"tsl-apple-cloudkit": "^0.2.11"
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { BackupData, ICloudConfig } from '@dynamic-labs-wallet/core';
|
|
2
|
+
import type * as CloudKitTypes from 'tsl-apple-cloudkit';
|
|
3
|
+
export type SavedRecord = CloudKitTypes.RecordReceived;
|
|
4
|
+
export type ICloudBackupRecord = {
|
|
5
|
+
recordName: string;
|
|
6
|
+
created: number;
|
|
7
|
+
modified: number;
|
|
8
|
+
backupData: BackupData;
|
|
9
|
+
};
|
|
10
|
+
export type ICloudAuthOptions = {
|
|
11
|
+
pollIntervalMs?: number;
|
|
12
|
+
timeoutMs?: number;
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
};
|
|
15
|
+
export declare const loadCloudKit: () => Promise<void>;
|
|
16
|
+
export declare const configureCloudKit: (config?: ICloudConfig, signInButtonId?: string) => void;
|
|
17
|
+
export declare const resetCloudKitConfig: () => void;
|
|
18
|
+
/**
|
|
19
|
+
* Cancel any ongoing authentication attempt
|
|
20
|
+
*/
|
|
21
|
+
export declare const cancelICloudAuth: () => void;
|
|
22
|
+
export declare const ensureICloudAuth: (onSignInRequired?: () => void, onSignInComplete?: () => void, onAuthStatusUpdate?: (status: string) => void, options?: ICloudAuthOptions) => Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Save backup data to iCloud with retry logic
|
|
25
|
+
* Stores data in the same format as Google Drive for consistency
|
|
26
|
+
*/
|
|
27
|
+
export declare const saveBackupToICloud: (backupData: unknown, retryOptions?: {
|
|
28
|
+
maxAttempts?: number;
|
|
29
|
+
retryInterval?: number;
|
|
30
|
+
}) => Promise<SavedRecord>;
|
|
31
|
+
/**
|
|
32
|
+
* List all backups from iCloud
|
|
33
|
+
*/
|
|
34
|
+
export declare const listICloudBackups: () => Promise<ICloudBackupRecord[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Retrieve a specific backup from iCloud by record name
|
|
37
|
+
*/
|
|
38
|
+
export declare const getICloudBackup: (recordName: string) => Promise<ICloudBackupRecord | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Delete a backup from iCloud
|
|
41
|
+
*/
|
|
42
|
+
export declare const deleteICloudBackup: (recordName: string) => Promise<void>;
|
|
43
|
+
export declare const initializeCloudKit: (config?: ICloudConfig, signInButtonId?: string, onSignInRequired?: () => void, onSignInComplete?: () => void, onAuthStatusUpdate?: (status: string) => void, authOptions?: ICloudAuthOptions) => Promise<void>;
|
|
44
|
+
//# sourceMappingURL=iCloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iCloud.d.ts","sourceRoot":"","sources":["../../../src/backup/providers/iCloud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,KAAK,aAAa,MAAM,oBAAoB,CAAC;AAIzD,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAiDF,eAAO,MAAM,YAAY,QAAO,OAAO,CAAC,IAAI,CAuB3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACnB,YAAY,mBACJ,MAAM,KACtB,IAmCF,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,IAItC,CAAC;AAkBF;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAO,IAMnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,sBACR,MAAM,IAAI,qBACV,MAAM,IAAI,uBACR,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,YACnC,iBAAiB,KAC1B,OAAO,CAAC,IAAI,CAuHd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,eACjB,OAAO,iBACJ;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,KAC9D,OAAO,CAAC,WAAW,CAwCrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,kBAAkB,EAAE,CAwCtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,eACd,MAAM,KACjB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAyCnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAsB,MAAM,KAAG,OAAO,CAAC,IAAI,CAmBzE,CAAC;AAEF,eAAO,MAAM,kBAAkB,YACpB,YAAY,mBACJ,MAAM,qBACJ,MAAM,IAAI,qBACV,MAAM,IAAI,uBACR,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,gBAC/B,iBAAiB,KAC9B,OAAO,CAAC,IAAI,CAed,CAAC"}
|
package/src/client.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AuthMode, BackupLocation, type BackupLocationWithExternalKeyShareId, type BitcoinConfig,
|
|
1
|
+
import { EcdsaSignature, MessageHash, type EcdsaPublicKey } from '#internal/web';
|
|
2
|
+
import { AuthMode, BackupLocation, DynamicApiClient, ThresholdSignatureScheme, WalletOperation, type BackupLocationWithExternalKeyShareId, type BitcoinConfig, type DynamicWalletClientProps, type FeatureFlags, type InitializeResult, type KeyShareBackupInfo, type TraceContext } from '@dynamic-labs-wallet/core';
|
|
3
3
|
import { type InstrumentOptions } from '@dynamic-labs/logger';
|
|
4
4
|
import { RoomTypeEnum, type SignMessageContext } from '@dynamic-labs/sdk-api-core';
|
|
5
|
+
import { type SavedRecord } from './backup/providers/iCloud.js';
|
|
5
6
|
import type { ClientInitKeygenResult, ClientKeyShare } from './mpc/types.js';
|
|
6
7
|
import { type SupportedStorage } from './services/localStorage.js';
|
|
7
8
|
import { type Room, type ShareDistribution, type WalletBusyOperation, type WalletProperties } from './types.js';
|
|
@@ -32,7 +33,7 @@ export declare class DynamicWalletClient {
|
|
|
32
33
|
protected static roomsInitializing: Record<number, boolean>;
|
|
33
34
|
protected static walletBusyMap: Record<string, WalletBusyOperation | undefined>;
|
|
34
35
|
protected static walletBusyPromiseMap: Record<string, Promise<void> | undefined>;
|
|
35
|
-
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, authMode, authToken, backupServiceAuthToken, sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, }: DynamicWalletClientProps);
|
|
36
|
+
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, authMode, authToken, backupServiceAuthToken, sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig, }: DynamicWalletClientProps);
|
|
36
37
|
private initializeForwardMPCClient;
|
|
37
38
|
getWalletBusyOperation(accountAddress: string): WalletBusyOperation | undefined;
|
|
38
39
|
isWalletBusy(accountAddress: string): boolean;
|
|
@@ -392,6 +393,14 @@ export declare class DynamicWalletClient {
|
|
|
392
393
|
password?: string;
|
|
393
394
|
signedSessionId: string;
|
|
394
395
|
}): Promise<string[]>;
|
|
396
|
+
backupKeySharesToICloud({ accountAddress, password, signedSessionId, signInButtonId, onProgress, onAuthStatusUpdate, }: {
|
|
397
|
+
accountAddress: string;
|
|
398
|
+
password?: string;
|
|
399
|
+
signedSessionId: string;
|
|
400
|
+
signInButtonId?: string;
|
|
401
|
+
onProgress?: (current: number, total: number) => void;
|
|
402
|
+
onAuthStatusUpdate?: (status: string) => void;
|
|
403
|
+
}): Promise<SavedRecord[]>;
|
|
395
404
|
/**
|
|
396
405
|
* This method handles only the Google Drive upload mechanics without any reshare logic.
|
|
397
406
|
* It encrypts the provided key shares, uploads them to Google Drive, and updates the
|
package/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|
package/src/constants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LogLevel } from '@dynamic-labs/logger';
|
|
2
|
-
export declare const DEFAULT_LOG_LEVEL = LogLevel.
|
|
2
|
+
export declare const DEFAULT_LOG_LEVEL = LogLevel.INFO;
|
|
3
3
|
export declare const STORAGE_KEY = "dynamic-waas-wallet-client";
|
|
4
4
|
export declare const BACKUP_FILENAME = "dynamicWalletKeyShareBackup.json";
|
|
5
5
|
export declare const CLIENT_KEYSHARE_EXPORT_FILENAME_PREFIX = "dynamicWalletKeyShareBackup";
|
package/src/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../packages/src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../packages/src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,eAAO,MAAM,WAAW,+BAA+B,CAAC;AAExD,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAElE,eAAO,MAAM,sCAAsC,gCACpB,CAAC;AAEhC,eAAO,MAAM,6BAA6B,WAAW,CAAC;AAGtD,eAAO,MAAM,0CAA0C,EAAE,MAAM,CAC7D,MAAM,EACN,MAAM,CAIP,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAiB,CAAC;AACnD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,2BAA2B,QAAQ,CAAC"}
|
package/src/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './types.js';
|
|
|
4
4
|
export * from './mpc/index.js';
|
|
5
5
|
export * from './utils.js';
|
|
6
6
|
export * from './errorConstants.js';
|
|
7
|
+
export { cancelICloudAuth, listICloudBackups, getICloudBackup, deleteICloudBackup, type ICloudBackupRecord, } from './backup/providers/iCloud.js';
|
|
7
8
|
import { Logger } from './services/logger.js';
|
|
8
9
|
export { Logger };
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAE1C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAE1C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,CAAC"}
|