UNPKG

10.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.js","sources":["../src/config.js","../src/constants.js","../src/cache/simple.js","../src/cache/simpleSuccess.js","../src/cache/ttl.js","../src/cache/ttlSuccess.js","../src/cache/index.js","../src/actionTypes.js","../src/selectors.js","../src/actions.js","../src/reducer.js","../src/index.js"],"sourcesContent":["const DEFAULT_CONFIG = {\n DEFAULT_INVOKE_OPTIONS: {},\n DEFAULT_CACHE_STRATEGY: undefined,\n};\n\nconst config = { ...DEFAULT_CONFIG };\n\nexport const resetConfig = () => {\n Object.entries(DEFAULT_CONFIG).forEach(([key, value]) => {\n config[key] = value;\n });\n};\n\nexport default {\n set DEFAULT_INVOKE_OPTIONS(value) {\n config.DEFAULT_INVOKE_OPTIONS = value;\n },\n get DEFAULT_INVOKE_OPTIONS() {\n return config.DEFAULT_INVOKE_OPTIONS;\n },\n set DEFAULT_CACHE_STRATEGY(value) {\n config.DEFAULT_CACHE_STRATEGY = value;\n },\n get DEFAULT_CACHE_STRATEGY() {\n return config.DEFAULT_CACHE_STRATEGY;\n },\n};\n","export const NAME = '@RCAM';\nexport const CACHE_TYPES = {\n SIMPLE: 'SIMPLE',\n SIMPLE_SUCCESS: 'SIMPLE_SUCCESS',\n TTL: 'TTL',\n TTL_SUCCESS: 'TTL_SUCCESS',\n};\n","import { CACHE_TYPES } from '../constants';\n\nexport const type = CACHE_TYPES.SIMPLE;\n\nexport const buildStrategy = () => ({ type });\n\nexport const shouldFetch = ({ state }) => {\n if (state && (state.fetching || state.fetched)) return false;\n return true;\n};\n","import { CACHE_TYPES } from '../constants';\n\nexport const type = CACHE_TYPES.SIMPLE_SUCCESS;\n\nexport const buildStrategy = () => ({ type });\n\nexport const shouldFetch = ({ state }) => {\n if (state) {\n if (state.fetching) return false;\n if (state.fetched && !state.error) return false;\n }\n return true;\n};\n","import { CACHE_TYPES } from '../constants';\n\nexport const type = CACHE_TYPES.TTL;\n\nexport const buildStrategy = ({ ttl }) => ({ type, ttl });\n\nexport const shouldFetch = ({ state, strategy }) => {\n if (state && strategy) {\n if (state.fetching) return false;\n if (state.fetched) {\n return state.timestamp + strategy.ttl <= Date.now();\n }\n }\n return true;\n};\n","import { CACHE_TYPES } from '../constants';\n\nexport const type = CACHE_TYPES.TTL_SUCCESS;\n\nexport const buildStrategy = ({ ttl }) => ({ type, ttl });\n\nexport const shouldFetch = ({ state, strategy }) => {\n if (state && strategy) {\n if (state.fetching) return false;\n if (state.fetched && !state.error) {\n return state.timestamp + strategy.ttl <= Date.now();\n }\n }\n return true;\n};\n","import * as simple from './simple';\nimport * as simpleSuccess from './simpleSuccess';\nimport * as ttl from './ttl';\nimport * as ttlSuccess from './ttlSuccess';\n\nexport default {\n get: type => {\n switch (type) {\n case simple.type:\n return simple;\n case simpleSuccess.type:\n return simpleSuccess;\n case ttl.type:\n return ttl;\n case ttlSuccess.type:\n return ttlSuccess;\n default:\n throw new Error(`Invalid cache type - ${type}`);\n }\n },\n};\n","import { NAME } from './constants';\n\nexport const INVALIDATE_CACHE = `${NAME}.INVALIDATE_CACHE`;\nexport const CLEAR_CACHE = `${NAME}.CLEAR_CACHE`;\n\nexport const FETCH_START = `${NAME}.FETCH_START`;\nexport const FETCH_SUCCESS = `${NAME}.FETCH_SUCCESS`;\nexport const FETCH_ERROR = `${NAME}.FETCH_ERROR`;\n","import { NAME } from './constants';\n\nexport const getResult = (state, key) =>\n state && state[NAME] ? state[NAME][key] : undefined;\n","import { RSAA } from 'redux-api-middleware';\n\nimport cacheStrategies from './cache';\nimport config from './config';\nimport * as types from './actionTypes';\nimport * as selectors from './selectors';\n\nexport const invalidateCache = payload => ({\n type: types.INVALIDATE_CACHE,\n payload,\n});\n\nexport const clearCache = payload => ({\n type: types.CLEAR_CACHE,\n payload,\n});\n\nexport const invoke = ({ cache, ...restOptions }) => async (\n dispatch,\n getState\n) => {\n const action = Object.assign(\n { types: [] },\n config.DEFAULT_INVOKE_OPTIONS,\n restOptions\n );\n\n if (cache && cache.key) {\n const cacheStrategy = cache.strategy || config.DEFAULT_CACHE_STRATEGY;\n const result = selectors.getResult(getState(), cache.key);\n action.types = [\n { type: types.FETCH_START, meta: { cache } },\n { type: types.FETCH_SUCCESS, meta: { cache } },\n { type: types.FETCH_ERROR, meta: { cache } },\n ];\n\n if (cache.shouldFetch) {\n if (!cache.shouldFetch({ state: result })) {\n return undefined;\n }\n } else if (\n cacheStrategy &&\n !cacheStrategies\n .get(cacheStrategy.type)\n .shouldFetch({ state: result, strategy: cacheStrategy })\n ) {\n return undefined;\n }\n }\n\n return dispatch({ [RSAA]: action });\n};\n","import * as types from './actionTypes';\n\nexport const DEFAULT_KEY_STATE = {\n fetching: false,\n fetched: false,\n error: false,\n timestamp: null,\n successPayload: null,\n errorPayload: null,\n};\n\nconst DEFAULT_STATE = {};\n\nexport default (state = DEFAULT_STATE, { type, payload, meta }) => {\n switch (type) {\n case types.CLEAR_CACHE: {\n if (payload && state[payload]) {\n const newState = { ...state };\n delete newState[payload];\n return newState;\n }\n return DEFAULT_STATE;\n }\n\n case types.INVALIDATE_CACHE: {\n const invalidStateKeys = Object.keys(state).filter(\n item => state[item].fetching\n );\n if (invalidStateKeys.length) {\n const newState = { ...state };\n invalidStateKeys.forEach(key => {\n newState[key].fetching = false;\n });\n return newState;\n }\n return state;\n }\n\n case types.FETCH_START: {\n const key = meta.cache.key; // eslint-disable-line prefer-destructuring\n return {\n ...state,\n [key]: {\n ...(state[key] || DEFAULT_KEY_STATE),\n fetching: true,\n },\n };\n }\n\n case types.FETCH_SUCCESS: {\n const key = meta.cache.key; // eslint-disable-line prefer-destructuring\n if (key in state) {\n return {\n ...state,\n [key]: {\n ...state[key],\n fetching: false,\n fetched: true,\n error: false,\n timestamp: new Date().getTime(),\n successPayload: payload,\n },\n };\n }\n return state;\n }\n\n case types.FETCH_ERROR: {\n const key = meta.cache.key; // eslint-disable-line prefer-destructuring\n if (key in state) {\n return {\n ...state,\n [key]: {\n ...state[key],\n fetching: false,\n fetched: true,\n error: true,\n timestamp: new Date().getTime(),\n errorPayload: payload,\n },\n };\n }\n return state;\n }\n\n default:\n return state;\n }\n};\n","import config from './config';\nimport * as constants from './constants';\nimport cache from './cache';\n\nimport * as actions from './actions';\nimport reducer from './reducer';\nimport * as selectors from './selectors';\n\nexport default { config, constants, cache, actions, reducer, selectors };\n"],"names":["DEFAULT_CONFIG","undefined","config","value","DEFAULT_INVOKE_OPTIONS","DEFAULT_CACHE_STRATEGY","NAME","CACHE_TYPES","type","SIMPLE","buildStrategy","shouldFetch","state","fetching","fetched","SIMPLE_SUCCESS","error","TTL","ttl","strategy","timestamp","Date","now","TTL_SUCCESS","simple","simpleSuccess","ttlSuccess","Error","INVALIDATE_CACHE","CLEAR_CACHE","FETCH_START","FETCH_SUCCESS","FETCH_ERROR","getResult","key","invalidateCache","types","clearCache","invoke","cache","restOptions","dispatch","getState","Object","assign","selectors","meta","result","cacheStrategy","cacheStrategies","get","RSAA","action","DEFAULT_KEY_STATE","DEFAULT_STATE","payload","newState","invalidStateKeys","keys","filter","item","length","forEach","getTime","constants","actions","reducer"],"mappings":"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"}
\No newline at end of file