@blocklet/uploader-server 0.1.77 → 0.1.79
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/es/middlewares/local-storage.js +13 -13
- package/es/middlewares/static-resource.js +2 -3
- package/es/utils.d.ts +1 -0
- package/es/utils.js +6 -1
- package/lib/middlewares/local-storage.js +14 -13
- package/lib/middlewares/static-resource.js +3 -3
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +7 -1
- package/package.json +5 -5
|
@@ -7,11 +7,11 @@ const crypto = require("crypto");
|
|
|
7
7
|
const mime = require("mime-types");
|
|
8
8
|
const joinUrlLib = require("url-join");
|
|
9
9
|
const { default: queue } = require("p-queue");
|
|
10
|
-
const { setPDFDownloadHeader } = require("../utils");
|
|
10
|
+
const { setPDFDownloadHeader, logger } = require("../utils");
|
|
11
11
|
const validFilePathInDirPath = (dirPath, filePath) => {
|
|
12
12
|
const fileName = path.basename(filePath);
|
|
13
13
|
if (!filePath.startsWith(dirPath) || path.join(dirPath, fileName) !== filePath) {
|
|
14
|
-
|
|
14
|
+
logger.error("Invalid file path: ", filePath);
|
|
15
15
|
throw new Error("Invalid file path");
|
|
16
16
|
}
|
|
17
17
|
return true;
|
|
@@ -90,7 +90,7 @@ export function initLocalStorageServer({
|
|
|
90
90
|
const result = await _onUploadFinish(req, res, uploadMetadata);
|
|
91
91
|
return result;
|
|
92
92
|
} catch (err) {
|
|
93
|
-
|
|
93
|
+
logger.error("@blocklet/uploader: onUploadFinish error: ", err);
|
|
94
94
|
newServer.delete(uploadMetadata.id);
|
|
95
95
|
res.setHeader("x-uploader-file-exist", false);
|
|
96
96
|
throw err;
|
|
@@ -141,19 +141,19 @@ export function initLocalStorageServer({
|
|
|
141
141
|
fn: () => {
|
|
142
142
|
try {
|
|
143
143
|
newServer.cleanUpExpiredUploads().then((count) => {
|
|
144
|
-
|
|
144
|
+
logger.info(`@blocklet/uploader: cleanup expired uploads done: ${count}`);
|
|
145
145
|
}).catch((err) => {
|
|
146
|
-
|
|
146
|
+
logger.error(`@blocklet/uploader: cleanup expired uploads error`, err);
|
|
147
147
|
});
|
|
148
148
|
} catch (err) {
|
|
149
|
-
|
|
149
|
+
logger.error(`@blocklet/uploader: cleanup expired uploads error`, err);
|
|
150
150
|
}
|
|
151
151
|
},
|
|
152
152
|
options: { runOnInit: false }
|
|
153
153
|
}
|
|
154
154
|
],
|
|
155
155
|
onError: (err) => {
|
|
156
|
-
|
|
156
|
+
logger.error("@blocklet/uploader: cleanup job failed", err);
|
|
157
157
|
}
|
|
158
158
|
});
|
|
159
159
|
newServer.delete = async (key) => {
|
|
@@ -161,7 +161,7 @@ export function initLocalStorageServer({
|
|
|
161
161
|
await configstore.delete(key);
|
|
162
162
|
await configstore.delete(key, false);
|
|
163
163
|
} catch (err) {
|
|
164
|
-
|
|
164
|
+
logger.error("@blocklet/uploader: delete error: ", err);
|
|
165
165
|
}
|
|
166
166
|
};
|
|
167
167
|
newServer.on(EVENTS.POST_RECEIVE, async (req, res, uploadMetadata) => {
|
|
@@ -262,7 +262,7 @@ export async function fileExistBeforeUpload(req, res, next) {
|
|
|
262
262
|
...realMetaData
|
|
263
263
|
};
|
|
264
264
|
} catch (err) {
|
|
265
|
-
|
|
265
|
+
logger.error("@blocklet/uploader: parse metadata error: ", err);
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
const uploadResult = await uploaderProps.onUploadFinish(req, res, metaData);
|
|
@@ -282,7 +282,7 @@ export async function getMetaDataByFilePath(filePath) {
|
|
|
282
282
|
const metaDataJson = JSON.parse(metaData);
|
|
283
283
|
return metaDataJson;
|
|
284
284
|
} catch (err) {
|
|
285
|
-
|
|
285
|
+
logger.error("@blocklet/uploader: getMetaDataByPath error: ", err);
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
288
|
return null;
|
|
@@ -335,17 +335,17 @@ class RewriteFileConfigstore {
|
|
|
335
335
|
if (isExist) {
|
|
336
336
|
await fs.rm(filePath);
|
|
337
337
|
} else {
|
|
338
|
-
|
|
338
|
+
logger.log("Can not remove file, the file not exist: ", filePath);
|
|
339
339
|
}
|
|
340
340
|
} catch (err) {
|
|
341
|
-
|
|
341
|
+
logger.error("@blocklet/uploader: safeDeleteFile error: ", err);
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
344
|
async delete(key, isMetadata = true) {
|
|
345
345
|
try {
|
|
346
346
|
await this.queue.add(() => this.safeDeleteFile(this.resolve(key, isMetadata)));
|
|
347
347
|
} catch (err) {
|
|
348
|
-
|
|
348
|
+
logger.error("@blocklet/uploader: delete error: ", err);
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
351
|
async list() {
|
|
@@ -4,9 +4,8 @@ const config = require("@blocklet/sdk/lib/config");
|
|
|
4
4
|
const { getResources } = require("@blocklet/sdk/lib/component");
|
|
5
5
|
const joinUrl = require("url-join");
|
|
6
6
|
const component = require("@blocklet/sdk/lib/component");
|
|
7
|
-
const { setPDFDownloadHeader } = require("../utils");
|
|
7
|
+
const { setPDFDownloadHeader, logger } = require("../utils");
|
|
8
8
|
const { ImageBinDid } = require("../constants");
|
|
9
|
-
const logger = console;
|
|
10
9
|
const ImgResourceType = "imgpack";
|
|
11
10
|
let skipRunningCheck = false;
|
|
12
11
|
let resourceTypes = [
|
|
@@ -46,7 +45,7 @@ export const mappingResource = async () => {
|
|
|
46
45
|
);
|
|
47
46
|
return canUseResources;
|
|
48
47
|
} catch (error) {
|
|
49
|
-
|
|
48
|
+
logger.error(error);
|
|
50
49
|
}
|
|
51
50
|
return false;
|
|
52
51
|
};
|
package/es/utils.d.ts
CHANGED
package/es/utils.js
CHANGED
|
@@ -9,6 +9,11 @@ import crypto from "crypto";
|
|
|
9
9
|
import { getSignData } from "@blocklet/sdk/lib/util/verify-sign";
|
|
10
10
|
import FormData from "form-data";
|
|
11
11
|
import omit from "lodash/omit";
|
|
12
|
+
export let logger = console;
|
|
13
|
+
if (process.env.BLOCKLET_LOG_DIR) {
|
|
14
|
+
const initLogger = require("@blocklet/logger");
|
|
15
|
+
logger = initLogger("uploader-server");
|
|
16
|
+
}
|
|
12
17
|
const DEFAULT_TTL = 5 * 60 * 1e3;
|
|
13
18
|
const appUrl = process.env.BLOCKLET_APP_URL || "";
|
|
14
19
|
const trustedDomainsCache = {
|
|
@@ -72,7 +77,7 @@ export async function proxyImageDownload(req, res, next) {
|
|
|
72
77
|
throw new Error("download image error");
|
|
73
78
|
}
|
|
74
79
|
} catch (err) {
|
|
75
|
-
|
|
80
|
+
logger.error("Proxy url failed: ", err);
|
|
76
81
|
res.status(500).send("Proxy url failed");
|
|
77
82
|
}
|
|
78
83
|
} else {
|
|
@@ -28,12 +28,13 @@ const {
|
|
|
28
28
|
default: queue
|
|
29
29
|
} = require("p-queue");
|
|
30
30
|
const {
|
|
31
|
-
setPDFDownloadHeader
|
|
31
|
+
setPDFDownloadHeader,
|
|
32
|
+
logger
|
|
32
33
|
} = require("../utils");
|
|
33
34
|
const validFilePathInDirPath = (dirPath, filePath) => {
|
|
34
35
|
const fileName = path.basename(filePath);
|
|
35
36
|
if (!filePath.startsWith(dirPath) || path.join(dirPath, fileName) !== filePath) {
|
|
36
|
-
|
|
37
|
+
logger.error("Invalid file path: ", filePath);
|
|
37
38
|
throw new Error("Invalid file path");
|
|
38
39
|
}
|
|
39
40
|
return true;
|
|
@@ -118,7 +119,7 @@ function initLocalStorageServer({
|
|
|
118
119
|
const result = await _onUploadFinish(req, res, uploadMetadata);
|
|
119
120
|
return result;
|
|
120
121
|
} catch (err) {
|
|
121
|
-
|
|
122
|
+
logger.error("@blocklet/uploader: onUploadFinish error: ", err);
|
|
122
123
|
newServer.delete(uploadMetadata.id);
|
|
123
124
|
res.setHeader("x-uploader-file-exist", false);
|
|
124
125
|
throw err;
|
|
@@ -171,12 +172,12 @@ function initLocalStorageServer({
|
|
|
171
172
|
fn: () => {
|
|
172
173
|
try {
|
|
173
174
|
newServer.cleanUpExpiredUploads().then(count => {
|
|
174
|
-
|
|
175
|
+
logger.info(`@blocklet/uploader: cleanup expired uploads done: ${count}`);
|
|
175
176
|
}).catch(err => {
|
|
176
|
-
|
|
177
|
+
logger.error(`@blocklet/uploader: cleanup expired uploads error`, err);
|
|
177
178
|
});
|
|
178
179
|
} catch (err) {
|
|
179
|
-
|
|
180
|
+
logger.error(`@blocklet/uploader: cleanup expired uploads error`, err);
|
|
180
181
|
}
|
|
181
182
|
},
|
|
182
183
|
options: {
|
|
@@ -184,7 +185,7 @@ function initLocalStorageServer({
|
|
|
184
185
|
}
|
|
185
186
|
}],
|
|
186
187
|
onError: err => {
|
|
187
|
-
|
|
188
|
+
logger.error("@blocklet/uploader: cleanup job failed", err);
|
|
188
189
|
}
|
|
189
190
|
});
|
|
190
191
|
newServer.delete = async key => {
|
|
@@ -192,7 +193,7 @@ function initLocalStorageServer({
|
|
|
192
193
|
await configstore.delete(key);
|
|
193
194
|
await configstore.delete(key, false);
|
|
194
195
|
} catch (err) {
|
|
195
|
-
|
|
196
|
+
logger.error("@blocklet/uploader: delete error: ", err);
|
|
196
197
|
}
|
|
197
198
|
};
|
|
198
199
|
newServer.on(EVENTS.POST_RECEIVE, async (req, res, uploadMetadata) => {
|
|
@@ -309,7 +310,7 @@ async function fileExistBeforeUpload(req, res, next) {
|
|
|
309
310
|
...realMetaData
|
|
310
311
|
};
|
|
311
312
|
} catch (err) {
|
|
312
|
-
|
|
313
|
+
logger.error("@blocklet/uploader: parse metadata error: ", err);
|
|
313
314
|
}
|
|
314
315
|
}
|
|
315
316
|
const uploadResult = await uploaderProps.onUploadFinish(req, res, metaData);
|
|
@@ -329,7 +330,7 @@ async function getMetaDataByFilePath(filePath) {
|
|
|
329
330
|
const metaDataJson = JSON.parse(metaData);
|
|
330
331
|
return metaDataJson;
|
|
331
332
|
} catch (err) {
|
|
332
|
-
|
|
333
|
+
logger.error("@blocklet/uploader: getMetaDataByPath error: ", err);
|
|
333
334
|
}
|
|
334
335
|
}
|
|
335
336
|
return null;
|
|
@@ -384,17 +385,17 @@ class RewriteFileConfigstore {
|
|
|
384
385
|
if (isExist) {
|
|
385
386
|
await fs.rm(filePath);
|
|
386
387
|
} else {
|
|
387
|
-
|
|
388
|
+
logger.log("Can not remove file, the file not exist: ", filePath);
|
|
388
389
|
}
|
|
389
390
|
} catch (err) {
|
|
390
|
-
|
|
391
|
+
logger.error("@blocklet/uploader: safeDeleteFile error: ", err);
|
|
391
392
|
}
|
|
392
393
|
}
|
|
393
394
|
async delete(key, isMetadata = true) {
|
|
394
395
|
try {
|
|
395
396
|
await this.queue.add(() => this.safeDeleteFile(this.resolve(key, isMetadata)));
|
|
396
397
|
} catch (err) {
|
|
397
|
-
|
|
398
|
+
logger.error("@blocklet/uploader: delete error: ", err);
|
|
398
399
|
}
|
|
399
400
|
}
|
|
400
401
|
async list() {
|
|
@@ -18,12 +18,12 @@ const {
|
|
|
18
18
|
const joinUrl = require("url-join");
|
|
19
19
|
const component = require("@blocklet/sdk/lib/component");
|
|
20
20
|
const {
|
|
21
|
-
setPDFDownloadHeader
|
|
21
|
+
setPDFDownloadHeader,
|
|
22
|
+
logger
|
|
22
23
|
} = require("../utils");
|
|
23
24
|
const {
|
|
24
25
|
ImageBinDid
|
|
25
26
|
} = require("../constants");
|
|
26
|
-
const logger = console;
|
|
27
27
|
const ImgResourceType = "imgpack";
|
|
28
28
|
let skipRunningCheck = false;
|
|
29
29
|
let resourceTypes = [{
|
|
@@ -61,7 +61,7 @@ const mappingResource = async () => {
|
|
|
61
61
|
);
|
|
62
62
|
return canUseResources;
|
|
63
63
|
} catch (error) {
|
|
64
|
-
|
|
64
|
+
logger.error(error);
|
|
65
65
|
}
|
|
66
66
|
return false;
|
|
67
67
|
};
|
package/lib/utils.d.ts
CHANGED
package/lib/utils.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.checkTrustedReferer = checkTrustedReferer;
|
|
|
7
7
|
exports.getFileHash = void 0;
|
|
8
8
|
exports.getMediaKitFileStream = getMediaKitFileStream;
|
|
9
9
|
exports.getTrustedDomainsCache = getTrustedDomainsCache;
|
|
10
|
+
exports.logger = void 0;
|
|
10
11
|
exports.proxyImageDownload = proxyImageDownload;
|
|
11
12
|
exports.setPDFDownloadHeader = setPDFDownloadHeader;
|
|
12
13
|
exports.uploadToMediaKit = uploadToMediaKit;
|
|
@@ -22,6 +23,11 @@ var _verifySign = require("@blocklet/sdk/lib/util/verify-sign");
|
|
|
22
23
|
var _formData = _interopRequireDefault(require("form-data"));
|
|
23
24
|
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
24
25
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
|
+
let logger = exports.logger = console;
|
|
27
|
+
if (process.env.BLOCKLET_LOG_DIR) {
|
|
28
|
+
const initLogger = require("@blocklet/logger");
|
|
29
|
+
exports.logger = logger = initLogger("uploader-server");
|
|
30
|
+
}
|
|
25
31
|
const DEFAULT_TTL = 5 * 60 * 1e3;
|
|
26
32
|
const appUrl = process.env.BLOCKLET_APP_URL || "";
|
|
27
33
|
const trustedDomainsCache = {
|
|
@@ -91,7 +97,7 @@ async function proxyImageDownload(req, res, next) {
|
|
|
91
97
|
throw new Error("download image error");
|
|
92
98
|
}
|
|
93
99
|
} catch (err) {
|
|
94
|
-
|
|
100
|
+
logger.error("Proxy url failed: ", err);
|
|
95
101
|
res.status(500).send("Proxy url failed");
|
|
96
102
|
}
|
|
97
103
|
} else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blocklet/uploader-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.79",
|
|
4
4
|
"description": "blocklet upload server",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"@uppy/companion": "4.15.1"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@abtnode/cron": "^1.16.
|
|
40
|
-
"@blocklet/constant": "^1.16.
|
|
41
|
-
"@blocklet/logger": "^1.16.
|
|
42
|
-
"@blocklet/sdk": "^1.16.
|
|
39
|
+
"@abtnode/cron": "^1.16.38",
|
|
40
|
+
"@blocklet/constant": "^1.16.38",
|
|
41
|
+
"@blocklet/logger": "^1.16.38",
|
|
42
|
+
"@blocklet/sdk": "^1.16.38",
|
|
43
43
|
"@tus/file-store": "1.0.0",
|
|
44
44
|
"@tus/server": "1.0.0",
|
|
45
45
|
"@uppy/companion": "4.15.1",
|