@muhgholy/next-drive 4.13.0 → 4.15.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/{chunk-MUA7R3H5.cjs → chunk-2DGLSDQ7.cjs} +37 -13
- package/dist/chunk-2DGLSDQ7.cjs.map +1 -0
- package/dist/{chunk-HN67DFQM.js → chunk-PRQD67LD.js} +36 -12
- package/dist/chunk-PRQD67LD.js.map +1 -0
- package/dist/client/file-chooser.d.ts.map +1 -1
- package/dist/client/index.cjs +13 -1
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.js +13 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/style-injector.d.ts +2 -0
- package/dist/client/style-injector.d.ts.map +1 -0
- package/dist/server/express.cjs +11 -11
- package/dist/server/express.js +2 -2
- package/dist/server/index.cjs +13 -13
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-HN67DFQM.js.map +0 -1
- package/dist/chunk-MUA7R3H5.cjs.map +0 -1
|
@@ -4,7 +4,7 @@ var formidable = require('formidable');
|
|
|
4
4
|
var path = require('path');
|
|
5
5
|
var fs = require('fs');
|
|
6
6
|
var os3 = require('os');
|
|
7
|
-
var
|
|
7
|
+
var crypto3 = require('crypto');
|
|
8
8
|
var mongoose = require('mongoose');
|
|
9
9
|
var sharp2 = require('sharp');
|
|
10
10
|
var zod = require('zod');
|
|
@@ -17,7 +17,7 @@ var formidable__default = /*#__PURE__*/_interopDefault(formidable);
|
|
|
17
17
|
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
18
18
|
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
19
19
|
var os3__default = /*#__PURE__*/_interopDefault(os3);
|
|
20
|
-
var
|
|
20
|
+
var crypto3__default = /*#__PURE__*/_interopDefault(crypto3);
|
|
21
21
|
var mongoose__default = /*#__PURE__*/_interopDefault(mongoose);
|
|
22
22
|
var sharp2__default = /*#__PURE__*/_interopDefault(sharp2);
|
|
23
23
|
var ffmpeg__default = /*#__PURE__*/_interopDefault(ffmpeg);
|
|
@@ -364,7 +364,7 @@ var validateMimeType = (mime, allowedTypes) => {
|
|
|
364
364
|
});
|
|
365
365
|
};
|
|
366
366
|
var computeFileHash = (filePath) => new Promise((resolve, reject) => {
|
|
367
|
-
const hash =
|
|
367
|
+
const hash = crypto3__default.default.createHash("sha256");
|
|
368
368
|
const stream = fs__default.default.createReadStream(filePath);
|
|
369
369
|
stream.on("data", (data) => hash.update(data));
|
|
370
370
|
stream.on("end", () => resolve(hash.digest("hex")));
|
|
@@ -1286,7 +1286,7 @@ var driveGetUrl = (fileId, options) => {
|
|
|
1286
1286
|
} else {
|
|
1287
1287
|
expiryTimestamp = Math.floor(Date.now() / 1e3) + expiresIn;
|
|
1288
1288
|
}
|
|
1289
|
-
const signature =
|
|
1289
|
+
const signature = crypto3__default.default.createHmac("sha256", secret).update(`${fileId}:${expiryTimestamp}`).digest("hex");
|
|
1290
1290
|
const token = Buffer.from(`${expiryTimestamp}:${signature}`).toString("base64url");
|
|
1291
1291
|
return `/api/drive?action=serve&id=${fileId}&token=${token}`;
|
|
1292
1292
|
};
|
|
@@ -1552,7 +1552,7 @@ var driveUpload = async (source, key, options) => {
|
|
|
1552
1552
|
if (!fs__default.default.existsSync(tempDir)) {
|
|
1553
1553
|
fs__default.default.mkdirSync(tempDir, { recursive: true });
|
|
1554
1554
|
}
|
|
1555
|
-
tempFilePath = path__default.default.join(tempDir, `upload-${
|
|
1555
|
+
tempFilePath = path__default.default.join(tempDir, `upload-${crypto3__default.default.randomUUID()}.tmp`);
|
|
1556
1556
|
fs__default.default.writeFileSync(tempFilePath, source);
|
|
1557
1557
|
sourceFilePath = tempFilePath;
|
|
1558
1558
|
fileSize = source.length;
|
|
@@ -1561,7 +1561,7 @@ var driveUpload = async (source, key, options) => {
|
|
|
1561
1561
|
if (!fs__default.default.existsSync(tempDir)) {
|
|
1562
1562
|
fs__default.default.mkdirSync(tempDir, { recursive: true });
|
|
1563
1563
|
}
|
|
1564
|
-
tempFilePath = path__default.default.join(tempDir, `upload-${
|
|
1564
|
+
tempFilePath = path__default.default.join(tempDir, `upload-${crypto3__default.default.randomUUID()}.tmp`);
|
|
1565
1565
|
const writeStream = fs__default.default.createWriteStream(tempFilePath);
|
|
1566
1566
|
await new Promise((resolve, reject) => {
|
|
1567
1567
|
source.pipe(writeStream);
|
|
@@ -1750,7 +1750,7 @@ var driveAPIHandler = async (req, res) => {
|
|
|
1750
1750
|
return res.status(401).json({ status: 401, message: "Token expired" });
|
|
1751
1751
|
}
|
|
1752
1752
|
const { secret } = config.security.signedUrls;
|
|
1753
|
-
const expectedSignature =
|
|
1753
|
+
const expectedSignature = crypto3__default.default.createHmac("sha256", secret).update(`${id}:${expiry}`).digest("hex");
|
|
1754
1754
|
if (signature !== expectedSignature) {
|
|
1755
1755
|
return res.status(401).json({ status: 401, message: "Invalid token" });
|
|
1756
1756
|
}
|
|
@@ -2024,7 +2024,15 @@ var driveAPIHandler = async (req, res) => {
|
|
|
2024
2024
|
}
|
|
2025
2025
|
if (afterId) query._id = { $lt: afterId };
|
|
2026
2026
|
const items = await drive_default.find(query, {}, { sort: { order: 1, _id: -1 }, limit });
|
|
2027
|
-
|
|
2027
|
+
let plainItems = await Promise.all(items.map((item) => item.toClient()));
|
|
2028
|
+
if (config.security?.signedUrls?.enabled) {
|
|
2029
|
+
const { secret, expiresIn } = config.security.signedUrls;
|
|
2030
|
+
plainItems = plainItems.map((item) => {
|
|
2031
|
+
const expiryTimestamp = Math.floor(Date.now() / 1e3) + expiresIn;
|
|
2032
|
+
const signature = crypto3__default.default.createHmac("sha256", secret).update(`${item.id}:${expiryTimestamp}`).digest("hex");
|
|
2033
|
+
return { ...item, token: Buffer.from(`${expiryTimestamp}:${signature}`).toString("base64url") };
|
|
2034
|
+
});
|
|
2035
|
+
}
|
|
2028
2036
|
res.status(200).json({ status: 200, message: "Items retrieved", data: { items: plainItems, hasMore: items.length === limit } });
|
|
2029
2037
|
return;
|
|
2030
2038
|
}
|
|
@@ -2051,7 +2059,15 @@ var driveAPIHandler = async (req, res) => {
|
|
|
2051
2059
|
}
|
|
2052
2060
|
if (folderId && folderId !== "root") query.parentId = folderId;
|
|
2053
2061
|
const items = await drive_default.find(query, {}, { limit, sort: { createdAt: -1 } });
|
|
2054
|
-
|
|
2062
|
+
let plainItems = await Promise.all(items.map((i) => i.toClient()));
|
|
2063
|
+
if (config.security?.signedUrls?.enabled) {
|
|
2064
|
+
const { secret, expiresIn } = config.security.signedUrls;
|
|
2065
|
+
plainItems = plainItems.map((item) => {
|
|
2066
|
+
const expiryTimestamp = Math.floor(Date.now() / 1e3) + expiresIn;
|
|
2067
|
+
const signature = crypto3__default.default.createHmac("sha256", secret).update(`${item.id}:${expiryTimestamp}`).digest("hex");
|
|
2068
|
+
return { ...item, token: Buffer.from(`${expiryTimestamp}:${signature}`).toString("base64url") };
|
|
2069
|
+
});
|
|
2070
|
+
}
|
|
2055
2071
|
return res.status(200).json({ status: 200, message: "Results", data: { items: plainItems } });
|
|
2056
2072
|
}
|
|
2057
2073
|
// ** 3. UPLOAD **
|
|
@@ -2109,7 +2125,7 @@ var driveAPIHandler = async (req, res) => {
|
|
|
2109
2125
|
return res.status(413).json({ status: 413, message: "Storage quota exceeded" });
|
|
2110
2126
|
}
|
|
2111
2127
|
}
|
|
2112
|
-
currentUploadId =
|
|
2128
|
+
currentUploadId = crypto3__default.default.randomUUID();
|
|
2113
2129
|
const uploadDir = path__default.default.join(tempBaseDir, currentUploadId);
|
|
2114
2130
|
fs__default.default.mkdirSync(uploadDir, { recursive: true });
|
|
2115
2131
|
const metadata = {
|
|
@@ -2311,7 +2327,15 @@ var driveAPIHandler = async (req, res) => {
|
|
|
2311
2327
|
trashedAt: { $ne: null }
|
|
2312
2328
|
};
|
|
2313
2329
|
const items = await drive_default.find(query, {}, { sort: { trashedAt: -1 } });
|
|
2314
|
-
|
|
2330
|
+
let plainItems = await Promise.all(items.map((item) => item.toClient()));
|
|
2331
|
+
if (config.security?.signedUrls?.enabled) {
|
|
2332
|
+
const { secret, expiresIn } = config.security.signedUrls;
|
|
2333
|
+
plainItems = plainItems.map((item) => {
|
|
2334
|
+
const expiryTimestamp = Math.floor(Date.now() / 1e3) + expiresIn;
|
|
2335
|
+
const signature = crypto3__default.default.createHmac("sha256", secret).update(`${item.id}:${expiryTimestamp}`).digest("hex");
|
|
2336
|
+
return { ...item, token: Buffer.from(`${expiryTimestamp}:${signature}`).toString("base64url") };
|
|
2337
|
+
});
|
|
2338
|
+
}
|
|
2315
2339
|
return res.status(200).json({
|
|
2316
2340
|
status: 200,
|
|
2317
2341
|
message: "Trash items",
|
|
@@ -2398,5 +2422,5 @@ exports.driveReadFile = driveReadFile;
|
|
|
2398
2422
|
exports.driveUpload = driveUpload;
|
|
2399
2423
|
exports.getDriveConfig = getDriveConfig;
|
|
2400
2424
|
exports.getDriveInformation = getDriveInformation;
|
|
2401
|
-
//# sourceMappingURL=chunk-
|
|
2402
|
-
//# sourceMappingURL=chunk-
|
|
2425
|
+
//# sourceMappingURL=chunk-2DGLSDQ7.cjs.map
|
|
2426
|
+
//# sourceMappingURL=chunk-2DGLSDQ7.cjs.map
|