@eleven-am/xquery
Version:
XQuery is a sophisticated TypeScript wrapper for TanStack React Query, designed to enhance developer productivity with OpenAPI-generated clients. It enables developers to build and execute queries using fully type-safe factories instead of managing query
73 lines • 3.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.queryFactory = queryFactory;
const queryBuilders_1 = require("./queryBuilders");
function defaultMapQueryKey(queryKey) {
return queryKey;
}
function queryFactory({ clientGetter, mapResponse, mapQueryKey = defaultMapQueryKey, queryClientGetter }) {
function createQueries(namespace, definition) {
const result = {};
result.all = {
queryKey: [namespace],
};
for (const [key, value] of Object.entries(definition)) {
if (typeof value === 'function') {
result[key] = (...params) => (0, queryBuilders_1.buildQueryKey)(namespace, key, mapQueryKey, clientGetter, mapResponse, value(...params));
}
else {
result[key] = (0, queryBuilders_1.buildQueryKey)(namespace, key, mapQueryKey, clientGetter, mapResponse, value);
}
}
return result;
}
function createMutations(definition) {
const result = {};
for (const [key, value] of Object.entries(definition)) {
if (typeof value === 'function') {
result[key] = ((...params) => (0, queryBuilders_1.buildMutationOptions)(queryClientGetter, clientGetter, mapResponse, value(...params)));
}
else {
result[key] = (0, queryBuilders_1.buildMutationOptions)(queryClientGetter, clientGetter, mapResponse, value);
}
}
return result;
}
function createActions(namespace, definition) {
const result = {};
result.all = {
queryKey: [namespace],
};
for (const [key, value] of Object.entries(definition)) {
if (typeof value === 'function') {
result[key] = (...params) => (0, queryBuilders_1.buildActionOptions)(namespace, key, mapQueryKey, queryClientGetter, clientGetter, mapResponse, value(...params));
}
else {
result[key] = (0, queryBuilders_1.buildActionOptions)(namespace, key, mapQueryKey, queryClientGetter, clientGetter, mapResponse, value);
}
}
return result;
}
function createInfiniteQueries(namespace, definition) {
const result = {};
result.all = {
queryKey: [namespace],
};
for (const [key, value] of Object.entries(definition)) {
if (typeof value === 'function') {
result[key] = (...params) => (0, queryBuilders_1.buildInfiniteOptions)(namespace, key, mapQueryKey, queryClientGetter, clientGetter, mapResponse, value(...params));
}
else {
result[key] = (0, queryBuilders_1.buildInfiniteOptions)(namespace, key, mapQueryKey, queryClientGetter, clientGetter, mapResponse, value);
}
}
return result;
}
return {
createQueries,
createMutations,
createActions,
createInfiniteQueries,
};
}
//# sourceMappingURL=factory.js.map