@webiny/api-file-manager-s3 5.39.2 → 5.39.3-beta.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.
@@ -6,8 +6,10 @@ interface CompleteMultiPartUploadParams {
6
6
  export declare class CompleteMultiPartUploadUseCase {
7
7
  private readonly s3;
8
8
  private readonly bucket;
9
+ private readonly emptyMarkerValues;
9
10
  constructor(bucket: string, s3Client: S3);
10
11
  execute(params: CompleteMultiPartUploadParams): Promise<void>;
11
12
  private getAllUploadParts;
13
+ private isMarkerEmpty;
12
14
  }
13
15
  export {};
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.CompleteMultiPartUploadUseCase = void 0;
7
7
  var _clientS = require("@webiny/aws-sdk/client-s3");
8
8
  class CompleteMultiPartUploadUseCase {
9
+ emptyMarkerValues = [undefined, "0"];
9
10
  constructor(bucket, s3Client) {
10
11
  this.bucket = bucket;
11
12
  this.s3 = s3Client;
@@ -23,17 +24,13 @@ class CompleteMultiPartUploadUseCase {
23
24
  Parts: allParts
24
25
  }
25
26
  };
26
- return new Promise((resolve, reject) => {
27
- this.s3.completeMultipartUpload(s3Params, (err, data) => {
28
- if (err) {
29
- console.error(err);
30
- reject(err);
31
- return;
32
- }
33
- console.log(data);
34
- resolve();
35
- });
36
- });
27
+ try {
28
+ const command = new _clientS.CompleteMultipartUploadCommand(s3Params);
29
+ await this.s3.send(command);
30
+ } catch (err) {
31
+ console.error(err);
32
+ throw err;
33
+ }
37
34
  }
38
35
  async getAllUploadParts(params) {
39
36
  const parts = [];
@@ -50,7 +47,7 @@ class CompleteMultiPartUploadUseCase {
50
47
  Parts.forEach(part => parts.push(part));
51
48
  }
52
49
  marker = PartNumberMarker || undefined;
53
- if (!marker) {
50
+ if (this.isMarkerEmpty(marker)) {
54
51
  break;
55
52
  }
56
53
  }
@@ -59,6 +56,9 @@ class CompleteMultiPartUploadUseCase {
59
56
  PartNumber: part.PartNumber
60
57
  }));
61
58
  }
59
+ isMarkerEmpty(marker) {
60
+ return this.emptyMarkerValues.includes(marker);
61
+ }
62
62
  }
63
63
  exports.CompleteMultiPartUploadUseCase = CompleteMultiPartUploadUseCase;
64
64
 
@@ -1 +1 @@
1
- {"version":3,"names":["_clientS","require","CompleteMultiPartUploadUseCase","constructor","bucket","s3Client","s3","execute","params","uploadParams","Bucket","Key","fileKey","UploadId","uploadId","allParts","getAllUploadParts","s3Params","MultipartUpload","Parts","Promise","resolve","reject","completeMultipartUpload","err","data","console","error","log","parts","marker","undefined","PartNumberMarker","send","ListPartsCommand","forEach","part","push","map","ETag","PartNumber","exports"],"sources":["CompleteMultiPartUploadUseCase.ts"],"sourcesContent":["import {\n S3,\n Part,\n ListPartsOutput,\n ListPartsCommand,\n CompleteMultipartUploadCommandOutput\n} from \"@webiny/aws-sdk/client-s3\";\n\ninterface CompleteMultiPartUploadParams {\n fileKey: string;\n uploadId: string;\n}\n\ninterface GetAllUploadPartsParams {\n Bucket: string;\n Key: string;\n UploadId: string;\n}\n\nexport class CompleteMultiPartUploadUseCase {\n private readonly s3: S3;\n private readonly bucket: string;\n\n constructor(bucket: string, s3Client: S3) {\n this.bucket = bucket;\n this.s3 = s3Client;\n }\n\n async execute(params: CompleteMultiPartUploadParams) {\n const uploadParams = {\n Bucket: this.bucket,\n Key: params.fileKey,\n UploadId: params.uploadId\n };\n\n const allParts = await this.getAllUploadParts(uploadParams);\n\n const s3Params = {\n ...uploadParams,\n MultipartUpload: {\n Parts: allParts\n }\n };\n\n return new Promise<void>((resolve, reject) => {\n this.s3.completeMultipartUpload(\n s3Params,\n (err: any, data?: CompleteMultipartUploadCommandOutput) => {\n if (err) {\n console.error(err);\n reject(err);\n return;\n }\n\n console.log(data);\n resolve();\n }\n );\n });\n }\n\n private async getAllUploadParts(params: GetAllUploadPartsParams) {\n const parts: Part[] = [];\n\n let marker: string | undefined = undefined;\n while (true) {\n const { Parts, PartNumberMarker }: ListPartsOutput = await this.s3.send(\n new ListPartsCommand({\n ...params,\n PartNumberMarker: marker\n })\n );\n\n if (Parts) {\n Parts.forEach(part => parts.push(part));\n }\n\n marker = PartNumberMarker || undefined;\n if (!marker) {\n break;\n }\n }\n\n return parts.map(part => ({\n ETag: part.ETag as string,\n PartNumber: part.PartNumber as number\n }));\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAmBO,MAAMC,8BAA8B,CAAC;EAIxCC,WAAWA,CAACC,MAAc,EAAEC,QAAY,EAAE;IACtC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,EAAE,GAAGD,QAAQ;EACtB;EAEA,MAAME,OAAOA,CAACC,MAAqC,EAAE;IACjD,MAAMC,YAAY,GAAG;MACjBC,MAAM,EAAE,IAAI,CAACN,MAAM;MACnBO,GAAG,EAAEH,MAAM,CAACI,OAAO;MACnBC,QAAQ,EAAEL,MAAM,CAACM;IACrB,CAAC;IAED,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,iBAAiB,CAACP,YAAY,CAAC;IAE3D,MAAMQ,QAAQ,GAAG;MACb,GAAGR,YAAY;MACfS,eAAe,EAAE;QACbC,KAAK,EAAEJ;MACX;IACJ,CAAC;IAED,OAAO,IAAIK,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;MAC1C,IAAI,CAAChB,EAAE,CAACiB,uBAAuB,CAC3BN,QAAQ,EACR,CAACO,GAAQ,EAAEC,IAA2C,KAAK;QACvD,IAAID,GAAG,EAAE;UACLE,OAAO,CAACC,KAAK,CAACH,GAAG,CAAC;UAClBF,MAAM,CAACE,GAAG,CAAC;UACX;QACJ;QAEAE,OAAO,CAACE,GAAG,CAACH,IAAI,CAAC;QACjBJ,OAAO,CAAC,CAAC;MACb,CACJ,CAAC;IACL,CAAC,CAAC;EACN;EAEA,MAAcL,iBAAiBA,CAACR,MAA+B,EAAE;IAC7D,MAAMqB,KAAa,GAAG,EAAE;IAExB,IAAIC,MAA0B,GAAGC,SAAS;IAC1C,OAAO,IAAI,EAAE;MACT,MAAM;QAAEZ,KAAK;QAAEa;MAAkC,CAAC,GAAG,MAAM,IAAI,CAAC1B,EAAE,CAAC2B,IAAI,CACnE,IAAIC,yBAAgB,CAAC;QACjB,GAAG1B,MAAM;QACTwB,gBAAgB,EAAEF;MACtB,CAAC,CACL,CAAC;MAED,IAAIX,KAAK,EAAE;QACPA,KAAK,CAACgB,OAAO,CAACC,IAAI,IAAIP,KAAK,CAACQ,IAAI,CAACD,IAAI,CAAC,CAAC;MAC3C;MAEAN,MAAM,GAAGE,gBAAgB,IAAID,SAAS;MACtC,IAAI,CAACD,MAAM,EAAE;QACT;MACJ;IACJ;IAEA,OAAOD,KAAK,CAACS,GAAG,CAACF,IAAI,KAAK;MACtBG,IAAI,EAAEH,IAAI,CAACG,IAAc;MACzBC,UAAU,EAAEJ,IAAI,CAACI;IACrB,CAAC,CAAC,CAAC;EACP;AACJ;AAACC,OAAA,CAAAvC,8BAAA,GAAAA,8BAAA"}
1
+ {"version":3,"names":["_clientS","require","CompleteMultiPartUploadUseCase","emptyMarkerValues","undefined","constructor","bucket","s3Client","s3","execute","params","uploadParams","Bucket","Key","fileKey","UploadId","uploadId","allParts","getAllUploadParts","s3Params","MultipartUpload","Parts","command","CompleteMultipartUploadCommand","send","err","console","error","parts","marker","PartNumberMarker","ListPartsCommand","forEach","part","push","isMarkerEmpty","map","ETag","PartNumber","includes","exports"],"sources":["CompleteMultiPartUploadUseCase.ts"],"sourcesContent":["import {\n S3,\n Part,\n ListPartsOutput,\n ListPartsCommand,\n CompleteMultipartUploadCommand\n} from \"@webiny/aws-sdk/client-s3\";\n\ninterface CompleteMultiPartUploadParams {\n fileKey: string;\n uploadId: string;\n}\n\ninterface GetAllUploadPartsParams {\n Bucket: string;\n Key: string;\n UploadId: string;\n}\n\nexport class CompleteMultiPartUploadUseCase {\n private readonly s3: S3;\n private readonly bucket: string;\n private readonly emptyMarkerValues = [undefined, \"0\"];\n\n constructor(bucket: string, s3Client: S3) {\n this.bucket = bucket;\n this.s3 = s3Client;\n }\n\n async execute(params: CompleteMultiPartUploadParams) {\n const uploadParams = {\n Bucket: this.bucket,\n Key: params.fileKey,\n UploadId: params.uploadId\n };\n\n const allParts = await this.getAllUploadParts(uploadParams);\n\n const s3Params = {\n ...uploadParams,\n MultipartUpload: {\n Parts: allParts\n }\n };\n\n try {\n const command = new CompleteMultipartUploadCommand(s3Params);\n await this.s3.send(command);\n } catch (err) {\n console.error(err);\n throw err;\n }\n }\n\n private async getAllUploadParts(params: GetAllUploadPartsParams) {\n const parts: Part[] = [];\n\n let marker: string | undefined = undefined;\n while (true) {\n const { Parts, PartNumberMarker }: ListPartsOutput = await this.s3.send(\n new ListPartsCommand({\n ...params,\n PartNumberMarker: marker\n })\n );\n\n if (Parts) {\n Parts.forEach(part => parts.push(part));\n }\n\n marker = PartNumberMarker || undefined;\n if (this.isMarkerEmpty(marker)) {\n break;\n }\n }\n\n return parts.map(part => ({\n ETag: part.ETag as string,\n PartNumber: part.PartNumber as number\n }));\n }\n\n private isMarkerEmpty(marker: string | undefined) {\n return this.emptyMarkerValues.includes(marker);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAmBO,MAAMC,8BAA8B,CAAC;EAGvBC,iBAAiB,GAAG,CAACC,SAAS,EAAE,GAAG,CAAC;EAErDC,WAAWA,CAACC,MAAc,EAAEC,QAAY,EAAE;IACtC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,EAAE,GAAGD,QAAQ;EACtB;EAEA,MAAME,OAAOA,CAACC,MAAqC,EAAE;IACjD,MAAMC,YAAY,GAAG;MACjBC,MAAM,EAAE,IAAI,CAACN,MAAM;MACnBO,GAAG,EAAEH,MAAM,CAACI,OAAO;MACnBC,QAAQ,EAAEL,MAAM,CAACM;IACrB,CAAC;IAED,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,iBAAiB,CAACP,YAAY,CAAC;IAE3D,MAAMQ,QAAQ,GAAG;MACb,GAAGR,YAAY;MACfS,eAAe,EAAE;QACbC,KAAK,EAAEJ;MACX;IACJ,CAAC;IAED,IAAI;MACA,MAAMK,OAAO,GAAG,IAAIC,uCAA8B,CAACJ,QAAQ,CAAC;MAC5D,MAAM,IAAI,CAACX,EAAE,CAACgB,IAAI,CAACF,OAAO,CAAC;IAC/B,CAAC,CAAC,OAAOG,GAAG,EAAE;MACVC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAClB,MAAMA,GAAG;IACb;EACJ;EAEA,MAAcP,iBAAiBA,CAACR,MAA+B,EAAE;IAC7D,MAAMkB,KAAa,GAAG,EAAE;IAExB,IAAIC,MAA0B,GAAGzB,SAAS;IAC1C,OAAO,IAAI,EAAE;MACT,MAAM;QAAEiB,KAAK;QAAES;MAAkC,CAAC,GAAG,MAAM,IAAI,CAACtB,EAAE,CAACgB,IAAI,CACnE,IAAIO,yBAAgB,CAAC;QACjB,GAAGrB,MAAM;QACToB,gBAAgB,EAAED;MACtB,CAAC,CACL,CAAC;MAED,IAAIR,KAAK,EAAE;QACPA,KAAK,CAACW,OAAO,CAACC,IAAI,IAAIL,KAAK,CAACM,IAAI,CAACD,IAAI,CAAC,CAAC;MAC3C;MAEAJ,MAAM,GAAGC,gBAAgB,IAAI1B,SAAS;MACtC,IAAI,IAAI,CAAC+B,aAAa,CAACN,MAAM,CAAC,EAAE;QAC5B;MACJ;IACJ;IAEA,OAAOD,KAAK,CAACQ,GAAG,CAACH,IAAI,KAAK;MACtBI,IAAI,EAAEJ,IAAI,CAACI,IAAc;MACzBC,UAAU,EAAEL,IAAI,CAACK;IACrB,CAAC,CAAC,CAAC;EACP;EAEQH,aAAaA,CAACN,MAA0B,EAAE;IAC9C,OAAO,IAAI,CAAC1B,iBAAiB,CAACoC,QAAQ,CAACV,MAAM,CAAC;EAClD;AACJ;AAACW,OAAA,CAAAtC,8BAAA,GAAAA,8BAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-file-manager-s3",
3
- "version": "5.39.2",
3
+ "version": "5.39.3-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,17 +10,17 @@
10
10
  "author": "Webiny Ltd",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@webiny/api": "5.39.2",
14
- "@webiny/api-file-manager": "5.39.2",
15
- "@webiny/api-security": "5.39.2",
16
- "@webiny/aws-sdk": "5.39.2",
17
- "@webiny/error": "5.39.2",
18
- "@webiny/handler": "5.39.2",
19
- "@webiny/handler-graphql": "5.39.2",
20
- "@webiny/plugins": "5.39.2",
21
- "@webiny/tasks": "5.39.2",
22
- "@webiny/utils": "5.39.2",
23
- "@webiny/validation": "5.39.2",
13
+ "@webiny/api": "5.39.3-beta.0",
14
+ "@webiny/api-file-manager": "5.39.3-beta.0",
15
+ "@webiny/api-security": "5.39.3-beta.0",
16
+ "@webiny/aws-sdk": "5.39.3-beta.0",
17
+ "@webiny/error": "5.39.3-beta.0",
18
+ "@webiny/handler": "5.39.3-beta.0",
19
+ "@webiny/handler-graphql": "5.39.3-beta.0",
20
+ "@webiny/plugins": "5.39.3-beta.0",
21
+ "@webiny/tasks": "5.39.3-beta.0",
22
+ "@webiny/utils": "5.39.3-beta.0",
23
+ "@webiny/validation": "5.39.3-beta.0",
24
24
  "form-data": "4.0.0",
25
25
  "mime": "3.0.0",
26
26
  "node-fetch": "2.6.9",
@@ -34,8 +34,8 @@
34
34
  "@babel/cli": "7.22.6",
35
35
  "@babel/core": "7.22.8",
36
36
  "@types/node-fetch": "2.6.2",
37
- "@webiny/cli": "5.39.2",
38
- "@webiny/project-utils": "5.39.2",
37
+ "@webiny/cli": "5.39.3-beta.0",
38
+ "@webiny/project-utils": "5.39.3-beta.0",
39
39
  "rimraf": "3.0.2",
40
40
  "typescript": "4.7.4"
41
41
  },
@@ -47,5 +47,5 @@
47
47
  "build": "yarn webiny run build",
48
48
  "watch": "yarn webiny run watch"
49
49
  },
50
- "gitHead": "d25ece60370f08c6138d0af0340d8900acb95bac"
50
+ "gitHead": "bb0a2c8b43b2caa88f7a2d745a88039a520d124c"
51
51
  }