@balena/pinejs-webresource-s3 2.0.0 → 2.1.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/.versionbot/CHANGELOG.yml +15 -1
- package/CHANGELOG.md +6 -1
- package/build/index.d.ts +3 -0
- package/build/index.js +4 -0
- package/build/index.js.map +1 -1
- package/lib/index.ts +6 -0
- package/package.json +2 -2
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
- commits:
|
|
2
|
+
- subject: Allow overriding storage class for uploads and default to
|
|
3
|
+
INTELLIGENT_TIERING
|
|
4
|
+
hash: d47f52a3d1d85a637d79bbf8d9cd61e59ffb7eba
|
|
5
|
+
body: ""
|
|
6
|
+
footer:
|
|
7
|
+
See: https://balena.fibery.io/search/V69fl#Work/Improvement/Allow-configurable-storage-classes-for-Uploads-2816
|
|
8
|
+
see: https://balena.fibery.io/search/V69fl#Work/Improvement/Allow-configurable-storage-classes-for-Uploads-2816
|
|
9
|
+
Change-type: minor
|
|
10
|
+
change-type: minor
|
|
11
|
+
author: Otavio Jacobi
|
|
12
|
+
version: 2.1.0
|
|
13
|
+
title: ""
|
|
14
|
+
date: 2025-05-07T14:27:22.533Z
|
|
1
15
|
- commits:
|
|
2
16
|
- subject: use WebResourceHandler interface for multipart uploads
|
|
3
17
|
hash: 811affebd0d3806d9df34a17ab25990e04000b9a
|
|
@@ -10,7 +24,7 @@
|
|
|
10
24
|
author: Otavio Jacobi
|
|
11
25
|
version: 2.0.0
|
|
12
26
|
title: ""
|
|
13
|
-
date: 2025-05-
|
|
27
|
+
date: 2025-05-07T12:32:47.445Z
|
|
14
28
|
- commits:
|
|
15
29
|
- subject: Forward original name on content-disposition header so it downloads
|
|
16
30
|
with original name
|
package/CHANGELOG.md
CHANGED
|
@@ -4,8 +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
|
+
# v2.1.0
|
|
8
|
+
## (2025-05-07)
|
|
9
|
+
|
|
10
|
+
* Allow overriding storage class for uploads and default to INTELLIGENT_TIERING [Otavio Jacobi]
|
|
11
|
+
|
|
7
12
|
# v2.0.0
|
|
8
|
-
## (2025-05-
|
|
13
|
+
## (2025-05-07)
|
|
9
14
|
|
|
10
15
|
* use WebResourceHandler interface for multipart uploads [Otavio Jacobi]
|
|
11
16
|
|
package/build/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type StorageClass } from '@aws-sdk/client-s3';
|
|
1
2
|
import { webResourceHandler } from '@balena/pinejs';
|
|
2
3
|
import type { WebResourceType as WebResource } from '@balena/sbvr-types';
|
|
3
4
|
export interface S3HandlerProps {
|
|
@@ -11,6 +12,7 @@ export interface S3HandlerProps {
|
|
|
11
12
|
signedUrlCacheExpireTimeSeconds?: number;
|
|
12
13
|
minimumMultipartUploadSize?: number;
|
|
13
14
|
defaultMultipartUploadSize?: number;
|
|
15
|
+
storageClass?: StorageClass;
|
|
14
16
|
}
|
|
15
17
|
export declare class S3Handler implements webResourceHandler.WebResourceHandler {
|
|
16
18
|
private readonly config;
|
|
@@ -21,6 +23,7 @@ export declare class S3Handler implements webResourceHandler.WebResourceHandler
|
|
|
21
23
|
protected readonly signedUrlExpireTimeSeconds: number;
|
|
22
24
|
protected readonly signedUrlCacheExpireTimeSeconds: number;
|
|
23
25
|
protected cachedGetSignedUrl: (fileKey: string) => Promise<string>;
|
|
26
|
+
protected readonly storageClass: StorageClass;
|
|
24
27
|
private client;
|
|
25
28
|
constructor(config: S3HandlerProps);
|
|
26
29
|
handleFile(resource: webResourceHandler.IncomingFile): Promise<webResourceHandler.UploadResponse>;
|
package/build/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export class S3Handler {
|
|
|
16
16
|
signedUrlExpireTimeSeconds;
|
|
17
17
|
signedUrlCacheExpireTimeSeconds;
|
|
18
18
|
cachedGetSignedUrl;
|
|
19
|
+
storageClass;
|
|
19
20
|
client;
|
|
20
21
|
constructor(config) {
|
|
21
22
|
this.config = {
|
|
@@ -41,6 +42,7 @@ export class S3Handler {
|
|
|
41
42
|
this.cachedGetSignedUrl = memoize(this.s3SignUrl, {
|
|
42
43
|
maxAge: this.signedUrlCacheExpireTimeSeconds * 1000,
|
|
43
44
|
});
|
|
45
|
+
this.storageClass = config.storageClass ?? 'INTELLIGENT_TIERING';
|
|
44
46
|
}
|
|
45
47
|
async handleFile(resource) {
|
|
46
48
|
let size = 0;
|
|
@@ -51,6 +53,7 @@ export class S3Handler {
|
|
|
51
53
|
Body: resource.stream,
|
|
52
54
|
ContentType: resource.mimetype,
|
|
53
55
|
ContentDisposition: `inline; filename=${resource.originalname}`,
|
|
56
|
+
StorageClass: this.storageClass,
|
|
54
57
|
};
|
|
55
58
|
const upload = new Upload({ client: this.client, params });
|
|
56
59
|
upload.on('httpUploadProgress', async (ev) => {
|
|
@@ -95,6 +98,7 @@ export class S3Handler {
|
|
|
95
98
|
Key: fileKey,
|
|
96
99
|
ContentType: payload.content_type,
|
|
97
100
|
ContentDisposition: `inline; ${payload.filename}`,
|
|
101
|
+
StorageClass: this.storageClass,
|
|
98
102
|
}));
|
|
99
103
|
if (createMultiPartResponse.UploadId == null) {
|
|
100
104
|
throw new Error('Failed to create multipart upload.');
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EAGR,4BAA4B,EAC5B,iBAAiB,EACjB,8BAA8B,EAC9B,iBAAiB,EACjB,2BAA2B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
CompleteMultipartUploadCommand,
|
|
10
10
|
HeadObjectCommand,
|
|
11
11
|
AbortMultipartUploadCommand,
|
|
12
|
+
type StorageClass,
|
|
12
13
|
} from '@aws-sdk/client-s3';
|
|
13
14
|
import { Upload } from '@aws-sdk/lib-storage';
|
|
14
15
|
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
@@ -28,6 +29,7 @@ export interface S3HandlerProps {
|
|
|
28
29
|
signedUrlCacheExpireTimeSeconds?: number;
|
|
29
30
|
minimumMultipartUploadSize?: number;
|
|
30
31
|
defaultMultipartUploadSize?: number;
|
|
32
|
+
storageClass?: StorageClass;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
const normalizeHref = (href: string) => {
|
|
@@ -44,6 +46,7 @@ export class S3Handler implements webResourceHandler.WebResourceHandler {
|
|
|
44
46
|
protected readonly signedUrlExpireTimeSeconds: number;
|
|
45
47
|
protected readonly signedUrlCacheExpireTimeSeconds: number;
|
|
46
48
|
protected cachedGetSignedUrl: (fileKey: string) => Promise<string>;
|
|
49
|
+
protected readonly storageClass: StorageClass;
|
|
47
50
|
|
|
48
51
|
private client: S3Client;
|
|
49
52
|
|
|
@@ -76,6 +79,7 @@ export class S3Handler implements webResourceHandler.WebResourceHandler {
|
|
|
76
79
|
this.cachedGetSignedUrl = memoize(this.s3SignUrl, {
|
|
77
80
|
maxAge: this.signedUrlCacheExpireTimeSeconds * 1000,
|
|
78
81
|
});
|
|
82
|
+
this.storageClass = config.storageClass ?? 'INTELLIGENT_TIERING';
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
public async handleFile(
|
|
@@ -89,6 +93,7 @@ export class S3Handler implements webResourceHandler.WebResourceHandler {
|
|
|
89
93
|
Body: resource.stream,
|
|
90
94
|
ContentType: resource.mimetype,
|
|
91
95
|
ContentDisposition: `inline; filename=${resource.originalname}`,
|
|
96
|
+
StorageClass: this.storageClass,
|
|
92
97
|
};
|
|
93
98
|
const upload = new Upload({ client: this.client, params });
|
|
94
99
|
|
|
@@ -145,6 +150,7 @@ export class S3Handler implements webResourceHandler.WebResourceHandler {
|
|
|
145
150
|
Key: fileKey,
|
|
146
151
|
ContentType: payload.content_type,
|
|
147
152
|
ContentDisposition: `inline; ${payload.filename}`,
|
|
153
|
+
StorageClass: this.storageClass,
|
|
148
154
|
}),
|
|
149
155
|
);
|
|
150
156
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/pinejs-webresource-s3",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "A PineJS WebResource handler for storing & serving files on S3",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -45,6 +45,6 @@
|
|
|
45
45
|
"@balena/pinejs": "^21.3.0"
|
|
46
46
|
},
|
|
47
47
|
"versionist": {
|
|
48
|
-
"publishedAt": "2025-05-
|
|
48
|
+
"publishedAt": "2025-05-07T14:27:22.588Z"
|
|
49
49
|
}
|
|
50
50
|
}
|