@balena/pinejs-webresource-s3 0.2.0 → 0.2.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/.husky/pre-commit +0 -3
- package/.versionbot/CHANGELOG.yml +26 -1
- package/CHANGELOG.md +7 -0
- package/build/index.js +7 -4
- package/build/index.js.map +1 -1
- package/lib/index.ts +4 -4
- package/package.json +13 -12
- package/tsconfig.json +1 -1
package/.husky/pre-commit
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
- commits:
|
|
2
|
+
- subject: Update dependencies
|
|
3
|
+
hash: 92d1e2bdcacc5ac98a755b3c7145a3940bfa413e
|
|
4
|
+
body: ""
|
|
5
|
+
footer:
|
|
6
|
+
Change-type: patch
|
|
7
|
+
change-type: patch
|
|
8
|
+
author: Otavio Jacobi
|
|
9
|
+
- subject: Use node16 module resolution in tsconfig
|
|
10
|
+
hash: 1821181ebcaf0f3dfd3f720c47d10ebfb1d6b247
|
|
11
|
+
body: ""
|
|
12
|
+
footer:
|
|
13
|
+
Change-type: patch
|
|
14
|
+
change-type: patch
|
|
15
|
+
author: Otavio Jacobi
|
|
16
|
+
- subject: Remove deprecated husky script header
|
|
17
|
+
hash: 9738af66e1efb88d76bdcad8f7748bd9e8cbffe3
|
|
18
|
+
body: ""
|
|
19
|
+
footer:
|
|
20
|
+
Change-type: patch
|
|
21
|
+
change-type: patch
|
|
22
|
+
author: Otavio Jacobi
|
|
23
|
+
version: 0.2.1
|
|
24
|
+
title: ""
|
|
25
|
+
date: 2025-01-02T12:55:40.093Z
|
|
1
26
|
- commits:
|
|
2
27
|
- subject: Add beginMultipartUpload/commitMultiPartUpload
|
|
3
28
|
hash: 8ac4f8e08b79392ed762d9732dd43bc5d94d6b71
|
|
@@ -8,7 +33,7 @@
|
|
|
8
33
|
author: Otavio Jacobi
|
|
9
34
|
version: 0.2.0
|
|
10
35
|
title: ""
|
|
11
|
-
date: 2024-04-19T19:
|
|
36
|
+
date: 2024-04-19T19:10:20.002Z
|
|
12
37
|
- commits:
|
|
13
38
|
- subject: Add flowzone deployment
|
|
14
39
|
hash: aeb1b8c276517b0241f02c9c20027153bb848f9a
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file
|
|
|
4
4
|
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
# v0.2.1
|
|
8
|
+
## (2025-01-02)
|
|
9
|
+
|
|
10
|
+
* Update dependencies [Otavio Jacobi]
|
|
11
|
+
* Use node16 module resolution in tsconfig [Otavio Jacobi]
|
|
12
|
+
* Remove deprecated husky script header [Otavio Jacobi]
|
|
13
|
+
|
|
7
14
|
# v0.2.0
|
|
8
15
|
## (2024-04-19)
|
|
9
16
|
|
package/build/index.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.S3Handler = exports.FileSizeExceededError = void 0;
|
|
4
7
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
8
|
const lib_storage_1 = require("@aws-sdk/lib-storage");
|
|
6
9
|
const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
7
|
-
const
|
|
10
|
+
const memoizee_1 = __importDefault(require("memoizee"));
|
|
8
11
|
const node_crypto_1 = require("node:crypto");
|
|
9
12
|
const typed_error_1 = require("typed-error");
|
|
10
13
|
const normalizeHref = (href) => {
|
|
@@ -35,7 +38,7 @@ class S3Handler {
|
|
|
35
38
|
this.maxFileSize = config.maxSize ?? 52428800;
|
|
36
39
|
this.bucket = config.bucket;
|
|
37
40
|
this.client = new client_s3_1.S3Client(this.config);
|
|
38
|
-
this.cachedGetSignedUrl =
|
|
41
|
+
this.cachedGetSignedUrl = (0, memoizee_1.default)(this.s3SignUrl, {
|
|
39
42
|
maxAge: this.signedUrlCacheExpireTimeSeconds * 1000,
|
|
40
43
|
});
|
|
41
44
|
}
|
|
@@ -134,7 +137,7 @@ class S3Handler {
|
|
|
134
137
|
return `${fieldName}_${(0, node_crypto_1.randomUUID)()}_${fileName}`;
|
|
135
138
|
}
|
|
136
139
|
async getUploadParts(fileKey, uploadId, payload) {
|
|
137
|
-
const chunkSizesWithParts =
|
|
140
|
+
const chunkSizesWithParts = this.getChunkSizesWithParts(payload.size, payload.chunk_size);
|
|
138
141
|
return Promise.all(chunkSizesWithParts.map(async ({ chunkSize, partNumber }) => ({
|
|
139
142
|
chunkSize,
|
|
140
143
|
partNumber,
|
|
@@ -153,7 +156,7 @@ class S3Handler {
|
|
|
153
156
|
expiresIn: this.signedUrlExpireTimeSeconds,
|
|
154
157
|
});
|
|
155
158
|
}
|
|
156
|
-
|
|
159
|
+
getChunkSizesWithParts(size, chunkSize) {
|
|
157
160
|
const chunkSizesWithParts = [];
|
|
158
161
|
let partNumber = 1;
|
|
159
162
|
let remainingSize = size;
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
|
14
14
|
import type { webResourceHandler } from '@balena/pinejs';
|
|
15
15
|
|
|
16
16
|
import type { WebResourceType as WebResource } from '@balena/sbvr-types';
|
|
17
|
-
import
|
|
17
|
+
import memoize from 'memoizee';
|
|
18
18
|
import { randomUUID } from 'node:crypto';
|
|
19
19
|
import type { AnyObject } from 'pinejs-client-core';
|
|
20
20
|
import { TypedError } from 'typed-error';
|
|
@@ -243,7 +243,7 @@ export class S3Handler implements webResourceHandler.WebResourceHandler {
|
|
|
243
243
|
uploadId: string,
|
|
244
244
|
payload: BeginMultipartUploadPayload,
|
|
245
245
|
): Promise<UploadPart[]> {
|
|
246
|
-
const chunkSizesWithParts =
|
|
246
|
+
const chunkSizesWithParts = this.getChunkSizesWithParts(
|
|
247
247
|
payload.size,
|
|
248
248
|
payload.chunk_size,
|
|
249
249
|
);
|
|
@@ -280,10 +280,10 @@ export class S3Handler implements webResourceHandler.WebResourceHandler {
|
|
|
280
280
|
});
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
private
|
|
283
|
+
private getChunkSizesWithParts(
|
|
284
284
|
size: number,
|
|
285
285
|
chunkSize: number,
|
|
286
|
-
):
|
|
286
|
+
): Array<Pick<UploadPart, 'chunkSize' | 'partNumber'>> {
|
|
287
287
|
const chunkSizesWithParts = [];
|
|
288
288
|
let partNumber = 1;
|
|
289
289
|
let remainingSize = size;
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/pinejs-webresource-s3",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "A PineJS WebResource handler for storing & serving files on S3",
|
|
5
|
+
"type": "commonjs",
|
|
5
6
|
"main": "build/index.js",
|
|
6
7
|
"scripts": {
|
|
7
8
|
"build": "tsc",
|
|
@@ -13,21 +14,21 @@
|
|
|
13
14
|
"author": "Balena Inc. <hello@balena.io>",
|
|
14
15
|
"license": "Apache-2.0",
|
|
15
16
|
"devDependencies": {
|
|
16
|
-
"@balena/lint": "^
|
|
17
|
-
"@balena/pinejs": "^
|
|
18
|
-
"@balena/sbvr-types": "^
|
|
19
|
-
"husky": "^9.
|
|
20
|
-
"lint-staged": "^15.
|
|
21
|
-
"typescript": "^5.
|
|
17
|
+
"@balena/lint": "^9.1.3",
|
|
18
|
+
"@balena/pinejs": "^19.7.1",
|
|
19
|
+
"@balena/sbvr-types": "^9.1.0",
|
|
20
|
+
"husky": "^9.1.7",
|
|
21
|
+
"lint-staged": "^15.3.0",
|
|
22
|
+
"typescript": "^5.7.2"
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
24
|
-
"@aws-sdk/client-s3": "^3.
|
|
25
|
-
"@aws-sdk/lib-storage": "^3.
|
|
26
|
-
"@aws-sdk/s3-request-presigner": "^3.
|
|
27
|
-
"memoizee": "^0.4.
|
|
25
|
+
"@aws-sdk/client-s3": "^3.717.0",
|
|
26
|
+
"@aws-sdk/lib-storage": "^3.717.0",
|
|
27
|
+
"@aws-sdk/s3-request-presigner": "^3.717.0",
|
|
28
|
+
"memoizee": "^0.4.17",
|
|
28
29
|
"typed-error": "^3.2.2"
|
|
29
30
|
},
|
|
30
31
|
"versionist": {
|
|
31
|
-
"publishedAt": "
|
|
32
|
+
"publishedAt": "2025-01-02T12:55:40.139Z"
|
|
32
33
|
}
|
|
33
34
|
}
|