@verdant-web/s3-file-storage 1.0.15 → 1.0.16-next.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,17 +1,17 @@
1
- import { FileStorage, FileInfo } from '@verdant-web/server';
2
- import { Readable } from 'stream';
3
- export declare class S3FileStorage implements FileStorage {
4
- private s3Client;
5
- private bucketName;
6
- private host;
7
- constructor({ region, bucketName, host, }: {
8
- region: string;
9
- bucketName: string;
10
- host?: string;
11
- });
12
- private getDirectory;
13
- private getPath;
14
- put: (fileStream: Readable, data: FileInfo) => Promise<void>;
15
- getUrl: (data: FileInfo) => string;
16
- delete: (data: FileInfo) => Promise<void>;
17
- }
1
+ import { FileStorage, FileInfo } from '@verdant-web/server';
2
+ import { Readable } from 'stream';
3
+ export declare class S3FileStorage implements FileStorage {
4
+ private s3Client;
5
+ private bucketName;
6
+ private host;
7
+ constructor({ region, bucketName, host, }: {
8
+ region: string;
9
+ bucketName: string;
10
+ host?: string;
11
+ });
12
+ private getDirectory;
13
+ private getPath;
14
+ put: (fileStream: Readable, data: FileInfo) => Promise<void>;
15
+ getUrl: (data: FileInfo) => string;
16
+ delete: (data: FileInfo) => Promise<void>;
17
+ }
package/dist/cjs/index.js CHANGED
@@ -1,59 +1,59 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.S3FileStorage = void 0;
7
- const client_s3_1 = require("@aws-sdk/client-s3");
8
- const lib_storage_1 = require("@aws-sdk/lib-storage");
9
- const posix_1 = __importDefault(require("path/posix"));
10
- class S3FileStorage {
11
- constructor({ region, bucketName, host, }) {
12
- this.getDirectory = (data) => {
13
- return `${data.libraryId}/${data.id}`;
14
- };
15
- this.getPath = (data) => {
16
- return `${this.getDirectory(data)}/${data.fileName}`;
17
- };
18
- this.put = async (fileStream, data) => {
19
- // pipe stream to s3
20
- const parallelUploads3 = new lib_storage_1.Upload({
21
- client: this.s3Client,
22
- leavePartsOnError: false,
23
- params: {
24
- Bucket: this.bucketName,
25
- Key: this.getPath(data),
26
- Body: fileStream,
27
- },
28
- });
29
- const result = await parallelUploads3.done();
30
- if (result.$metadata.httpStatusCode &&
31
- result.$metadata.httpStatusCode >= 300) {
32
- throw new Error(`Failed to upload file to S3: ${result.$metadata.httpStatusCode}`);
33
- }
34
- };
35
- this.getUrl = (data) => {
36
- return posix_1.default.join(this.host, this.getPath(data));
37
- };
38
- this.delete = async (data) => {
39
- await this.s3Client.send(new client_s3_1.DeleteObjectCommand({
40
- Bucket: this.bucketName,
41
- Key: this.getPath(data),
42
- }));
43
- };
44
- const credentials = process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY
45
- ? {
46
- accessKeyId: process.env.AWS_ACCESS_KEY_ID,
47
- secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
48
- }
49
- : undefined;
50
- this.s3Client = new client_s3_1.S3Client({
51
- region,
52
- credentials,
53
- });
54
- this.bucketName = bucketName;
55
- this.host = host || `https://s3.amazonaws.com/${bucketName}`;
56
- }
57
- }
58
- exports.S3FileStorage = S3FileStorage;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.S3FileStorage = void 0;
7
+ const client_s3_1 = require("@aws-sdk/client-s3");
8
+ const lib_storage_1 = require("@aws-sdk/lib-storage");
9
+ const posix_1 = __importDefault(require("path/posix"));
10
+ class S3FileStorage {
11
+ constructor({ region, bucketName, host, }) {
12
+ this.getDirectory = (data) => {
13
+ return `${data.libraryId}/${data.id}`;
14
+ };
15
+ this.getPath = (data) => {
16
+ return `${this.getDirectory(data)}/${data.fileName}`;
17
+ };
18
+ this.put = async (fileStream, data) => {
19
+ // pipe stream to s3
20
+ const parallelUploads3 = new lib_storage_1.Upload({
21
+ client: this.s3Client,
22
+ leavePartsOnError: false,
23
+ params: {
24
+ Bucket: this.bucketName,
25
+ Key: this.getPath(data),
26
+ Body: fileStream,
27
+ },
28
+ });
29
+ const result = await parallelUploads3.done();
30
+ if (result.$metadata.httpStatusCode &&
31
+ result.$metadata.httpStatusCode >= 300) {
32
+ throw new Error(`Failed to upload file to S3: ${result.$metadata.httpStatusCode}`);
33
+ }
34
+ };
35
+ this.getUrl = (data) => {
36
+ return posix_1.default.join(this.host, this.getPath(data));
37
+ };
38
+ this.delete = async (data) => {
39
+ await this.s3Client.send(new client_s3_1.DeleteObjectCommand({
40
+ Bucket: this.bucketName,
41
+ Key: this.getPath(data),
42
+ }));
43
+ };
44
+ const credentials = process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY
45
+ ? {
46
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID,
47
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
48
+ }
49
+ : undefined;
50
+ this.s3Client = new client_s3_1.S3Client({
51
+ region,
52
+ credentials,
53
+ });
54
+ this.bucketName = bucketName;
55
+ this.host = host || `https://s3.amazonaws.com/${bucketName}`;
56
+ }
57
+ }
58
+ exports.S3FileStorage = S3FileStorage;
59
59
  //# sourceMappingURL=index.js.map
@@ -1,17 +1,17 @@
1
- import { FileStorage, FileInfo } from '@verdant-web/server';
2
- import { Readable } from 'stream';
3
- export declare class S3FileStorage implements FileStorage {
4
- private s3Client;
5
- private bucketName;
6
- private host;
7
- constructor({ region, bucketName, host, }: {
8
- region: string;
9
- bucketName: string;
10
- host?: string;
11
- });
12
- private getDirectory;
13
- private getPath;
14
- put: (fileStream: Readable, data: FileInfo) => Promise<void>;
15
- getUrl: (data: FileInfo) => string;
16
- delete: (data: FileInfo) => Promise<void>;
17
- }
1
+ import { FileStorage, FileInfo } from '@verdant-web/server';
2
+ import { Readable } from 'stream';
3
+ export declare class S3FileStorage implements FileStorage {
4
+ private s3Client;
5
+ private bucketName;
6
+ private host;
7
+ constructor({ region, bucketName, host, }: {
8
+ region: string;
9
+ bucketName: string;
10
+ host?: string;
11
+ });
12
+ private getDirectory;
13
+ private getPath;
14
+ put: (fileStream: Readable, data: FileInfo) => Promise<void>;
15
+ getUrl: (data: FileInfo) => string;
16
+ delete: (data: FileInfo) => Promise<void>;
17
+ }
package/dist/esm/index.js CHANGED
@@ -13,7 +13,7 @@ export class S3FileStorage {
13
13
  // pipe stream to s3
14
14
  const parallelUploads3 = new Upload({
15
15
  client: this.s3Client,
16
- leavePartsOnError: false,
16
+ leavePartsOnError: false, // optional manually handle dropped parts
17
17
  params: {
18
18
  Bucket: this.bucketName,
19
19
  Key: this.getPath(data),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,mBAAmB,GAEnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,IAAI,MAAM,YAAY,CAAC;AAG9B,MAAM,OAAO,aAAa;IAKzB,YAAY,EACX,MAAM,EACN,UAAU,EACV,IAAI,GAKJ;QAeO,iBAAY,GAAG,CAAC,IAAc,EAAE,EAAE;YACzC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,CAAC,CAAC;QACM,YAAO,GAAG,CAAC,IAAc,EAAE,EAAE;YACpC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtD,CAAC,CAAC;QACF,QAAG,GAAG,KAAK,EAAE,UAAoB,EAAE,IAAc,EAAiB,EAAE;YACnE,oBAAoB;YACpB,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,QAAQ;gBACrB,iBAAiB,EAAE,KAAK;gBACxB,MAAM,EAAE;oBACP,MAAM,EAAE,IAAI,CAAC,UAAU;oBACvB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBACvB,IAAI,EAAE,UAAU;iBAChB;aACD,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC7C,IACC,MAAM,CAAC,SAAS,CAAC,cAAc;gBAC/B,MAAM,CAAC,SAAS,CAAC,cAAc,IAAI,GAAG,EACrC;gBACD,MAAM,IAAI,KAAK,CACd,gCAAgC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CACjE,CAAC;aACF;QACF,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,IAAc,EAAU,EAAE;YACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,WAAM,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;YAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAI,mBAAmB,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;aACvB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QApDD,MAAM,WAAW,GAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB;YACjE,CAAC,CAAC;gBACA,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBAC1C,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;aACjD;YACH,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,MAAM;YACN,WAAW;SACX,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,4BAA4B,UAAU,EAAE,CAAC;IAC9D,CAAC;CAwCD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,mBAAmB,GAEnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,IAAI,MAAM,YAAY,CAAC;AAG9B,MAAM,OAAO,aAAa;IAKzB,YAAY,EACX,MAAM,EACN,UAAU,EACV,IAAI,GAKJ;QAeO,iBAAY,GAAG,CAAC,IAAc,EAAE,EAAE;YACzC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,CAAC,CAAC;QACM,YAAO,GAAG,CAAC,IAAc,EAAE,EAAE;YACpC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtD,CAAC,CAAC;QACF,QAAG,GAAG,KAAK,EAAE,UAAoB,EAAE,IAAc,EAAiB,EAAE;YACnE,oBAAoB;YACpB,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,QAAQ;gBACrB,iBAAiB,EAAE,KAAK,EAAE,yCAAyC;gBACnE,MAAM,EAAE;oBACP,MAAM,EAAE,IAAI,CAAC,UAAU;oBACvB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBACvB,IAAI,EAAE,UAAU;iBAChB;aACD,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC7C,IACC,MAAM,CAAC,SAAS,CAAC,cAAc;gBAC/B,MAAM,CAAC,SAAS,CAAC,cAAc,IAAI,GAAG,EACrC,CAAC;gBACF,MAAM,IAAI,KAAK,CACd,gCAAgC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CACjE,CAAC;YACH,CAAC;QACF,CAAC,CAAC;QACF,WAAM,GAAG,CAAC,IAAc,EAAU,EAAE;YACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,WAAM,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;YAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAI,mBAAmB,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;aACvB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QApDD,MAAM,WAAW,GAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB;YACjE,CAAC,CAAC;gBACA,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;gBAC1C,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;aACjD;YACH,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,MAAM;YACN,WAAW;SACX,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,4BAA4B,UAAU,EAAE,CAAC;IAC9D,CAAC;CAwCD"}