@data-client/core
Version:
Async State Management without the Management. REST, GraphQL, SSE, Websockets, Fetch
44 lines • 5.02 kB
JavaScript
import { Controller, createReducer, __INTERNAL__ } from '../index.js';
const {
initialState
} = __INTERNAL__;
export default function mockInitialState(fixtures = []) {
const actions = [];
const dispatch = action => {
actions.push(action);
return Promise.resolve();
};
const controller = new Controller({
dispatch
});
const reducer = createReducer(controller);
fixtures.forEach(fixture => {
dispatchFixture(fixture, fixture.args, controller);
});
return actions.reduce(reducer, initialState);
}
function dispatchFixture(fixture, args, controller, fetchedAt) {
// eslint-disable-next-line prefer-const
let {
endpoint
} = fixture;
const {
response,
error
} = fixture;
if (controller.resolve) {
controller.resolve(endpoint, {
args,
response,
error,
fetchedAt: fetchedAt != null ? fetchedAt : Date.now()
});
} else {
if (error === true) {
controller.setError(endpoint, ...args, response);
} else {
controller.setResponse(endpoint, ...args, response);
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250cm9sbGVyIiwiY3JlYXRlUmVkdWNlciIsIl9fSU5URVJOQUxfXyIsImluaXRpYWxTdGF0ZSIsIm1vY2tJbml0aWFsU3RhdGUiLCJmaXh0dXJlcyIsImFjdGlvbnMiLCJkaXNwYXRjaCIsImFjdGlvbiIsInB1c2giLCJQcm9taXNlIiwicmVzb2x2ZSIsImNvbnRyb2xsZXIiLCJyZWR1Y2VyIiwiZm9yRWFjaCIsImZpeHR1cmUiLCJkaXNwYXRjaEZpeHR1cmUiLCJhcmdzIiwicmVkdWNlIiwiZmV0Y2hlZEF0IiwiZW5kcG9pbnQiLCJyZXNwb25zZSIsImVycm9yIiwiRGF0ZSIsIm5vdyIsInNldEVycm9yIiwic2V0UmVzcG9uc2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9jay9tb2NrU3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2V0QWN0aW9uLFxuICBTdGF0ZSxcbiAgQWN0aW9uVHlwZXMsXG4gIENvbnRyb2xsZXIsXG4gIGNyZWF0ZVJlZHVjZXIsXG4gIF9fSU5URVJOQUxfXyxcbn0gZnJvbSAnLi4vaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBGaXh0dXJlIH0gZnJvbSAnLi9maXh0dXJlVHlwZXMuanMnO1xuXG5jb25zdCB7IGluaXRpYWxTdGF0ZSB9ID0gX19JTlRFUk5BTF9fO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2NrSW5pdGlhbFN0YXRlKFxuICBmaXh0dXJlczogRml4dHVyZVtdID0gW10sXG4pOiBTdGF0ZTx1bmtub3duPiB7XG4gIGNvbnN0IGFjdGlvbnM6IFNldEFjdGlvbltdID0gW107XG4gIGNvbnN0IGRpc3BhdGNoID0gKGFjdGlvbjogYW55KSA9PiB7XG4gICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9O1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoeyBkaXNwYXRjaCB9KTtcbiAgY29uc3QgcmVkdWNlcjogKFxuICAgIHN0YXRlOiBTdGF0ZTx1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICBhY3Rpb246IEFjdGlvblR5cGVzLFxuICApID0+IFN0YXRlPHVua25vd24+ID0gY3JlYXRlUmVkdWNlcihjb250cm9sbGVyKTtcblxuICBmaXh0dXJlcy5mb3JFYWNoKGZpeHR1cmUgPT4ge1xuICAgIGRpc3BhdGNoRml4dHVyZShmaXh0dXJlLCBmaXh0dXJlLmFyZ3MsIGNvbnRyb2xsZXIpO1xuICB9KTtcbiAgcmV0dXJuIGFjdGlvbnMucmVkdWNlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoRml4dHVyZShcbiAgZml4dHVyZTogRml4dHVyZSxcbiAgYXJnczogYW55W10sXG4gIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4gIGZldGNoZWRBdD86IG51bWJlcixcbikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCB7IGVuZHBvaW50IH0gPSBmaXh0dXJlO1xuICBjb25zdCB7IHJlc3BvbnNlLCBlcnJvciB9ID0gZml4dHVyZTtcbiAgaWYgKGNvbnRyb2xsZXIucmVzb2x2ZSkge1xuICAgIGNvbnRyb2xsZXIucmVzb2x2ZShlbmRwb2ludCwge1xuICAgICAgYXJncyxcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgZXJyb3IsXG4gICAgICBmZXRjaGVkQXQ6IGZldGNoZWRBdCA/PyBEYXRlLm5vdygpLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmIChlcnJvciA9PT0gdHJ1ZSkge1xuICAgICAgY29udHJvbGxlci5zZXRFcnJvcihlbmRwb2ludCwgLi4uYXJncywgcmVzcG9uc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250cm9sbGVyLnNldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCByZXNwb25zZSk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBSUVBLFVBQVUsRUFDVkMsYUFBYSxFQUNiQyxZQUFZLFFBQ1AsYUFBYTtBQUdwQixNQUFNO0VBQUVDO0FBQWEsQ0FBQyxHQUFHRCxZQUFZO0FBRXJDLGVBQWUsU0FBU0UsZ0JBQWdCQSxDQUN0Q0MsUUFBbUIsR0FBRyxFQUFFLEVBQ1I7RUFDaEIsTUFBTUMsT0FBb0IsR0FBRyxFQUFFO0VBQy9CLE1BQU1DLFFBQVEsR0FBSUMsTUFBVyxJQUFLO0lBQ2hDRixPQUFPLENBQUNHLElBQUksQ0FBQ0QsTUFBTSxDQUFDO0lBQ3BCLE9BQU9FLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7RUFDMUIsQ0FBQztFQUNELE1BQU1DLFVBQVUsR0FBRyxJQUFJWixVQUFVLENBQUM7SUFBRU87RUFBUyxDQUFDLENBQUM7RUFDL0MsTUFBTU0sT0FHYSxHQUFHWixhQUFhLENBQUNXLFVBQVUsQ0FBQztFQUUvQ1AsUUFBUSxDQUFDUyxPQUFPLENBQUNDLE9BQU8sSUFBSTtJQUMxQkMsZUFBZSxDQUFDRCxPQUFPLEVBQUVBLE9BQU8sQ0FBQ0UsSUFBSSxFQUFFTCxVQUFVLENBQUM7RUFDcEQsQ0FBQyxDQUFDO0VBQ0YsT0FBT04sT0FBTyxDQUFDWSxNQUFNLENBQUNMLE9BQU8sRUFBRVYsWUFBWSxDQUFDO0FBQzlDO0FBRUEsU0FBU2EsZUFBZUEsQ0FDdEJELE9BQWdCLEVBQ2hCRSxJQUFXLEVBQ1hMLFVBQXNCLEVBQ3RCTyxTQUFrQixFQUNsQjtFQUNBO0VBQ0EsSUFBSTtJQUFFQztFQUFTLENBQUMsR0FBR0wsT0FBTztFQUMxQixNQUFNO0lBQUVNLFFBQVE7SUFBRUM7RUFBTSxDQUFDLEdBQUdQLE9BQU87RUFDbkMsSUFBSUgsVUFBVSxDQUFDRCxPQUFPLEVBQUU7SUFDdEJDLFVBQVUsQ0FBQ0QsT0FBTyxDQUFDUyxRQUFRLEVBQUU7TUFDM0JILElBQUk7TUFDSkksUUFBUTtNQUNSQyxLQUFLO01BQ0xILFNBQVMsRUFBRUEsU0FBUyxXQUFUQSxTQUFTLEdBQUlJLElBQUksQ0FBQ0MsR0FBRyxDQUFDO0lBQ25DLENBQUMsQ0FBQztFQUNKLENBQUMsTUFBTTtJQUNMLElBQUlGLEtBQUssS0FBSyxJQUFJLEVBQUU7TUFDbEJWLFVBQVUsQ0FBQ2EsUUFBUSxDQUFDTCxRQUFRLEVBQUUsR0FBR0gsSUFBSSxFQUFFSSxRQUFRLENBQUM7SUFDbEQsQ0FBQyxNQUFNO01BQ0xULFVBQVUsQ0FBQ2MsV0FBVyxDQUFDTixRQUFRLEVBQUUsR0FBR0gsSUFBSSxFQUFFSSxRQUFRLENBQUM7SUFDckQ7RUFDRjtBQUNGIiwiaWdub3JlTGlzdCI6W119