UNPKG

@vercel/blob

Version:

The Vercel Blob JavaScript API client

204 lines (199 loc) 5.6 kB
import { BlobAccessError, BlobClientTokenExpiredError, BlobContentTypeNotAllowedError, BlobError, BlobFileTooLargeError, BlobNotFoundError, BlobPathnameMismatchError, BlobRequestAbortedError, BlobServiceNotAvailable, BlobServiceRateLimited, BlobStoreNotFoundError, BlobStoreSuspendedError, BlobUnknownError, MAXIMUM_PATHNAME_LENGTH, createCompleteMultipartUploadMethod, createCreateMultipartUploadMethod, createCreateMultipartUploaderMethod, createFolder, createPutMethod, createUploadPartMethod, disallowedPathnameCharacters, getDownloadUrl, requestApi } from "./chunk-VMBKF2I4.js"; // src/del.ts async function del(url, options) { await requestApi( "/delete", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ urls: Array.isArray(url) ? url : [url] }), signal: options == null ? void 0 : options.abortSignal }, options ); } // src/head.ts async function head(url, options) { const searchParams = new URLSearchParams({ url }); const response = await requestApi( `?${searchParams.toString()}`, // HEAD can't have body as a response, so we use GET { method: "GET", signal: options == null ? void 0 : options.abortSignal }, options ); return { url: response.url, downloadUrl: response.downloadUrl, pathname: response.pathname, size: response.size, contentType: response.contentType, contentDisposition: response.contentDisposition, cacheControl: response.cacheControl, uploadedAt: new Date(response.uploadedAt) }; } // src/list.ts async function list(options) { var _a; const searchParams = new URLSearchParams(); if (options == null ? void 0 : options.limit) { searchParams.set("limit", options.limit.toString()); } if (options == null ? void 0 : options.prefix) { searchParams.set("prefix", options.prefix); } if (options == null ? void 0 : options.cursor) { searchParams.set("cursor", options.cursor); } if (options == null ? void 0 : options.mode) { searchParams.set("mode", options.mode); } const response = await requestApi( `?${searchParams.toString()}`, { method: "GET", signal: options == null ? void 0 : options.abortSignal }, options ); if ((options == null ? void 0 : options.mode) === "folded") { return { folders: (_a = response.folders) != null ? _a : [], cursor: response.cursor, hasMore: response.hasMore, blobs: response.blobs.map(mapBlobResult) }; } return { cursor: response.cursor, hasMore: response.hasMore, blobs: response.blobs.map(mapBlobResult) }; } function mapBlobResult(blobResult) { return { url: blobResult.url, downloadUrl: blobResult.downloadUrl, pathname: blobResult.pathname, size: blobResult.size, uploadedAt: new Date(blobResult.uploadedAt) }; } // src/copy.ts async function copy(fromUrl, toPathname, options) { if (!options) { throw new BlobError("missing options, see usage"); } if (options.access !== "public") { throw new BlobError('access must be "public"'); } if (toPathname.length > MAXIMUM_PATHNAME_LENGTH) { throw new BlobError( `pathname is too long, maximum length is ${MAXIMUM_PATHNAME_LENGTH}` ); } for (const invalidCharacter of disallowedPathnameCharacters) { if (toPathname.includes(invalidCharacter)) { throw new BlobError( `pathname cannot contain "${invalidCharacter}", please encode it if needed` ); } } const headers = {}; if (options.addRandomSuffix !== void 0) { headers["x-add-random-suffix"] = options.addRandomSuffix ? "1" : "0"; } if (options.contentType) { headers["x-content-type"] = options.contentType; } if (options.cacheControlMaxAge !== void 0) { headers["x-cache-control-max-age"] = options.cacheControlMaxAge.toString(); } const params = new URLSearchParams({ pathname: toPathname, fromUrl }); const response = await requestApi( `?${params.toString()}`, { method: "PUT", headers, signal: options.abortSignal }, options ); return { url: response.url, downloadUrl: response.downloadUrl, pathname: response.pathname, contentType: response.contentType, contentDisposition: response.contentDisposition }; } // src/index.ts var put = createPutMethod({ allowedOptions: ["cacheControlMaxAge", "addRandomSuffix", "contentType"] }); var createMultipartUpload = createCreateMultipartUploadMethod({ allowedOptions: ["cacheControlMaxAge", "addRandomSuffix", "contentType"] }); var createMultipartUploader = createCreateMultipartUploaderMethod({ allowedOptions: ["cacheControlMaxAge", "addRandomSuffix", "contentType"] }); var uploadPart = createUploadPartMethod({ allowedOptions: ["cacheControlMaxAge", "addRandomSuffix", "contentType"] }); var completeMultipartUpload = createCompleteMultipartUploadMethod({ allowedOptions: ["cacheControlMaxAge", "addRandomSuffix", "contentType"] }); export { BlobAccessError, BlobClientTokenExpiredError, BlobContentTypeNotAllowedError, BlobError, BlobFileTooLargeError, BlobNotFoundError, BlobPathnameMismatchError, BlobRequestAbortedError, BlobServiceNotAvailable, BlobServiceRateLimited, BlobStoreNotFoundError, BlobStoreSuspendedError, BlobUnknownError, completeMultipartUpload, copy, createFolder, createMultipartUpload, createMultipartUploader, del, getDownloadUrl, head, list, put, uploadPart }; //# sourceMappingURL=index.js.map