@muhgholy/next-drive 4.23.29 → 4.23.31
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-DNJRZKAF.js → chunk-7XC5FDGZ.js} +13 -4
- package/dist/chunk-7XC5FDGZ.js.map +1 -0
- package/dist/{chunk-LTWWPQJA.cjs → chunk-FMJVTKXT.cjs} +13 -3
- package/dist/chunk-FMJVTKXT.cjs.map +1 -0
- package/dist/{chunk-J2OYAYYA.js → chunk-JEWYPKCM.js} +3 -3
- package/dist/{chunk-J2OYAYYA.js.map → chunk-JEWYPKCM.js.map} +1 -1
- package/dist/{chunk-QE5EHVVA.cjs → chunk-LN7U7XD7.cjs} +37 -37
- package/dist/{chunk-QE5EHVVA.cjs.map → chunk-LN7U7XD7.cjs.map} +1 -1
- package/dist/client/components/drive/dropzone.d.ts +8 -0
- package/dist/client/components/drive/dropzone.d.ts.map +1 -0
- package/dist/client/components/drive/explorer.d.ts.map +1 -1
- package/dist/client/components/drive/upload.d.ts +3 -2
- package/dist/client/components/drive/upload.d.ts.map +1 -1
- package/dist/client/file-chooser.d.ts.map +1 -1
- package/dist/client/hooks/use-upload.d.ts +4 -0
- package/dist/client/hooks/use-upload.d.ts.map +1 -1
- package/dist/client/index.cjs +173 -37
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.css +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +176 -41
- package/dist/client/index.js.map +1 -1
- package/dist/server/express.cjs +12 -12
- package/dist/server/express.js +4 -4
- package/dist/server/hono.cjs +12 -12
- package/dist/server/hono.js +4 -4
- package/dist/server/index.cjs +19 -19
- package/dist/server/index.js +2 -2
- package/dist/server/tus.d.ts +5 -1
- package/dist/server/tus.d.ts.map +1 -1
- package/dist/tus-HCMP4OW7.js +3 -0
- package/dist/tus-HCMP4OW7.js.map +1 -0
- package/dist/tus-W4GOGQBV.cjs +20 -0
- package/dist/tus-W4GOGQBV.cjs.map +1 -0
- package/dist/types/client/index.d.ts +3 -0
- package/dist/types/client/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-DNJRZKAF.js.map +0 -1
- package/dist/chunk-LTWWPQJA.cjs.map +0 -1
- package/dist/tus-35IUZMFV.js +0 -3
- package/dist/tus-35IUZMFV.js.map +0 -1
- package/dist/tus-PK6UHGE4.cjs +0 -16
- package/dist/tus-PK6UHGE4.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkFMJVTKXT_cjs = require('./chunk-FMJVTKXT.cjs');
|
|
4
4
|
var path = require('path');
|
|
5
5
|
var fs = require('fs');
|
|
6
6
|
var crypto = require('crypto');
|
|
@@ -80,7 +80,7 @@ var handlePublicAction = async (req, res, action, config) => {
|
|
|
80
80
|
res.status(400).json({ status: 400, message: "Could not open file: missing or invalid file ID" });
|
|
81
81
|
return true;
|
|
82
82
|
}
|
|
83
|
-
const drive = await
|
|
83
|
+
const drive = await chunkFMJVTKXT_cjs.drive_default.findById(id);
|
|
84
84
|
if (!drive) {
|
|
85
85
|
res.status(404).json({ status: 404, message: "File not found or no longer available" });
|
|
86
86
|
return true;
|
|
@@ -109,7 +109,7 @@ var handlePublicAction = async (req, res, action, config) => {
|
|
|
109
109
|
return true;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
const itemProvider = drive.provider?.type === "GOOGLE" ?
|
|
112
|
+
const itemProvider = drive.provider?.type === "GOOGLE" ? chunkFMJVTKXT_cjs.GoogleDriveProvider : chunkFMJVTKXT_cjs.LocalStorageProvider;
|
|
113
113
|
const itemAccountId = drive.storageAccountId ? drive.storageAccountId.toString() : void 0;
|
|
114
114
|
if (action === "thumbnail") {
|
|
115
115
|
const stream2 = await itemProvider.getThumbnail(drive, itemAccountId);
|
|
@@ -136,7 +136,7 @@ var handlePublicAction = async (req, res, action, config) => {
|
|
|
136
136
|
}
|
|
137
137
|
if (shouldTransform) {
|
|
138
138
|
try {
|
|
139
|
-
const settings =
|
|
139
|
+
const settings = chunkFMJVTKXT_cjs.getImageSettings(fileSize, quality, display, sizePreset, fit, position);
|
|
140
140
|
let targetFormat = format || mime.split("/")[1];
|
|
141
141
|
if (targetFormat === "jpg") targetFormat = "jpeg";
|
|
142
142
|
if (!["jpeg", "png", "webp", "avif"].includes(targetFormat)) {
|
|
@@ -261,13 +261,13 @@ var handleAuthAction = async (req, res, action, config, owner) => {
|
|
|
261
261
|
oAuth2Client.setCredentials(tokens);
|
|
262
262
|
const oauth2 = googleapis.google.oauth2({ version: "v2", auth: oAuth2Client });
|
|
263
263
|
const userInfo = await oauth2.userinfo.get();
|
|
264
|
-
const existing = await
|
|
264
|
+
const existing = await chunkFMJVTKXT_cjs.account_default.findOne({ owner, "metadata.google.email": userInfo.data.email, "metadata.provider": "GOOGLE" });
|
|
265
265
|
if (existing) {
|
|
266
266
|
existing.metadata.google.credentials = tokens;
|
|
267
267
|
existing.markModified("metadata");
|
|
268
268
|
await existing.save();
|
|
269
269
|
} else {
|
|
270
|
-
const newAccount = new
|
|
270
|
+
const newAccount = new chunkFMJVTKXT_cjs.account_default({
|
|
271
271
|
owner,
|
|
272
272
|
name: userInfo.data.name || "Google Drive",
|
|
273
273
|
metadata: {
|
|
@@ -308,7 +308,7 @@ var handleAuthAction = async (req, res, action, config, owner) => {
|
|
|
308
308
|
return true;
|
|
309
309
|
}
|
|
310
310
|
case "listAccounts": {
|
|
311
|
-
const accounts = await
|
|
311
|
+
const accounts = await chunkFMJVTKXT_cjs.account_default.find({ owner });
|
|
312
312
|
res.status(200).json({
|
|
313
313
|
status: 200,
|
|
314
314
|
data: {
|
|
@@ -324,20 +324,20 @@ var handleAuthAction = async (req, res, action, config, owner) => {
|
|
|
324
324
|
}
|
|
325
325
|
case "removeAccount": {
|
|
326
326
|
const { id } = req.query;
|
|
327
|
-
const account = await
|
|
327
|
+
const account = await chunkFMJVTKXT_cjs.account_default.findOne({ _id: id, owner });
|
|
328
328
|
if (!account) {
|
|
329
329
|
res.status(404).json({ status: 404, message: "Could not disconnect: account not found" });
|
|
330
330
|
return true;
|
|
331
331
|
}
|
|
332
332
|
if (account.metadata.provider === "GOOGLE") {
|
|
333
333
|
try {
|
|
334
|
-
await
|
|
334
|
+
await chunkFMJVTKXT_cjs.GoogleDriveProvider.revokeToken(owner, account._id.toString());
|
|
335
335
|
} catch (e) {
|
|
336
336
|
console.error("Failed to revoke Google token:", e);
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
|
-
await
|
|
340
|
-
await
|
|
339
|
+
await chunkFMJVTKXT_cjs.account_default.deleteOne({ _id: id, owner });
|
|
340
|
+
await chunkFMJVTKXT_cjs.drive_default.deleteMany({ owner, storageAccountId: id });
|
|
341
341
|
res.status(200).json({ status: 200, message: "Account removed" });
|
|
342
342
|
return true;
|
|
343
343
|
}
|
|
@@ -442,8 +442,8 @@ var handleDriveAction = async (ctx) => {
|
|
|
442
442
|
query.owner = owner;
|
|
443
443
|
}
|
|
444
444
|
if (afterId) query._id = { $lt: afterId };
|
|
445
|
-
const items = await
|
|
446
|
-
const plainItems =
|
|
445
|
+
const items = await chunkFMJVTKXT_cjs.drive_default.find(query, {}, { sort: { order: 1, _id: -1 }, limit });
|
|
446
|
+
const plainItems = chunkFMJVTKXT_cjs.withSignedUrls(await Promise.all(items.map((item) => item.toClient())), config);
|
|
447
447
|
res.status(200).json({ status: 200, message: "Items retrieved", data: { items: plainItems, hasMore: items.length === limit } });
|
|
448
448
|
return;
|
|
449
449
|
}
|
|
@@ -468,20 +468,20 @@ var handleDriveAction = async (ctx) => {
|
|
|
468
468
|
query.owner = owner;
|
|
469
469
|
}
|
|
470
470
|
if (folderId && folderId !== "root") query.parentId = folderId;
|
|
471
|
-
const items = await
|
|
472
|
-
const plainItems =
|
|
471
|
+
const items = await chunkFMJVTKXT_cjs.drive_default.find(query, {}, { limit, sort: { createdAt: -1 } });
|
|
472
|
+
const plainItems = chunkFMJVTKXT_cjs.withSignedUrls(await Promise.all(items.map((i) => i.toClient())), config);
|
|
473
473
|
res.status(200).json({ status: 200, message: "Results", data: { items: plainItems } });
|
|
474
474
|
return;
|
|
475
475
|
}
|
|
476
476
|
case "upload": {
|
|
477
|
-
await
|
|
477
|
+
await chunkFMJVTKXT_cjs.handleUpload(req, res, { config, owner, authenticated, isRootMode, information, provider, accountId });
|
|
478
478
|
return;
|
|
479
479
|
}
|
|
480
480
|
case "createFolder": {
|
|
481
481
|
const folderData = createFolderBodySchema.safeParse(req.body);
|
|
482
482
|
if (!folderData.success) return void res.status(400).json({ status: 400, message: folderData.error.errors[0].message });
|
|
483
483
|
const { name, parentId } = folderData.data;
|
|
484
|
-
const item =
|
|
484
|
+
const item = chunkFMJVTKXT_cjs.withSignedUrl(await provider.createFolder(name, parentId ?? null, owner, accountId), config);
|
|
485
485
|
res.status(201).json({ status: 201, message: "Folder created", data: { item } });
|
|
486
486
|
return;
|
|
487
487
|
}
|
|
@@ -489,9 +489,9 @@ var handleDriveAction = async (ctx) => {
|
|
|
489
489
|
const deleteData = deleteQuerySchema.safeParse(req.query);
|
|
490
490
|
if (!deleteData.success) return void res.status(400).json({ status: 400, message: "Could not move to trash: invalid ID" });
|
|
491
491
|
const { id } = deleteData.data;
|
|
492
|
-
const drive = await
|
|
492
|
+
const drive = await chunkFMJVTKXT_cjs.drive_default.findById(id);
|
|
493
493
|
if (!drive) return void res.status(404).json({ status: 404, message: "Could not move to trash: item not found" });
|
|
494
|
-
const itemProvider = drive.provider?.type === "GOOGLE" ?
|
|
494
|
+
const itemProvider = drive.provider?.type === "GOOGLE" ? chunkFMJVTKXT_cjs.GoogleDriveProvider : chunkFMJVTKXT_cjs.LocalStorageProvider;
|
|
495
495
|
const itemAccountId = drive.storageAccountId ? drive.storageAccountId.toString() : void 0;
|
|
496
496
|
try {
|
|
497
497
|
await itemProvider.trash([id], owner, itemAccountId);
|
|
@@ -529,7 +529,7 @@ var handleDriveAction = async (ctx) => {
|
|
|
529
529
|
}
|
|
530
530
|
case "trash": {
|
|
531
531
|
try {
|
|
532
|
-
const { provider: trashProvider, accountId: trashAccountId } = await
|
|
532
|
+
const { provider: trashProvider, accountId: trashAccountId } = await chunkFMJVTKXT_cjs.resolveProvider(req, owner);
|
|
533
533
|
await trashProvider.syncTrash(owner, trashAccountId);
|
|
534
534
|
} catch (e) {
|
|
535
535
|
console.error("Trash sync failed", e);
|
|
@@ -540,8 +540,8 @@ var handleDriveAction = async (ctx) => {
|
|
|
540
540
|
storageAccountId: accountId || null,
|
|
541
541
|
trashedAt: { $ne: null }
|
|
542
542
|
};
|
|
543
|
-
const items = await
|
|
544
|
-
const plainItems =
|
|
543
|
+
const items = await chunkFMJVTKXT_cjs.drive_default.find(query, {}, { sort: { trashedAt: -1 } });
|
|
544
|
+
const plainItems = chunkFMJVTKXT_cjs.withSignedUrls(await Promise.all(items.map((item) => item.toClient())), config);
|
|
545
545
|
res.status(200).json({ status: 200, message: "Trash items", data: { items: plainItems, hasMore: false } });
|
|
546
546
|
return;
|
|
547
547
|
}
|
|
@@ -549,16 +549,16 @@ var handleDriveAction = async (ctx) => {
|
|
|
549
549
|
const restoreData = deleteQuerySchema.safeParse(req.query);
|
|
550
550
|
if (!restoreData.success) return void res.status(400).json({ status: 400, message: "Could not restore: invalid ID" });
|
|
551
551
|
const { id } = restoreData.data;
|
|
552
|
-
const drive = await
|
|
552
|
+
const drive = await chunkFMJVTKXT_cjs.drive_default.findById(id);
|
|
553
553
|
if (!drive) return void res.status(404).json({ status: 404, message: "Could not restore: item not found" });
|
|
554
554
|
let targetParentId = drive.parentId;
|
|
555
555
|
if (targetParentId) {
|
|
556
|
-
const parent = await
|
|
556
|
+
const parent = await chunkFMJVTKXT_cjs.drive_default.findById(targetParentId);
|
|
557
557
|
if (parent?.trashedAt) {
|
|
558
558
|
targetParentId = null;
|
|
559
559
|
}
|
|
560
560
|
}
|
|
561
|
-
const itemProvider = drive.provider?.type === "GOOGLE" ?
|
|
561
|
+
const itemProvider = drive.provider?.type === "GOOGLE" ? chunkFMJVTKXT_cjs.GoogleDriveProvider : chunkFMJVTKXT_cjs.LocalStorageProvider;
|
|
562
562
|
const itemAccountId = drive.storageAccountId ? drive.storageAccountId.toString() : void 0;
|
|
563
563
|
try {
|
|
564
564
|
await itemProvider.untrash([id], owner, itemAccountId);
|
|
@@ -592,7 +592,7 @@ var handleDriveAction = async (ctx) => {
|
|
|
592
592
|
console.error(`Failed to move item ${id}`, e);
|
|
593
593
|
}
|
|
594
594
|
}
|
|
595
|
-
res.status(200).json({ status: 200, message: "Moved", data: { items:
|
|
595
|
+
res.status(200).json({ status: 200, message: "Moved", data: { items: chunkFMJVTKXT_cjs.withSignedUrls(items, config) } });
|
|
596
596
|
return;
|
|
597
597
|
}
|
|
598
598
|
case "reorder": {
|
|
@@ -613,7 +613,7 @@ var handleDriveAction = async (ctx) => {
|
|
|
613
613
|
if (!isRootMode) {
|
|
614
614
|
query.owner = owner;
|
|
615
615
|
}
|
|
616
|
-
const existingItems = await
|
|
616
|
+
const existingItems = await chunkFMJVTKXT_cjs.drive_default.find(query, { _id: 1, parentId: 1 });
|
|
617
617
|
if (existingItems.length !== ids.length) {
|
|
618
618
|
return void res.status(404).json({ status: 404, message: "Could not reorder: one or more items were not found" });
|
|
619
619
|
}
|
|
@@ -633,9 +633,9 @@ var handleDriveAction = async (ctx) => {
|
|
|
633
633
|
update: { $set: { order } }
|
|
634
634
|
}
|
|
635
635
|
}));
|
|
636
|
-
await
|
|
637
|
-
const updatedItems = await
|
|
638
|
-
const plainItems =
|
|
636
|
+
await chunkFMJVTKXT_cjs.drive_default.bulkWrite(operations);
|
|
637
|
+
const updatedItems = await chunkFMJVTKXT_cjs.drive_default.find(query, {}, { sort: { order: 1 } });
|
|
638
|
+
const plainItems = chunkFMJVTKXT_cjs.withSignedUrls(await Promise.all(updatedItems.map((item) => item.toClient())), config);
|
|
639
639
|
res.status(200).json({ status: 200, message: "Reordered", data: { items: plainItems } });
|
|
640
640
|
return;
|
|
641
641
|
}
|
|
@@ -643,7 +643,7 @@ var handleDriveAction = async (ctx) => {
|
|
|
643
643
|
const renameData = renameBodySchema.safeParse({ id: req.query.id, ...req.body });
|
|
644
644
|
if (!renameData.success) return void res.status(400).json({ status: 400, message: "Could not rename: invalid request data" });
|
|
645
645
|
const { id, newName } = renameData.data;
|
|
646
|
-
const item =
|
|
646
|
+
const item = chunkFMJVTKXT_cjs.withSignedUrl(await provider.rename(id, newName, owner, accountId), config);
|
|
647
647
|
res.status(200).json({ status: 200, message: "Renamed", data: { item } });
|
|
648
648
|
return;
|
|
649
649
|
}
|
|
@@ -684,7 +684,7 @@ var driveAPIHandler = async (req, res) => {
|
|
|
684
684
|
const action = req.query.action || (req.query.code && req.query.state ? "callback" : void 0);
|
|
685
685
|
let config;
|
|
686
686
|
try {
|
|
687
|
-
config =
|
|
687
|
+
config = chunkFMJVTKXT_cjs.getDriveConfig();
|
|
688
688
|
} catch (error) {
|
|
689
689
|
console.error("[next-drive] Configuration error:", error);
|
|
690
690
|
res.status(500).json({ status: 500, message: "Drive is not ready: failed to initialize configuration" });
|
|
@@ -705,7 +705,7 @@ var driveAPIHandler = async (req, res) => {
|
|
|
705
705
|
const googleConfigured = !!(clientId && clientSecret && redirectUri);
|
|
706
706
|
let authenticated2 = false;
|
|
707
707
|
try {
|
|
708
|
-
await
|
|
708
|
+
await chunkFMJVTKXT_cjs.getDriveInformation({ method: "REQUEST", req });
|
|
709
709
|
authenticated2 = true;
|
|
710
710
|
} catch {
|
|
711
711
|
authenticated2 = false;
|
|
@@ -728,7 +728,7 @@ var driveAPIHandler = async (req, res) => {
|
|
|
728
728
|
let information;
|
|
729
729
|
let authenticated = true;
|
|
730
730
|
try {
|
|
731
|
-
information = await
|
|
731
|
+
information = await chunkFMJVTKXT_cjs.getDriveInformation({ method: "REQUEST", req });
|
|
732
732
|
} catch (err) {
|
|
733
733
|
if (action === "upload" && config.security?.unauthenticated?.enabled) {
|
|
734
734
|
information = { key: null, storage: { quotaInBytes: 0 } };
|
|
@@ -740,7 +740,7 @@ var driveAPIHandler = async (req, res) => {
|
|
|
740
740
|
const { key: owner } = information;
|
|
741
741
|
const wasAuthHandled = await handleAuthAction(req, res, action, config, owner);
|
|
742
742
|
if (wasAuthHandled) return;
|
|
743
|
-
const { provider, accountId } = await
|
|
743
|
+
const { provider, accountId } = await chunkFMJVTKXT_cjs.resolveProvider(req, owner);
|
|
744
744
|
await handleDriveAction({
|
|
745
745
|
req,
|
|
746
746
|
res,
|
|
@@ -762,5 +762,5 @@ var driveAPIHandler = async (req, res) => {
|
|
|
762
762
|
|
|
763
763
|
exports.driveAPIHandler = driveAPIHandler;
|
|
764
764
|
exports.driveFileSchemaZod = driveFileSchemaZod;
|
|
765
|
-
//# sourceMappingURL=chunk-
|
|
766
|
-
//# sourceMappingURL=chunk-
|
|
765
|
+
//# sourceMappingURL=chunk-LN7U7XD7.cjs.map
|
|
766
|
+
//# sourceMappingURL=chunk-LN7U7XD7.cjs.map
|