@strapi/provider-upload-local 5.48.1 → 5.50.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.
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +57 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
1
|
import { ReadStream } from 'fs';
|
|
5
2
|
interface File {
|
|
6
3
|
name: string;
|
|
@@ -33,6 +30,8 @@ declare const _default: {
|
|
|
33
30
|
checkFileSize(file: File, options: CheckFileSizeOptions): void;
|
|
34
31
|
uploadStream(file: File): Promise<void>;
|
|
35
32
|
upload(file: File): Promise<void>;
|
|
33
|
+
replaceStream(newFile: File, oldFile: File): Promise<void>;
|
|
34
|
+
replace(newFile: File, oldFile: File): Promise<void>;
|
|
36
35
|
delete(file: File): Promise<string | void>;
|
|
37
36
|
};
|
|
38
37
|
};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAQpC,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,OAAO,CAAC,IAAI,CAAC;qBAuB1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;+BAoBV,IAAI,WAAW,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;yBAoCzC,IAAI,WAAW,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;qBAiCvC,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;;;AApJhD,wBAyKE"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,10 @@ var path = require('path');
|
|
|
6
6
|
var fse = require('fs-extra');
|
|
7
7
|
var utils = require('@strapi/utils');
|
|
8
8
|
|
|
9
|
-
function
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
function _interopNamespace(e) {
|
|
12
|
+
if (e && e.__esModule) return e;
|
|
10
13
|
var n = Object.create(null);
|
|
11
14
|
if (e) {
|
|
12
15
|
Object.keys(e).forEach(function (k) {
|
|
@@ -23,7 +26,10 @@ function _interopNamespaceDefault(e) {
|
|
|
23
26
|
return Object.freeze(n);
|
|
24
27
|
}
|
|
25
28
|
|
|
26
|
-
var
|
|
29
|
+
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
30
|
+
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
31
|
+
var fse__default = /*#__PURE__*/_interopDefault(fse);
|
|
32
|
+
var utils__namespace = /*#__PURE__*/_interopNamespace(utils);
|
|
27
33
|
|
|
28
34
|
const { PayloadTooLargeError } = utils__namespace.errors;
|
|
29
35
|
const { kbytesToBytes, bytesToHumanReadable } = utils__namespace.file;
|
|
@@ -35,8 +41,8 @@ var index = {
|
|
|
35
41
|
process.emitWarning('[deprecated] In future versions, "sizeLimit" argument will be ignored from upload.config.providerOptions. Move it to upload.config');
|
|
36
42
|
}
|
|
37
43
|
// Ensure uploads folder exists
|
|
38
|
-
const uploadPath =
|
|
39
|
-
if (!
|
|
44
|
+
const uploadPath = path__default.default.resolve(strapi.dirs.static.public, UPLOADS_FOLDER_NAME);
|
|
45
|
+
if (!fse__default.default.pathExistsSync(uploadPath)) {
|
|
40
46
|
throw new Error(`The upload folder (${uploadPath}) doesn't exist or is not accessible. Please make sure it exists.`);
|
|
41
47
|
}
|
|
42
48
|
return {
|
|
@@ -55,7 +61,7 @@ var index = {
|
|
|
55
61
|
}
|
|
56
62
|
const { stream: stream$1 } = file;
|
|
57
63
|
return new Promise((resolve, reject)=>{
|
|
58
|
-
stream.pipeline(stream$1,
|
|
64
|
+
stream.pipeline(stream$1, fs__default.default.createWriteStream(path__default.default.join(uploadPath, `${file.hash}${file.ext}`)), (err)=>{
|
|
59
65
|
if (err) {
|
|
60
66
|
return reject(err);
|
|
61
67
|
}
|
|
@@ -71,7 +77,7 @@ var index = {
|
|
|
71
77
|
const { buffer } = file;
|
|
72
78
|
return new Promise((resolve, reject)=>{
|
|
73
79
|
// write file in public/assets folder
|
|
74
|
-
|
|
80
|
+
fs__default.default.writeFile(path__default.default.join(uploadPath, `${file.hash}${file.ext}`), buffer, (err)=>{
|
|
75
81
|
if (err) {
|
|
76
82
|
return reject(err);
|
|
77
83
|
}
|
|
@@ -80,15 +86,72 @@ var index = {
|
|
|
80
86
|
});
|
|
81
87
|
});
|
|
82
88
|
},
|
|
89
|
+
replaceStream (newFile, oldFile) {
|
|
90
|
+
if (!newFile.stream) {
|
|
91
|
+
return Promise.reject(new Error('Missing file stream'));
|
|
92
|
+
}
|
|
93
|
+
// If the destination path is unchanged, writing the new file overwrites
|
|
94
|
+
// the old one atomically. If the hash or extension changed, write the
|
|
95
|
+
// new file first then unlink the old one so we never leave a gap.
|
|
96
|
+
const newPath = path__default.default.join(uploadPath, `${newFile.hash}${newFile.ext}`);
|
|
97
|
+
const oldPath = path__default.default.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);
|
|
98
|
+
const samePath = newPath === oldPath;
|
|
99
|
+
const { stream: stream$1 } = newFile;
|
|
100
|
+
return new Promise((resolve, reject)=>{
|
|
101
|
+
stream.pipeline(stream$1, fs__default.default.createWriteStream(newPath), (err)=>{
|
|
102
|
+
if (err) {
|
|
103
|
+
return reject(err);
|
|
104
|
+
}
|
|
105
|
+
newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;
|
|
106
|
+
if (!samePath && fs__default.default.existsSync(oldPath)) {
|
|
107
|
+
fs__default.default.unlink(oldPath, (unlinkErr)=>{
|
|
108
|
+
if (unlinkErr) {
|
|
109
|
+
return reject(unlinkErr);
|
|
110
|
+
}
|
|
111
|
+
resolve();
|
|
112
|
+
});
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
resolve();
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
replace (newFile, oldFile) {
|
|
120
|
+
if (!newFile.buffer) {
|
|
121
|
+
return Promise.reject(new Error('Missing file buffer'));
|
|
122
|
+
}
|
|
123
|
+
const newPath = path__default.default.join(uploadPath, `${newFile.hash}${newFile.ext}`);
|
|
124
|
+
const oldPath = path__default.default.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);
|
|
125
|
+
const samePath = newPath === oldPath;
|
|
126
|
+
const { buffer } = newFile;
|
|
127
|
+
return new Promise((resolve, reject)=>{
|
|
128
|
+
fs__default.default.writeFile(newPath, buffer, (err)=>{
|
|
129
|
+
if (err) {
|
|
130
|
+
return reject(err);
|
|
131
|
+
}
|
|
132
|
+
newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;
|
|
133
|
+
if (!samePath && fs__default.default.existsSync(oldPath)) {
|
|
134
|
+
fs__default.default.unlink(oldPath, (unlinkErr)=>{
|
|
135
|
+
if (unlinkErr) {
|
|
136
|
+
return reject(unlinkErr);
|
|
137
|
+
}
|
|
138
|
+
resolve();
|
|
139
|
+
});
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
resolve();
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
},
|
|
83
146
|
delete (file) {
|
|
84
147
|
return new Promise((resolve, reject)=>{
|
|
85
|
-
const filePath =
|
|
86
|
-
if (!
|
|
148
|
+
const filePath = path__default.default.join(uploadPath, `${file.hash}${file.ext}`);
|
|
149
|
+
if (!fs__default.default.existsSync(filePath)) {
|
|
87
150
|
resolve("File doesn't exist");
|
|
88
151
|
return;
|
|
89
152
|
}
|
|
90
153
|
// remove file from public/assets folder
|
|
91
|
-
|
|
154
|
+
fs__default.default.unlink(filePath, (err)=>{
|
|
92
155
|
if (err) {
|
|
93
156
|
return reject(err);
|
|
94
157
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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\n// Needed to load global.strapi without having to put @strapi/types in the regular dependencies\nimport type {} from '@strapi/types';\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":["PayloadTooLargeError","utils","errors","kbytesToBytes","bytesToHumanReadable","file","UPLOADS_FOLDER_NAME","init","sizeLimit","providerOptionsSizeLimit","process","emitWarning","uploadPath","path","resolve","strapi","dirs","static","public","fse","pathExistsSync","Error","checkFileSize","options","size","name","uploadStream","stream","Promise","reject","pipeline","fs","createWriteStream","join","hash","ext","err","url","upload","buffer","writeFile","delete","filePath","existsSync","unlink"],"mappings":"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"}
|
|
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\n// Needed to load global.strapi without having to put @strapi/types in the regular dependencies\nimport type {} from '@strapi/types';\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 replaceStream(newFile: File, oldFile: File): Promise<void> {\n if (!newFile.stream) {\n return Promise.reject(new Error('Missing file stream'));\n }\n\n // If the destination path is unchanged, writing the new file overwrites\n // the old one atomically. If the hash or extension changed, write the\n // new file first then unlink the old one so we never leave a gap.\n const newPath = path.join(uploadPath, `${newFile.hash}${newFile.ext}`);\n const oldPath = path.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);\n const samePath = newPath === oldPath;\n\n const { stream } = newFile;\n\n return new Promise((resolve, reject) => {\n pipeline(stream, fs.createWriteStream(newPath), (err) => {\n if (err) {\n return reject(err);\n }\n\n newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;\n\n if (!samePath && fs.existsSync(oldPath)) {\n fs.unlink(oldPath, (unlinkErr) => {\n if (unlinkErr) {\n return reject(unlinkErr);\n }\n resolve();\n });\n return;\n }\n\n resolve();\n });\n });\n },\n replace(newFile: File, oldFile: File): Promise<void> {\n if (!newFile.buffer) {\n return Promise.reject(new Error('Missing file buffer'));\n }\n\n const newPath = path.join(uploadPath, `${newFile.hash}${newFile.ext}`);\n const oldPath = path.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);\n const samePath = newPath === oldPath;\n\n const { buffer } = newFile;\n\n return new Promise((resolve, reject) => {\n fs.writeFile(newPath, buffer, (err) => {\n if (err) {\n return reject(err);\n }\n\n newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;\n\n if (!samePath && fs.existsSync(oldPath)) {\n fs.unlink(oldPath, (unlinkErr) => {\n if (unlinkErr) {\n return reject(unlinkErr);\n }\n resolve();\n });\n return;\n }\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":["PayloadTooLargeError","utils","errors","kbytesToBytes","bytesToHumanReadable","file","UPLOADS_FOLDER_NAME","init","sizeLimit","providerOptionsSizeLimit","process","emitWarning","uploadPath","path","resolve","strapi","dirs","static","public","fse","pathExistsSync","Error","checkFileSize","options","size","name","uploadStream","stream","Promise","reject","pipeline","fs","createWriteStream","join","hash","ext","err","url","upload","buffer","writeFile","replaceStream","newFile","oldFile","newPath","oldPath","samePath","existsSync","unlink","unlinkErr","replace","delete","filePath"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -59,6 +59,63 @@ var index = {
|
|
|
59
59
|
});
|
|
60
60
|
});
|
|
61
61
|
},
|
|
62
|
+
replaceStream (newFile, oldFile) {
|
|
63
|
+
if (!newFile.stream) {
|
|
64
|
+
return Promise.reject(new Error('Missing file stream'));
|
|
65
|
+
}
|
|
66
|
+
// If the destination path is unchanged, writing the new file overwrites
|
|
67
|
+
// the old one atomically. If the hash or extension changed, write the
|
|
68
|
+
// new file first then unlink the old one so we never leave a gap.
|
|
69
|
+
const newPath = path.join(uploadPath, `${newFile.hash}${newFile.ext}`);
|
|
70
|
+
const oldPath = path.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);
|
|
71
|
+
const samePath = newPath === oldPath;
|
|
72
|
+
const { stream } = newFile;
|
|
73
|
+
return new Promise((resolve, reject)=>{
|
|
74
|
+
pipeline(stream, fs.createWriteStream(newPath), (err)=>{
|
|
75
|
+
if (err) {
|
|
76
|
+
return reject(err);
|
|
77
|
+
}
|
|
78
|
+
newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;
|
|
79
|
+
if (!samePath && fs.existsSync(oldPath)) {
|
|
80
|
+
fs.unlink(oldPath, (unlinkErr)=>{
|
|
81
|
+
if (unlinkErr) {
|
|
82
|
+
return reject(unlinkErr);
|
|
83
|
+
}
|
|
84
|
+
resolve();
|
|
85
|
+
});
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
resolve();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
},
|
|
92
|
+
replace (newFile, oldFile) {
|
|
93
|
+
if (!newFile.buffer) {
|
|
94
|
+
return Promise.reject(new Error('Missing file buffer'));
|
|
95
|
+
}
|
|
96
|
+
const newPath = path.join(uploadPath, `${newFile.hash}${newFile.ext}`);
|
|
97
|
+
const oldPath = path.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);
|
|
98
|
+
const samePath = newPath === oldPath;
|
|
99
|
+
const { buffer } = newFile;
|
|
100
|
+
return new Promise((resolve, reject)=>{
|
|
101
|
+
fs.writeFile(newPath, buffer, (err)=>{
|
|
102
|
+
if (err) {
|
|
103
|
+
return reject(err);
|
|
104
|
+
}
|
|
105
|
+
newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;
|
|
106
|
+
if (!samePath && fs.existsSync(oldPath)) {
|
|
107
|
+
fs.unlink(oldPath, (unlinkErr)=>{
|
|
108
|
+
if (unlinkErr) {
|
|
109
|
+
return reject(unlinkErr);
|
|
110
|
+
}
|
|
111
|
+
resolve();
|
|
112
|
+
});
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
resolve();
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
},
|
|
62
119
|
delete (file) {
|
|
63
120
|
return new Promise((resolve, reject)=>{
|
|
64
121
|
const filePath = path.join(uploadPath, `${file.hash}${file.ext}`);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +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\n// Needed to load global.strapi without having to put @strapi/types in the regular dependencies\nimport type {} from '@strapi/types';\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":["PayloadTooLargeError","utils","errors","kbytesToBytes","bytesToHumanReadable","file","UPLOADS_FOLDER_NAME","init","sizeLimit","providerOptionsSizeLimit","process","emitWarning","uploadPath","path","resolve","strapi","dirs","static","public","fse","pathExistsSync","Error","checkFileSize","options","size","name","uploadStream","stream","Promise","reject","pipeline","fs","createWriteStream","join","hash","ext","err","url","upload","buffer","writeFile","delete","filePath","existsSync","unlink"],"mappings":";;;;;;AA8BA,MAAM,EAAEA,oBAAoB,EAAE,GAAGC,MAAMC,MAAM;AAC7C,MAAM,EAAEC,aAAa,EAAEC,oBAAoB,EAAE,GAAGH,MAAMI,IAAI;AAE1D,MAAMC,mBAAAA,GAAsB,SAAA;AAU5B,YAAe;AACbC,IAAAA,IAAAA,CAAAA,CAAK,EAAEC,SAAAA,EAAWC,wBAAwB,EAAe,GAAG,EAAE,EAAA;;AAE5D,QAAA,IAAIA,wBAAAA,EAA0B;AAC5BC,YAAAA,OAAAA,CAAQC,WAAW,CACjB,oIAAA,CAAA;AAEJ,QAAA;;QAGA,MAAMC,UAAAA,GAAaC,IAAAA,CAAKC,OAAO,CAACC,MAAAA,CAAOC,IAAI,CAACC,MAAM,CAACC,MAAM,EAAEZ,mBAAAA,CAAAA;AAC3D,QAAA,IAAI,CAACa,GAAAA,CAAIC,cAAc,CAACR,UAAAA,CAAAA,EAAa;AACnC,YAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,mBAAmB,EAAET,UAAAA,CAAW,iEAAiE,CAAC,CAAA;AAEvG,QAAA;QAEA,OAAO;YACLU,aAAAA,CAAAA,CAAcjB,IAAU,EAAEkB,OAA6B,EAAA;AACrD,gBAAA,MAAM,EAAEf,SAAS,EAAE,GAAGe,WAAW,EAAC;;AAGlC,gBAAA,IAAId,wBAAAA,EAA0B;AAC5B,oBAAA,IAAIN,cAAcE,IAAAA,CAAKmB,IAAI,CAAA,GAAIf,wBAAAA,EAC7B,MAAM,IAAIT,oBAAAA,CACR,CAAA,EAAGK,IAAAA,CAAKoB,IAAI,CAAC,uBAAuB,EAAErB,oBAAAA,CACpCK,wBAAAA,CAAAA,CACA,CAAC,CAAC,CAAA;AAEV,gBAAA,CAAA,MAAO,IAAID,SAAAA,EAAW;AACpB,oBAAA,IAAIL,cAAcE,IAAAA,CAAKmB,IAAI,CAAA,GAAIhB,SAAAA,EAC7B,MAAM,IAAIR,oBAAAA,CACR,CAAA,EAAGK,IAAAA,CAAKoB,IAAI,CAAC,uBAAuB,EAAErB,oBAAAA,CAAqBI,SAAAA,CAAAA,CAAW,CAAC,CAAC,CAAA;AAE9E,gBAAA;AACF,YAAA,CAAA;AACAkB,YAAAA,YAAAA,CAAAA,CAAarB,IAAU,EAAA;gBACrB,IAAI,CAACA,IAAAA,CAAKsB,MAAM,EAAE;AAChB,oBAAA,OAAOC,OAAAA,CAAQC,MAAM,CAAC,IAAIR,KAAAA,CAAM,qBAAA,CAAA,CAAA;AAClC,gBAAA;gBAEA,MAAM,EAAEM,MAAM,EAAE,GAAGtB,IAAAA;gBAEnB,OAAO,IAAIuB,OAAAA,CAAQ,CAACd,OAAAA,EAASe,MAAAA,GAAAA;AAC3BC,oBAAAA,QAAAA,CACEH,QACAI,EAAAA,CAAGC,iBAAiB,CAACnB,IAAAA,CAAKoB,IAAI,CAACrB,UAAAA,EAAY,CAAA,EAAGP,IAAAA,CAAK6B,IAAI,CAAA,EAAG7B,IAAAA,CAAK8B,GAAG,CAAA,CAAE,IACpE,CAACC,GAAAA,GAAAA;AACC,wBAAA,IAAIA,GAAAA,EAAK;AACP,4BAAA,OAAOP,MAAAA,CAAOO,GAAAA,CAAAA;AAChB,wBAAA;AAEA/B,wBAAAA,IAAAA,CAAKgC,GAAG,GAAG,CAAC,CAAC,EAAE/B,mBAAAA,CAAoB,CAAC,EAAED,IAAAA,CAAK6B,IAAI,CAAA,EAAG7B,IAAAA,CAAK8B,GAAG,CAAA,CAAE;AAE5DrB,wBAAAA,OAAAA,EAAAA;AACF,oBAAA,CAAA,CAAA;AAEJ,gBAAA,CAAA,CAAA;AACF,YAAA,CAAA;AACAwB,YAAAA,MAAAA,CAAAA,CAAOjC,IAAU,EAAA;gBACf,IAAI,CAACA,IAAAA,CAAKkC,MAAM,EAAE;AAChB,oBAAA,OAAOX,OAAAA,CAAQC,MAAM,CAAC,IAAIR,KAAAA,CAAM,qBAAA,CAAA,CAAA;AAClC,gBAAA;gBAEA,MAAM,EAAEkB,MAAM,EAAE,GAAGlC,IAAAA;gBAEnB,OAAO,IAAIuB,OAAAA,CAAQ,CAACd,OAAAA,EAASe,MAAAA,GAAAA;;AAE3BE,oBAAAA,EAAAA,CAAGS,SAAS,CAAC3B,IAAAA,CAAKoB,IAAI,CAACrB,UAAAA,EAAY,CAAA,EAAGP,IAAAA,CAAK6B,IAAI,GAAG7B,IAAAA,CAAK8B,GAAG,CAAA,CAAE,CAAA,EAAGI,QAAQ,CAACH,GAAAA,GAAAA;AACtE,wBAAA,IAAIA,GAAAA,EAAK;AACP,4BAAA,OAAOP,MAAAA,CAAOO,GAAAA,CAAAA;AAChB,wBAAA;AAEA/B,wBAAAA,IAAAA,CAAKgC,GAAG,GAAG,CAAC,CAAC,EAAE/B,mBAAAA,CAAoB,CAAC,EAAED,IAAAA,CAAK6B,IAAI,CAAA,EAAG7B,IAAAA,CAAK8B,GAAG,CAAA,CAAE;AAE5DrB,wBAAAA,OAAAA,EAAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA,CAAA;AACA2B,YAAAA,MAAAA,CAAAA,CAAOpC,IAAU,EAAA;gBACf,OAAO,IAAIuB,OAAAA,CAAQ,CAACd,OAAAA,EAASe,MAAAA,GAAAA;oBAC3B,MAAMa,QAAAA,GAAW7B,IAAAA,CAAKoB,IAAI,CAACrB,UAAAA,EAAY,CAAA,EAAGP,IAAAA,CAAK6B,IAAI,CAAA,EAAG7B,IAAAA,CAAK8B,GAAG,CAAA,CAAE,CAAA;AAEhE,oBAAA,IAAI,CAACJ,EAAAA,CAAGY,UAAU,CAACD,QAAAA,CAAAA,EAAW;wBAC5B5B,OAAAA,CAAQ,oBAAA,CAAA;AACR,wBAAA;AACF,oBAAA;;oBAGAiB,EAAAA,CAAGa,MAAM,CAACF,QAAAA,EAAU,CAACN,GAAAA,GAAAA;AACnB,wBAAA,IAAIA,GAAAA,EAAK;AACP,4BAAA,OAAOP,MAAAA,CAAOO,GAAAA,CAAAA;AAChB,wBAAA;AAEAtB,wBAAAA,OAAAA,EAAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA;AACF,SAAA;AACF,IAAA;AACF,CAAA;;;;"}
|
|
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\n// Needed to load global.strapi without having to put @strapi/types in the regular dependencies\nimport type {} from '@strapi/types';\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 replaceStream(newFile: File, oldFile: File): Promise<void> {\n if (!newFile.stream) {\n return Promise.reject(new Error('Missing file stream'));\n }\n\n // If the destination path is unchanged, writing the new file overwrites\n // the old one atomically. If the hash or extension changed, write the\n // new file first then unlink the old one so we never leave a gap.\n const newPath = path.join(uploadPath, `${newFile.hash}${newFile.ext}`);\n const oldPath = path.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);\n const samePath = newPath === oldPath;\n\n const { stream } = newFile;\n\n return new Promise((resolve, reject) => {\n pipeline(stream, fs.createWriteStream(newPath), (err) => {\n if (err) {\n return reject(err);\n }\n\n newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;\n\n if (!samePath && fs.existsSync(oldPath)) {\n fs.unlink(oldPath, (unlinkErr) => {\n if (unlinkErr) {\n return reject(unlinkErr);\n }\n resolve();\n });\n return;\n }\n\n resolve();\n });\n });\n },\n replace(newFile: File, oldFile: File): Promise<void> {\n if (!newFile.buffer) {\n return Promise.reject(new Error('Missing file buffer'));\n }\n\n const newPath = path.join(uploadPath, `${newFile.hash}${newFile.ext}`);\n const oldPath = path.join(uploadPath, `${oldFile.hash}${oldFile.ext}`);\n const samePath = newPath === oldPath;\n\n const { buffer } = newFile;\n\n return new Promise((resolve, reject) => {\n fs.writeFile(newPath, buffer, (err) => {\n if (err) {\n return reject(err);\n }\n\n newFile.url = `/${UPLOADS_FOLDER_NAME}/${newFile.hash}${newFile.ext}`;\n\n if (!samePath && fs.existsSync(oldPath)) {\n fs.unlink(oldPath, (unlinkErr) => {\n if (unlinkErr) {\n return reject(unlinkErr);\n }\n resolve();\n });\n return;\n }\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":["PayloadTooLargeError","utils","errors","kbytesToBytes","bytesToHumanReadable","file","UPLOADS_FOLDER_NAME","init","sizeLimit","providerOptionsSizeLimit","process","emitWarning","uploadPath","path","resolve","strapi","dirs","static","public","fse","pathExistsSync","Error","checkFileSize","options","size","name","uploadStream","stream","Promise","reject","pipeline","fs","createWriteStream","join","hash","ext","err","url","upload","buffer","writeFile","replaceStream","newFile","oldFile","newPath","oldPath","samePath","existsSync","unlink","unlinkErr","replace","delete","filePath"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/provider-upload-local",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.50.0",
|
|
4
4
|
"description": "Local provider for strapi upload",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"upload",
|
|
@@ -46,16 +46,16 @@
|
|
|
46
46
|
"watch": "run -T rollup -c -w"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@strapi/utils": "5.
|
|
49
|
+
"@strapi/utils": "5.50.0",
|
|
50
50
|
"fs-extra": "11.3.4"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@strapi/types": "5.
|
|
53
|
+
"@strapi/types": "5.50.0",
|
|
54
54
|
"@types/fs-extra": "11.0.4",
|
|
55
55
|
"@types/jest": "29.5.2",
|
|
56
|
-
"eslint-config-custom": "5.
|
|
56
|
+
"eslint-config-custom": "5.50.0",
|
|
57
57
|
"memfs": "4.6.0",
|
|
58
|
-
"tsconfig": "5.
|
|
58
|
+
"tsconfig": "5.50.0"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=20.0.0 <=26.x.x",
|