@xuda.io/drive_module 1.1.1375 → 1.1.1377

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.
Files changed (2) hide show
  1. package/index.mjs +120 -0
  2. package/package.json +1 -1
package/index.mjs CHANGED
@@ -2319,3 +2319,123 @@ export const update_drive_addons_user = async (req, job_id, headers, file_obj) =
2319
2319
  req.drive_type = 'user';
2320
2320
  return await update_drive_addons(req, job_id, headers, file_obj);
2321
2321
  };
2322
+
2323
+ export const file_upload_validator = function (file_name) {
2324
+ // 1. Safety check: ensure file_name exists
2325
+ if (!file_name || typeof file_name !== 'string') {
2326
+ return { valid: false, error: 'Invalid filename' };
2327
+ }
2328
+
2329
+ // 2. Extract the extension (remove dot and make lowercase)
2330
+ const ext = file_name.split('.').pop().toLowerCase();
2331
+
2332
+ // 3. Validate using Switch
2333
+ switch (ext) {
2334
+ // ==============================
2335
+ // VALIDATE AUDIO FILES
2336
+ // ==============================
2337
+ case 'mp3':
2338
+ return { valid: true, category: 'audio', mime: 'audio/mpeg' };
2339
+ case 'wav':
2340
+ return { valid: true, category: 'audio', mime: 'audio/wav' };
2341
+ case 'ogg':
2342
+ return { valid: true, category: 'audio', mime: 'audio/ogg' };
2343
+ case 'm4a':
2344
+ return { valid: true, category: 'audio', mime: 'audio/mp4' };
2345
+
2346
+ // ==============================
2347
+ // VALIDATE VIDEO FILES
2348
+ // ==============================
2349
+ case 'mp4':
2350
+ return { valid: true, category: 'video', mime: 'video/mp4' };
2351
+ case 'webm':
2352
+ return { valid: true, category: 'video', mime: 'video/webm' };
2353
+ case 'avi':
2354
+ return { valid: true, category: 'video', mime: 'video/x-msvideo' };
2355
+ case 'mov':
2356
+ return { valid: true, category: 'video', mime: 'video/quicktime' };
2357
+
2358
+ // ==============================
2359
+ // VALIDATE PICTURE FILES
2360
+ // ==============================
2361
+ case 'jpg':
2362
+ case 'jpeg':
2363
+ return { valid: true, category: 'image', mime: 'image/jpeg' };
2364
+ case 'png':
2365
+ return { valid: true, category: 'image', mime: 'image/png' };
2366
+ case 'gif':
2367
+ return { valid: true, category: 'image', mime: 'image/gif' };
2368
+ case 'svg':
2369
+ return { valid: true, category: 'image', mime: 'image/svg+xml' };
2370
+ case 'webp':
2371
+ return { valid: true, category: 'image', mime: 'image/webp' };
2372
+
2373
+ // ==============================
2374
+ // VALIDATE TEXT / CODE FILES
2375
+ // ==============================
2376
+ case 'c':
2377
+ return { valid: true, category: 'text', mime: 'text/x-c' };
2378
+ case 'cpp':
2379
+ return { valid: true, category: 'text', mime: 'text/x-c++' };
2380
+ case 'cs':
2381
+ return { valid: true, category: 'text', mime: 'text/x-csharp' };
2382
+ case 'css':
2383
+ return { valid: true, category: 'text', mime: 'text/css' };
2384
+ case 'doc':
2385
+ return { valid: true, category: 'document', mime: 'application/msword' };
2386
+ case 'docx':
2387
+ return { valid: true, category: 'document', mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' };
2388
+ case 'go':
2389
+ return { valid: true, category: 'text', mime: 'text/x-golang' };
2390
+ case 'html':
2391
+ return { valid: true, category: 'text', mime: 'text/html' };
2392
+ case 'java':
2393
+ return { valid: true, category: 'text', mime: 'text/x-java' };
2394
+ case 'js':
2395
+ return { valid: true, category: 'text', mime: 'text/javascript' };
2396
+ case 'json':
2397
+ return { valid: true, category: 'text', mime: 'application/json' };
2398
+ case 'md':
2399
+ return { valid: true, category: 'text', mime: 'text/markdown' };
2400
+ case 'pdf':
2401
+ return { valid: true, category: 'document', mime: 'application/pdf' };
2402
+ case 'php':
2403
+ return { valid: true, category: 'text', mime: 'text/x-php' };
2404
+ case 'pptx':
2405
+ return { valid: true, category: 'document', mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' };
2406
+ case 'py':
2407
+ return { valid: true, category: 'text', mime: 'text/x-python' }; // or text/x-script.python
2408
+ case 'rb':
2409
+ return { valid: true, category: 'text', mime: 'text/x-ruby' };
2410
+ case 'sh':
2411
+ return { valid: true, category: 'text', mime: 'application/x-sh' };
2412
+ case 'tex':
2413
+ return { valid: true, category: 'text', mime: 'text/x-tex' };
2414
+ case 'ts':
2415
+ return { valid: true, category: 'text', mime: 'application/typescript' };
2416
+ case 'txt':
2417
+ return { valid: true, category: 'text', mime: 'text/plain' };
2418
+
2419
+ // ==============================
2420
+ // VALIDATE TEXT / CODE FILES
2421
+ // ==============================
2422
+ case 'csv':
2423
+ return { valid: true, category: 'text', mime: 'text/csv' };
2424
+ case 'json':
2425
+ return { valid: true, category: 'text', mime: 'application/json' };
2426
+ case 'csv':
2427
+ return { valid: true, category: 'text', mime: 'text/csv' };
2428
+ case 'xls':
2429
+ return { valid: true, category: 'document', mime: 'application/vnd.ms-excel' };
2430
+ case 'xlsx':
2431
+ return { valid: true, category: 'document', mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' };
2432
+ case 'md':
2433
+ return { valid: true, category: 'text', mime: 'text/markdown' };
2434
+
2435
+ // ==============================
2436
+ // DEFAULT (INVALID)
2437
+ // ==============================
2438
+ default:
2439
+ return { valid: false, error: `Unsupported file extension: .${ext}` };
2440
+ }
2441
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/drive_module",
3
- "version": "1.1.1375",
3
+ "version": "1.1.1377",
4
4
  "description": "Xuda Drive Server Module",
5
5
  "main": "index.mjs",
6
6
  "dependencies": {