@whop/api
Version:
Whop API client
95 lines (92 loc) • 2.49 kB
JavaScript
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