@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.
@@ -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-06T17:51:44.891Z
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-06)
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.');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
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.0.0",
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-06T17:51:44.949Z"
48
+ "publishedAt": "2025-05-07T14:27:22.588Z"
49
49
  }
50
50
  }