bigblocks
Version:
Complete Bitcoin UI component library - authentication, social, wallet, market, inscriptions, and blockchain interactions for React
67 lines (66 loc) • 2.07 kB
JavaScript
export class StorageKeys {
namespace;
constructor(config = {}) {
this.namespace = config.namespace || "";
}
key(name) {
return this.namespace ? `${this.namespace}:${name}` : name;
}
// Session storage keys (no namespace prefix for session storage)
get sessionDecryptedBackup() {
return "decryptedBackup";
}
get sessionPaymentKey() {
return "paymentKey";
}
get sessionOrdinalKey() {
return "ordinalKey";
}
get sessionOAuthState() {
return "oauthState";
}
get sessionBackupSource() {
return "backupSource"; // "imported" or "generated"
}
// Local storage keys (ONLY encrypted data allowed)
get encryptedBackup() {
return this.key("encryptedBackup");
}
// BAP rotation storage key (used in useBapKeyRotation)
getBapRotationKey(idKey) {
return this.key(`bap-rotation-${idKey}`);
}
}
// Default configurations for different environments
export const DEFAULT_STORAGE_KEYS = new StorageKeys();
export const STORYBOOK_STORAGE_KEYS = new StorageKeys({
namespace: "storybook",
});
// Helper to create storage keys with custom namespace
export function createStorageKeys(namespace) {
return new StorageKeys({ namespace });
}
/**
* Usage Examples:
*
* // Default namespace (no prefix)
* const keys = createStorageKeys();
* keys.encryptedBackup // -> 'encryptedBackup'
* keys.sessionDecryptedBackup // -> 'decryptedBackup'
*
* // Storybook namespace
* const storybookKeys = createStorageKeys('storybook');
* storybookKeys.encryptedBackup // -> 'storybook:encryptedBackup'
* storybookKeys.sessionDecryptedBackup // -> 'storybook:decryptedBackup'
*
* // Development namespace
* const devKeys = createStorageKeys('dev');
* devKeys.sessionPaymentKey // -> 'dev:paymentKey'
*
* // Configuration in BitcoinAuthConfig:
* const config = {
* storageNamespace: 'myapp-prod',
* storage: myPersistentStorage, // For encrypted backups
* sessionStorage: mySessionStorage, // For temporary data
* };
*/