integreat
Version:
Node.js integration layer
22 lines • 1 kB
JavaScript
import { createErrorResponse, setOrigin } from '../utils/response.js';
import { setAuthorizedMark } from '../service/utils/authAction.js';
const prepareQueuedAction = ({ meta, ...action }) => setAuthorizedMark({
...action,
meta: { ...meta, queuedAt: Date.now() },
});
export default async function queue(action, { dispatch, getService, options: { queueService } }) {
const service = getService(undefined, queueService);
if (!service) {
return createErrorResponse(`Could not queue to unknown service '${queueService}'`);
}
const nextAction = prepareQueuedAction(action);
const response = await service.send(nextAction, null, dispatch, false);
const status = response?.status === 'ok' ? 'queued' : response?.status;
return setOrigin({
...action.response,
...response,
status: status || 'badresponse',
...(status ? {} : { error: 'Queue did not respond correctly' }),
}, 'handler:QUEUE');
}
//# sourceMappingURL=queue.js.map