@unchainedshop/plugins 1.2.32 → 1.2.34

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,11 +1,11 @@
1
1
  import { FileAdapter, FileDirector, buildHashedFilename } from '@unchainedshop/file-upload';
2
- import https from 'https';
3
- import http from 'http';
4
2
  import mimeType from 'mime-types';
5
3
  import { URL } from 'url';
6
- import { Readable } from 'stream';
4
+ import { Readable, pipeline as rawPipeline } from 'stream';
5
+ import { promisify } from 'util';
6
+ import fetch from 'node-fetch';
7
7
  import sign from './sign';
8
- import promisePipe from './promisePipe';
8
+ const pipeline = promisify(rawPipeline);
9
9
  const { UNCHAINED_PUT_URL_EXPIRY, ROOT_URL } = process.env;
10
10
  const getExpiryDate = () => new Date(new Date().getTime() + (parseInt(UNCHAINED_PUT_URL_EXPIRY, 10) || 24 * 60 * 60 * 1000));
11
11
  const bufferToStream = (buffer) => {
@@ -14,22 +14,6 @@ const bufferToStream = (buffer) => {
14
14
  stream.push(null);
15
15
  return stream;
16
16
  };
17
- const createDownloadStream = async (fileUrl, headers) => {
18
- const { href, protocol } = new URL(fileUrl);
19
- return new Promise((resolve, reject) => {
20
- try {
21
- if (protocol === 'http:') {
22
- http.get(href, { headers }, resolve);
23
- }
24
- else {
25
- https.get(href, { headers }, resolve);
26
- }
27
- }
28
- catch (e) {
29
- reject(e);
30
- }
31
- });
32
- };
33
17
  export const GridFSAdapter = {
34
18
  key: 'shop.unchained.file-upload-plugin.gridfs',
35
19
  label: 'Uploads files to Database using GridFS',
@@ -66,14 +50,15 @@ export const GridFSAdapter = {
66
50
  const expiryDate = getExpiryDate();
67
51
  const _id = buildHashedFilename(directoryName, fileName, expiryDate);
68
52
  const writeStream = await modules.gridfsFileUploads.createWriteStream(directoryName, _id, fileName);
69
- const file = await promisePipe(stream, writeStream);
53
+ await pipeline(stream, writeStream);
54
+ const { length } = writeStream;
70
55
  const url = `/gridfs/${directoryName}/${_id}`;
71
56
  return {
72
57
  _id,
73
58
  directoryName,
74
59
  expiryDate: null,
75
60
  fileName,
76
- size: file.length,
61
+ size: length,
77
62
  type: mimeType.lookup(fileName) || (await Promise.resolve(rawFile)).mimetype,
78
63
  url,
79
64
  };
@@ -83,16 +68,19 @@ export const GridFSAdapter = {
83
68
  const fileName = fname || href.split('/').pop();
84
69
  const expiryDate = getExpiryDate();
85
70
  const _id = buildHashedFilename(directoryName, fileName, expiryDate);
86
- const downloadStream = await createDownloadStream(href, headers);
87
71
  const writeStream = await modules.gridfsFileUploads.createWriteStream(directoryName, _id, fileName);
88
- const file = await promisePipe(downloadStream, writeStream);
72
+ const response = await fetch(href, { headers });
73
+ if (!response.ok)
74
+ throw new Error(`Unexpected response for ${href}: ${response.statusText}`);
75
+ await pipeline(response.body, writeStream);
76
+ const { length } = writeStream;
89
77
  const url = `/gridfs/${directoryName}/${_id}`;
90
78
  return {
91
79
  _id,
92
80
  directoryName,
93
81
  expiryDate: null,
94
82
  fileName,
95
- size: file.length,
83
+ size: length,
96
84
  type: mimeType.lookup(fileName),
97
85
  url,
98
86
  };
@@ -1 +1 @@
1
- {"version":3,"file":"gridfs-adapter.js","sourceRoot":"","sources":["../../../src/files/gridfs/gridfs-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAA6B,MAAM,MAAM,CAAC;AACjD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,EAAE,wBAAwB,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE3D,MAAM,aAAa,GAAG,GAAG,EAAE,CACzB,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,wBAAwB,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAEnG,MAAM,cAAc,GAAG,CAAC,MAAW,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAChC,OAAe,EACf,OAA4B,EACT,EAAE;IACrB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI;YACF,IAAI,QAAQ,KAAK,OAAO,EAAE;gBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;aACtC;iBAAM;gBACL,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;aACvC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,GAAG,EAAE,0CAA0C;IAC/C,KAAK,EAAE,wCAAwC;IAC/C,OAAO,EAAE,KAAK;IAEd,GAAG,WAAW;IAEd,KAAK,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ;QAC3C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,WAAW,aAAa,IAAI,kBAAkB,CAC5C,QAAQ,CACT,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,SAAS,EAAE,EAC5C,QAAQ,CACT,CAAC,IAAI,CAAC;QACP,MAAM,GAAG,GAAG,WAAW,aAAa,IAAI,GAAG,EAAE,CAAC;QAE9C,OAAO;YACL,GAAG;YACH,aAAa;YACb,UAAU;YACV,QAAQ;YACR,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/B,MAAM;YACN,GAAG;SACmC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,aAAqB,EAAE,OAAY,EAAE,EAAE,OAAO,EAAO;QAC9E,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,CAAC;QACb,IAAI,OAAO,YAAY,OAAO,EAAE;YAC9B,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,MAAM,OAAO,CAAC;YACxD,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM,GAAG,gBAAgB,EAAE,CAAC;SAC7B;aAAM;YACL,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC5B,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;SAChE;QAED,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAErE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEpG,MAAM,IAAI,GAAQ,MAAM,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,WAAW,aAAa,IAAI,GAAG,EAAE,CAAC;QAE9C,OAAO;YACL,GAAG;YACH,aAAa;YACb,UAAU,EAAE,IAAI;YAChB,QAAQ;YACR,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;YAC5E,GAAG;SACc,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,aAAqB,EACrB,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAO,EAC3C,EAAE,OAAO,EAAO;QAEhB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAErE,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpG,MAAM,IAAI,GAAQ,MAAM,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,WAAW,aAAa,IAAI,GAAG,EAAE,CAAC;QAE9C,OAAO;YACL,GAAG;YACH,aAAa;YACb,UAAU,EAAE,IAAI;YAChB,QAAQ;YACR,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/B,GAAG;SACc,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,OAAO,EAAO;QACvC,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAC9F,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,YAAY,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"gridfs-adapter.js","sourceRoot":"","sources":["../../../src/files/gridfs/gridfs-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { useMiddlewareWithCurrentContext } from '@unchainedshop/api';
2
2
  import { log, LogLevel } from '@unchainedshop/logger';
3
3
  import { buildHashedFilename } from '@unchainedshop/file-upload';
4
+ import { pipeline as rawPipeline } from 'stream';
5
+ import { promisify } from 'util';
4
6
  import sign from './sign';
5
- import promisePipe from './promisePipe';
7
+ const pipeline = promisify(rawPipeline);
6
8
  const { ROOT_URL } = process.env;
7
9
  /*
8
10
  curl -vvv -X PUT -T /Users/pozylon/Downloads/grafik.png http://localhost:4010/gridfs/user-avatars/hans.png?e=1653059591506&s=df8626a1c9b9006249d7f1928fd530579fed57216f1bdcb83c28a8322cdc90b1
@@ -25,7 +27,8 @@ export default (app) => useMiddlewareWithCurrentContext(app, '/gridfs', async (r
25
27
  }
26
28
  const writeStream = await modules.gridfsFileUploads.createWriteStream(directoryName, fileId, fileName);
27
29
  res.writeHead(200);
28
- const { length } = (await promisePipe(req, writeStream));
30
+ await pipeline(req, writeStream);
31
+ const { length } = writeStream;
29
32
  await services.files.linkFile({ fileId, size: length }, req.unchainedContext);
30
33
  res.end();
31
34
  return;
@@ -38,7 +41,7 @@ export default (app) => useMiddlewareWithCurrentContext(app, '/gridfs', async (r
38
41
  const fileId = fileName;
39
42
  const readStream = await modules.gridfsFileUploads.createReadStream(directoryName, fileId);
40
43
  res.writeHead(200);
41
- await promisePipe(readStream, res);
44
+ await pipeline(readStream, res);
42
45
  res.end();
43
46
  return;
44
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gridfs-webhook.js","sourceRoot":"","sources":["../../../src/files/gridfs/gridfs-webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gridfs-webhook.js","sourceRoot":"","sources":["../../../src/files/gridfs/gridfs-webhook.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/plugins",
3
- "version": "1.2.32",
3
+ "version": "1.2.34",
4
4
  "main": "lib/plugins-index.js",
5
5
  "types": "lib/plugins-index.d.ts",
6
6
  "exports": {
@@ -1,12 +1,13 @@
1
1
  import { IFileAdapter, UploadFileData } from '@unchainedshop/types/files';
2
2
  import { FileAdapter, FileDirector, buildHashedFilename } from '@unchainedshop/file-upload';
3
- import https from 'https';
4
- import http, { OutgoingHttpHeaders } from 'http';
5
3
  import mimeType from 'mime-types';
6
4
  import { URL } from 'url';
7
- import { Readable } from 'stream';
5
+ import { Readable, pipeline as rawPipeline } from 'stream';
6
+ import { promisify } from 'util';
7
+ import fetch from 'node-fetch';
8
8
  import sign from './sign';
9
- import promisePipe from './promisePipe';
9
+
10
+ const pipeline = promisify(rawPipeline);
10
11
 
11
12
  const { UNCHAINED_PUT_URL_EXPIRY, ROOT_URL } = process.env;
12
13
 
@@ -21,24 +22,6 @@ const bufferToStream = (buffer: any) => {
21
22
  return stream;
22
23
  };
23
24
 
24
- const createDownloadStream = async (
25
- fileUrl: string,
26
- headers: OutgoingHttpHeaders,
27
- ): Promise<Readable> => {
28
- const { href, protocol } = new URL(fileUrl);
29
- return new Promise((resolve, reject) => {
30
- try {
31
- if (protocol === 'http:') {
32
- http.get(href, { headers }, resolve);
33
- } else {
34
- https.get(href, { headers }, resolve);
35
- }
36
- } catch (e) {
37
- reject(e);
38
- }
39
- });
40
- };
41
-
42
25
  export const GridFSAdapter: IFileAdapter = {
43
26
  key: 'shop.unchained.file-upload-plugin.gridfs',
44
27
  label: 'Uploads files to Database using GridFS',
@@ -86,8 +69,8 @@ export const GridFSAdapter: IFileAdapter = {
86
69
  const _id = buildHashedFilename(directoryName, fileName, expiryDate);
87
70
 
88
71
  const writeStream = await modules.gridfsFileUploads.createWriteStream(directoryName, _id, fileName);
89
-
90
- const file: any = await promisePipe(stream, writeStream);
72
+ await pipeline(stream, writeStream);
73
+ const { length } = writeStream;
91
74
  const url = `/gridfs/${directoryName}/${_id}`;
92
75
 
93
76
  return {
@@ -95,7 +78,7 @@ export const GridFSAdapter: IFileAdapter = {
95
78
  directoryName,
96
79
  expiryDate: null,
97
80
  fileName,
98
- size: file.length,
81
+ size: length,
99
82
  type: mimeType.lookup(fileName) || (await Promise.resolve(rawFile)).mimetype,
100
83
  url,
101
84
  } as UploadFileData;
@@ -112,9 +95,11 @@ export const GridFSAdapter: IFileAdapter = {
112
95
  const expiryDate = getExpiryDate();
113
96
  const _id = buildHashedFilename(directoryName, fileName, expiryDate);
114
97
 
115
- const downloadStream = await createDownloadStream(href, headers);
116
98
  const writeStream = await modules.gridfsFileUploads.createWriteStream(directoryName, _id, fileName);
117
- const file: any = await promisePipe(downloadStream, writeStream);
99
+ const response = await fetch(href, { headers });
100
+ if (!response.ok) throw new Error(`Unexpected response for ${href}: ${response.statusText}`);
101
+ await pipeline(response.body, writeStream);
102
+ const { length } = writeStream;
118
103
  const url = `/gridfs/${directoryName}/${_id}`;
119
104
 
120
105
  return {
@@ -122,7 +107,7 @@ export const GridFSAdapter: IFileAdapter = {
122
107
  directoryName,
123
108
  expiryDate: null,
124
109
  fileName,
125
- size: file.length,
110
+ size: length,
126
111
  type: mimeType.lookup(fileName),
127
112
  url,
128
113
  } as UploadFileData;
@@ -1,8 +1,11 @@
1
1
  import { useMiddlewareWithCurrentContext } from '@unchainedshop/api';
2
2
  import { log, LogLevel } from '@unchainedshop/logger';
3
3
  import { buildHashedFilename } from '@unchainedshop/file-upload';
4
+ import { pipeline as rawPipeline } from 'stream';
5
+ import { promisify } from 'util';
4
6
  import sign from './sign';
5
- import promisePipe from './promisePipe';
7
+
8
+ const pipeline = promisify(rawPipeline);
6
9
 
7
10
  const { ROOT_URL } = process.env;
8
11
 
@@ -34,7 +37,8 @@ export default (app) =>
34
37
  fileName,
35
38
  );
36
39
  res.writeHead(200);
37
- const { length } = (await promisePipe(req, writeStream)) as any;
40
+ await pipeline(req, writeStream);
41
+ const { length } = writeStream;
38
42
  await services.files.linkFile({ fileId, size: length }, req.unchainedContext);
39
43
  res.end();
40
44
  return;
@@ -47,7 +51,7 @@ export default (app) =>
47
51
  const fileId = fileName;
48
52
  const readStream = await modules.gridfsFileUploads.createReadStream(directoryName, fileId);
49
53
  res.writeHead(200);
50
- await promisePipe(readStream, res);
54
+ await pipeline(readStream, res);
51
55
  res.end();
52
56
  return;
53
57
  }
@@ -1,2 +0,0 @@
1
- declare const _default: (readStream: any, writeStream: any) => Promise<unknown>;
2
- export default _default;
@@ -1,21 +0,0 @@
1
- export default async (readStream, writeStream) => {
2
- return new Promise((resolve, reject) => {
3
- try {
4
- readStream
5
- .on('error', (e) => {
6
- reject(e);
7
- })
8
- .pipe(writeStream)
9
- .on('error', (e) => {
10
- reject(e);
11
- })
12
- .on('finish', async (file) => {
13
- resolve(file);
14
- });
15
- }
16
- catch (e) {
17
- reject(e);
18
- }
19
- });
20
- };
21
- //# sourceMappingURL=promisePipe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promisePipe.js","sourceRoot":"","sources":["../../../src/files/gridfs/promisePipe.ts"],"names":[],"mappings":"AAAA,eAAe,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI;YACF,UAAU;iBACP,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACjB,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC;iBACD,IAAI,CAAC,WAAW,CAAC;iBACjB,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACjB,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC;iBACD,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- export default async (readStream, writeStream) => {
2
- return new Promise((resolve, reject) => {
3
- try {
4
- readStream
5
- .on('error', (e) => {
6
- reject(e);
7
- })
8
- .pipe(writeStream)
9
- .on('error', (e) => {
10
- reject(e);
11
- })
12
- .on('finish', async (file) => {
13
- resolve(file);
14
- });
15
- } catch (e) {
16
- reject(e);
17
- }
18
- });
19
- };