@visulima/storage 1.0.9 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/adapter/nuxt/module.d.ts +8 -8
- package/dist/ai/ai-sdk/index.d.ts +51 -59
- package/dist/ai/claude/index.d.ts +104 -119
- package/dist/ai/openai/index.d.ts +86 -99
- package/dist/ai/tanstack/index.d.ts +53 -61
- package/dist/handler/http/fetch/index.d.ts +201 -201
- package/dist/handler/http/hono/index.d.ts +59 -59
- package/dist/handler/http/nextjs/index.d.ts +54 -54
- package/dist/handler/http/node/index.d.ts +233 -246
- package/dist/handler/http/solid-start/index.d.ts +54 -54
- package/dist/index.d.ts +70 -70
- package/dist/index.js +1 -1
- package/dist/packem_shared/{AwsLightStorage-BK-WPL0h.js → AwsLightStorage-EsqkAtU5.js} +1 -1
- package/dist/packem_shared/{AzureStorage-1UvDIQZd.js → AzureStorage-DL-U7qFG.js} +1 -1
- package/dist/packem_shared/BoxMetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{BoxStorage-DbGqBLux.js → BoxStorage-B8_oCz27.js} +1 -1
- package/dist/packem_shared/BunS3MetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{BunS3Storage-DNvimm9e.js → BunS3Storage-_PVXu_na.js} +1 -1
- package/dist/packem_shared/BunnyMetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{BunnyStorage-C7d0opLL.js → BunnyStorage-BsoWjScH.js} +1 -1
- package/dist/packem_shared/CloudinaryMetaStorage-BI9YXcwU.js +1 -0
- package/dist/packem_shared/{CloudinaryStorage-Dc3XA2lP.js → CloudinaryStorage-BNwiLF9V.js} +1 -1
- package/dist/packem_shared/{DiskStorage-CI07TVNu.js → DiskStorage-D-NtQDms.js} +1 -1
- package/dist/packem_shared/{DiskStorageWithChecksum-vFCubS6K.js → DiskStorageWithChecksum-UnCtyEvs.js} +1 -1
- package/dist/packem_shared/DropboxMetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{DropboxStorage-CY9Ggu3m.js → DropboxStorage-BS9kj0nH.js} +1 -1
- package/dist/packem_shared/FirebaseMetaStorage-BI9YXcwU.js +1 -0
- package/dist/packem_shared/{FirebaseStorage-D6O9CJXN.js → FirebaseStorage-DNquii2p.js} +1 -1
- package/dist/packem_shared/FtpMetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{FtpStorage-DbEjbq8z.js → FtpStorage-Bd004--s.js} +1 -1
- package/dist/packem_shared/{GCSMetaStorage-DT8K6zdm.js → GCSMetaStorage-Bf4qDFB1.js} +1 -1
- package/dist/packem_shared/{GCStorage-6BHkFlEs.js → GCStorage-ChqEpgqR.js} +1 -1
- package/dist/packem_shared/GoogleDriveMetaStorage-xlHfKwmR.js +1 -0
- package/dist/packem_shared/{GoogleDriveStorage-Bklsz7Bh.js → GoogleDriveStorage-v1glykjd.js} +1 -1
- package/dist/packem_shared/{LocalMetaStorage-BhicZnNl.js → LocalMetaStorage-YWPBYEe7.js} +1 -1
- package/dist/packem_shared/NetlifyBlobMetaStorage-BI9YXcwU.js +1 -0
- package/dist/packem_shared/{NetlifyBlobStorage-CkpCCoN1.js → NetlifyBlobStorage-BPyEWSnx.js} +1 -1
- package/dist/packem_shared/OneDriveMetaStorage-xlHfKwmR.js +1 -0
- package/dist/packem_shared/{OneDriveStorage-CP6MvGAa.js → OneDriveStorage-BJ3Kzxc5.js} +1 -1
- package/dist/packem_shared/PocketBaseMetaStorage-DnrxOQhO.js +1 -0
- package/dist/packem_shared/{PocketBaseStorage-2qhbI2PW.js → PocketBaseStorage-DqKHbbvn.js} +1 -1
- package/dist/packem_shared/{S3Storage-YGeNk3Tt.js → S3Storage-BiI2k6d1.js} +1 -1
- package/dist/packem_shared/SftpMetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{SftpStorage-2Hz396Xr.js → SftpStorage-w8XdtZtw.js} +1 -1
- package/dist/packem_shared/SharePointMetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{SharePointStorage-CrX2Pk6C.js → SharePointStorage-DpDpI7Ln.js} +1 -1
- package/dist/packem_shared/SupabaseMetaStorage-xlHfKwmR.js +1 -0
- package/dist/packem_shared/{SupabaseStorage-Dc_DBX29.js → SupabaseStorage-B_ugUCs7.js} +1 -1
- package/dist/packem_shared/UploadThingMetaStorage-BI9YXcwU.js +1 -0
- package/dist/packem_shared/{UploadThingStorage-BChykYSe.js → UploadThingStorage-_H45IVqX.js} +1 -1
- package/dist/packem_shared/VercelBlobMetaStorage-CHWrhgg2.js +1 -0
- package/dist/packem_shared/{VercelBlobStorage-CsRyPfw3.js → VercelBlobStorage-U1YMKeHs.js} +1 -1
- package/dist/packem_shared/{approval.d-CMAYH9GF.d.ts → approval.d-C-d-t94D.d.ts} +6 -6
- package/dist/packem_shared/disk-storage-BwPk2IRa.js +1 -0
- package/dist/packem_shared/disk-storage-with-checksum.d-CQucFacO.d.ts +146 -0
- package/dist/packem_shared/{executors.d-BZP2rWo3.d.ts → executors.d-DeDH3Ilt.d.ts} +2 -2
- package/dist/packem_shared/files.d-D8H_ge9Y.d.ts +655 -0
- package/dist/packem_shared/{gcs-meta-storage-B7BnctnV.js → gcs-meta-storage-DQGu_cHq.js} +1 -1
- package/dist/packem_shared/local-meta-storage-DJDcuxf1.js +11 -0
- package/dist/packem_shared/{local-meta-storage.d-D9PBfkn6.d.ts → local-meta-storage.d-DuTEzyii.d.ts} +7 -7
- package/dist/packem_shared/media-transformer.d-CvMFjINm.d.ts +331 -0
- package/dist/packem_shared/{memory-storage.d-4EU1cMt1.d.ts → memory-storage.d-BRdTiY8y.d.ts} +32 -40
- package/dist/packem_shared/{s3-base-storage-BoTyhuzO.js → s3-base-storage-CMUui93V.js} +1 -1
- package/dist/packem_shared/{s3-base-storage.d-BQgP5B-t.d.ts → s3-base-storage.d-Cg7m4FuH.d.ts} +64 -70
- package/dist/packem_shared/storage.d-DIav_lF1.d.ts +1163 -0
- package/dist/packem_shared/tus-base.d-BiEg5t4t.d.ts +102 -0
- package/dist/packem_shared/{types.d-CrUWY4On.d.ts → types.d-CAAzKiI6.d.ts} +134 -134
- package/dist/packem_shared/types.d-DgHhkCAl.d.ts +104 -0
- package/dist/packem_shared/{types.d-CggTCgXr.d.ts → types.d-jAs_Rp_v.d.ts} +3 -3
- package/dist/storage/aws/clients/index.d.ts +388 -388
- package/dist/storage/aws/index.d.ts +109 -113
- package/dist/storage/aws/index.js +1 -1
- package/dist/storage/aws-light/index.d.ts +63 -67
- package/dist/storage/aws-light/index.js +1 -1
- package/dist/storage/azure/index.d.ts +133 -139
- package/dist/storage/azure/index.js +1 -1
- package/dist/storage/box/index.d.ts +88 -92
- package/dist/storage/box/index.js +1 -1
- package/dist/storage/bun-s3/index.d.ts +70 -76
- package/dist/storage/bun-s3/index.js +1 -1
- package/dist/storage/bunny/index.d.ts +51 -55
- package/dist/storage/bunny/index.js +1 -1
- package/dist/storage/cloudinary/index.d.ts +53 -59
- package/dist/storage/cloudinary/index.js +1 -1
- package/dist/storage/dropbox/index.d.ts +58 -62
- package/dist/storage/dropbox/index.js +1 -1
- package/dist/storage/firebase/index.d.ts +73 -79
- package/dist/storage/firebase/index.js +1 -1
- package/dist/storage/ftp/index.d.ts +37 -43
- package/dist/storage/ftp/index.js +1 -1
- package/dist/storage/gcs/index.d.ts +89 -95
- package/dist/storage/gcs/index.js +1 -1
- package/dist/storage/google-drive/index.d.ts +68 -72
- package/dist/storage/google-drive/index.js +1 -1
- package/dist/storage/local/index.d.ts +3 -3
- package/dist/storage/local/index.js +1 -1
- package/dist/storage/memory/index.d.ts +2 -2
- package/dist/storage/netlify-blob/index.d.ts +85 -93
- package/dist/storage/netlify-blob/index.js +1 -1
- package/dist/storage/onedrive/index.d.ts +43 -53
- package/dist/storage/onedrive/index.js +1 -1
- package/dist/storage/pocketbase/index.d.ts +66 -72
- package/dist/storage/pocketbase/index.js +1 -1
- package/dist/storage/sftp/index.d.ts +39 -45
- package/dist/storage/sftp/index.js +1 -1
- package/dist/storage/sharepoint/index.d.ts +95 -95
- package/dist/storage/sharepoint/index.js +1 -1
- package/dist/storage/supabase/index.d.ts +49 -55
- package/dist/storage/supabase/index.js +1 -1
- package/dist/storage/uploadthing/index.d.ts +33 -37
- package/dist/storage/uploadthing/index.js +1 -1
- package/dist/storage/vercel-blob/index.d.ts +109 -115
- package/dist/storage/vercel-blob/index.js +1 -1
- package/dist/transformer/audio-transformer.d.ts +96 -96
- package/dist/transformer/image-transformer.d.ts +422 -422
- package/dist/transformer/index.d.ts +34 -34
- package/dist/transformer/video-transformer.d.ts +111 -111
- package/package.json +1 -1
- package/dist/packem_shared/BoxMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/BunS3MetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/BunnyMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/CloudinaryMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/DropboxMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/FirebaseMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/FtpMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/GoogleDriveMetaStorage-Cbwa1CHV.js +0 -1
- package/dist/packem_shared/NetlifyBlobMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/OneDriveMetaStorage-Cbwa1CHV.js +0 -1
- package/dist/packem_shared/PocketBaseMetaStorage-DOTLwVE7.js +0 -1
- package/dist/packem_shared/SftpMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/SharePointMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/SupabaseMetaStorage-Cbwa1CHV.js +0 -1
- package/dist/packem_shared/UploadThingMetaStorage-DPVnmNe5.js +0 -1
- package/dist/packem_shared/VercelBlobMetaStorage-BSn6Qfnf.js +0 -1
- package/dist/packem_shared/disk-storage-CsQcYW3s.js +0 -1
- package/dist/packem_shared/disk-storage-with-checksum.d-B-VGEsfl.d.ts +0 -156
- package/dist/packem_shared/files.d-CH0iLBNC.d.ts +0 -655
- package/dist/packem_shared/local-meta-storage-iuJnu90B.js +0 -11
- package/dist/packem_shared/media-transformer.d-Quf4ai47.d.ts +0 -331
- package/dist/packem_shared/storage.d-CEM1upWM.d.ts +0 -1176
- package/dist/packem_shared/tus-base.d-DLzKE54M.d.ts +0 -106
- package/dist/packem_shared/types.d-Bon9GVVe.d.ts +0 -104
|
@@ -1,85 +1,76 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import { U as UploadFile, m as UploadResponse } from "../../../packem_shared/storage.d-
|
|
2
|
+
import { U as UploadFile, m as UploadResponse } from "../../../packem_shared/storage.d-DIav_lF1.js";
|
|
3
3
|
import { Readable } from 'node:stream';
|
|
4
|
-
import { H as Handlers, A as AsyncHandler, U as UploadOptions, R as ResponseFile, a as ResponseList, M as MethodHandler } from "../../../packem_shared/types.d-
|
|
5
|
-
export type { B as BaseHandler, b as RequestEvent, c as UploadErrorEvent, d as UploadEvent } from "../../../packem_shared/types.d-
|
|
6
|
-
import { B as BaseHandlerCore } from "../../../packem_shared/tus-base.d-
|
|
7
|
-
export { T as TUS_RESUMABLE, a as TUS_VERSION } from "../../../packem_shared/tus-base.d-
|
|
4
|
+
import { H as Handlers, A as AsyncHandler, U as UploadOptions, R as ResponseFile, a as ResponseList, M as MethodHandler } from "../../../packem_shared/types.d-jAs_Rp_v.js";
|
|
5
|
+
export type { B as BaseHandler, b as RequestEvent, c as UploadErrorEvent, d as UploadEvent } from "../../../packem_shared/types.d-jAs_Rp_v.js";
|
|
6
|
+
import { B as BaseHandlerCore } from "../../../packem_shared/tus-base.d-BiEg5t4t.js";
|
|
7
|
+
export { T as TUS_RESUMABLE, a as TUS_VERSION } from "../../../packem_shared/tus-base.d-BiEg5t4t.js";
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'lru-cache';
|
|
10
10
|
import 'node:events';
|
|
11
11
|
import '@visulima/pagination';
|
|
12
|
-
import "../../../packem_shared/media-transformer.d-
|
|
13
|
-
import "../../../packem_shared/types.d-
|
|
12
|
+
import "../../../packem_shared/media-transformer.d-CvMFjINm.js";
|
|
13
|
+
import "../../../packem_shared/types.d-CAAzKiI6.js";
|
|
14
14
|
/**
|
|
15
|
-
* Base handler for Node.js platform (IncomingMessage/ServerResponse).
|
|
16
|
-
* Extends BaseHandlerCore with Node.js-specific request/response handling.
|
|
17
|
-
* @template TFile The file type used by this handler.
|
|
18
|
-
* @template NodeRequest The Node.js request type.
|
|
19
|
-
* @template NodeResponse The Node.js response type.
|
|
20
|
-
*/
|
|
15
|
+
* Base handler for Node.js platform (IncomingMessage/ServerResponse).
|
|
16
|
+
* Extends BaseHandlerCore with Node.js-specific request/response handling.
|
|
17
|
+
* @template TFile The file type used by this handler.
|
|
18
|
+
* @template NodeRequest The Node.js request type.
|
|
19
|
+
* @template NodeResponse The Node.js response type.
|
|
20
|
+
*/
|
|
21
21
|
declare abstract class BaseHandlerNode<TFile extends UploadFile, NodeRequest extends IncomingMessage = IncomingMessage, NodeResponse extends ServerResponse = ServerResponse> extends BaseHandlerCore<TFile> implements MethodHandler<NodeRequest, NodeResponse> {
|
|
22
22
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
* Limiting enabled HTTP method handler.
|
|
24
|
+
*/
|
|
25
25
|
static readonly methods: Handlers[];
|
|
26
26
|
/**
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
* Map of registered HTTP method handlers.
|
|
28
|
+
*/
|
|
29
29
|
protected registeredHandlers: Map<string, AsyncHandler<NodeRequest, NodeResponse>>;
|
|
30
30
|
constructor(options: UploadOptions<TFile>);
|
|
31
31
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
* Gets the registered handlers map.
|
|
33
|
+
* @returns Map of registered handlers.
|
|
34
|
+
*/
|
|
35
35
|
get handlers(): Map<string, AsyncHandler<NodeRequest, NodeResponse>>;
|
|
36
36
|
/**
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
* Handles HTTP request (alias for upload method).
|
|
38
|
+
* @param request Node.js IncomingMessage.
|
|
39
|
+
* @param response Node.js ServerResponse.
|
|
40
|
+
*/
|
|
41
41
|
handle: (request: NodeRequest, response: NodeResponse) => Promise<void>;
|
|
42
42
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
* Main upload handler that processes HTTP requests and routes them to appropriate method handlers.
|
|
44
|
+
* @param request Node.js IncomingMessage.
|
|
45
|
+
* @param response Node.js ServerResponse.
|
|
46
|
+
* @param next Optional Express-style next function for middleware compatibility.
|
|
47
|
+
* @throws {UploadError} When storage is not ready or method is not allowed.
|
|
48
|
+
*/
|
|
49
49
|
upload: (request: NodeRequest, response: NodeResponse, next?: () => void) => Promise<void>;
|
|
50
50
|
/**
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
* Compose and register HTTP method handlers.
|
|
52
|
+
* Subclasses should override this to register their specific handlers.
|
|
53
|
+
*/
|
|
54
54
|
protected abstract compose(): void;
|
|
55
55
|
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
send(response: NodeResponse, {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
* Sends an error response to the client with appropriate status code and message.
|
|
67
|
-
* @param response Node.js ServerResponse to send error to.
|
|
68
|
-
* @param error Error object to convert to HTTP error response.
|
|
69
|
-
*/
|
|
56
|
+
* Sends an HTTP response with the provided body, headers, and status code.
|
|
57
|
+
* @param response Node.js ServerResponse to send data to.
|
|
58
|
+
* @param body Response body, headers, and status code.
|
|
59
|
+
*/
|
|
60
|
+
send(response: NodeResponse, { body, headers, statusCode }: UploadResponse): void;
|
|
61
|
+
/**
|
|
62
|
+
* Sends an error response to the client with appropriate status code and message.
|
|
63
|
+
* @param response Node.js ServerResponse to send error to.
|
|
64
|
+
* @param error Error object to convert to HTTP error response.
|
|
65
|
+
*/
|
|
70
66
|
sendError(response: NodeResponse, error: Error): Promise<void>;
|
|
71
67
|
/**
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
sendStream(response: NodeResponse, stream: Readable, {
|
|
78
|
-
headers,
|
|
79
|
-
range,
|
|
80
|
-
size,
|
|
81
|
-
statusCode
|
|
82
|
-
}: {
|
|
68
|
+
* Sends streaming response to client with proper backpressure handling and range request support.
|
|
69
|
+
* @param response Node.js ServerResponse to stream data to.
|
|
70
|
+
* @param stream Readable stream containing the file data.
|
|
71
|
+
* @param options Streaming options including headers, range, size, and status code.
|
|
72
|
+
*/
|
|
73
|
+
sendStream(response: NodeResponse, stream: Readable, { headers, range, size, statusCode }: {
|
|
83
74
|
headers?: Record<string, string | number>;
|
|
84
75
|
range?: {
|
|
85
76
|
end: number;
|
|
@@ -89,280 +80,276 @@ declare abstract class BaseHandlerNode<TFile extends UploadFile, NodeRequest ext
|
|
|
89
80
|
statusCode?: number;
|
|
90
81
|
}): void;
|
|
91
82
|
/**
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
83
|
+
* Finish upload by sending final response to client with completed file data.
|
|
84
|
+
* @param _request HTTP request (unused parameter)
|
|
85
|
+
* @param response HTTP response object to send final response to
|
|
86
|
+
* @param uploadResponse Final upload response data containing body, headers, and status code
|
|
87
|
+
*/
|
|
97
88
|
protected finish(_request: NodeRequest, response: NodeResponse, uploadResponse: UploadResponse | ResponseFile<TFile>): void;
|
|
98
89
|
/**
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
90
|
+
* Build file URL from request and file data.
|
|
91
|
+
* @param request HTTP request with optional originalUrl property
|
|
92
|
+
* @param file File object containing ID and content type
|
|
93
|
+
* @returns Constructed file URL with extension based on content type
|
|
94
|
+
*/
|
|
104
95
|
protected buildFileUrl(request: NodeRequest & {
|
|
105
96
|
originalUrl?: string;
|
|
106
97
|
}, file: TFile): string;
|
|
107
98
|
/**
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
99
|
+
* Negotiates content type based on Accept header and supported formats.
|
|
100
|
+
* @param request HTTP request object containing Accept header.
|
|
101
|
+
* @param supportedTypes Array of supported MIME types to match against.
|
|
102
|
+
* @returns Best matching content type or undefined if no match found.
|
|
103
|
+
*/
|
|
113
104
|
negotiateContentType(request: NodeRequest, supportedTypes: string[]): string | undefined;
|
|
114
105
|
/**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
106
|
+
* Default OPTIONS handler.
|
|
107
|
+
* @param _request HTTP request (unused)
|
|
108
|
+
* @param _response HTTP response (unused)
|
|
109
|
+
* @returns Promise resolving to ResponseFile with CORS headers
|
|
110
|
+
*/
|
|
120
111
|
options(_request: NodeRequest, _response: NodeResponse): Promise<ResponseFile<TFile>>;
|
|
121
112
|
/**
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
113
|
+
* Retrieves a file or list of files based on the request path.
|
|
114
|
+
* @param request Node.js IncomingMessage with optional originalUrl.
|
|
115
|
+
* @param response Node.js ServerResponse.
|
|
116
|
+
* @returns Promise resolving to a single file, paginated list, or array of files.
|
|
117
|
+
* @throws {UploadError} When file is not found or storage error occurs.
|
|
118
|
+
*/
|
|
128
119
|
get(request: NodeRequest & {
|
|
129
120
|
originalUrl?: string;
|
|
130
121
|
}, _response: NodeResponse): Promise<ResponseFile<TFile> | ResponseList<TFile>>;
|
|
131
122
|
/**
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
123
|
+
* Returns a list of uploaded files with optional pagination support.
|
|
124
|
+
* @param request Node.js IncomingMessage containing query parameters for pagination.
|
|
125
|
+
* @param _response Node.js ServerResponse (unused).
|
|
126
|
+
* @returns Promise resolving to a paginated or complete list of uploaded files.
|
|
127
|
+
*/
|
|
137
128
|
list(request: NodeRequest, _response: NodeResponse): Promise<ResponseList<TFile>>;
|
|
138
129
|
/**
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
130
|
+
* Streams download of a file with resumable support using HTTP range requests.
|
|
131
|
+
* @param request Node.js IncomingMessage with optional originalUrl and range header.
|
|
132
|
+
* @param response Node.js ServerResponse to stream the file to.
|
|
133
|
+
* @throws {HttpError} When file is not found or streaming is not supported.
|
|
134
|
+
*/
|
|
144
135
|
download(request: NodeRequest & {
|
|
145
136
|
originalUrl?: string;
|
|
146
137
|
}, response: NodeResponse): Promise<void>;
|
|
147
138
|
/**
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
139
|
+
* Check if error is related to undefined ID or path and throw appropriate HTTP error.
|
|
140
|
+
* @param error Error object to check
|
|
141
|
+
*/
|
|
151
142
|
protected override checkForUndefinedIdOrPath(error: unknown): void;
|
|
152
143
|
}
|
|
153
144
|
/**
|
|
154
|
-
* Multipart/form-data upload handler (Node.js version).
|
|
155
|
-
* @example
|
|
156
|
-
* ```ts
|
|
157
|
-
* const multipart = new Multipart({
|
|
158
|
-
* storage,
|
|
159
|
-
* maxFileSize: 100 * 1024 * 1024, // 100MB
|
|
160
|
-
* });
|
|
161
|
-
*
|
|
162
|
-
* app.use('/files', multipart.handle);
|
|
163
|
-
* ```
|
|
164
|
-
*/
|
|
145
|
+
* Multipart/form-data upload handler (Node.js version).
|
|
146
|
+
* @example
|
|
147
|
+
* ```ts
|
|
148
|
+
* const multipart = new Multipart({
|
|
149
|
+
* storage,
|
|
150
|
+
* maxFileSize: 100 * 1024 * 1024, // 100MB
|
|
151
|
+
* });
|
|
152
|
+
*
|
|
153
|
+
* app.use('/files', multipart.handle);
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
165
156
|
declare class Multipart<TFile extends UploadFile, NodeRequest extends IncomingMessage = IncomingMessage, NodeResponse extends ServerResponse = ServerResponse> extends BaseHandlerNode<TFile, NodeRequest, NodeResponse> {
|
|
166
157
|
/**
|
|
167
|
-
|
|
168
|
-
|
|
158
|
+
* Limiting enabled http method handler
|
|
159
|
+
*/
|
|
169
160
|
static override readonly methods: Handlers[];
|
|
170
161
|
private readonly multipartBase;
|
|
171
162
|
/**
|
|
172
|
-
|
|
173
|
-
|
|
163
|
+
* Maximum file size allowed for multipart uploads
|
|
164
|
+
*/
|
|
174
165
|
private maxFileSize;
|
|
175
166
|
/**
|
|
176
|
-
|
|
177
|
-
|
|
167
|
+
* Maximum header size allowed for multipart parser
|
|
168
|
+
*/
|
|
178
169
|
private maxHeaderSize;
|
|
179
170
|
constructor(options: UploadOptions<TFile>);
|
|
180
171
|
/**
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
172
|
+
* Handles multipart/form-data POST requests for file uploads.
|
|
173
|
+
* @param request Node.js IncomingMessage containing multipart data.
|
|
174
|
+
* @returns Promise resolving to ResponseFile with upload result.
|
|
175
|
+
*/
|
|
185
176
|
post(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
186
177
|
/**
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
178
|
+
* Delete an uploaded file.
|
|
179
|
+
* @param request Node.js IncomingMessage with file ID
|
|
180
|
+
* @returns Promise resolving to ResponseFile with deletion result
|
|
181
|
+
*/
|
|
191
182
|
delete(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
192
183
|
/**
|
|
193
|
-
|
|
194
|
-
|
|
184
|
+
* Compose and register HTTP method handlers.
|
|
185
|
+
*/
|
|
195
186
|
protected compose(): void;
|
|
196
187
|
}
|
|
197
188
|
/**
|
|
198
|
-
* REST API handler for direct binary file uploads (Node.js version).
|
|
199
|
-
*
|
|
200
|
-
* This handler provides a clean REST interface for file operations:
|
|
201
|
-
* - POST: Create a new file with raw binary data or initialize chunked upload
|
|
202
|
-
* - PUT: Create or update a file (requires ID in URL)
|
|
203
|
-
* - PATCH: Upload chunks for chunked uploads (requires ID in URL)
|
|
204
|
-
* - GET: Retrieve a file or list files
|
|
205
|
-
* - DELETE: Delete a file (single) or multiple files (via ?ids=id1,id2 or JSON body)
|
|
206
|
-
* - HEAD: Get file metadata and upload progress
|
|
207
|
-
* - OPTIONS: CORS preflight
|
|
208
|
-
* @example
|
|
209
|
-
* ```ts
|
|
210
|
-
* const rest = new Rest({
|
|
211
|
-
* storage,
|
|
212
|
-
* });
|
|
213
|
-
*
|
|
214
|
-
* app.use('/files', rest.handle);
|
|
215
|
-
* ```
|
|
216
|
-
*/
|
|
189
|
+
* REST API handler for direct binary file uploads (Node.js version).
|
|
190
|
+
*
|
|
191
|
+
* This handler provides a clean REST interface for file operations:
|
|
192
|
+
* - POST: Create a new file with raw binary data or initialize chunked upload
|
|
193
|
+
* - PUT: Create or update a file (requires ID in URL)
|
|
194
|
+
* - PATCH: Upload chunks for chunked uploads (requires ID in URL)
|
|
195
|
+
* - GET: Retrieve a file or list files
|
|
196
|
+
* - DELETE: Delete a file (single) or multiple files (via ?ids=id1,id2 or JSON body)
|
|
197
|
+
* - HEAD: Get file metadata and upload progress
|
|
198
|
+
* - OPTIONS: CORS preflight
|
|
199
|
+
* @example
|
|
200
|
+
* ```ts
|
|
201
|
+
* const rest = new Rest({
|
|
202
|
+
* storage,
|
|
203
|
+
* });
|
|
204
|
+
*
|
|
205
|
+
* app.use('/files', rest.handle);
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
217
208
|
declare class Rest<TFile extends UploadFile, NodeRequest extends IncomingMessage = IncomingMessage, NodeResponse extends ServerResponse = ServerResponse> extends BaseHandlerNode<TFile, NodeRequest, NodeResponse> {
|
|
218
209
|
/**
|
|
219
|
-
|
|
220
|
-
|
|
210
|
+
* Limiting enabled http method handler
|
|
211
|
+
*/
|
|
221
212
|
static override readonly methods: Handlers[];
|
|
222
213
|
private readonly restBase;
|
|
223
214
|
constructor(options: UploadOptions<TFile>);
|
|
224
215
|
/**
|
|
225
|
-
|
|
226
|
-
|
|
216
|
+
* Compose and register HTTP method handlers.
|
|
217
|
+
*/
|
|
227
218
|
protected override compose(): void;
|
|
228
219
|
/**
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
220
|
+
* Build file URL from request and file data.
|
|
221
|
+
* @param requestUrl Request URL string
|
|
222
|
+
* @param file File object containing ID and content type
|
|
223
|
+
* @returns Constructed file URL with extension based on content type
|
|
224
|
+
*/
|
|
234
225
|
protected buildFileUrlForRest(requestUrl: string, file: TFile): string;
|
|
235
226
|
/**
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
227
|
+
* Creates a new file via POST request with raw binary data.
|
|
228
|
+
* Supports both full file uploads and chunked upload initialization.
|
|
229
|
+
* @param request Node.js IncomingMessage with file data.
|
|
230
|
+
* @returns Promise resolving to ResponseFile with upload result.
|
|
231
|
+
*/
|
|
241
232
|
post(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
242
233
|
/**
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
234
|
+
* Create or update a file via PUT request.
|
|
235
|
+
* Requires file ID in the URL path.
|
|
236
|
+
* @param request Node.js IncomingMessage with file ID and data
|
|
237
|
+
* @returns Promise resolving to ResponseFile with upload result
|
|
238
|
+
*/
|
|
248
239
|
put(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
249
240
|
/**
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
241
|
+
* Delete an uploaded file or multiple files.
|
|
242
|
+
* Supports single file (ID in URL) or batch delete (via ?ids=id1,id2 or JSON body).
|
|
243
|
+
* @param request Node.js IncomingMessage with file ID(s)
|
|
244
|
+
* @returns Promise resolving to ResponseFile (single) or ResponseList (batch) with deletion result
|
|
245
|
+
*/
|
|
255
246
|
delete(request: NodeRequest): Promise<ResponseFile<TFile> | ResponseList<TFile>>;
|
|
256
247
|
/**
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
248
|
+
* Uploads a chunk via PATCH request for chunked uploads.
|
|
249
|
+
* Headers required: X-Chunk-Offset (byte offset), Content-Length (chunk size).
|
|
250
|
+
* Optional: X-Chunk-Checksum (SHA256 checksum for validation).
|
|
251
|
+
* @param request Node.js IncomingMessage with chunk data.
|
|
252
|
+
* @returns Promise resolving to ResponseFile with upload progress.
|
|
253
|
+
*/
|
|
263
254
|
patch(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
264
255
|
/**
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
256
|
+
* Get file metadata via HEAD request.
|
|
257
|
+
* For chunked uploads, also returns upload progress information.
|
|
258
|
+
* @param request Node.js IncomingMessage with file ID
|
|
259
|
+
* @returns Promise resolving to ResponseFile with metadata headers
|
|
260
|
+
*/
|
|
270
261
|
head(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
271
262
|
/**
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
263
|
+
* Handle OPTIONS requests with REST API capabilities.
|
|
264
|
+
* @returns Promise resolving to ResponseFile with CORS headers
|
|
265
|
+
*/
|
|
275
266
|
override options(): Promise<ResponseFile<TFile>>;
|
|
276
267
|
/**
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
268
|
+
* Retrieves a file or list of files based on the request path.
|
|
269
|
+
* Delegates to BaseHandlerNode.get() method.
|
|
270
|
+
* @param request Node.js IncomingMessage with optional originalUrl.
|
|
271
|
+
* @param response Node.js ServerResponse.
|
|
272
|
+
* @returns Promise resolving to a single file, paginated list, or array of files.
|
|
273
|
+
*/
|
|
283
274
|
override get(request: NodeRequest, response: NodeResponse): Promise<ResponseFile<TFile> | ResponseList<TFile>>;
|
|
284
275
|
}
|
|
285
276
|
/**
|
|
286
|
-
* TUS resumable upload protocol handler (Node.js version).
|
|
287
|
-
*
|
|
288
|
-
* [tus resumable upload protocol](https://github.com/tus/tus-resumable-upload-protocol/blob/master/protocol.md)
|
|
289
|
-
* @example
|
|
290
|
-
* ```ts
|
|
291
|
-
* const tus = new Tus({storage});
|
|
292
|
-
*
|
|
293
|
-
* app.all('/files', tus.handle);
|
|
294
|
-
* ```
|
|
295
|
-
*/
|
|
277
|
+
* TUS resumable upload protocol handler (Node.js version).
|
|
278
|
+
*
|
|
279
|
+
* [tus resumable upload protocol](https://github.com/tus/tus-resumable-upload-protocol/blob/master/protocol.md)
|
|
280
|
+
* @example
|
|
281
|
+
* ```ts
|
|
282
|
+
* const tus = new Tus({storage});
|
|
283
|
+
*
|
|
284
|
+
* app.all('/files', tus.handle);
|
|
285
|
+
* ```
|
|
286
|
+
*/
|
|
296
287
|
declare class Tus<TFile extends UploadFile, NodeRequest extends IncomingMessage = IncomingMessage, NodeResponse extends ServerResponse = ServerResponse> extends BaseHandlerNode<TFile, NodeRequest, NodeResponse> {
|
|
297
288
|
/**
|
|
298
|
-
|
|
299
|
-
|
|
289
|
+
* Limiting enabled http method handler
|
|
290
|
+
*/
|
|
300
291
|
static override readonly methods: Handlers[];
|
|
301
292
|
override disableTerminationForFinishedUploads: boolean;
|
|
302
293
|
private readonly tusBase;
|
|
303
294
|
constructor(options: UploadOptions<TFile>);
|
|
304
295
|
/**
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
296
|
+
* Handle OPTIONS requests with TUS protocol capabilities.
|
|
297
|
+
* @returns Promise resolving to ResponseFile with TUS headers
|
|
298
|
+
*/
|
|
308
299
|
override options(): Promise<ResponseFile<TFile>>;
|
|
309
300
|
/**
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
301
|
+
* Creates a new TUS upload and optionally starts uploading data.
|
|
302
|
+
* @param request Node.js IncomingMessage with TUS headers.
|
|
303
|
+
* @returns Promise resolving to ResponseFile with upload location and offset.
|
|
304
|
+
*/
|
|
314
305
|
post(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
315
306
|
/**
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
307
|
+
* Write a chunk of data to an existing TUS upload.
|
|
308
|
+
* @param request Node.js IncomingMessage with chunk data and TUS headers
|
|
309
|
+
* @returns Promise resolving to ResponseFile with updated offset
|
|
310
|
+
*/
|
|
320
311
|
patch(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
321
312
|
/**
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
313
|
+
* Get current upload offset and metadata for TUS resumable uploads.
|
|
314
|
+
* @param request Node.js IncomingMessage with upload ID
|
|
315
|
+
* @returns Promise resolving to ResponseFile with upload-offset and metadata headers
|
|
316
|
+
*/
|
|
326
317
|
head(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
327
318
|
/**
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
319
|
+
* Get TUS upload metadata and current status.
|
|
320
|
+
* @param request Node.js IncomingMessage with upload ID
|
|
321
|
+
* @returns Promise resolving to ResponseFile with file metadata as JSON
|
|
322
|
+
*/
|
|
332
323
|
override get(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
333
324
|
/**
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
325
|
+
* Delete a TUS upload and its associated data.
|
|
326
|
+
* @param request Node.js IncomingMessage with upload ID
|
|
327
|
+
* @returns Promise resolving to ResponseFile with deletion confirmation
|
|
328
|
+
*/
|
|
338
329
|
delete(request: NodeRequest): Promise<ResponseFile<TFile>>;
|
|
339
330
|
/**
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
override send(response: NodeResponse, {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}: UploadResponse): void;
|
|
349
|
-
/**
|
|
350
|
-
* Compose and register HTTP method handlers.
|
|
351
|
-
*/
|
|
331
|
+
* Send TUS protocol response with required headers.
|
|
332
|
+
* @param response Node.js ServerResponse to send response to
|
|
333
|
+
* @param uploadResponse Response data with body, headers, and status code
|
|
334
|
+
*/
|
|
335
|
+
override send(response: NodeResponse, { body, headers, statusCode }: UploadResponse): void;
|
|
336
|
+
/**
|
|
337
|
+
* Compose and register HTTP method handlers.
|
|
338
|
+
*/
|
|
352
339
|
protected compose(): void;
|
|
353
340
|
/**
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
341
|
+
* Build file URL for TUS uploads (without file extension).
|
|
342
|
+
*
|
|
343
|
+
* On the Node runtime the TUS protocol chain only carries the request *path* (`requestUrl` is
|
|
344
|
+
* `request.originalUrl || request.url`), so an absolute `Location` can only be produced when that
|
|
345
|
+
* path is itself an absolute URL (e.g. an upstream proxy rewrote it). When it is just a path the
|
|
346
|
+
* `Location` is necessarily relative — the request headers are not threaded through the protocol
|
|
347
|
+
* methods. Use the fetch/hono handlers (which receive `request.url` with the origin) or set
|
|
348
|
+
* `useRelativeLocation: true` explicitly for relative URLs everywhere.
|
|
349
|
+
* @param requestUrl Request URL string (path-only on Node unless rewritten to an absolute URL).
|
|
350
|
+
* @param file File object containing ID
|
|
351
|
+
* @returns Constructed file URL for TUS protocol
|
|
352
|
+
*/
|
|
366
353
|
protected buildFileUrlForTus(requestUrl: string, file: TFile): string;
|
|
367
354
|
}
|
|
368
355
|
export { type AsyncHandler, type Handlers, type MethodHandler, Multipart, Rest, Tus, type UploadOptions };
|