index.ts 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import { getStorageShortName } from '@/utils/env';
  2. import { createStorage as create, CreateStorageParams } from './storageCache';
  3. import { SHOULD_ENABLE_STORAGE_ENCRYPTION, DEFAULT_CACHE_TIME } from '@/settings/encryptionSetting';
  4. export type Options = Partial<CreateStorageParams>;
  5. const createOptions = (storage: Storage, options: Options = {}): Options => {
  6. return {
  7. // No encryption in debug mode
  8. hasEncrypt: SHOULD_ENABLE_STORAGE_ENCRYPTION,
  9. storage,
  10. prefixKey: getStorageShortName(),
  11. ...options,
  12. };
  13. };
  14. export const WebStorage = create(createOptions(sessionStorage));
  15. export const createStorage = (storage: Storage = sessionStorage, options: Options = {}) => {
  16. return create(createOptions(storage, options));
  17. };
  18. export const createSessionStorage = (options: Options = {}) => {
  19. return createStorage(sessionStorage, { ...options, timeout: DEFAULT_CACHE_TIME });
  20. };
  21. export const createLocalStorage = (options: Options = {}) => {
  22. return createStorage(localStorage, { ...options, timeout: DEFAULT_CACHE_TIME });
  23. };
  24. export default WebStorage;