@n1ru4l/graphql-live-query-patch
Version:
Shared logic for building live query patch implementations.
23 lines (22 loc) • 814 B
JavaScript
import { createLiveQueryPatchGenerator, } from "./createLiveQueryPatchGenerator.js";
const isAsyncIterable = (value) => {
return (typeof value === "object" && value !== null && Symbol.asyncIterator in value);
};
/**
* after-ware for wrapping execute in order to generate live query patches.
*/
export const createApplyLiveQueryPatchGenerator = (generatePatch) => {
return (executionResult) => {
const makePatch = createLiveQueryPatchGenerator(generatePatch);
const handler = (result) => {
if (isAsyncIterable(result)) {
return makePatch(result);
}
return result;
};
if (executionResult instanceof Promise) {
return executionResult.then(handler);
}
return handler(executionResult);
};
};