@strapi/provider-upload-local 0.0.0-next.dff425769af4d4d006725a10c395f59637403653 → 0.0.0-next.e09d30edcbd16960a838997778a31d50e9c60bc4

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.
@@ -0,0 +1,39 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { ReadStream } from 'fs';
4
+ interface File {
5
+ name: string;
6
+ alternativeText?: string;
7
+ caption?: string;
8
+ width?: number;
9
+ height?: number;
10
+ formats?: Record<string, unknown>;
11
+ hash: string;
12
+ ext?: string;
13
+ mime: string;
14
+ size: number;
15
+ sizeInBytes: number;
16
+ url: string;
17
+ previewUrl?: string;
18
+ path?: string;
19
+ provider?: string;
20
+ provider_metadata?: Record<string, unknown>;
21
+ stream?: ReadStream;
22
+ buffer?: Buffer;
23
+ }
24
+ interface InitOptions {
25
+ sizeLimit?: number;
26
+ }
27
+ interface CheckFileSizeOptions {
28
+ sizeLimit?: number;
29
+ }
30
+ declare const _default: {
31
+ init({ sizeLimit: providerOptionsSizeLimit }?: InitOptions): {
32
+ checkFileSize(file: File, options: CheckFileSizeOptions): void;
33
+ uploadStream(file: File): Promise<void>;
34
+ upload(file: File): Promise<void>;
35
+ delete(file: File): Promise<string | void>;
36
+ };
37
+ };
38
+ export default _default;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA,OAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAKpC,UAAU,IAAI;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;mDAG+C,WAAW;4BAiBjC,IAAI,WAAW,oBAAoB;2BAkBpC,IAAI,GAAG,QAAQ,IAAI,CAAC;qBAuB1B,IAAI,GAAG,QAAQ,IAAI,CAAC;qBAoBpB,IAAI,GAAG,QAAQ,MAAM,GAAG,IAAI,CAAC;;;AA/EhD,wBAoGE"}
package/dist/index.js ADDED
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ const stream = require("stream");
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+ const fse = require("fs-extra");
6
+ const utils = require("@strapi/utils");
7
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule)
10
+ return e;
11
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
12
+ if (e) {
13
+ for (const k in e) {
14
+ if (k !== "default") {
15
+ const d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: () => e[k]
19
+ });
20
+ }
21
+ }
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+ const fs__default = /* @__PURE__ */ _interopDefault(fs);
27
+ const path__default = /* @__PURE__ */ _interopDefault(path);
28
+ const fse__default = /* @__PURE__ */ _interopDefault(fse);
29
+ const utils__namespace = /* @__PURE__ */ _interopNamespace(utils);
30
+ const { PayloadTooLargeError } = utils__namespace.errors;
31
+ const { kbytesToBytes, bytesToHumanReadable } = utils__namespace.file;
32
+ const UPLOADS_FOLDER_NAME = "uploads";
33
+ const index = {
34
+ init({ sizeLimit: providerOptionsSizeLimit } = {}) {
35
+ if (providerOptionsSizeLimit) {
36
+ process.emitWarning(
37
+ '[deprecated] In future versions, "sizeLimit" argument will be ignored from upload.config.providerOptions. Move it to upload.config'
38
+ );
39
+ }
40
+ const uploadPath = path__default.default.resolve(strapi.dirs.static.public, UPLOADS_FOLDER_NAME);
41
+ if (!fse__default.default.pathExistsSync(uploadPath)) {
42
+ throw new Error(
43
+ `The upload folder (${uploadPath}) doesn't exist or is not accessible. Please make sure it exists.`
44
+ );
45
+ }
46
+ return {
47
+ checkFileSize(file, options) {
48
+ const { sizeLimit } = options ?? {};
49
+ if (providerOptionsSizeLimit) {
50
+ if (kbytesToBytes(file.size) > providerOptionsSizeLimit)
51
+ throw new PayloadTooLargeError(
52
+ `${file.name} exceeds size limit of ${bytesToHumanReadable(
53
+ providerOptionsSizeLimit
54
+ )}.`
55
+ );
56
+ } else if (sizeLimit) {
57
+ if (kbytesToBytes(file.size) > sizeLimit)
58
+ throw new PayloadTooLargeError(
59
+ `${file.name} exceeds size limit of ${bytesToHumanReadable(sizeLimit)}.`
60
+ );
61
+ }
62
+ },
63
+ uploadStream(file) {
64
+ if (!file.stream) {
65
+ return Promise.reject(new Error("Missing file stream"));
66
+ }
67
+ const { stream: stream$1 } = file;
68
+ return new Promise((resolve, reject) => {
69
+ stream.pipeline(
70
+ stream$1,
71
+ fs__default.default.createWriteStream(path__default.default.join(uploadPath, `${file.hash}${file.ext}`)),
72
+ (err) => {
73
+ if (err) {
74
+ return reject(err);
75
+ }
76
+ file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;
77
+ resolve();
78
+ }
79
+ );
80
+ });
81
+ },
82
+ upload(file) {
83
+ if (!file.buffer) {
84
+ return Promise.reject(new Error("Missing file buffer"));
85
+ }
86
+ const { buffer } = file;
87
+ return new Promise((resolve, reject) => {
88
+ fs__default.default.writeFile(path__default.default.join(uploadPath, `${file.hash}${file.ext}`), buffer, (err) => {
89
+ if (err) {
90
+ return reject(err);
91
+ }
92
+ file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;
93
+ resolve();
94
+ });
95
+ });
96
+ },
97
+ delete(file) {
98
+ return new Promise((resolve, reject) => {
99
+ const filePath = path__default.default.join(uploadPath, `${file.hash}${file.ext}`);
100
+ if (!fs__default.default.existsSync(filePath)) {
101
+ resolve("File doesn't exist");
102
+ return;
103
+ }
104
+ fs__default.default.unlink(filePath, (err) => {
105
+ if (err) {
106
+ return reject(err);
107
+ }
108
+ resolve();
109
+ });
110
+ });
111
+ }
112
+ };
113
+ }
114
+ };
115
+ module.exports = index;
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { pipeline } from 'stream';\nimport fs, { ReadStream } from 'fs';\nimport path from 'path';\nimport fse from 'fs-extra';\nimport * as utils from '@strapi/utils';\n\ninterface File {\n name: string;\n alternativeText?: string;\n caption?: string;\n width?: number;\n height?: number;\n formats?: Record<string, unknown>;\n hash: string;\n ext?: string;\n mime: string;\n size: number;\n sizeInBytes: number;\n url: string;\n previewUrl?: string;\n path?: string;\n provider?: string;\n provider_metadata?: Record<string, unknown>;\n stream?: ReadStream;\n buffer?: Buffer;\n}\n\nconst { PayloadTooLargeError } = utils.errors;\nconst { kbytesToBytes, bytesToHumanReadable } = utils.file;\n\nconst UPLOADS_FOLDER_NAME = 'uploads';\n\ninterface InitOptions {\n sizeLimit?: number;\n}\n\ninterface CheckFileSizeOptions {\n sizeLimit?: number;\n}\n\nexport default {\n init({ sizeLimit: providerOptionsSizeLimit }: InitOptions = {}) {\n // TODO V5: remove providerOptions sizeLimit\n if (providerOptionsSizeLimit) {\n process.emitWarning(\n '[deprecated] In future versions, \"sizeLimit\" argument will be ignored from upload.config.providerOptions. Move it to upload.config'\n );\n }\n\n // Ensure uploads folder exists\n const uploadPath = path.resolve(strapi.dirs.static.public, UPLOADS_FOLDER_NAME);\n if (!fse.pathExistsSync(uploadPath)) {\n throw new Error(\n `The upload folder (${uploadPath}) doesn't exist or is not accessible. Please make sure it exists.`\n );\n }\n\n return {\n checkFileSize(file: File, options: CheckFileSizeOptions) {\n const { sizeLimit } = options ?? {};\n\n // TODO V5: remove providerOptions sizeLimit\n if (providerOptionsSizeLimit) {\n if (kbytesToBytes(file.size) > providerOptionsSizeLimit)\n throw new PayloadTooLargeError(\n `${file.name} exceeds size limit of ${bytesToHumanReadable(\n providerOptionsSizeLimit\n )}.`\n );\n } else if (sizeLimit) {\n if (kbytesToBytes(file.size) > sizeLimit)\n throw new PayloadTooLargeError(\n `${file.name} exceeds size limit of ${bytesToHumanReadable(sizeLimit)}.`\n );\n }\n },\n uploadStream(file: File): Promise<void> {\n if (!file.stream) {\n return Promise.reject(new Error('Missing file stream'));\n }\n\n const { stream } = file;\n\n return new Promise((resolve, reject) => {\n pipeline(\n stream,\n fs.createWriteStream(path.join(uploadPath, `${file.hash}${file.ext}`)),\n (err) => {\n if (err) {\n return reject(err);\n }\n\n file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;\n\n resolve();\n }\n );\n });\n },\n upload(file: File): Promise<void> {\n if (!file.buffer) {\n return Promise.reject(new Error('Missing file buffer'));\n }\n\n const { buffer } = file;\n\n return new Promise((resolve, reject) => {\n // write file in public/assets folder\n fs.writeFile(path.join(uploadPath, `${file.hash}${file.ext}`), buffer, (err) => {\n if (err) {\n return reject(err);\n }\n\n file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;\n\n resolve();\n });\n });\n },\n delete(file: File): Promise<string | void> {\n return new Promise((resolve, reject) => {\n const filePath = path.join(uploadPath, `${file.hash}${file.ext}`);\n\n if (!fs.existsSync(filePath)) {\n resolve(\"File doesn't exist\");\n return;\n }\n\n // remove file from public/assets folder\n fs.unlink(filePath, (err) => {\n if (err) {\n return reject(err);\n }\n\n resolve();\n });\n });\n },\n };\n },\n};\n"],"names":["utils","path","fse","stream","pipeline","fs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,EAAE,qBAAqB,IAAIA,iBAAM;AACvC,MAAM,EAAE,eAAe,yBAAyBA,iBAAM;AAEtD,MAAM,sBAAsB;AAU5B,MAAe,QAAA;AAAA,EACb,KAAK,EAAE,WAAW,yBAAyB,IAAiB,CAAA,GAAI;AAE9D,QAAI,0BAA0B;AACpB,cAAA;AAAA,QACN;AAAA,MAAA;AAAA,IAEJ;AAGA,UAAM,aAAaC,cAAK,QAAA,QAAQ,OAAO,KAAK,OAAO,QAAQ,mBAAmB;AAC9E,QAAI,CAACC,aAAA,QAAI,eAAe,UAAU,GAAG;AACnC,YAAM,IAAI;AAAA,QACR,sBAAsB,UAAU;AAAA,MAAA;AAAA,IAEpC;AAEO,WAAA;AAAA,MACL,cAAc,MAAY,SAA+B;AACvD,cAAM,EAAE,UAAA,IAAc,WAAW;AAGjC,YAAI,0BAA0B;AACxB,cAAA,cAAc,KAAK,IAAI,IAAI;AAC7B,kBAAM,IAAI;AAAA,cACR,GAAG,KAAK,IAAI,0BAA0B;AAAA,gBACpC;AAAA,cACD,CAAA;AAAA,YAAA;AAAA,mBAEI,WAAW;AAChB,cAAA,cAAc,KAAK,IAAI,IAAI;AAC7B,kBAAM,IAAI;AAAA,cACR,GAAG,KAAK,IAAI,0BAA0B,qBAAqB,SAAS,CAAC;AAAA,YAAA;AAAA,QAE3E;AAAA,MACF;AAAA,MACA,aAAa,MAA2B;AAClC,YAAA,CAAC,KAAK,QAAQ;AAChB,iBAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAAA,QACxD;AAEM,cAAA,EAAEC,QAAAA,SAAW,IAAA;AAEnB,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtCC,iBAAA;AAAA,YACED;AAAAA,YACAE,YAAAA,QAAG,kBAAkBJ,sBAAK,KAAK,YAAY,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;AAAA,YACrE,CAAC,QAAQ;AACP,kBAAI,KAAK;AACP,uBAAO,OAAO,GAAG;AAAA,cACnB;AAEK,mBAAA,MAAM,IAAI,mBAAmB,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG;AAElD;YACV;AAAA,UAAA;AAAA,QACF,CACD;AAAA,MACH;AAAA,MACA,OAAO,MAA2B;AAC5B,YAAA,CAAC,KAAK,QAAQ;AAChB,iBAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAAA,QACxD;AAEM,cAAA,EAAE,OAAW,IAAA;AAEnB,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEtCI,sBAAA,QAAG,UAAUJ,cAAA,QAAK,KAAK,YAAY,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ;AAC9E,gBAAI,KAAK;AACP,qBAAO,OAAO,GAAG;AAAA,YACnB;AAEK,iBAAA,MAAM,IAAI,mBAAmB,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG;AAElD;UAAA,CACT;AAAA,QAAA,CACF;AAAA,MACH;AAAA,MACA,OAAO,MAAoC;AACzC,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAChC,gBAAA,WAAWA,cAAAA,QAAK,KAAK,YAAY,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE;AAEhE,cAAI,CAACI,YAAA,QAAG,WAAW,QAAQ,GAAG;AAC5B,oBAAQ,oBAAoB;AAC5B;AAAA,UACF;AAGGA,sBAAAA,QAAA,OAAO,UAAU,CAAC,QAAQ;AAC3B,gBAAI,KAAK;AACP,qBAAO,OAAO,GAAG;AAAA,YACnB;AAEQ;UAAA,CACT;AAAA,QAAA,CACF;AAAA,MACH;AAAA,IAAA;AAAA,EAEJ;AACF;;"}
@@ -1,41 +1,27 @@
1
- 'use strict';
2
-
3
- /**
4
- * Module dependencies
5
- */
6
-
7
- // Public node modules.
8
- const { pipeline } = require('stream');
9
- const fs = require('fs');
10
- const path = require('path');
11
- const fse = require('fs-extra');
12
- const {
13
- errors: { PayloadTooLargeError },
14
- file: { kbytesToBytes, bytesToHumanReadable },
15
- } = require('@strapi/utils');
16
-
17
- const UPLOADS_FOLDER_NAME = 'uploads';
18
-
19
- module.exports = {
1
+ import { pipeline } from "stream";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import fse from "fs-extra";
5
+ import * as utils from "@strapi/utils";
6
+ const { PayloadTooLargeError } = utils.errors;
7
+ const { kbytesToBytes, bytesToHumanReadable } = utils.file;
8
+ const UPLOADS_FOLDER_NAME = "uploads";
9
+ const index = {
20
10
  init({ sizeLimit: providerOptionsSizeLimit } = {}) {
21
- // TODO V5: remove providerOptions sizeLimit
22
11
  if (providerOptionsSizeLimit) {
23
12
  process.emitWarning(
24
- `[deprecated] In future versions, "sizeLimit" argument will be ignored from upload.config.providerOptions. Move it to upload.config`
13
+ '[deprecated] In future versions, "sizeLimit" argument will be ignored from upload.config.providerOptions. Move it to upload.config'
25
14
  );
26
15
  }
27
-
28
- // Ensure uploads folder exists
29
16
  const uploadPath = path.resolve(strapi.dirs.static.public, UPLOADS_FOLDER_NAME);
30
17
  if (!fse.pathExistsSync(uploadPath)) {
31
18
  throw new Error(
32
19
  `The upload folder (${uploadPath}) doesn't exist or is not accessible. Please make sure it exists.`
33
20
  );
34
21
  }
35
-
36
22
  return {
37
- checkFileSize(file, { sizeLimit } = {}) {
38
- // TODO V5: remove providerOptions sizeLimit
23
+ checkFileSize(file, options) {
24
+ const { sizeLimit } = options ?? {};
39
25
  if (providerOptionsSizeLimit) {
40
26
  if (kbytesToBytes(file.size) > providerOptionsSizeLimit)
41
27
  throw new PayloadTooLargeError(
@@ -51,32 +37,35 @@ module.exports = {
51
37
  }
52
38
  },
53
39
  uploadStream(file) {
40
+ if (!file.stream) {
41
+ return Promise.reject(new Error("Missing file stream"));
42
+ }
43
+ const { stream } = file;
54
44
  return new Promise((resolve, reject) => {
55
45
  pipeline(
56
- file.stream,
46
+ stream,
57
47
  fs.createWriteStream(path.join(uploadPath, `${file.hash}${file.ext}`)),
58
48
  (err) => {
59
49
  if (err) {
60
50
  return reject(err);
61
51
  }
62
-
63
52
  file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;
64
-
65
53
  resolve();
66
54
  }
67
55
  );
68
56
  });
69
57
  },
70
58
  upload(file) {
59
+ if (!file.buffer) {
60
+ return Promise.reject(new Error("Missing file buffer"));
61
+ }
62
+ const { buffer } = file;
71
63
  return new Promise((resolve, reject) => {
72
- // write file in public/assets folder
73
- fs.writeFile(path.join(uploadPath, `${file.hash}${file.ext}`), file.buffer, (err) => {
64
+ fs.writeFile(path.join(uploadPath, `${file.hash}${file.ext}`), buffer, (err) => {
74
65
  if (err) {
75
66
  return reject(err);
76
67
  }
77
-
78
68
  file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;
79
-
80
69
  resolve();
81
70
  });
82
71
  });
@@ -84,22 +73,22 @@ module.exports = {
84
73
  delete(file) {
85
74
  return new Promise((resolve, reject) => {
86
75
  const filePath = path.join(uploadPath, `${file.hash}${file.ext}`);
87
-
88
76
  if (!fs.existsSync(filePath)) {
89
- // eslint-disable-next-line no-promise-executor-return
90
- return resolve("File doesn't exist");
77
+ resolve("File doesn't exist");
78
+ return;
91
79
  }
92
-
93
- // remove file from public/assets folder
94
80
  fs.unlink(filePath, (err) => {
95
81
  if (err) {
96
82
  return reject(err);
97
83
  }
98
-
99
84
  resolve();
100
85
  });
101
86
  });
102
- },
87
+ }
103
88
  };
104
- },
89
+ }
90
+ };
91
+ export {
92
+ index as default
105
93
  };
94
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { pipeline } from 'stream';\nimport fs, { ReadStream } from 'fs';\nimport path from 'path';\nimport fse from 'fs-extra';\nimport * as utils from '@strapi/utils';\n\ninterface File {\n name: string;\n alternativeText?: string;\n caption?: string;\n width?: number;\n height?: number;\n formats?: Record<string, unknown>;\n hash: string;\n ext?: string;\n mime: string;\n size: number;\n sizeInBytes: number;\n url: string;\n previewUrl?: string;\n path?: string;\n provider?: string;\n provider_metadata?: Record<string, unknown>;\n stream?: ReadStream;\n buffer?: Buffer;\n}\n\nconst { PayloadTooLargeError } = utils.errors;\nconst { kbytesToBytes, bytesToHumanReadable } = utils.file;\n\nconst UPLOADS_FOLDER_NAME = 'uploads';\n\ninterface InitOptions {\n sizeLimit?: number;\n}\n\ninterface CheckFileSizeOptions {\n sizeLimit?: number;\n}\n\nexport default {\n init({ sizeLimit: providerOptionsSizeLimit }: InitOptions = {}) {\n // TODO V5: remove providerOptions sizeLimit\n if (providerOptionsSizeLimit) {\n process.emitWarning(\n '[deprecated] In future versions, \"sizeLimit\" argument will be ignored from upload.config.providerOptions. Move it to upload.config'\n );\n }\n\n // Ensure uploads folder exists\n const uploadPath = path.resolve(strapi.dirs.static.public, UPLOADS_FOLDER_NAME);\n if (!fse.pathExistsSync(uploadPath)) {\n throw new Error(\n `The upload folder (${uploadPath}) doesn't exist or is not accessible. Please make sure it exists.`\n );\n }\n\n return {\n checkFileSize(file: File, options: CheckFileSizeOptions) {\n const { sizeLimit } = options ?? {};\n\n // TODO V5: remove providerOptions sizeLimit\n if (providerOptionsSizeLimit) {\n if (kbytesToBytes(file.size) > providerOptionsSizeLimit)\n throw new PayloadTooLargeError(\n `${file.name} exceeds size limit of ${bytesToHumanReadable(\n providerOptionsSizeLimit\n )}.`\n );\n } else if (sizeLimit) {\n if (kbytesToBytes(file.size) > sizeLimit)\n throw new PayloadTooLargeError(\n `${file.name} exceeds size limit of ${bytesToHumanReadable(sizeLimit)}.`\n );\n }\n },\n uploadStream(file: File): Promise<void> {\n if (!file.stream) {\n return Promise.reject(new Error('Missing file stream'));\n }\n\n const { stream } = file;\n\n return new Promise((resolve, reject) => {\n pipeline(\n stream,\n fs.createWriteStream(path.join(uploadPath, `${file.hash}${file.ext}`)),\n (err) => {\n if (err) {\n return reject(err);\n }\n\n file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;\n\n resolve();\n }\n );\n });\n },\n upload(file: File): Promise<void> {\n if (!file.buffer) {\n return Promise.reject(new Error('Missing file buffer'));\n }\n\n const { buffer } = file;\n\n return new Promise((resolve, reject) => {\n // write file in public/assets folder\n fs.writeFile(path.join(uploadPath, `${file.hash}${file.ext}`), buffer, (err) => {\n if (err) {\n return reject(err);\n }\n\n file.url = `/${UPLOADS_FOLDER_NAME}/${file.hash}${file.ext}`;\n\n resolve();\n });\n });\n },\n delete(file: File): Promise<string | void> {\n return new Promise((resolve, reject) => {\n const filePath = path.join(uploadPath, `${file.hash}${file.ext}`);\n\n if (!fs.existsSync(filePath)) {\n resolve(\"File doesn't exist\");\n return;\n }\n\n // remove file from public/assets folder\n fs.unlink(filePath, (err) => {\n if (err) {\n return reject(err);\n }\n\n resolve();\n });\n });\n },\n };\n },\n};\n"],"names":[],"mappings":";;;;;AA2BA,MAAM,EAAE,qBAAqB,IAAI,MAAM;AACvC,MAAM,EAAE,eAAe,yBAAyB,MAAM;AAEtD,MAAM,sBAAsB;AAU5B,MAAe,QAAA;AAAA,EACb,KAAK,EAAE,WAAW,yBAAyB,IAAiB,CAAA,GAAI;AAE9D,QAAI,0BAA0B;AACpB,cAAA;AAAA,QACN;AAAA,MAAA;AAAA,IAEJ;AAGA,UAAM,aAAa,KAAK,QAAQ,OAAO,KAAK,OAAO,QAAQ,mBAAmB;AAC9E,QAAI,CAAC,IAAI,eAAe,UAAU,GAAG;AACnC,YAAM,IAAI;AAAA,QACR,sBAAsB,UAAU;AAAA,MAAA;AAAA,IAEpC;AAEO,WAAA;AAAA,MACL,cAAc,MAAY,SAA+B;AACvD,cAAM,EAAE,UAAA,IAAc,WAAW;AAGjC,YAAI,0BAA0B;AACxB,cAAA,cAAc,KAAK,IAAI,IAAI;AAC7B,kBAAM,IAAI;AAAA,cACR,GAAG,KAAK,IAAI,0BAA0B;AAAA,gBACpC;AAAA,cACD,CAAA;AAAA,YAAA;AAAA,mBAEI,WAAW;AAChB,cAAA,cAAc,KAAK,IAAI,IAAI;AAC7B,kBAAM,IAAI;AAAA,cACR,GAAG,KAAK,IAAI,0BAA0B,qBAAqB,SAAS,CAAC;AAAA,YAAA;AAAA,QAE3E;AAAA,MACF;AAAA,MACA,aAAa,MAA2B;AAClC,YAAA,CAAC,KAAK,QAAQ;AAChB,iBAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAAA,QACxD;AAEM,cAAA,EAAE,OAAW,IAAA;AAEnB,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC;AAAA,YACE;AAAA,YACA,GAAG,kBAAkB,KAAK,KAAK,YAAY,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;AAAA,YACrE,CAAC,QAAQ;AACP,kBAAI,KAAK;AACP,uBAAO,OAAO,GAAG;AAAA,cACnB;AAEK,mBAAA,MAAM,IAAI,mBAAmB,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG;AAElD;YACV;AAAA,UAAA;AAAA,QACF,CACD;AAAA,MACH;AAAA,MACA,OAAO,MAA2B;AAC5B,YAAA,CAAC,KAAK,QAAQ;AAChB,iBAAO,QAAQ,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAAA,QACxD;AAEM,cAAA,EAAE,OAAW,IAAA;AAEnB,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEtC,aAAG,UAAU,KAAK,KAAK,YAAY,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ;AAC9E,gBAAI,KAAK;AACP,qBAAO,OAAO,GAAG;AAAA,YACnB;AAEK,iBAAA,MAAM,IAAI,mBAAmB,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG;AAElD;UAAA,CACT;AAAA,QAAA,CACF;AAAA,MACH;AAAA,MACA,OAAO,MAAoC;AACzC,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAChC,gBAAA,WAAW,KAAK,KAAK,YAAY,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE;AAEhE,cAAI,CAAC,GAAG,WAAW,QAAQ,GAAG;AAC5B,oBAAQ,oBAAoB;AAC5B;AAAA,UACF;AAGG,aAAA,OAAO,UAAU,CAAC,QAAQ;AAC3B,gBAAI,KAAK;AACP,qBAAO,OAAO,GAAG;AAAA,YACnB;AAEQ;UAAA,CACT;AAAA,QAAA,CACF;AAAA,MACH;AAAA,IAAA;AAAA,EAEJ;AACF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/provider-upload-local",
3
- "version": "0.0.0-next.dff425769af4d4d006725a10c395f59637403653",
3
+ "version": "0.0.0-next.e09d30edcbd16960a838997778a31d50e9c60bc4",
4
4
  "description": "Local provider for strapi upload",
5
5
  "keywords": [
6
6
  "upload",
@@ -27,22 +27,34 @@
27
27
  "url": "https://strapi.io"
28
28
  }
29
29
  ],
30
- "main": "./lib",
31
- "directories": {
32
- "lib": "./lib"
33
- },
30
+ "main": "./dist/index.js",
31
+ "module": "./dist/index.mjs",
32
+ "source": "./src/index.ts",
33
+ "types": "./dist/index.d.ts",
34
+ "files": [
35
+ "./dist"
36
+ ],
34
37
  "scripts": {
38
+ "build": "pack-up build",
39
+ "clean": "run -T rimraf ./dist",
40
+ "lint": "run -T eslint .",
35
41
  "test:unit": "run -T jest",
36
42
  "test:unit:watch": "run -T jest --watch",
37
- "lint": "run -T eslint ."
43
+ "watch": "pack-up watch"
38
44
  },
39
45
  "dependencies": {
40
- "@strapi/utils": "0.0.0-next.dff425769af4d4d006725a10c395f59637403653",
46
+ "@strapi/utils": "0.0.0-next.e09d30edcbd16960a838997778a31d50e9c60bc4",
41
47
  "fs-extra": "10.0.0"
42
48
  },
49
+ "devDependencies": {
50
+ "@strapi/pack-up": "0.0.0-next.e09d30edcbd16960a838997778a31d50e9c60bc4",
51
+ "@types/jest": "29.5.2",
52
+ "eslint-config-custom": "0.0.0-next.e09d30edcbd16960a838997778a31d50e9c60bc4",
53
+ "tsconfig": "0.0.0-next.e09d30edcbd16960a838997778a31d50e9c60bc4"
54
+ },
43
55
  "engines": {
44
- "node": ">=14.19.1 <=18.x.x",
56
+ "node": ">=18.0.0 <=20.x.x",
45
57
  "npm": ">=6.0.0"
46
58
  },
47
- "gitHead": "dff425769af4d4d006725a10c395f59637403653"
59
+ "gitHead": "e09d30edcbd16960a838997778a31d50e9c60bc4"
48
60
  }
package/.eslintignore DELETED
@@ -1,2 +0,0 @@
1
- node_modules/
2
- .eslintrc.js
package/.eslintrc.js DELETED
@@ -1,4 +0,0 @@
1
- module.exports = {
2
- root: true,
3
- extends: ['custom/back'],
4
- };