UNPKG

integreat

Version:
59 lines 1.94 kB
import { nanoid } from 'nanoid'; import { createErrorResponse, setOrigin } from './response.js'; export function createAction(type, payload = {}, meta = {}) { if (!type) { return null; } return { type, payload, meta }; } export function setDataOnActionPayload(action, data) { return { ...action, payload: { ...action.payload, data }, }; } export function setResponseOnAction(action, response) { return { ...action, response: response || {} }; } export function setMetaOnAction(action, { queue, queuedAt, id, ...meta }) { return { ...action, meta: { ...meta, ...((action.meta?.queue ?? queue) ? { queue: true } : {}), }, }; } export function removeQueueFlag({ meta: { queue, ...meta } = {}, ...action }) { return { ...action, meta }; } export function setOptionsOnAction(action, endpoint) { return { ...action, meta: { ...action.meta, options: endpoint?.options.transporter || {} }, }; } export function setErrorOnAction(action, error, origin, status = 'error') { return setResponseOnAction(action, { ...action.response, ...createErrorResponse(error, origin, status), }); } export const setOriginOnAction = (action, origin, doPrefix = false) => typeof action.response?.status === 'string' || typeof action.response?.error === 'string' ? { ...action, response: setOrigin(action.response, origin, doPrefix) } : action; const hasIdAndCid = (action) => action.meta?.id && action.meta.cid; export function setActionIds(action) { if (!hasIdAndCid(action)) { const id = action.meta?.id ?? nanoid(); const cid = action.meta?.cid ?? id; return { ...action, meta: { ...action.meta, id, cid } }; } return action; } export const createMetaForSubAction = ({ id, ...meta } = {}) => ({ ...meta, gid: id, }); //# sourceMappingURL=action.js.map