@visulima/storage 1.0.0-alpha.14 → 1.0.0-alpha.16
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 +25 -0
- package/LICENSE.md +1094 -382
- package/dist/adapter/nuxt/module.d.ts +41 -34
- package/dist/handler/http/fetch/index.d.ts +297 -4
- package/dist/handler/http/hono/index.d.ts +1474 -58
- package/dist/handler/http/nextjs/index.d.ts +66 -58
- package/dist/handler/http/node/index.d.ts +361 -4
- package/dist/handler/http/solid-start/index.d.ts +66 -57
- package/dist/index.d.ts +376 -17
- package/dist/openapi/index.d.ts +24 -5
- package/dist/packem_shared/{GCSMetaStorage-BjdSXKri.js → GCSMetaStorage-CNXq7vGd.js} +1 -1
- package/dist/packem_shared/{GCStorage-D3JVWisH.js → GCStorage-CdnSuQwa.js} +1 -1
- package/dist/packem_shared/S3Client.d-CZ62Jztg.d.ts +20357 -0
- package/dist/packem_shared/disk-storage-with-checksum.d-hEoe2ugb.d.ts +148 -0
- package/dist/packem_shared/{gcs-meta-storage-C8rMsqR_.js → gcs-meta-storage-B5AVt1aS.js} +1 -1
- package/dist/packem_shared/local-meta-storage.d-Dop9RP9k.d.ts +20 -0
- package/dist/packem_shared/media-transformer.d-DeHZkBVx.d.ts +331 -0
- package/dist/packem_shared/s3-base-storage.d-CczjSe98.d.ts +251 -0
- package/dist/packem_shared/storage.d-BOMUJD96.d.ts +939 -0
- package/dist/packem_shared/tus-base.d-BftIixIA.d.ts +99 -0
- package/dist/packem_shared/types.d-BPd_JkW1.d.ts +708 -0
- package/dist/packem_shared/types.d-D-mlfmef.d.ts +49 -0
- package/dist/storage/aws/clients/index.d.ts +166 -6
- package/dist/storage/aws/index.d.ts +320 -4
- package/dist/storage/aws-light/index.d.ts +252 -4
- package/dist/storage/azure/index.d.ts +10422 -4
- package/dist/storage/gcs/index.d.ts +4107 -5
- package/dist/storage/gcs/index.js +2 -2
- package/dist/storage/local/index.d.ts +7 -4
- package/dist/storage/netlify-blob/index.d.ts +142 -4
- package/dist/storage/vercel-blob/index.d.ts +129 -4
- package/dist/transformer/audio-transformer.d.ts +127 -125
- package/dist/transformer/image-transformer.d.ts +569 -568
- package/dist/transformer/index.d.ts +62 -5
- package/dist/transformer/video-transformer.d.ts +144 -142
- package/package.json +38 -38
- package/dist/handler/base/base-handler-core.d.ts +0 -91
- package/dist/handler/base/base-handler-fetch.d.ts +0 -76
- package/dist/handler/base/base-handler-node.d.ts +0 -137
- package/dist/handler/multipart/multipart-base.d.ts +0 -84
- package/dist/handler/multipart/multipart-fetch.d.ts +0 -64
- package/dist/handler/multipart/multipart.d.ts +0 -49
- package/dist/handler/rest/rest-base.d.ts +0 -106
- package/dist/handler/rest/rest-fetch.d.ts +0 -88
- package/dist/handler/rest/rest.d.ts +0 -93
- package/dist/handler/tus/tus-base.d.ts +0 -152
- package/dist/handler/tus/tus-fetch.d.ts +0 -72
- package/dist/handler/tus/tus.d.ts +0 -78
- package/dist/handler/types.d.ts +0 -53
- package/dist/handler/utils/request-parser.d.ts +0 -72
- package/dist/handler/utils/response-builder.d.ts +0 -83
- package/dist/handler/utils/storage-utils.d.ts +0 -10
- package/dist/handler/utils/stream-utils.d.ts +0 -29
- package/dist/handler/utils/upload-handlers.d.ts +0 -76
- package/dist/metrics/index.d.ts +0 -2
- package/dist/metrics/no-op-metrics.d.ts +0 -15
- package/dist/metrics/opentelemetry-metrics.d.ts +0 -55
- package/dist/openapi/rest.d.ts +0 -7
- package/dist/openapi/shared.d.ts +0 -13
- package/dist/openapi/transform.d.ts +0 -3
- package/dist/openapi/tus.d.ts +0 -7
- package/dist/openapi/xhr.d.ts +0 -7
- package/dist/storage/aws/clients/backblaze.d.ts +0 -12
- package/dist/storage/aws/clients/cloudflare.d.ts +0 -13
- package/dist/storage/aws/clients/digital-ocean.d.ts +0 -12
- package/dist/storage/aws/clients/minio.d.ts +0 -13
- package/dist/storage/aws/clients/tigris.d.ts +0 -12
- package/dist/storage/aws/clients/types.d.ts +0 -95
- package/dist/storage/aws/clients/wasabi.d.ts +0 -12
- package/dist/storage/aws/s3-base-storage.d.ts +0 -248
- package/dist/storage/aws/s3-client-adapter.d.ts +0 -110
- package/dist/storage/aws/s3-file.d.ts +0 -10
- package/dist/storage/aws/s3-meta-storage.d.ts +0 -15
- package/dist/storage/aws/s3-storage.d.ts +0 -70
- package/dist/storage/aws/types.d.ts +0 -118
- package/dist/storage/aws-light/aws-light-api-adapter.d.ts +0 -130
- package/dist/storage/aws-light/aws-light-file.d.ts +0 -10
- package/dist/storage/aws-light/aws-light-meta-storage.d.ts +0 -19
- package/dist/storage/aws-light/aws-light-storage.d.ts +0 -66
- package/dist/storage/aws-light/types.d.ts +0 -36
- package/dist/storage/azure/azure-file.d.ts +0 -6
- package/dist/storage/azure/azure-meta-storage.d.ts +0 -15
- package/dist/storage/azure/azure-storage.d.ts +0 -69
- package/dist/storage/azure/types.d.ts +0 -61
- package/dist/storage/gcs/fetch-error.d.ts +0 -11
- package/dist/storage/gcs/gcs-config.d.ts +0 -2
- package/dist/storage/gcs/gcs-file.d.ts +0 -6
- package/dist/storage/gcs/gcs-meta-storage.d.ts +0 -27
- package/dist/storage/gcs/gcs-storage.d.ts +0 -91
- package/dist/storage/gcs/types.d.ts +0 -54
- package/dist/storage/gcs/utils.d.ts +0 -7
- package/dist/storage/local/disk-storage-with-checksum.d.ts +0 -15
- package/dist/storage/local/disk-storage.d.ts +0 -135
- package/dist/storage/local/local-meta-storage.d.ts +0 -27
- package/dist/storage/meta-storage-options.d.ts +0 -11
- package/dist/storage/meta-storage.d.ts +0 -30
- package/dist/storage/netlify-blob/netlify-blob-file.d.ts +0 -12
- package/dist/storage/netlify-blob/netlify-blob-meta-storage.d.ts +0 -6
- package/dist/storage/netlify-blob/netlify-blob-storage.d.ts +0 -93
- package/dist/storage/netlify-blob/types.d.ts +0 -29
- package/dist/storage/storage.d.ts +0 -353
- package/dist/storage/types.d.ts +0 -217
- package/dist/storage/utils/file/file.d.ts +0 -25
- package/dist/storage/utils/file/get-file-status.d.ts +0 -9
- package/dist/storage/utils/file/has-content.d.ts +0 -9
- package/dist/storage/utils/file/index.d.ts +0 -10
- package/dist/storage/utils/file/is-expired.d.ts +0 -8
- package/dist/storage/utils/file/metadata.d.ts +0 -18
- package/dist/storage/utils/file/part-match.d.ts +0 -11
- package/dist/storage/utils/file/types.d.ts +0 -37
- package/dist/storage/utils/file/update-metadata.d.ts +0 -10
- package/dist/storage/utils/file/update-size.d.ts +0 -10
- package/dist/storage/vercel-blob/types.d.ts +0 -31
- package/dist/storage/vercel-blob/vercel-blob-file.d.ts +0 -16
- package/dist/storage/vercel-blob/vercel-blob-meta-storage.d.ts +0 -6
- package/dist/storage/vercel-blob/vercel-blob-storage.d.ts +0 -76
- package/dist/transformer/base-transformer.d.ts +0 -63
- package/dist/transformer/media-transformer.d.ts +0 -332
- package/dist/transformer/transformer-config.d.ts +0 -16
- package/dist/transformer/types.d.ts +0 -639
- package/dist/transformer/utils.d.ts +0 -33
- package/dist/transformer/validation-error.d.ts +0 -23
- package/dist/utils/cache.d.ts +0 -32
- package/dist/utils/chunked-upload.d.ts +0 -65
- package/dist/utils/detect-file-type.d.ts +0 -28
- package/dist/utils/errors.d.ts +0 -74
- package/dist/utils/file-path-url-matcher.d.ts +0 -18
- package/dist/utils/headers.d.ts +0 -111
- package/dist/utils/http.d.ts +0 -92
- package/dist/utils/locker.d.ts +0 -26
- package/dist/utils/pipes/stream-checksum.d.ts +0 -47
- package/dist/utils/pipes/stream-length.d.ts +0 -22
- package/dist/utils/primitives/get-last-one.d.ts +0 -3
- package/dist/utils/primitives/is-record.d.ts +0 -2
- package/dist/utils/primitives/map-values.d.ts +0 -9
- package/dist/utils/primitives/pick.d.ts +0 -2
- package/dist/utils/primitives/to-milliseconds.d.ts +0 -12
- package/dist/utils/primitives/to-seconds.d.ts +0 -12
- package/dist/utils/range-checksum.d.ts +0 -33
- package/dist/utils/range-hasher.d.ts +0 -46
- package/dist/utils/retry.d.ts +0 -64
- package/dist/utils/types.d.ts +0 -108
- package/dist/utils/validation-error.d.ts +0 -22
- package/dist/utils/validator.d.ts +0 -36
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { Readable } from 'node:stream';
|
|
2
|
+
import { F as File, M as MetaStorage, c as createRetryWrapper, b as FileInit, B as BaseStorage, R as RetryConfig, d as FilePart, e as FileQuery, a as FileReturn } from "./storage.d-BOMUJD96.js";
|
|
3
|
+
/**
|
|
4
|
+
* Part interface for multipart uploads.
|
|
5
|
+
*/
|
|
6
|
+
interface Part {
|
|
7
|
+
ETag?: string;
|
|
8
|
+
PartNumber: number;
|
|
9
|
+
Size?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Base file type for S3-compatible storage.
|
|
13
|
+
*/
|
|
14
|
+
interface S3CompatibleFile extends File {
|
|
15
|
+
Parts?: Part[];
|
|
16
|
+
partSize?: number;
|
|
17
|
+
partsUrls?: string[];
|
|
18
|
+
UploadId?: string;
|
|
19
|
+
uri?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* S3 API operations interface that must be implemented by concrete storage classes.
|
|
23
|
+
*/
|
|
24
|
+
interface S3ApiOperations {
|
|
25
|
+
abortMultipartUpload: (params: {
|
|
26
|
+
Bucket: string;
|
|
27
|
+
Key: string;
|
|
28
|
+
UploadId: string;
|
|
29
|
+
}) => Promise<void>;
|
|
30
|
+
checkBucketAccess: (params: {
|
|
31
|
+
Bucket: string;
|
|
32
|
+
}) => Promise<void>;
|
|
33
|
+
completeMultipartUpload: (params: {
|
|
34
|
+
Bucket: string;
|
|
35
|
+
Key: string;
|
|
36
|
+
Parts: {
|
|
37
|
+
ETag: string;
|
|
38
|
+
PartNumber: number;
|
|
39
|
+
}[];
|
|
40
|
+
UploadId: string;
|
|
41
|
+
}) => Promise<{
|
|
42
|
+
ETag?: string;
|
|
43
|
+
Location: string;
|
|
44
|
+
}>;
|
|
45
|
+
copyObject: (params: {
|
|
46
|
+
Bucket: string;
|
|
47
|
+
CopySource: string;
|
|
48
|
+
Key: string;
|
|
49
|
+
StorageClass?: string;
|
|
50
|
+
}) => Promise<void>;
|
|
51
|
+
createMultipartUpload: (params: {
|
|
52
|
+
ACL?: string;
|
|
53
|
+
Bucket: string;
|
|
54
|
+
ContentType?: string;
|
|
55
|
+
Key: string;
|
|
56
|
+
Metadata?: Record<string, string>;
|
|
57
|
+
}) => Promise<{
|
|
58
|
+
UploadId: string;
|
|
59
|
+
}>;
|
|
60
|
+
deleteObject: (params: {
|
|
61
|
+
Bucket: string;
|
|
62
|
+
Key: string;
|
|
63
|
+
}) => Promise<void>;
|
|
64
|
+
getObject: (params: {
|
|
65
|
+
Bucket: string;
|
|
66
|
+
Key: string;
|
|
67
|
+
}) => Promise<{
|
|
68
|
+
Body?: ReadableStream | Readable;
|
|
69
|
+
ContentLength?: number;
|
|
70
|
+
ContentType?: string;
|
|
71
|
+
ETag?: string;
|
|
72
|
+
Expires?: Date;
|
|
73
|
+
LastModified?: Date;
|
|
74
|
+
Metadata?: Record<string, string>;
|
|
75
|
+
}>;
|
|
76
|
+
getPresignedUrl: (params: {
|
|
77
|
+
Bucket: string;
|
|
78
|
+
expiresIn: number;
|
|
79
|
+
Key: string;
|
|
80
|
+
PartNumber: number;
|
|
81
|
+
UploadId: string;
|
|
82
|
+
}) => Promise<string>;
|
|
83
|
+
headObject: (params: {
|
|
84
|
+
Bucket: string;
|
|
85
|
+
Key: string;
|
|
86
|
+
}) => Promise<{
|
|
87
|
+
ContentLength?: number;
|
|
88
|
+
ContentType?: string;
|
|
89
|
+
ETag?: string;
|
|
90
|
+
Expires?: Date;
|
|
91
|
+
LastModified?: Date;
|
|
92
|
+
Metadata?: Record<string, string>;
|
|
93
|
+
}>;
|
|
94
|
+
listObjectsV2: (params: {
|
|
95
|
+
Bucket: string;
|
|
96
|
+
ContinuationToken?: string;
|
|
97
|
+
MaxKeys?: number;
|
|
98
|
+
}) => Promise<{
|
|
99
|
+
Contents?: {
|
|
100
|
+
Key?: string;
|
|
101
|
+
LastModified?: Date;
|
|
102
|
+
}[];
|
|
103
|
+
IsTruncated?: boolean;
|
|
104
|
+
NextContinuationToken?: string;
|
|
105
|
+
}>;
|
|
106
|
+
listParts: (params: {
|
|
107
|
+
Bucket: string;
|
|
108
|
+
Key: string;
|
|
109
|
+
UploadId: string;
|
|
110
|
+
}) => Promise<{
|
|
111
|
+
Parts?: Part[];
|
|
112
|
+
}>;
|
|
113
|
+
uploadPart: (params: {
|
|
114
|
+
Body: Readable | ReadableStream | Uint8Array;
|
|
115
|
+
Bucket: string;
|
|
116
|
+
ContentLength?: number;
|
|
117
|
+
ContentMD5?: string;
|
|
118
|
+
Key: string;
|
|
119
|
+
PartNumber: number;
|
|
120
|
+
UploadId: string;
|
|
121
|
+
}) => Promise<{
|
|
122
|
+
ETag: string;
|
|
123
|
+
}>;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Base class for S3-compatible storage implementations.
|
|
127
|
+
* Contains all shared business logic for S3 operations.
|
|
128
|
+
* @template TFile The file type used by this storage backend.
|
|
129
|
+
*/
|
|
130
|
+
declare abstract class S3BaseStorage<TFile extends S3CompatibleFile = S3CompatibleFile> extends BaseStorage<TFile> {
|
|
131
|
+
override checksumTypes: string[];
|
|
132
|
+
protected bucket: string;
|
|
133
|
+
protected meta: MetaStorage<TFile>;
|
|
134
|
+
/**
|
|
135
|
+
* S3 multipart upload does not allow more than 10000 parts.
|
|
136
|
+
*/
|
|
137
|
+
protected readonly MAX_PARTS = 1e4;
|
|
138
|
+
protected readonly partSize: number;
|
|
139
|
+
protected readonly retry: ReturnType<typeof createRetryWrapper>;
|
|
140
|
+
/**
|
|
141
|
+
* Abstract method to get S3 API operations implementation.
|
|
142
|
+
*/
|
|
143
|
+
protected abstract getS3Api(): S3ApiOperations;
|
|
144
|
+
/**
|
|
145
|
+
* Abstract method to get the file class constructor.
|
|
146
|
+
*/
|
|
147
|
+
protected abstract getFileClass(): new (config: FileInit) => TFile;
|
|
148
|
+
/**
|
|
149
|
+
* Abstract method to get ACL value.
|
|
150
|
+
*/
|
|
151
|
+
protected abstract getAcl(): string | undefined;
|
|
152
|
+
/**
|
|
153
|
+
* Abstract method for access check.
|
|
154
|
+
*/
|
|
155
|
+
protected abstract accessCheck(maxWaitTime?: number): Promise<void>;
|
|
156
|
+
constructor(config: {
|
|
157
|
+
bucket: string;
|
|
158
|
+
clientDirectUpload?: boolean;
|
|
159
|
+
expiration?: {
|
|
160
|
+
maxAge?: string;
|
|
161
|
+
};
|
|
162
|
+
filename?: (file: TFile) => string;
|
|
163
|
+
logger?: BaseStorage<TFile>["logger"];
|
|
164
|
+
metaStorage?: MetaStorage<TFile>;
|
|
165
|
+
metaStorageConfig?: unknown;
|
|
166
|
+
partSize?: number | string;
|
|
167
|
+
retryConfig?: RetryConfig;
|
|
168
|
+
});
|
|
169
|
+
/**
|
|
170
|
+
* Creates a new S3 multipart upload.
|
|
171
|
+
*/
|
|
172
|
+
create(config: FileInit): Promise<TFile>;
|
|
173
|
+
/**
|
|
174
|
+
* Writes data to an S3 multipart upload.
|
|
175
|
+
*/
|
|
176
|
+
write(part: FilePart | FileQuery | TFile): Promise<TFile>;
|
|
177
|
+
/**
|
|
178
|
+
* Deletes an upload and its metadata.
|
|
179
|
+
*/
|
|
180
|
+
delete({
|
|
181
|
+
id
|
|
182
|
+
}: FileQuery): Promise<TFile>;
|
|
183
|
+
/**
|
|
184
|
+
* Copies an upload file to a new location.
|
|
185
|
+
*/
|
|
186
|
+
copy(name: string, destination: string, options?: {
|
|
187
|
+
storageClass?: string;
|
|
188
|
+
}): Promise<TFile>;
|
|
189
|
+
/**
|
|
190
|
+
* Moves an upload file to a new location.
|
|
191
|
+
*/
|
|
192
|
+
move(name: string, destination: string): Promise<TFile>;
|
|
193
|
+
/**
|
|
194
|
+
* Lists files in the bucket.
|
|
195
|
+
*/
|
|
196
|
+
override list(limit?: number): Promise<TFile[]>;
|
|
197
|
+
/**
|
|
198
|
+
* Checks if a file exists by verifying both metadata and the actual S3 object.
|
|
199
|
+
* Returns true only if both the metadata and the S3 object exist.
|
|
200
|
+
* @param query File query containing the file ID to check.
|
|
201
|
+
* @returns Promise resolving to true if both metadata and S3 object exist, false otherwise.
|
|
202
|
+
*/
|
|
203
|
+
override exists({
|
|
204
|
+
id
|
|
205
|
+
}: FileQuery): Promise<boolean>;
|
|
206
|
+
/**
|
|
207
|
+
* Gets an uploaded file by ID.
|
|
208
|
+
*/
|
|
209
|
+
get({
|
|
210
|
+
id
|
|
211
|
+
}: FileQuery): Promise<FileReturn>;
|
|
212
|
+
/**
|
|
213
|
+
* Gets file stream (abstract - must be implemented by subclasses due to stream differences).
|
|
214
|
+
*/
|
|
215
|
+
abstract override getStream(query: FileQuery): Promise<{
|
|
216
|
+
headers?: Record<string, string>;
|
|
217
|
+
size?: number;
|
|
218
|
+
stream: Readable;
|
|
219
|
+
}>;
|
|
220
|
+
/**
|
|
221
|
+
* Builds presigned URLs for client uploads.
|
|
222
|
+
*/
|
|
223
|
+
protected buildPresigned(file: TFile): Promise<TFile>;
|
|
224
|
+
/**
|
|
225
|
+
* Gets presigned URLs for all parts.
|
|
226
|
+
*/
|
|
227
|
+
protected getPartsPresignedUrls(file: TFile): Promise<string[]>;
|
|
228
|
+
/**
|
|
229
|
+
* Gets parts for a multipart upload.
|
|
230
|
+
*/
|
|
231
|
+
protected getParts(file: TFile): Promise<Part[]>;
|
|
232
|
+
/**
|
|
233
|
+
* Completes a multipart upload.
|
|
234
|
+
*/
|
|
235
|
+
protected completeMultipartUpload(file: TFile): Promise<{
|
|
236
|
+
ETag?: string;
|
|
237
|
+
Location: string;
|
|
238
|
+
}>;
|
|
239
|
+
/**
|
|
240
|
+
* Aborts a multipart upload.
|
|
241
|
+
*/
|
|
242
|
+
protected abortMultipartUpload(file: TFile): Promise<void>;
|
|
243
|
+
/**
|
|
244
|
+
* Internal onComplete handler.
|
|
245
|
+
*/
|
|
246
|
+
protected internalOnComplete: (file: TFile) => Promise<[{
|
|
247
|
+
ETag?: string;
|
|
248
|
+
Location: string;
|
|
249
|
+
}, TFile]>;
|
|
250
|
+
}
|
|
251
|
+
export { Part as P, S3ApiOperations as S, S3BaseStorage as a };
|