Skip to content

⬅️ Back to Table of Contents

📄 index.ts

📊 Analysis Summary

Metric Count
🔧 Functions 2
📦 Imports 14
📊 Variables & Constants 4
⚡ Async/Await Patterns 1
📐 Interfaces 1

📚 Table of Contents

🛠️ File Location:

📂 packages/core/useStorageAsync/index.ts

📦 Imports

Name Source
RemovableRef @vueuse/shared
MaybeRefOrGetter vue
StorageLikeAsync ../ssr-handlers
SerializerAsync ../useStorage
UseStorageOptions ../useStorage
watchWithFilter @vueuse/shared
deepRef vue
shallowRef vue
toValue vue
defaultWindow ../_configurable
getSSRHandler ../ssr-handlers
useEventListener ../useEventListener
StorageSerializers ../useStorage
guessSerializerType ../useStorage/guess

Variables & Constants

Name Type Kind Value Exported
data RemovableRef<T> const (shallow ? shallowRef : deepRef)(toValue(initialValue)) as RemovableRef<T>
serializer SerializerAsync<T> const options.serializer ?? StorageSerializers[type]
rawValue any let/var event ? event.newValue : await storage.getItem(key)
value Awaitable<T> let/var await serializer.read(rawValue)

Async/Await Patterns

Type Function Await Expressions Promise Chains
async-function read storage.getItem(key), storage.setItem(key, await serializer.write(rawInit)), serializer.write(rawInit), serializer.read(rawValue), serializer.read(rawValue) none

Functions

useStorageAsync(key: string, initialValue: MaybeRefOrGetter<string>, storage: StorageLikeAsync, options: UseStorageAsyncOptions<string>): RemovableRef<string>

Code
export function useStorageAsync(key: string, initialValue: MaybeRefOrGetter<string>, storage?: StorageLikeAsync, options?: UseStorageAsyncOptions<string>): RemovableRef<string>
  • Parameters:
  • key: string
  • initialValue: MaybeRefOrGetter<string>
  • storage: StorageLikeAsync
  • options: UseStorageAsyncOptions<string>
  • Return Type: RemovableRef<string>

read(event: StorageEvent): Promise<void>

Code
async function read(event?: StorageEvent) {
    if (!storage || (event && event.key !== key))
      return

    try {
      const rawValue = event ? event.newValue : await storage.getItem(key)
      if (rawValue == null) {
        data.value = rawInit
        if (writeDefaults && rawInit !== null)
          await storage.setItem(key, await serializer.write(rawInit))
      }
      else if (mergeDefaults) {
        const value = await serializer.read(rawValue)
        if (typeof mergeDefaults === 'function')
          data.value = mergeDefaults(value, rawInit)
        else if (type === 'object' && !Array.isArray(value))
          data.value = { ...(rawInit as any), ...value }
        else data.value = value
      }
      else {
        data.value = await serializer.read(rawValue)
      }
    }
    catch (e) {
      onError(e)
    }
  }
  • Parameters:
  • event: StorageEvent
  • Return Type: Promise<void>
  • Calls:
  • storage.getItem
  • storage.setItem
  • serializer.write
  • serializer.read
  • mergeDefaults
  • Array.isArray
  • onError

Interfaces

UseStorageAsyncOptions<T>

Interface Code
export interface UseStorageAsyncOptions<T> extends Omit<UseStorageOptions<T>, 'serializer'> {
  /**
   * Custom data serialization
   */
  serializer?: SerializerAsync<T>
}

Properties

Name Type Optional Description
serializer SerializerAsync<T>