lean-s3 0.4.1 → 0.5.0
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/dist/index.d.ts +2 -1
- package/dist/index.js +15 -3
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ interface S3FilePresignOptions {
|
|
|
41
41
|
/** Seconds. */
|
|
42
42
|
expiresIn: number;
|
|
43
43
|
method: PresignableHttpMethod;
|
|
44
|
+
contentLength: number;
|
|
44
45
|
storageClass: StorageClass;
|
|
45
46
|
acl: Acl;
|
|
46
47
|
}
|
|
@@ -224,7 +225,7 @@ declare class S3Client {
|
|
|
224
225
|
* ```
|
|
225
226
|
*/
|
|
226
227
|
presign(path: string, { method, expiresIn, // TODO: Maybe rename this to expiresInSeconds
|
|
227
|
-
storageClass, acl, region: regionOverride, bucket: bucketOverride, endpoint: endpointOverride, }?: Partial<S3FilePresignOptions & OverridableS3ClientOptions>): string;
|
|
228
|
+
storageClass, contentLength, acl, region: regionOverride, bucket: bucketOverride, endpoint: endpointOverride, }?: Partial<S3FilePresignOptions & OverridableS3ClientOptions>): string;
|
|
228
229
|
createMultipartUpload(key: string, options?: CreateMultipartUploadOptions): Promise<CreateMultipartUploadResponse>;
|
|
229
230
|
/**
|
|
230
231
|
* @remarks Uses [`ListMultipartUploads`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html).
|
package/dist/index.js
CHANGED
|
@@ -431,11 +431,17 @@ var S3Client = class {
|
|
|
431
431
|
expiresIn = 3600,
|
|
432
432
|
// TODO: Maybe rename this to expiresInSeconds
|
|
433
433
|
storageClass,
|
|
434
|
+
contentLength,
|
|
434
435
|
acl,
|
|
435
436
|
region: regionOverride,
|
|
436
437
|
bucket: bucketOverride,
|
|
437
438
|
endpoint: endpointOverride
|
|
438
439
|
} = {}) {
|
|
440
|
+
if (typeof contentLength === "number") {
|
|
441
|
+
if (contentLength < 0) {
|
|
442
|
+
throw new RangeError("`contentLength` must be >= 0.");
|
|
443
|
+
}
|
|
444
|
+
}
|
|
439
445
|
const now2 = /* @__PURE__ */ new Date();
|
|
440
446
|
const date = getAmzDate(now2);
|
|
441
447
|
const options = this.#options;
|
|
@@ -447,13 +453,19 @@ var S3Client = class {
|
|
|
447
453
|
`${options.accessKeyId}/${date.date}/${region}/s3/aws4_request`,
|
|
448
454
|
date,
|
|
449
455
|
expiresIn,
|
|
450
|
-
"host",
|
|
451
|
-
|
|
456
|
+
typeof contentLength === "number" ? "content-length;host" : "host",
|
|
457
|
+
unsignedPayload,
|
|
452
458
|
storageClass,
|
|
453
459
|
options.sessionToken,
|
|
454
460
|
acl
|
|
455
461
|
);
|
|
456
|
-
const dataDigest =
|
|
462
|
+
const dataDigest = typeof contentLength === "number" ? createCanonicalDataDigest(
|
|
463
|
+
method,
|
|
464
|
+
res.pathname,
|
|
465
|
+
query,
|
|
466
|
+
{ "content-length": String(contentLength), host: res.host },
|
|
467
|
+
unsignedPayload
|
|
468
|
+
) : createCanonicalDataDigestHostOnly(
|
|
457
469
|
method,
|
|
458
470
|
res.pathname,
|
|
459
471
|
query,
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "lean-s3",
|
|
3
3
|
"author": "Niklas Mollenhauer",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.5.0",
|
|
6
6
|
"description": "A server-side S3 API for the regular user.",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"s3",
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
"@testcontainers/localstack": "^11.0.3",
|
|
52
52
|
"@testcontainers/minio": "^11.0.3",
|
|
53
53
|
"@types/node": "^24.0.3",
|
|
54
|
-
"@typescript/native-preview": "^7.0.0-dev.
|
|
55
|
-
"expect": "^30.0.
|
|
54
|
+
"@typescript/native-preview": "^7.0.0-dev.20250619.1",
|
|
55
|
+
"expect": "^30.0.2",
|
|
56
56
|
"lefthook": "^1.11.14",
|
|
57
57
|
"tsup": "^8.5.0",
|
|
58
58
|
"tsx": "^4.20.3",
|