UNPKG

guardz-axios

Version:

Type-safe HTTP client built on top of Axios with runtime validation using guardz. Part of the guardz ecosystem for comprehensive TypeScript type safety.

40 lines 2.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSafeApiContext = createSafeApiContext; const axios_1 = __importDefault(require("axios")); const executeRequest_1 = require("../internal/executeRequest"); const safe_1 = require("../functions/safe"); /** * Pattern 4: Context/Provider (React style) * Usage: const safeApi = createSafeApiContext({ baseURL: '...', defaultTolerance: false }); * const result = await safeApi.get('/users/1', { guard: isUser }); */ function createSafeApiContext(contextConfig = {}) { const instance = contextConfig.axiosInstance || axios_1.default.create({ baseURL: contextConfig.baseURL, timeout: contextConfig.timeout, headers: contextConfig.headers, }); return { get: (url, config, axiosConfig) => (0, executeRequest_1.executeRequest)({ ...axiosConfig, url, method: "GET" }, { ...contextConfig, ...config, axiosInstance: instance }), post: (url, data, config, axiosConfig) => (0, executeRequest_1.executeRequest)({ ...axiosConfig, url, method: "POST", data }, { ...contextConfig, ...config, axiosInstance: instance }), put: (url, data, config, axiosConfig) => (0, executeRequest_1.executeRequest)({ ...axiosConfig, url, method: "PUT", data }, { ...contextConfig, ...config, axiosInstance: instance }), patch: (url, data, config, axiosConfig) => (0, executeRequest_1.executeRequest)({ ...axiosConfig, url, method: "PATCH", data }, { ...contextConfig, ...config, axiosInstance: instance }), delete: (url, config, axiosConfig) => (0, executeRequest_1.executeRequest)({ ...axiosConfig, url, method: "DELETE" }, { ...contextConfig, ...config, axiosInstance: instance }), // Provide builder access safe: () => { const builder = (0, safe_1.safe)().baseURL(contextConfig.baseURL || ""); if (contextConfig.timeout) { builder.timeout(contextConfig.timeout); } return builder; }, // Direct instance access instance, }; } //# sourceMappingURL=createSafeApiContext.js.map