index.ts 1.1 KB

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