@od-oneapp/storage 2026.2.1501-canary.1

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/types.d.mts ADDED
@@ -0,0 +1,314 @@
1
+ import { QuotaInfo, StorageErrorCode, ValidationOptions } from "./validation.mjs";
2
+
3
+ //#region types.d.ts
4
+ interface ListOptions {
5
+ cursor?: string;
6
+ limit?: number;
7
+ prefix?: string;
8
+ }
9
+ interface R2Credentials {
10
+ accessKeyId: string;
11
+ accountId: string;
12
+ bucket: string;
13
+ secretAccessKey: string;
14
+ name?: string;
15
+ }
16
+ interface EnhancedR2Credentials extends R2Credentials {
17
+ customDomain?: string;
18
+ defaultPartSize?: number;
19
+ defaultQueueSize?: number;
20
+ }
21
+ interface StorageConfig {
22
+ cloudflareR2?: EnhancedR2Credentials | EnhancedR2Credentials[];
23
+ cloudflareImages?: {
24
+ accountId: string;
25
+ apiToken: string;
26
+ signingKey?: string;
27
+ deliveryUrl?: string;
28
+ };
29
+ provider: StorageProviderType;
30
+ vercelBlob?: {
31
+ token: string;
32
+ };
33
+ }
34
+ interface MultiStorageConfig {
35
+ providers: {
36
+ [key: string]: StorageConfig;
37
+ };
38
+ defaultProvider?: string;
39
+ routing?: {
40
+ images?: string;
41
+ documents?: string;
42
+ [key: string]: string | undefined;
43
+ };
44
+ }
45
+ interface StorageObject {
46
+ access?: 'public' | 'private';
47
+ contentType?: string;
48
+ etag?: string;
49
+ key: string;
50
+ lastModified?: Date;
51
+ size: number;
52
+ downloadUrl?: string;
53
+ url: string;
54
+ metadata?: Record<string, any>;
55
+ }
56
+ interface StorageProvider {
57
+ delete(key: string): Promise<void>;
58
+ download(key: string): Promise<Blob>;
59
+ exists(key: string): Promise<boolean>;
60
+ getMetadata(key: string): Promise<StorageObject>;
61
+ getUrl(key: string, options?: {
62
+ expiresIn?: number;
63
+ }): Promise<string>;
64
+ list(options?: ListOptions): Promise<StorageObject[]>;
65
+ upload(key: string, data: ArrayBuffer | Blob | Buffer | File | ReadableStream, options?: UploadOptions): Promise<StorageObject>;
66
+ createMultipartUpload?(key: string, options?: UploadOptions): Promise<{
67
+ uploadId: string;
68
+ key: string;
69
+ }>;
70
+ uploadPart?(uploadId: string, partNumber: number, data: ArrayBuffer | Blob | Buffer, options?: UploadOptions): Promise<{
71
+ etag: string;
72
+ partNumber: number;
73
+ }>;
74
+ completeMultipartUpload?(uploadId: string, parts: Array<{
75
+ etag: string;
76
+ partNumber: number;
77
+ }>): Promise<StorageObject>;
78
+ abortMultipartUpload?(uploadId: string): Promise<void>;
79
+ getPresignedUploadUrl?(key: string, options?: {
80
+ expiresIn?: number;
81
+ contentType?: string;
82
+ }): Promise<PresignedUploadUrl>;
83
+ getCapabilities?(): StorageCapabilities;
84
+ }
85
+ type StorageProviderType = 'cloudflare-r2' | 'cloudflare-images' | 'vercel-blob' | 'multi';
86
+ interface UploadOptions {
87
+ public?: boolean;
88
+ cacheControlMaxAge?: number;
89
+ contentType?: string;
90
+ metadata?: Record<string, string>;
91
+ addRandomSuffix?: boolean;
92
+ allowOverwrite?: boolean;
93
+ multipart?: boolean;
94
+ abortSignal?: AbortSignal;
95
+ clientPayload?: string;
96
+ requireSignedURLs?: boolean;
97
+ variants?: string[];
98
+ id?: string;
99
+ fileName?: string;
100
+ expiresAfter?: string;
101
+ partSize?: number;
102
+ queueSize?: number;
103
+ leavePartsOnError?: boolean;
104
+ onProgress?: (progress: UploadProgress) => void;
105
+ provider?: string;
106
+ }
107
+ interface ClientUploadOptions {
108
+ handleUploadUrl?: string;
109
+ onProgress?: (progress: UploadProgress) => void;
110
+ onError?: (error: Error) => void;
111
+ }
112
+ interface HandleUploadConfig {
113
+ onBeforeGenerateToken?: (pathname: string, clientPayload?: string) => Promise<{
114
+ allowed: boolean;
115
+ token?: string;
116
+ }>;
117
+ onUploadCompleted?: (blob: {
118
+ url: string;
119
+ pathname: string;
120
+ contentType?: string;
121
+ contentDisposition?: string;
122
+ size: number;
123
+ }, clientPayload?: string) => Promise<void>;
124
+ }
125
+ interface UploadProgress {
126
+ loaded: number;
127
+ total: number;
128
+ part?: number;
129
+ key: string;
130
+ percentage?: number;
131
+ }
132
+ interface StreamUploadOptions extends UploadOptions {
133
+ highWaterMark?: number;
134
+ }
135
+ interface MultipartUploadResult extends StorageObject {
136
+ uploadId?: string;
137
+ etag?: string;
138
+ parts?: Array<{
139
+ partNumber: number;
140
+ etag: string;
141
+ }>;
142
+ }
143
+ interface CloudflareImagesVariant {
144
+ id: string;
145
+ options: {
146
+ fit?: 'scale-down' | 'contain' | 'cover' | 'crop' | 'pad';
147
+ width?: number;
148
+ height?: number;
149
+ quality?: number;
150
+ format?: 'auto' | 'avif' | 'webp' | 'json' | 'jpeg' | 'png';
151
+ metadata?: 'keep' | 'copyright' | 'none';
152
+ background?: string;
153
+ rotate?: 0 | 90 | 180 | 270 | 360;
154
+ sharpen?: number;
155
+ blur?: number;
156
+ brightness?: number;
157
+ contrast?: number;
158
+ gamma?: number;
159
+ gravity?: 'auto' | 'left' | 'right' | 'top' | 'bottom' | 'center' | {
160
+ x?: number;
161
+ y?: number;
162
+ };
163
+ border?: {
164
+ color?: string;
165
+ width?: number;
166
+ };
167
+ compression?: 'fast' | 'balanced' | 'best';
168
+ dpr?: number;
169
+ onerror?: 'redirect';
170
+ trim?: {
171
+ top?: number;
172
+ right?: number;
173
+ bottom?: number;
174
+ left?: number;
175
+ };
176
+ anim?: boolean;
177
+ };
178
+ neverRequireSignedURLs?: boolean;
179
+ }
180
+ interface DirectUploadResponse {
181
+ uploadURL: string;
182
+ id: string;
183
+ }
184
+ interface CloudflareImagesBatchToken {
185
+ token: string;
186
+ expiresAt: string;
187
+ }
188
+ interface CloudflareImagesSigningKey {
189
+ name: string;
190
+ value: string;
191
+ }
192
+ interface CloudflareImagesListOptions extends ListOptions {
193
+ perPage?: number;
194
+ page?: number;
195
+ sortOrder?: 'asc' | 'desc';
196
+ }
197
+ interface CloudflareImagesStats {
198
+ count: {
199
+ current: number;
200
+ allowed: number;
201
+ };
202
+ }
203
+ interface CloudflareImagesTransformOptions {
204
+ width?: number;
205
+ height?: number;
206
+ fit?: 'scale-down' | 'contain' | 'cover' | 'crop' | 'pad';
207
+ gravity?: 'auto' | 'left' | 'right' | 'top' | 'bottom' | 'center' | {
208
+ x?: number;
209
+ y?: number;
210
+ };
211
+ quality?: number;
212
+ format?: 'auto' | 'avif' | 'webp' | 'json' | 'jpeg' | 'png';
213
+ anim?: boolean;
214
+ background?: string;
215
+ blur?: number;
216
+ border?: {
217
+ color?: string;
218
+ width?: number;
219
+ };
220
+ brightness?: number;
221
+ compression?: 'fast' | 'balanced' | 'best';
222
+ contrast?: number;
223
+ dpr?: number;
224
+ gamma?: number;
225
+ metadata?: 'keep' | 'copyright' | 'none';
226
+ onerror?: 'redirect';
227
+ rotate?: 0 | 90 | 180 | 270 | 360;
228
+ sharpen?: number;
229
+ trim?: {
230
+ top?: number;
231
+ right?: number;
232
+ bottom?: number;
233
+ left?: number;
234
+ };
235
+ }
236
+ interface MediaActionResponse<T = void> {
237
+ success: boolean;
238
+ data?: T;
239
+ error?: string;
240
+ }
241
+ interface BulkDeleteResponse {
242
+ succeeded: string[];
243
+ failed: Array<{
244
+ key: string;
245
+ error: string;
246
+ }>;
247
+ }
248
+ interface BulkMoveResponse {
249
+ succeeded: Array<{
250
+ sourceKey: string;
251
+ destinationKey: string;
252
+ }>;
253
+ failed: Array<{
254
+ sourceKey: string;
255
+ destinationKey: string;
256
+ error: string;
257
+ }>;
258
+ }
259
+ interface VercelBlobOptions {
260
+ access?: 'public' | 'private';
261
+ addRandomSuffix?: boolean;
262
+ allowOverwrite?: boolean;
263
+ cacheControlMaxAge?: number;
264
+ clientPayload?: string;
265
+ contentType?: string;
266
+ multipart?: boolean;
267
+ onUploadProgress?: (event: {
268
+ loaded: number;
269
+ total?: number;
270
+ percentage?: number;
271
+ }) => void;
272
+ token?: string;
273
+ }
274
+ interface PresignedUploadUrl {
275
+ url: string;
276
+ fields: Record<string, string>;
277
+ expiresAt: Date;
278
+ }
279
+ interface MultipartUploadOptions {
280
+ partSize?: number;
281
+ queueSize?: number;
282
+ leavePartsOnError?: boolean;
283
+ onProgress?: (event: {
284
+ key: string;
285
+ loaded: number;
286
+ total: number;
287
+ part: number;
288
+ percentage: number;
289
+ }) => void;
290
+ }
291
+ interface StorageCapabilities {
292
+ multipart: boolean;
293
+ presignedUrls: boolean;
294
+ progressTracking: boolean;
295
+ abortSignal: boolean;
296
+ metadata: boolean;
297
+ customDomains: boolean;
298
+ edgeCompatible: boolean;
299
+ }
300
+ interface BlobListResponse {
301
+ blobs: Array<{
302
+ url: string;
303
+ pathname: string;
304
+ size: number;
305
+ uploadedAt: Date;
306
+ contentType?: string;
307
+ contentDisposition?: string;
308
+ }>;
309
+ hasMore: boolean;
310
+ cursor?: string;
311
+ }
312
+ //#endregion
313
+ export { BlobListResponse, BulkDeleteResponse, BulkMoveResponse, ClientUploadOptions, CloudflareImagesBatchToken, CloudflareImagesListOptions, CloudflareImagesSigningKey, CloudflareImagesStats, CloudflareImagesTransformOptions, CloudflareImagesVariant, DirectUploadResponse, EnhancedR2Credentials, HandleUploadConfig, ListOptions, MediaActionResponse, MultiStorageConfig, MultipartUploadOptions, MultipartUploadResult, PresignedUploadUrl, type QuotaInfo, R2Credentials, StorageCapabilities, StorageConfig, StorageErrorCode, StorageObject, StorageProvider, StorageProviderType, StreamUploadOptions, UploadOptions, UploadProgress, type ValidationOptions, VercelBlobOptions };
314
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../types.ts"],"mappings":";;;UAIiB,WAAA;EACf,MAAA;EACA,KAAA;EACA,MAAA;AAAA;AAAA,UAGe,aAAA;EACf,WAAA;EACA,SAAA;EACA,MAAA;EACA,eAAA;EACA,IAAA;AAAA;AAAA,UAGe,qBAAA,SAA8B,aAAA;EAC7C,YAAA;EACA,eAAA;EACA,gBAAA;AAAA;AAAA,UAGe,aAAA;EACf,YAAA,GAAe,qBAAA,GAAwB,qBAAA;EACvC,gBAAA;IACE,SAAA;IACA,QAAA;IACA,UAAA;IACA,WAAA;EAAA;EAEF,QAAA,EAAU,mBAAA;EACV,UAAA;IACE,KAAA;EAAA;AAAA;AAAA,UAIa,kBAAA;EACf,SAAA;IAAA,CACG,GAAA,WAAc,aAAA;EAAA;EAEjB,eAAA;EACA,OAAA;IACE,MAAA;IACA,SAAA;IAAA,CACC,GAAA;EAAA;AAAA;AAAA,UAIY,aAAA;EACf,MAAA;EACA,WAAA;EACA,IAAA;EACA,GAAA;EACA,YAAA,GAAe,IAAA;EACf,IAAA;EACA,WAAA;EACA,GAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,eAAA;EACf,MAAA,CAAO,GAAA,WAAc,OAAA;EACrB,QAAA,CAAS,GAAA,WAAc,OAAA,CAAQ,IAAA;EAC/B,MAAA,CAAO,GAAA,WAAc,OAAA;EACrB,WAAA,CAAY,GAAA,WAAc,OAAA,CAAQ,aAAA;EAClC,MAAA,CAAO,GAAA,UAAa,OAAA;IAAY,SAAA;EAAA,IAAuB,OAAA;EACvD,IAAA,CAAK,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,aAAA;EACrC,MAAA,CACE,GAAA,UACA,IAAA,EAAM,WAAA,GAAc,IAAA,GAAO,MAAA,GAAS,IAAA,GAAO,cAAA,EAC3C,OAAA,GAAU,aAAA,GACT,OAAA,CAAQ,aAAA;EAGX,qBAAA,EACE,GAAA,UACA,OAAA,GAAU,aAAA,GACT,OAAA;IAAU,QAAA;IAAkB,GAAA;EAAA;EAC/B,UAAA,EACE,QAAA,UACA,UAAA,UACA,IAAA,EAAM,WAAA,GAAc,IAAA,GAAO,MAAA,EAC3B,OAAA,GAAU,aAAA,GACT,OAAA;IAAU,IAAA;IAAc,UAAA;EAAA;EAC3B,uBAAA,EACE,QAAA,UACA,KAAA,EAAO,KAAA;IAAQ,IAAA;IAAc,UAAA;EAAA,KAC5B,OAAA,CAAQ,aAAA;EACX,oBAAA,EAAsB,QAAA,WAAmB,OAAA;EAGzC,qBAAA,EACE,GAAA,UACA,OAAA;IAAY,SAAA;IAAoB,WAAA;EAAA,IAC/B,OAAA,CAAQ,kBAAA;EAGX,eAAA,KAAoB,mBAAA;AAAA;AAAA,KAGV,mBAAA;AAAA,UAEK,aAAA;EACf,MAAA;EACA,kBAAA;EACA,WAAA;EACA,QAAA,GAAW,MAAA;EACX,eAAA;EACA,cAAA;EACA,SAAA;EACA,WAAA,GAAc,WAAA;EACd,aAAA;EAEA,iBAAA;EACA,QAAA;EACA,EAAA;EACA,QAAA;EACA,YAAA;EAEA,QAAA;EACA,SAAA;EACA,iBAAA;EACA,UAAA,IAAc,QAAA,EAAU,cAAA;EAExB,QAAA;AAAA;AAAA,UAIe,mBAAA;EACf,eAAA;EACA,UAAA,IAAc,QAAA,EAAU,cAAA;EACxB,OAAA,IAAW,KAAA,EAAO,KAAA;AAAA;AAAA,UAIH,kBAAA;EACf,qBAAA,IACE,QAAA,UACA,aAAA,cACG,OAAA;IAAU,OAAA;IAAkB,KAAA;EAAA;EACjC,iBAAA,IACE,IAAA;IACE,GAAA;IACA,QAAA;IACA,WAAA;IACA,kBAAA;IACA,IAAA;EAAA,GAEF,aAAA,cACG,OAAA;AAAA;AAAA,UAGU,cAAA;EACf,MAAA;EACA,KAAA;EACA,IAAA;EACA,GAAA;EACA,UAAA;AAAA;AAAA,UAGe,mBAAA,SAA4B,aAAA;EAC3C,aAAA;AAAA;AAAA,UAGe,qBAAA,SAA8B,aAAA;EAC7C,QAAA;EACA,IAAA;EACA,KAAA,GAAQ,KAAA;IAAQ,UAAA;IAAoB,IAAA;EAAA;AAAA;AAAA,UAGrB,uBAAA;EACf,EAAA;EACA,OAAA;IACE,GAAA;IACA,KAAA;IACA,MAAA;IACA,OAAA;IACA,MAAA;IACA,QAAA;IACA,UAAA;IACA,MAAA;IACA,OAAA;IACA,IAAA;IACA,UAAA;IACA,QAAA;IACA,KAAA;IACA,OAAA;MAAsE,CAAA;MAAY,CAAA;IAAA;IAClF,MAAA;MAAW,KAAA;MAAgB,KAAA;IAAA;IAC3B,WAAA;IACA,GAAA;IACA,OAAA;IACA,IAAA;MAAS,GAAA;MAAc,KAAA;MAAgB,MAAA;MAAiB,IAAA;IAAA;IACxD,IAAA;EAAA;EAEF,sBAAA;AAAA;AAAA,UAGe,oBAAA;EACf,SAAA;EACA,EAAA;AAAA;AAAA,UAGe,0BAAA;EACf,KAAA;EACA,SAAA;AAAA;AAAA,UAGe,0BAAA;EACf,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,2BAAA,SAAoC,WAAA;EACnD,OAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,UAGe,qBAAA;EACf,KAAA;IACE,OAAA;IACA,OAAA;EAAA;AAAA;AAAA,UAIa,gCAAA;EACf,KAAA;EACA,MAAA;EACA,GAAA;EACA,OAAA;IAAsE,CAAA;IAAY,CAAA;EAAA;EAClF,OAAA;EACA,MAAA;EACA,IAAA;EACA,UAAA;EACA,IAAA;EACA,MAAA;IAAW,KAAA;IAAgB,KAAA;EAAA;EAC3B,UAAA;EACA,WAAA;EACA,QAAA;EACA,GAAA;EACA,KAAA;EACA,QAAA;EACA,OAAA;EACA,MAAA;EACA,OAAA;EACA,IAAA;IAAS,GAAA;IAAc,KAAA;IAAgB,MAAA;IAAiB,IAAA;EAAA;AAAA;AAAA,UAIzC,mBAAA;EACf,OAAA;EACA,IAAA,GAAO,CAAA;EACP,KAAA;AAAA;AAAA,UAGe,kBAAA;EACf,SAAA;EACA,MAAA,EAAQ,KAAA;IAAQ,GAAA;IAAa,KAAA;EAAA;AAAA;AAAA,UAGd,gBAAA;EACf,SAAA,EAAW,KAAA;IAAQ,SAAA;IAAmB,cAAA;EAAA;EACtC,MAAA,EAAQ,KAAA;IAAQ,SAAA;IAAmB,cAAA;IAAwB,KAAA;EAAA;AAAA;AAAA,UAI5C,iBAAA;EACf,MAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,aAAA;EACA,WAAA;EACA,SAAA;EACA,gBAAA,IAAoB,KAAA;IAAS,MAAA;IAAgB,KAAA;IAAgB,UAAA;EAAA;EAC7D,KAAA;AAAA;AAAA,UAIe,kBAAA;EACf,GAAA;EACA,MAAA,EAAQ,MAAA;EACR,SAAA,EAAW,IAAA;AAAA;AAAA,UAII,sBAAA;EACf,QAAA;EACA,SAAA;EACA,iBAAA;EACA,UAAA,IAAc,KAAA;IACZ,GAAA;IACA,MAAA;IACA,KAAA;IACA,IAAA;IACA,UAAA;EAAA;AAAA;AAAA,UAKa,mBAAA;EACf,SAAA;EACA,aAAA;EACA,gBAAA;EACA,WAAA;EACA,QAAA;EACA,aAAA;EACA,cAAA;AAAA;AAAA,UAIe,gBAAA;EACf,KAAA,EAAO,KAAA;IACL,GAAA;IACA,QAAA;IACA,IAAA;IACA,UAAA,EAAY,IAAA;IACZ,WAAA;IACA,kBAAA;EAAA;EAEF,OAAA;EACA,MAAA;AAAA"}
package/types.mjs ADDED
@@ -0,0 +1,3 @@
1
+ import { StorageErrorCode } from "./validation.mjs";
2
+
3
+ export { StorageErrorCode };
@@ -0,0 +1,101 @@
1
+ import { validateStorageKey } from "./keys.mjs";
2
+
3
+ //#region src/validation.d.ts
4
+ declare enum StorageErrorCode {
5
+ INVALID_KEY = "INVALID_KEY",
6
+ INVALID_FILE_SIZE = "INVALID_FILE_SIZE",
7
+ INVALID_MIME_TYPE = "INVALID_MIME_TYPE",
8
+ INVALID_OPTIONS = "INVALID_OPTIONS",
9
+ PROVIDER_ERROR = "PROVIDER_ERROR",
10
+ PROVIDER_UNAVAILABLE = "PROVIDER_UNAVAILABLE",
11
+ PROVIDER_QUOTA_EXCEEDED = "PROVIDER_QUOTA_EXCEEDED",
12
+ NETWORK_ERROR = "NETWORK_ERROR",
13
+ TIMEOUT = "TIMEOUT",
14
+ CONNECTION_FAILED = "CONNECTION_FAILED",
15
+ UPLOAD_FAILED = "UPLOAD_FAILED",
16
+ UPLOAD_CANCELLED = "UPLOAD_CANCELLED",
17
+ UPLOAD_PARTIAL = "UPLOAD_PARTIAL",
18
+ DOWNLOAD_FAILED = "DOWNLOAD_FAILED",
19
+ FILE_NOT_FOUND = "FILE_NOT_FOUND",
20
+ ACCESS_DENIED = "ACCESS_DENIED",
21
+ CONFIG_ERROR = "CONFIG_ERROR",
22
+ MISSING_CREDENTIALS = "MISSING_CREDENTIALS",
23
+ INVALID_CONFIG = "INVALID_CONFIG"
24
+ }
25
+ declare class StorageError extends Error {
26
+ readonly code: StorageErrorCode;
27
+ readonly details?: Record<string, any>;
28
+ readonly retryable: boolean;
29
+ constructor(message: string, code: StorageErrorCode, details?: Record<string, any>, retryable?: boolean);
30
+ }
31
+ declare class ValidationError extends StorageError {
32
+ constructor(message: string, details?: Record<string, any>);
33
+ }
34
+ declare class ProviderError extends StorageError {
35
+ constructor(message: string, provider: string, details?: Record<string, any>, retryable?: boolean);
36
+ }
37
+ declare class NetworkError extends StorageError {
38
+ constructor(message: string, details?: Record<string, any>, retryable?: boolean);
39
+ }
40
+ declare class UploadError extends StorageError {
41
+ constructor(message: string, details?: Record<string, any>, retryable?: boolean);
42
+ }
43
+ declare class DownloadError extends StorageError {
44
+ constructor(message: string, details?: Record<string, any>, retryable?: boolean);
45
+ }
46
+ declare class ConfigError extends StorageError {
47
+ constructor(message: string, details?: Record<string, any>);
48
+ }
49
+ interface ValidationOptions {
50
+ maxFileSize?: number;
51
+ allowedMimeTypes?: string[];
52
+ allowedExtensions?: string[];
53
+ maxKeyLength?: number;
54
+ forbiddenKeyPatterns?: RegExp[];
55
+ requireContentType?: boolean;
56
+ }
57
+ interface QuotaInfo {
58
+ used: number;
59
+ limit: number;
60
+ remaining: number;
61
+ resetAt?: Date;
62
+ provider: string;
63
+ }
64
+ declare function validateFileSize(size: number, maxSize: number): {
65
+ valid: boolean;
66
+ error?: string;
67
+ };
68
+ declare function validateMimeType(mimeType: string, allowedTypes?: string[]): {
69
+ valid: boolean;
70
+ error?: string;
71
+ };
72
+ declare function validateFileExtension(filename: string, contentType: string): {
73
+ valid: boolean;
74
+ error?: string;
75
+ };
76
+ declare function validateUploadOptions(options: {
77
+ fileSize?: number;
78
+ contentType?: string;
79
+ key?: string;
80
+ }, validationOptions?: ValidationOptions): {
81
+ valid: boolean;
82
+ errors: string[];
83
+ };
84
+ declare function isRetryableError(error: unknown): boolean;
85
+ declare function getErrorCode(error: unknown): StorageErrorCode;
86
+ declare function createStorageError(error: unknown, context?: {
87
+ operation?: string;
88
+ provider?: string;
89
+ key?: string;
90
+ }): StorageError;
91
+ declare function getQuotaInfo(used: number, limit: number, provider: string): QuotaInfo;
92
+ declare function isQuotaExceeded(used: number, limit: number): boolean;
93
+ declare function formatFileSize(bytes: number): string;
94
+ declare function parseFileSize(sizeString: string): number;
95
+ declare function validateUrlForSSRF(url: string): {
96
+ valid: boolean;
97
+ error?: string;
98
+ };
99
+ //#endregion
100
+ export { ConfigError, DownloadError, NetworkError, ProviderError, QuotaInfo, StorageError, StorageErrorCode, UploadError, ValidationError, ValidationOptions, createStorageError, formatFileSize, getErrorCode, getQuotaInfo, isQuotaExceeded, isRetryableError, parseFileSize, validateFileExtension, validateFileSize, validateMimeType, validateStorageKey, validateUploadOptions, validateUrlForSSRF };
101
+ //# sourceMappingURL=validation.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.mts","names":[],"sources":["../src/validation.ts"],"mappings":";;;aAkBY,gBAAA;EAEV,WAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;EAGA,cAAA;EACA,oBAAA;EACA,uBAAA;EAGA,aAAA;EACA,OAAA;EACA,iBAAA;EAGA,aAAA;EACA,gBAAA;EACA,cAAA;EAGA,eAAA;EACA,cAAA;EACA,aAAA;EAGA,YAAA;EACA,mBAAA;EACA,cAAA;AAAA;AAAA,cAMW,YAAA,SAAqB,KAAA;EAAA,SAChB,IAAA,EAAM,gBAAA;EAAA,SACN,OAAA,GAAU,MAAA;EAAA,SACV,SAAA;cAGd,OAAA,UACA,IAAA,EAAM,gBAAA,EACN,OAAA,GAAU,MAAA,eACV,SAAA;AAAA;AAAA,cAaS,eAAA,SAAwB,YAAA;cACvB,OAAA,UAAiB,OAAA,GAAU,MAAA;AAAA;AAAA,cAS5B,aAAA,SAAsB,YAAA;cAE/B,OAAA,UACA,QAAA,UACA,OAAA,GAAU,MAAA,eACV,SAAA;AAAA;AAAA,cAUS,YAAA,SAAqB,YAAA;cACpB,OAAA,UAAiB,OAAA,GAAU,MAAA,eAAqB,SAAA;AAAA;AAAA,cASjD,WAAA,SAAoB,YAAA;cACnB,OAAA,UAAiB,OAAA,GAAU,MAAA,eAAqB,SAAA;AAAA;AAAA,cASjD,aAAA,SAAsB,YAAA;cACrB,OAAA,UAAiB,OAAA,GAAU,MAAA,eAAqB,SAAA;AAAA;AAAA,cASjD,WAAA,SAAoB,YAAA;cACnB,OAAA,UAAiB,OAAA,GAAU,MAAA;AAAA;AAAA,UASxB,iBAAA;EACf,WAAA;EACA,gBAAA;EACA,iBAAA;EACA,YAAA;EACA,oBAAA,GAAuB,MAAA;EACvB,kBAAA;AAAA;AAAA,UAMe,SAAA;EACf,IAAA;EACA,KAAA;EACA,SAAA;EACA,OAAA,GAAU,IAAA;EACV,QAAA;AAAA;AAAA,iBAUc,gBAAA,CACd,IAAA,UACA,OAAA;EACG,KAAA;EAAgB,KAAA;AAAA;AAAA,iBAyIL,gBAAA,CACd,QAAA,UACA,YAAA;EACG,KAAA;EAAgB,KAAA;AAAA;AAAA,iBAuEL,qBAAA,CACd,QAAA,UACA,WAAA;EACG,KAAA;EAAgB,KAAA;AAAA;AAAA,iBAwDL,qBAAA,CACd,OAAA;EACE,QAAA;EACA,WAAA;EACA,GAAA;AAAA,GAEF,iBAAA,GAAmB,iBAAA;EAChB,KAAA;EAAgB,MAAA;AAAA;AAAA,iBA2EL,gBAAA,CAAiB,KAAA;AAAA,iBA+CjB,YAAA,CAAa,KAAA,YAAiB,gBAAA;AAAA,iBA6C9B,kBAAA,CACd,KAAA,WACA,OAAA;EACE,SAAA;EACA,QAAA;EACA,GAAA;AAAA,IAED,YAAA;AAAA,iBA2Ba,YAAA,CAAa,IAAA,UAAc,KAAA,UAAe,QAAA,WAAmB,SAAA;AAAA,iBAiB7D,eAAA,CAAgB,IAAA,UAAc,KAAA;AAAA,iBAU9B,cAAA,CAAe,KAAA;AAAA,iBAgBf,aAAA,CAAc,UAAA;AAAA,iBAsGd,kBAAA,CAAmB,GAAA;EACjC,KAAA;EACA,KAAA;AAAA"}