UNPKG

@sfutureapps/nextquery

Version:

A simple package to api query combine with ReactQuery, Moment and lodash

156 lines (146 loc) 4.66 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { Mutate: () => Mutate, NextQueryClient: () => NextQueryClient, NextQueryClientProvider: () => NextQueryClientProvider, Query: () => Query, create: () => create, useGet: () => useGet, useLodash: () => useLodash, useMoment: () => useMoment, useNextQueryClient: () => useNextQueryClient, usePost: () => usePost }); module.exports = __toCommonJS(index_exports); // src/Query.ts var apiUrl = process.env.NEXT_PUBLIC_API_URL; if (!apiUrl) { throw new Error("NEXT_PUBLIC_API_URL is not defined in the .env file"); } var Post = async ({ endpoint, data, revalidate = 0, isExternalUrl = false }) => { try { const options = { method: "POST", headers: { "Content-Type": "application/json" }, next: { revalidate } }; if (data) { options.body = JSON.stringify(data); } const url = !isExternalUrl ? `${apiUrl}${endpoint}` : endpoint; const response = await fetch(url, options); if (!response.ok) { throw new Error("HTTP error! status: " + response.status); } return response.json(); } catch (error) { } }; var Get = async ({ endpoint, data, revalidate = 0, isExternalUrl = false }) => { try { const options = { method: "GET", headers: { "Content-Type": "application/json" }, next: { revalidate } }; if (data) { options.body = JSON.stringify(data); } const url = !isExternalUrl ? `${apiUrl}${endpoint}` : endpoint; const response = await fetch(url, options); if (!response.ok) { throw new Error("HTTP error! status: " + response.status); } return response.json(); } catch (error) { return error; } }; // src/ReactQuery.ts var import_react_query = require("@tanstack/react-query"); var Mutate = ({ key, endpoint }) => { return (0, import_react_query.useMutation)({ mutationKey: [key], mutationFn: async (data = null) => { return await Post({ endpoint, data }); } }); }; var Query = ({ key, endpoint, data }) => { return (0, import_react_query.useQuery)({ queryKey: [key], queryFn: async () => { const _data = data ?? null; return await Post({ endpoint, data: _data }); } }); }; // src/NextQueryClient.ts var import_react_query2 = require("@tanstack/react-query"); var NextQueryClient = import_react_query2.QueryClient; var useNextQueryClient = import_react_query2.useQueryClient; // src/NextQueryClientProvider.ts var import_react_query3 = require("@tanstack/react-query"); var NextQueryClientProvider = import_react_query3.QueryClientProvider; // src/zustand.ts var import_zustand = require("zustand"); var create = import_zustand.create; // src/lodash.ts var import_lodash = __toESM(require("lodash")); var useLodash = import_lodash.default; // src/moment.ts var import_moment = __toESM(require("moment")); var useMoment = import_moment.default; // src/Api.ts var usePost = Post; var useGet = Get; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Mutate, NextQueryClient, NextQueryClientProvider, Query, create, useGet, useLodash, useMoment, useNextQueryClient, usePost });