vormiaqueryjs
Version:
Vormia Query Js - A npm package for query management with VormiaPHP laravel Backend application
55 lines (54 loc) • 1.67 kB
JavaScript
import { createResource } from "solid-js";
import { getGlobalVormiaClient } from "../client/createVormiaClient.mjs";
import { VormiaError } from "../client/utils/VormiaError.mjs";
function createVormiaResource(options) {
const client = getGlobalVormiaClient();
const {
endpoint,
method = "GET",
params,
data: bodyData,
headers,
transform,
...resourceOptions
} = options;
const fetchData = async () => {
var _a, _b;
try {
const config = {
method,
params: method === "GET" ? params : void 0,
data: method !== "GET" ? bodyData || params : void 0,
headers
};
const response = await client.request({
url: endpoint,
...config
});
let result = response.data;
if (transform) {
result = transform(result);
}
return result;
} catch (error) {
const errorMessage = error instanceof Error ? error.message : "An unknown error occurred";
const status = (_a = error == null ? void 0 : error.response) == null ? void 0 : _a.status;
const errorData = (_b = error == null ? void 0 : error.response) == null ? void 0 : _b.data;
throw new VormiaError(errorMessage, status, errorData);
}
};
const [resource] = createResource(
resourceOptions.autoFetch !== false ? fetchData : void 0,
resourceOptions
);
const enhancedRefetch = async (opts = {}) => {
({ ...options, ...opts });
const response = await fetchData();
return response;
};
return [resource, { ...resource.actions, refetch: enhancedRefetch }];
}
export {
createVormiaResource
};
//# sourceMappingURL=solid.mjs.map