UNPKG

@whop/api

Version:
95 lines (92 loc) 2.49 kB
import { MULTIPART_UPLOAD_CHUNK_SIZE, getUserToken, makeUploadAttachmentFunction, makeUserTokenVerifier, makeWebhookValidator, makeWhopClientSdk, makeWhopServerSdk, proto_exports, verifyUserToken } from "./chunk-Y2CEOSBS.mjs"; // src/attachments/upload-part-browser.ts async function uploadPartImpl({ url, fullData, partNumber, headers, onProgress, signal }) { const offset = (partNumber - 1) * MULTIPART_UPLOAD_CHUNK_SIZE; const data = fullData.slice( offset, Math.min(offset + MULTIPART_UPLOAD_CHUNK_SIZE, fullData.size) ); signal?.throwIfAborted(); const cleanup = []; return new Promise((resolve, reject) => { const fullURL = new URL(url); const xhr = new XMLHttpRequest(); if (signal) { const onAbort = () => { xhr.abort(); reject(new Error("Upload aborted")); }; signal.addEventListener("abort", onAbort); cleanup.push(() => signal.removeEventListener("abort", onAbort)); } xhr.upload.onprogress = (event) => { onProgress?.(event); }; xhr.onload = () => { if (xhr.status >= 200 && xhr.status < 300) { const etag = xhr.getResponseHeader("Etag"); if (!etag) { reject(new Error("Could not upload file")); return; } resolve(etag.slice(1, -1)); } else { reject(new Error("Could not upload file")); } }; xhr.onerror = () => { reject(new Error("Could not upload file")); }; xhr.open("PUT", fullURL.href); if (headers) { for (const [key, value] of Object.entries(headers)) { xhr.setRequestHeader(key, value); } } xhr.send(data); onProgress?.(new ProgressEvent("upload", { total: data.size, loaded: 0 })); }).finally(() => { for (const fn of cleanup) { fn(); } }); } // src/sdk/client-sdk-browser.ts var uploadFile = makeUploadAttachmentFunction({ uploadPart: uploadPartImpl }); var sdk = makeWhopClientSdk({ uploadFile }); function WhopClientSdk(options) { return sdk(options); } // src/sdk/server-sdk-browser.ts var uploadFile2 = makeUploadAttachmentFunction({ uploadPart: uploadPartImpl }); var sdk2 = makeWhopServerSdk({ uploadFile: uploadFile2 }); function WhopServerSdk(options) { return sdk2(options); } export { WhopClientSdk, WhopServerSdk, getUserToken, makeUserTokenVerifier, makeWebhookValidator, proto_exports as proto, verifyUserToken }; //# sourceMappingURL=index.browser.mjs.map