UNPKG

async-states

Version:

Core of async-states

66 lines (63 loc) 2.32 kB
import { loadCache } from './StateCache.js'; import { attemptHydratedState } from './StateHydration.js'; import { success, initial, pending } from '../enums.js'; import { isFunction } from '../utils.js'; import { shallowClone, now } from '../helpers/core.js'; function initializeInstance(instance) { loadCache(instance); let maybeHydratedState = attemptHydratedState(instance); if (maybeHydratedState) { let [state, latestRun, payload] = maybeHydratedState; instance.state = state; instance.payload = payload; instance.latestRun = latestRun; if (instance.state.status === success) { instance.lastSuccess = instance.state; } else { let initializer = instance.config.initialValue; let initialData = isFunction(initializer) ? initializer(instance.cache) : initializer; let savedInitialProps = { args: [initialData], payload: shallowClone(instance.payload), }; instance.lastSuccess = { status: initial, data: initialData, timestamp: now(), props: savedInitialProps, }; if (state.status === pending) { let normalPromise = new Promise((resolve, reject) => { instance.res = { res: resolve, rej: reject }; }); let promise = normalPromise; promise.status = pending; instance.promise = promise; state.prev = instance.lastSuccess; } } } else { let initializer = instance.config.initialValue; let initialData = isFunction(initializer) ? initializer(instance.cache) : initializer; let savedInitialProps = { args: [initialData], payload: shallowClone(instance.payload), }; let initialState = { status: initial, data: initialData, timestamp: now(), props: savedInitialProps, }; instance.state = initialState; instance.lastSuccess = initialState; } } export { initializeInstance }; //# sourceMappingURL=StateInitialization.js.map