@robinpath/api
Advanced tools
+15
-3
| { | ||
| "name": "@robinpath/api", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "publishConfig": { | ||
@@ -23,8 +23,20 @@ "access": "public" | ||
| "peerDependencies": { | ||
| "@wiredwp/robinpath": ">=0.20.0" | ||
| "@robinpath/core": ">=0.20.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@wiredwp/robinpath": "^0.30.1", | ||
| "@robinpath/core": "^0.30.1", | ||
| "typescript": "^5.6.0" | ||
| }, | ||
| "description": "HTTP client for making requests to external APIs with profiles, auth, download/upload, and auto-JSON parsing", | ||
| "keywords": [ | ||
| "api", | ||
| "web" | ||
| ], | ||
| "license": "MIT", | ||
| "robinpath": { | ||
| "category": "web", | ||
| "type": "utility", | ||
| "auth": "api-key", | ||
| "functionCount": 12 | ||
| } | ||
| } |
-165
| import type { BuiltinHandler } from "@wiredwp/robinpath"; | ||
| export declare const ApiFunctions: Record<string, BuiltinHandler>; | ||
| export declare const ApiFunctionMetadata: { | ||
| get: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| post: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| put: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| patch: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| delete: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| head: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| download: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| upload: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| createProfile: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| setAuth: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| setHeaders: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| request: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| }; | ||
| export declare const ApiModuleMetadata: { | ||
| description: string; | ||
| methods: string[]; | ||
| }; | ||
| //# sourceMappingURL=api.d.ts.map |
| {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAC;AA2Z3F,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAavD,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkI/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAQ7B,CAAC"} |
-506
| import { readFileSync, writeFileSync } from "node:fs"; | ||
| import { basename } from "node:path"; | ||
| const profiles = new Map(); | ||
| function getProfile(id) { | ||
| if (id && profiles.has(id)) | ||
| return profiles.get(id); | ||
| return { baseUrl: "", headers: {}, auth: null, timeout: 30000 }; | ||
| } | ||
| // ── Core Request Helper ───────────────────────────────────────────── | ||
| async function doRequest(method, url, body, opts) { | ||
| const profileId = typeof opts.profile === "string" ? opts.profile : undefined; | ||
| const profile = getProfile(profileId); | ||
| // Resolve URL | ||
| let resolvedUrl = url; | ||
| if (!/^https?:\/\//i.test(resolvedUrl) && profile.baseUrl) { | ||
| const base = profile.baseUrl.endsWith("/") ? profile.baseUrl : profile.baseUrl + "/"; | ||
| const path = resolvedUrl.startsWith("/") ? resolvedUrl.slice(1) : resolvedUrl; | ||
| resolvedUrl = base + path; | ||
| } | ||
| // Merge headers: profile defaults < opts.headers | ||
| const headers = { ...profile.headers }; | ||
| if (typeof opts.headers === "object" && opts.headers !== null) { | ||
| for (const [k, v] of Object.entries(opts.headers)) { | ||
| headers[k] = String(v); | ||
| } | ||
| } | ||
| // Apply auth | ||
| const auth = profile.auth; | ||
| if (auth) { | ||
| switch (auth.type) { | ||
| case "bearer": | ||
| headers["Authorization"] = `Bearer ${auth.token}`; | ||
| break; | ||
| case "basic": | ||
| headers["Authorization"] = `Basic ${Buffer.from(auth.token).toString("base64")}`; | ||
| break; | ||
| case "apikey": | ||
| headers[auth.headerName ?? "X-API-Key"] = auth.token; | ||
| break; | ||
| } | ||
| } | ||
| // Prepare body | ||
| let requestBody; | ||
| if (body !== undefined && body !== null) { | ||
| if (typeof body === "object") { | ||
| if (!headers["Content-Type"]) | ||
| headers["Content-Type"] = "application/json"; | ||
| requestBody = JSON.stringify(body); | ||
| } | ||
| else { | ||
| requestBody = String(body); | ||
| } | ||
| } | ||
| // Timeout | ||
| const timeout = typeof opts.timeout === "number" ? opts.timeout : profile.timeout; | ||
| // Execute request | ||
| const response = await fetch(resolvedUrl, { | ||
| method: method.toUpperCase(), | ||
| headers, | ||
| body: requestBody, | ||
| signal: AbortSignal.timeout(timeout), | ||
| }); | ||
| // Parse response body | ||
| const contentType = response.headers.get("content-type") ?? ""; | ||
| let responseBody; | ||
| if (contentType.includes("json")) { | ||
| responseBody = (await response.json()); | ||
| } | ||
| else { | ||
| responseBody = await response.text(); | ||
| } | ||
| // Full response or body-only | ||
| if (opts.fullResponse === true) { | ||
| return { | ||
| status: response.status, | ||
| ok: response.ok, | ||
| headers: Object.fromEntries(response.headers.entries()), | ||
| body: responseBody, | ||
| }; | ||
| } | ||
| return responseBody; | ||
| } | ||
| // ── Function Handlers ─────────────────────────────────────────────── | ||
| const get = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| return doRequest("GET", url, undefined, opts); | ||
| }; | ||
| const post = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const body = args[1] ?? null; | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| return doRequest("POST", url, body, opts); | ||
| }; | ||
| const put = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const body = args[1] ?? null; | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| return doRequest("PUT", url, body, opts); | ||
| }; | ||
| const patch = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const body = args[1] ?? null; | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| return doRequest("PATCH", url, body, opts); | ||
| }; | ||
| const del = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| return doRequest("DELETE", url, undefined, opts); | ||
| }; | ||
| const head = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| const profileId = typeof opts.profile === "string" ? opts.profile : undefined; | ||
| const profile = getProfile(profileId); | ||
| let resolvedUrl = url; | ||
| if (!/^https?:\/\//i.test(resolvedUrl) && profile.baseUrl) { | ||
| const base = profile.baseUrl.endsWith("/") ? profile.baseUrl : profile.baseUrl + "/"; | ||
| const path = resolvedUrl.startsWith("/") ? resolvedUrl.slice(1) : resolvedUrl; | ||
| resolvedUrl = base + path; | ||
| } | ||
| const headers = { ...profile.headers }; | ||
| if (typeof opts.headers === "object" && opts.headers !== null) { | ||
| for (const [k, v] of Object.entries(opts.headers)) { | ||
| headers[k] = String(v); | ||
| } | ||
| } | ||
| const auth = profile.auth; | ||
| if (auth) { | ||
| switch (auth.type) { | ||
| case "bearer": | ||
| headers["Authorization"] = `Bearer ${auth.token}`; | ||
| break; | ||
| case "basic": | ||
| headers["Authorization"] = `Basic ${Buffer.from(auth.token).toString("base64")}`; | ||
| break; | ||
| case "apikey": | ||
| headers[auth.headerName ?? "X-API-Key"] = auth.token; | ||
| break; | ||
| } | ||
| } | ||
| const timeout = typeof opts.timeout === "number" ? opts.timeout : profile.timeout; | ||
| const response = await fetch(resolvedUrl, { | ||
| method: "HEAD", | ||
| headers, | ||
| signal: AbortSignal.timeout(timeout), | ||
| }); | ||
| return Object.fromEntries(response.headers.entries()); | ||
| }; | ||
| const download = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const filePath = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| if (!filePath) | ||
| throw new Error("File path is required"); | ||
| const profileId = typeof opts.profile === "string" ? opts.profile : undefined; | ||
| const profile = getProfile(profileId); | ||
| let resolvedUrl = url; | ||
| if (!/^https?:\/\//i.test(resolvedUrl) && profile.baseUrl) { | ||
| const base = profile.baseUrl.endsWith("/") ? profile.baseUrl : profile.baseUrl + "/"; | ||
| const path = resolvedUrl.startsWith("/") ? resolvedUrl.slice(1) : resolvedUrl; | ||
| resolvedUrl = base + path; | ||
| } | ||
| const headers = { ...profile.headers }; | ||
| if (typeof opts.headers === "object" && opts.headers !== null) { | ||
| for (const [k, v] of Object.entries(opts.headers)) { | ||
| headers[k] = String(v); | ||
| } | ||
| } | ||
| const auth = profile.auth; | ||
| if (auth) { | ||
| switch (auth.type) { | ||
| case "bearer": | ||
| headers["Authorization"] = `Bearer ${auth.token}`; | ||
| break; | ||
| case "basic": | ||
| headers["Authorization"] = `Basic ${Buffer.from(auth.token).toString("base64")}`; | ||
| break; | ||
| case "apikey": | ||
| headers[auth.headerName ?? "X-API-Key"] = auth.token; | ||
| break; | ||
| } | ||
| } | ||
| const timeout = typeof opts.timeout === "number" ? opts.timeout : profile.timeout; | ||
| const response = await fetch(resolvedUrl, { | ||
| method: "GET", | ||
| headers, | ||
| signal: AbortSignal.timeout(timeout), | ||
| }); | ||
| if (!response.ok) { | ||
| throw new Error(`Download failed: ${response.status} ${response.statusText}`); | ||
| } | ||
| const arrayBuffer = await response.arrayBuffer(); | ||
| const buffer = Buffer.from(arrayBuffer); | ||
| writeFileSync(filePath, buffer); | ||
| return { | ||
| path: filePath, | ||
| size: buffer.length, | ||
| contentType: response.headers.get("content-type") ?? "application/octet-stream", | ||
| }; | ||
| }; | ||
| const upload = async (args) => { | ||
| const url = String(args[0] ?? ""); | ||
| const filePath = String(args[1] ?? ""); | ||
| const fieldName = typeof args[2] === "string" ? args[2] : "file"; | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| if (!filePath) | ||
| throw new Error("File path is required"); | ||
| const profileId = typeof opts.profile === "string" ? opts.profile : undefined; | ||
| const profile = getProfile(profileId); | ||
| let resolvedUrl = url; | ||
| if (!/^https?:\/\//i.test(resolvedUrl) && profile.baseUrl) { | ||
| const base = profile.baseUrl.endsWith("/") ? profile.baseUrl : profile.baseUrl + "/"; | ||
| const path = resolvedUrl.startsWith("/") ? resolvedUrl.slice(1) : resolvedUrl; | ||
| resolvedUrl = base + path; | ||
| } | ||
| const headers = { ...profile.headers }; | ||
| if (typeof opts.headers === "object" && opts.headers !== null) { | ||
| for (const [k, v] of Object.entries(opts.headers)) { | ||
| headers[k] = String(v); | ||
| } | ||
| } | ||
| const auth = profile.auth; | ||
| if (auth) { | ||
| switch (auth.type) { | ||
| case "bearer": | ||
| headers["Authorization"] = `Bearer ${auth.token}`; | ||
| break; | ||
| case "basic": | ||
| headers["Authorization"] = `Basic ${Buffer.from(auth.token).toString("base64")}`; | ||
| break; | ||
| case "apikey": | ||
| headers[auth.headerName ?? "X-API-Key"] = auth.token; | ||
| break; | ||
| } | ||
| } | ||
| const timeout = typeof opts.timeout === "number" ? opts.timeout : profile.timeout; | ||
| // Read file and create FormData | ||
| const fileBuffer = readFileSync(filePath); | ||
| const fileName = basename(filePath); | ||
| const blob = new Blob([fileBuffer]); | ||
| const formData = new FormData(); | ||
| formData.append(fieldName, blob, fileName); | ||
| // Append extra fields if provided | ||
| if (typeof opts.fields === "object" && opts.fields !== null) { | ||
| for (const [k, v] of Object.entries(opts.fields)) { | ||
| formData.append(k, String(v)); | ||
| } | ||
| } | ||
| // Do NOT set Content-Type — fetch sets multipart boundary automatically | ||
| delete headers["Content-Type"]; | ||
| const response = await fetch(resolvedUrl, { | ||
| method: "POST", | ||
| headers, | ||
| body: formData, | ||
| signal: AbortSignal.timeout(timeout), | ||
| }); | ||
| const contentType = response.headers.get("content-type") ?? ""; | ||
| let responseBody; | ||
| if (contentType.includes("json")) { | ||
| responseBody = (await response.json()); | ||
| } | ||
| else { | ||
| responseBody = await response.text(); | ||
| } | ||
| return { | ||
| status: response.status, | ||
| ok: response.ok, | ||
| body: responseBody, | ||
| }; | ||
| }; | ||
| const createProfile = (args) => { | ||
| const id = String(args[0] ?? ""); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!id) | ||
| throw new Error("Profile ID is required"); | ||
| const config = { | ||
| baseUrl: typeof opts.baseUrl === "string" ? opts.baseUrl : "", | ||
| headers: (typeof opts.headers === "object" && opts.headers !== null | ||
| ? Object.fromEntries(Object.entries(opts.headers).map(([k, v]) => [k, String(v)])) | ||
| : {}), | ||
| auth: null, | ||
| timeout: typeof opts.timeout === "number" ? opts.timeout : 30000, | ||
| }; | ||
| profiles.set(id, config); | ||
| return { id, ...config }; | ||
| }; | ||
| const setAuth = (args) => { | ||
| const profileId = String(args[0] ?? ""); | ||
| const type = String(args[1] ?? ""); | ||
| const token = String(args[2] ?? ""); | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| if (!profileId) | ||
| throw new Error("Profile ID is required"); | ||
| if (!type) | ||
| throw new Error("Auth type is required"); | ||
| if (!token) | ||
| throw new Error("Token is required"); | ||
| if (!["bearer", "basic", "apikey"].includes(type)) { | ||
| throw new Error(`Invalid auth type "${type}". Must be "bearer", "basic", or "apikey".`); | ||
| } | ||
| const profile = profiles.get(profileId); | ||
| if (!profile) | ||
| throw new Error(`Profile "${profileId}" not found. Create it first with api.createProfile.`); | ||
| profile.auth = { | ||
| type, | ||
| token, | ||
| ...(type === "apikey" && typeof opts.headerName === "string" ? { headerName: opts.headerName } : {}), | ||
| }; | ||
| return { profileId, auth: profile.auth }; | ||
| }; | ||
| const setHeaders = (args) => { | ||
| const profileId = String(args[0] ?? ""); | ||
| const newHeaders = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| if (!profileId) | ||
| throw new Error("Profile ID is required"); | ||
| const profile = profiles.get(profileId); | ||
| if (!profile) | ||
| throw new Error(`Profile "${profileId}" not found. Create it first with api.createProfile.`); | ||
| for (const [k, v] of Object.entries(newHeaders)) { | ||
| profile.headers[k] = String(v); | ||
| } | ||
| return { profileId, headers: profile.headers }; | ||
| }; | ||
| const request = async (args) => { | ||
| const method = String(args[0] ?? "GET").toUpperCase(); | ||
| const url = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!url) | ||
| throw new Error("URL is required"); | ||
| const body = opts.body; | ||
| return doRequest(method, url, body, opts); | ||
| }; | ||
| // ── Exports ───────────────────────────────────────────────────────── | ||
| export const ApiFunctions = { | ||
| get, | ||
| post, | ||
| put, | ||
| patch, | ||
| delete: del, | ||
| head, | ||
| download, | ||
| upload, | ||
| createProfile, | ||
| setAuth, | ||
| setHeaders, | ||
| request, | ||
| }; | ||
| export const ApiFunctionMetadata = { | ||
| get: { | ||
| description: "Send a GET request to a URL and return the response body (auto-parses JSON)", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "Request URL (absolute, or relative if profile has baseUrl)", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout, fullResponse}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "any", | ||
| returnDescription: "Parsed JSON body, text string, or full response object if fullResponse is true", | ||
| example: 'api.get "https://api.example.com/users"', | ||
| }, | ||
| post: { | ||
| description: "Send a POST request with a JSON body", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "Request URL", formInputType: "text", required: true }, | ||
| { name: "body", dataType: "any", description: "Request body (objects auto-serialized to JSON)", formInputType: "json", required: true }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout, fullResponse}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "any", | ||
| returnDescription: "Parsed JSON body or text string", | ||
| example: 'api.post "https://api.example.com/users" {"name": "Alice", "email": "alice@example.com"}', | ||
| }, | ||
| put: { | ||
| description: "Send a PUT request with a JSON body", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "Request URL", formInputType: "text", required: true }, | ||
| { name: "body", dataType: "any", description: "Request body (objects auto-serialized to JSON)", formInputType: "json", required: true }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout, fullResponse}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "any", | ||
| returnDescription: "Parsed JSON body or text string", | ||
| example: 'api.put "https://api.example.com/users/1" {"name": "Bob"}', | ||
| }, | ||
| patch: { | ||
| description: "Send a PATCH request with a partial JSON body", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "Request URL", formInputType: "text", required: true }, | ||
| { name: "body", dataType: "any", description: "Partial update body", formInputType: "json", required: true }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout, fullResponse}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "any", | ||
| returnDescription: "Parsed JSON body or text string", | ||
| example: 'api.patch "https://api.example.com/users/1" {"email": "new@example.com"}', | ||
| }, | ||
| delete: { | ||
| description: "Send a DELETE request", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "Request URL", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout, fullResponse}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "any", | ||
| returnDescription: "Parsed JSON body or text string", | ||
| example: 'api.delete "https://api.example.com/users/1"', | ||
| }, | ||
| head: { | ||
| description: "Send a HEAD request and return response headers only", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "Request URL", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "Response headers as key-value object", | ||
| example: 'api.head "https://api.example.com/files/doc.pdf"', | ||
| }, | ||
| download: { | ||
| description: "Download a file from a URL and save it to disk", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "URL of the file to download", formInputType: "text", required: true }, | ||
| { name: "filePath", dataType: "string", description: "Local path to save the file", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{path, size, contentType}", | ||
| example: 'api.download "https://example.com/report.pdf" "./report.pdf"', | ||
| }, | ||
| upload: { | ||
| description: "Upload a file as multipart/form-data", | ||
| parameters: [ | ||
| { name: "url", dataType: "string", description: "Upload endpoint URL", formInputType: "text", required: true }, | ||
| { name: "filePath", dataType: "string", description: "Local path of the file to upload", formInputType: "text", required: true }, | ||
| { name: "fieldName", dataType: "string", description: "Form field name (default: 'file')", formInputType: "text", required: false }, | ||
| { name: "options", dataType: "object", description: "{profile, headers, timeout, fields}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{status, ok, body}", | ||
| example: 'api.upload "https://api.example.com/upload" "./photo.jpg" "image"', | ||
| }, | ||
| createProfile: { | ||
| description: "Create a named API profile with base URL, default headers, and timeout", | ||
| parameters: [ | ||
| { name: "id", dataType: "string", description: "Unique profile identifier", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{baseUrl, headers, timeout}", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "The created profile configuration", | ||
| example: 'api.createProfile "github" {"baseUrl": "https://api.github.com", "headers": {"Accept": "application/vnd.github.v3+json"}}', | ||
| }, | ||
| setAuth: { | ||
| description: "Set authentication on an existing profile", | ||
| parameters: [ | ||
| { name: "profileId", dataType: "string", description: "Profile ID to configure", formInputType: "text", required: true }, | ||
| { name: "type", dataType: "string", description: "Auth type: 'bearer', 'basic', or 'apikey'", formInputType: "text", required: true }, | ||
| { name: "token", dataType: "string", description: "Auth token or credentials (for basic: 'user:pass')", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{headerName} — custom header name for apikey auth", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{profileId, auth}", | ||
| example: 'api.setAuth "github" "bearer" "ghp_xxxxxxxxxxxx"', | ||
| }, | ||
| setHeaders: { | ||
| description: "Merge additional default headers into an existing profile", | ||
| parameters: [ | ||
| { name: "profileId", dataType: "string", description: "Profile ID to update", formInputType: "text", required: true }, | ||
| { name: "headers", dataType: "object", description: "Headers to merge into profile defaults", formInputType: "json", required: true }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{profileId, headers}", | ||
| example: 'api.setHeaders "github" {"X-Custom": "value"}', | ||
| }, | ||
| request: { | ||
| description: "Send a generic HTTP request with an explicit method string", | ||
| parameters: [ | ||
| { name: "method", dataType: "string", description: "HTTP method (GET, POST, PUT, PATCH, DELETE, etc.)", formInputType: "text", required: true }, | ||
| { name: "url", dataType: "string", description: "Request URL", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{body, profile, headers, timeout, fullResponse}", formInputType: "json", required: false }, | ||
| ], | ||
| returnType: "any", | ||
| returnDescription: "Parsed JSON body, text string, or full response object", | ||
| example: 'api.request "OPTIONS" "https://api.example.com/resource"', | ||
| }, | ||
| }; | ||
| export const ApiModuleMetadata = { | ||
| description: "HTTP client for making requests to external APIs with profiles, auth, download/upload, and auto-JSON parsing", | ||
| methods: [ | ||
| "get", "post", "put", "patch", "delete", "head", | ||
| "download", "upload", | ||
| "createProfile", "setAuth", "setHeaders", | ||
| "request", | ||
| ], | ||
| }; | ||
| //# sourceMappingURL=api.js.map |
| {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"} |
| import type { ModuleAdapter } from "@wiredwp/robinpath"; | ||
| declare const ApiModule: ModuleAdapter; | ||
| export default ApiModule; | ||
| export { ApiModule }; | ||
| export { ApiFunctions, ApiFunctionMetadata, ApiModuleMetadata } from "./api.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,SAAS,EAAE,aAMhB,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"} |
| import { ApiFunctions, ApiFunctionMetadata, ApiModuleMetadata } from "./api.js"; | ||
| const ApiModule = { | ||
| name: "api", | ||
| functions: ApiFunctions, | ||
| functionMetadata: ApiFunctionMetadata, | ||
| moduleMetadata: ApiModuleMetadata, | ||
| global: false, | ||
| }; // as ModuleAdapter | ||
| export default ApiModule; | ||
| export { ApiModule }; | ||
| export { ApiFunctions, ApiFunctionMetadata, ApiModuleMetadata } from "./api.js"; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEhF,MAAM,SAAS,GAAkB;IAC/B,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,YAAY;IACvB,gBAAgB,EAAE,mBAA0B;IAC5C,cAAc,EAAE,iBAAwB;IACxC,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"} |
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Network access
Supply chain riskThis module accesses the network.
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
No License Found
LicenseLicense information could not be found.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
0
-100%1
-50%2
-60%4036
-92.61%2
-80%0
-100%