MCPcopy Index your code
hub / github.com/TanStack/db / loadFromStorage

Function loadFromStorage

packages/db/src/local-storage.ts:632–679  ·  view source on GitHub ↗

* Load data from storage and return as a Map * @param parser - The parser to use for deserializing the data * @param storageKey - The key used to store data in the storage API * @param storage - The storage API to load from (localStorage, sessionStorage, etc.) * @returns Map of stored items with

(
  storageKey: string,
  storage: StorageApi,
  parser: Parser,
)

Source from the content-addressed store, hash-verified

630 * @returns Map of stored items with version tracking, or empty Map if loading fails
631 */
632function loadFromStorage<T extends object>(
633 storageKey: string,
634 storage: StorageApi,
635 parser: Parser,
636): Map<string | number, StoredItem<T>> {
637 try {
638 const rawData = storage.getItem(storageKey)
639 if (!rawData) {
640 return new Map()
641 }
642
643 const parsed = parser.parse(rawData)
644 const dataMap = new Map<string | number, StoredItem<T>>()
645
646 // Handle object format where keys map to StoredItem values
647 if (
648 typeof parsed === `object` &&
649 parsed !== null &&
650 !Array.isArray(parsed)
651 ) {
652 Object.entries(parsed).forEach(([encodedKey, value]) => {
653 // Runtime check to ensure the value has the expected StoredItem structure
654 if (
655 value &&
656 typeof value === `object` &&
657 `versionKey` in value &&
658 `data` in value
659 ) {
660 const storedItem = value as StoredItem<T>
661 const decodedKey = decodeStorageKey(encodedKey)
662 dataMap.set(decodedKey, storedItem)
663 } else {
664 throw new InvalidStorageDataFormatError(storageKey, encodedKey)
665 }
666 })
667 } else {
668 throw new InvalidStorageObjectFormatError(storageKey)
669 }
670
671 return dataMap
672 } catch (error) {
673 console.warn(
674 `[LocalStorageCollection] Error loading data from storage key "${storageKey}":`,
675 error,
676 )
677 return new Map()
678 }
679}
680
681/**
682 * Internal function to create localStorage sync configuration

Callers 2

processStorageChangesFunction · 0.85
createLocalStorageSyncFunction · 0.85

Calls 5

decodeStorageKeyFunction · 0.85
getItemMethod · 0.80
forEachMethod · 0.45
entriesMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected