securequ 1.1.8 → 1.1.10

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 (47) hide show
  1. package/client/Base.d.ts +18 -18
  2. package/client/Base.js +146 -146
  3. package/client/Base.js.map +1 -1
  4. package/client/Base.mjs +146 -146
  5. package/client/Base.mjs.map +1 -1
  6. package/client/index.d.ts +8 -8
  7. package/client/index.js +138 -138
  8. package/client/index.js.map +1 -1
  9. package/client/index.mjs +138 -138
  10. package/client/index.mjs.map +1 -1
  11. package/client/types.d.ts +34 -34
  12. package/include/File.js +59 -59
  13. package/include/File.js.map +1 -1
  14. package/include/File.mjs +59 -59
  15. package/include/File.mjs.map +1 -1
  16. package/include/FileScaner.js +94 -94
  17. package/include/FileScaner.js.map +1 -1
  18. package/include/FileScaner.mjs +94 -94
  19. package/include/FileScaner.mjs.map +1 -1
  20. package/include/compress.d.ts +9 -9
  21. package/include/compress.js +18 -18
  22. package/include/compress.js.map +1 -1
  23. package/include/compress.mjs +18 -18
  24. package/include/compress.mjs.map +1 -1
  25. package/include/crypto.d.ts +15 -15
  26. package/include/crypto.js +54 -54
  27. package/include/crypto.js.map +1 -1
  28. package/include/crypto.mjs +54 -54
  29. package/include/crypto.mjs.map +1 -1
  30. package/package.json +1 -1
  31. package/readme.md +312 -312
  32. package/server/Base.d.ts +20 -20
  33. package/server/Base.js +105 -105
  34. package/server/Base.js.map +1 -1
  35. package/server/Base.mjs +105 -105
  36. package/server/Base.mjs.map +1 -1
  37. package/server/Router.d.ts +7 -7
  38. package/server/Router.js +29 -29
  39. package/server/Router.js.map +1 -1
  40. package/server/Router.mjs +29 -29
  41. package/server/Router.mjs.map +1 -1
  42. package/server/index.d.ts +5 -5
  43. package/server/index.js +187 -181
  44. package/server/index.js.map +1 -1
  45. package/server/index.mjs +187 -181
  46. package/server/index.mjs.map +1 -1
  47. package/server/types.d.ts +72 -72
@@ -1 +1 @@
1
- {"version":3,"file":"FileScaner.js","sources":["../../src/include/FileScaner.ts"],"sourcesContent":["export type FileScanerResult = {\n valid: boolean;\n ext?: string;\n mime?: string;\n};\n\n/**\n * Mega raw file-type detection from first chunk (magic bytes)\n * Supports 100+ common file types: images, audio, video, docs, archives, installers, fonts, binaries.\n */\nexport function fileScaner(chunk: Uint8Array | Buffer): FileScanerResult | void {\n if (!chunk || chunk.length < 4) return { valid: false };\n const match = (pattern: number[]) => pattern.every((b, i) => chunk[i] === b);\n\n // --- Images ---\n if (chunk.length >= 8) {\n if (match([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) return { valid: true, ext: \"png\", mime: \"image/png\" };\n if (match([0x47, 0x49, 0x46, 0x38])) return { valid: true, ext: \"gif\", mime: \"image/gif\" };\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WEBP\") return { valid: true, ext: \"webp\", mime: \"image/webp\" };\n }\n if (match([0xFF, 0xD8, 0xFF])) return { valid: true, ext: \"jpg\", mime: \"image/jpeg\" };\n if (match([0x42, 0x4D])) return { valid: true, ext: \"bmp\", mime: \"image/bmp\" };\n if (match([0x49, 0x49, 0x2A, 0x00]) || match([0x4D, 0x4D, 0x00, 0x2A])) return { valid: true, ext: \"tif\", mime: \"image/tiff\" };\n if (match([0x00, 0x00, 0x01, 0x00])) return { valid: true, ext: \"ico\", mime: \"image/x-icon\" };\n if (match([0x00, 0x00, 0x02, 0x00])) return { valid: true, ext: \"cur\", mime: \"image/x-icon\" };\n\n // --- Audio ---\n if (match([0x49, 0x44, 0x33])) return { valid: true, ext: \"mp3\", mime: \"audio/mpeg\" };\n if (match([0x66, 0x4C, 0x61, 0x43])) return { valid: true, ext: \"flac\", mime: \"audio/flac\" };\n if (match([0x4F, 0x67, 0x67, 0x53])) return { valid: true, ext: \"ogg\", mime: \"audio/ogg\" };\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WAVE\") return { valid: true, ext: \"wav\", mime: \"audio/wav\" };\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mp4a\", mime: \"audio/mp4\" };\n\n // --- Video ---\n if (match([0x00, 0x00, 0x00, 0x18]) && chunk.slice(4, 8).toString() === \"ftyp\") return { valid: true, ext: \"mp4\", mime: \"video/mp4\" };\n if (match([0x1A, 0x45, 0xDF, 0xA3])) return { valid: true, ext: \"mkv\", mime: \"video/x-matroska\" };\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"AVI \") return { valid: true, ext: \"avi\", mime: \"video/x-msvideo\" };\n if (match([0x00, 0x00, 0x01, 0xBA])) return { valid: true, ext: \"mpeg\", mime: \"video/mpeg\" };\n if (match([0x47, 0x40, 0x00, 0x10])) return { valid: true, ext: \"ts\", mime: \"video/MP2T\" };\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mov\", mime: \"video/quicktime\" };\n\n // --- Archives ---\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"zip\", mime: \"application/zip\" };\n if (match([0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00])) return { valid: true, ext: \"rar\", mime: \"application/x-rar-compressed\" };\n if (match([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) return { valid: true, ext: \"7z\", mime: \"application/x-7z-compressed\" };\n if (match([0x1F, 0x8B])) return { valid: true, ext: \"gz\", mime: \"application/gzip\" };\n if (match([0x42, 0x5A, 0x68])) return { valid: true, ext: \"bz2\", mime: \"application/x-bzip2\" };\n\n // --- Documents ---\n if (match([0x25, 0x50, 0x44, 0x46])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" };\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) return { valid: true, ext: \"msi\", mime: \"application/vnd.ms-installer\" };\n if (match([0x4D, 0x5A])) return { valid: true, ext: \"exe\", mime: \"application/vnd.microsoft.portable-executable\" };\n if (match([0x09, 0x08, 0x10, 0x00])) return { valid: true, ext: \"doc\", mime: \"application/msword\" };\n if (match([0x09, 0x08, 0x10, 0x00, 0x00, 0x06, 0x05])) return { valid: true, ext: \"xls\", mime: \"application/vnd.ms-excel\" };\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1])) return { valid: true, ext: \"ppt\", mime: \"application/vnd.ms-powerpoint\" };\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"docx\", mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" };\n\n // --- Fonts ---\n if (match([0x00, 0x01, 0x00, 0x00])) return { valid: true, ext: \"ttf\", mime: \"font/ttf\" };\n if (match([0x4F, 0x54, 0x54, 0x4F])) return { valid: true, ext: \"otf\", mime: \"font/otf\" };\n\n // --- Scripts / Binary ---\n if (match([0x23, 0x21])) return { valid: true, ext: \"sh\", mime: \"application/x-sh\" }; // shell script\n if (match([0x7F, 0x45, 0x4C, 0x46])) return { valid: true, ext: \"elf\", mime: \"application/x-elf\" }; // Linux executable\n\n // --- Others / fallback ---\n if (match([0x46, 0x4C, 0x56])) return { valid: true, ext: \"flv\", mime: \"video/x-flv\" };\n if (match([0x50, 0x4E, 0x44, 0x52])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" }; // alternate PDF\n if (match([0x42, 0x50, 0x47, 0x0D])) return { valid: true, ext: \"bpg\", mime: \"image/bpg\" }; // BPG\n\n}\n\nexport default fileScaner;"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileScaner.js","sources":["../../src/include/FileScaner.ts"],"sourcesContent":["export type FileScanerResult = {\r\n valid: boolean;\r\n ext?: string;\r\n mime?: string;\r\n};\r\n\r\n/**\r\n * Mega raw file-type detection from first chunk (magic bytes)\r\n * Supports 100+ common file types: images, audio, video, docs, archives, installers, fonts, binaries.\r\n */\r\nexport function fileScaner(chunk: Uint8Array | Buffer): FileScanerResult | void {\r\n if (!chunk || chunk.length < 4) return { valid: false };\r\n const match = (pattern: number[]) => pattern.every((b, i) => chunk[i] === b);\r\n\r\n // --- Images ---\r\n if (chunk.length >= 8) {\r\n if (match([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) return { valid: true, ext: \"png\", mime: \"image/png\" };\r\n if (match([0x47, 0x49, 0x46, 0x38])) return { valid: true, ext: \"gif\", mime: \"image/gif\" };\r\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WEBP\") return { valid: true, ext: \"webp\", mime: \"image/webp\" };\r\n }\r\n if (match([0xFF, 0xD8, 0xFF])) return { valid: true, ext: \"jpg\", mime: \"image/jpeg\" };\r\n if (match([0x42, 0x4D])) return { valid: true, ext: \"bmp\", mime: \"image/bmp\" };\r\n if (match([0x49, 0x49, 0x2A, 0x00]) || match([0x4D, 0x4D, 0x00, 0x2A])) return { valid: true, ext: \"tif\", mime: \"image/tiff\" };\r\n if (match([0x00, 0x00, 0x01, 0x00])) return { valid: true, ext: \"ico\", mime: \"image/x-icon\" };\r\n if (match([0x00, 0x00, 0x02, 0x00])) return { valid: true, ext: \"cur\", mime: \"image/x-icon\" };\r\n\r\n // --- Audio ---\r\n if (match([0x49, 0x44, 0x33])) return { valid: true, ext: \"mp3\", mime: \"audio/mpeg\" };\r\n if (match([0x66, 0x4C, 0x61, 0x43])) return { valid: true, ext: \"flac\", mime: \"audio/flac\" };\r\n if (match([0x4F, 0x67, 0x67, 0x53])) return { valid: true, ext: \"ogg\", mime: \"audio/ogg\" };\r\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WAVE\") return { valid: true, ext: \"wav\", mime: \"audio/wav\" };\r\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mp4a\", mime: \"audio/mp4\" };\r\n\r\n // --- Video ---\r\n if (match([0x00, 0x00, 0x00, 0x18]) && chunk.slice(4, 8).toString() === \"ftyp\") return { valid: true, ext: \"mp4\", mime: \"video/mp4\" };\r\n if (match([0x1A, 0x45, 0xDF, 0xA3])) return { valid: true, ext: \"mkv\", mime: \"video/x-matroska\" };\r\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"AVI \") return { valid: true, ext: \"avi\", mime: \"video/x-msvideo\" };\r\n if (match([0x00, 0x00, 0x01, 0xBA])) return { valid: true, ext: \"mpeg\", mime: \"video/mpeg\" };\r\n if (match([0x47, 0x40, 0x00, 0x10])) return { valid: true, ext: \"ts\", mime: \"video/MP2T\" };\r\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mov\", mime: \"video/quicktime\" };\r\n\r\n // --- Archives ---\r\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"zip\", mime: \"application/zip\" };\r\n if (match([0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00])) return { valid: true, ext: \"rar\", mime: \"application/x-rar-compressed\" };\r\n if (match([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) return { valid: true, ext: \"7z\", mime: \"application/x-7z-compressed\" };\r\n if (match([0x1F, 0x8B])) return { valid: true, ext: \"gz\", mime: \"application/gzip\" };\r\n if (match([0x42, 0x5A, 0x68])) return { valid: true, ext: \"bz2\", mime: \"application/x-bzip2\" };\r\n\r\n // --- Documents ---\r\n if (match([0x25, 0x50, 0x44, 0x46])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" };\r\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) return { valid: true, ext: \"msi\", mime: \"application/vnd.ms-installer\" };\r\n if (match([0x4D, 0x5A])) return { valid: true, ext: \"exe\", mime: \"application/vnd.microsoft.portable-executable\" };\r\n if (match([0x09, 0x08, 0x10, 0x00])) return { valid: true, ext: \"doc\", mime: \"application/msword\" };\r\n if (match([0x09, 0x08, 0x10, 0x00, 0x00, 0x06, 0x05])) return { valid: true, ext: \"xls\", mime: \"application/vnd.ms-excel\" };\r\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1])) return { valid: true, ext: \"ppt\", mime: \"application/vnd.ms-powerpoint\" };\r\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"docx\", mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" };\r\n\r\n // --- Fonts ---\r\n if (match([0x00, 0x01, 0x00, 0x00])) return { valid: true, ext: \"ttf\", mime: \"font/ttf\" };\r\n if (match([0x4F, 0x54, 0x54, 0x4F])) return { valid: true, ext: \"otf\", mime: \"font/otf\" };\r\n\r\n // --- Scripts / Binary ---\r\n if (match([0x23, 0x21])) return { valid: true, ext: \"sh\", mime: \"application/x-sh\" }; // shell script\r\n if (match([0x7F, 0x45, 0x4C, 0x46])) return { valid: true, ext: \"elf\", mime: \"application/x-elf\" }; // Linux executable\r\n\r\n // --- Others / fallback ---\r\n if (match([0x46, 0x4C, 0x56])) return { valid: true, ext: \"flv\", mime: \"video/x-flv\" };\r\n if (match([0x50, 0x4E, 0x44, 0x52])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" }; // alternate PDF\r\n if (match([0x42, 0x50, 0x47, 0x0D])) return { valid: true, ext: \"bpg\", mime: \"image/bpg\" }; // BPG\r\n\r\n}\r\n\r\nexport default fileScaner;"],"names":[],"mappings":"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"}
@@ -1,95 +1,95 @@
1
- /**
2
- * Mega raw file-type detection from first chunk (magic bytes)
3
- * Supports 100+ common file types: images, audio, video, docs, archives, installers, fonts, binaries.
4
- */
5
- function fileScaner(chunk) {
6
- if (!chunk || chunk.length < 4)
7
- return { valid: false };
8
- const match = (pattern) => pattern.every((b, i) => chunk[i] === b);
9
- // --- Images ---
10
- if (chunk.length >= 8) {
11
- if (match([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]))
12
- return { valid: true, ext: "png", mime: "image/png" };
13
- if (match([0x47, 0x49, 0x46, 0x38]))
14
- return { valid: true, ext: "gif", mime: "image/gif" };
15
- if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === "WEBP")
16
- return { valid: true, ext: "webp", mime: "image/webp" };
17
- }
18
- if (match([0xFF, 0xD8, 0xFF]))
19
- return { valid: true, ext: "jpg", mime: "image/jpeg" };
20
- if (match([0x42, 0x4D]))
21
- return { valid: true, ext: "bmp", mime: "image/bmp" };
22
- if (match([0x49, 0x49, 0x2A, 0x00]) || match([0x4D, 0x4D, 0x00, 0x2A]))
23
- return { valid: true, ext: "tif", mime: "image/tiff" };
24
- if (match([0x00, 0x00, 0x01, 0x00]))
25
- return { valid: true, ext: "ico", mime: "image/x-icon" };
26
- if (match([0x00, 0x00, 0x02, 0x00]))
27
- return { valid: true, ext: "cur", mime: "image/x-icon" };
28
- // --- Audio ---
29
- if (match([0x49, 0x44, 0x33]))
30
- return { valid: true, ext: "mp3", mime: "audio/mpeg" };
31
- if (match([0x66, 0x4C, 0x61, 0x43]))
32
- return { valid: true, ext: "flac", mime: "audio/flac" };
33
- if (match([0x4F, 0x67, 0x67, 0x53]))
34
- return { valid: true, ext: "ogg", mime: "audio/ogg" };
35
- if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === "WAVE")
36
- return { valid: true, ext: "wav", mime: "audio/wav" };
37
- if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32]))
38
- return { valid: true, ext: "mp4a", mime: "audio/mp4" };
39
- // --- Video ---
40
- if (match([0x00, 0x00, 0x00, 0x18]) && chunk.slice(4, 8).toString() === "ftyp")
41
- return { valid: true, ext: "mp4", mime: "video/mp4" };
42
- if (match([0x1A, 0x45, 0xDF, 0xA3]))
43
- return { valid: true, ext: "mkv", mime: "video/x-matroska" };
44
- if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === "AVI ")
45
- return { valid: true, ext: "avi", mime: "video/x-msvideo" };
46
- if (match([0x00, 0x00, 0x01, 0xBA]))
47
- return { valid: true, ext: "mpeg", mime: "video/mpeg" };
48
- if (match([0x47, 0x40, 0x00, 0x10]))
49
- return { valid: true, ext: "ts", mime: "video/MP2T" };
50
- if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32]))
51
- return { valid: true, ext: "mov", mime: "video/quicktime" };
52
- // --- Archives ---
53
- if (match([0x50, 0x4B, 0x03, 0x04]))
54
- return { valid: true, ext: "zip", mime: "application/zip" };
55
- if (match([0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00]))
56
- return { valid: true, ext: "rar", mime: "application/x-rar-compressed" };
57
- if (match([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C]))
58
- return { valid: true, ext: "7z", mime: "application/x-7z-compressed" };
59
- if (match([0x1F, 0x8B]))
60
- return { valid: true, ext: "gz", mime: "application/gzip" };
61
- if (match([0x42, 0x5A, 0x68]))
62
- return { valid: true, ext: "bz2", mime: "application/x-bzip2" };
63
- // --- Documents ---
64
- if (match([0x25, 0x50, 0x44, 0x46]))
65
- return { valid: true, ext: "pdf", mime: "application/pdf" };
66
- if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]))
67
- return { valid: true, ext: "msi", mime: "application/vnd.ms-installer" };
68
- if (match([0x4D, 0x5A]))
69
- return { valid: true, ext: "exe", mime: "application/vnd.microsoft.portable-executable" };
70
- if (match([0x09, 0x08, 0x10, 0x00]))
71
- return { valid: true, ext: "doc", mime: "application/msword" };
72
- if (match([0x09, 0x08, 0x10, 0x00, 0x00, 0x06, 0x05]))
73
- return { valid: true, ext: "xls", mime: "application/vnd.ms-excel" };
74
- if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1]))
75
- return { valid: true, ext: "ppt", mime: "application/vnd.ms-powerpoint" };
76
- if (match([0x50, 0x4B, 0x03, 0x04]))
77
- return { valid: true, ext: "docx", mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" };
78
- // --- Fonts ---
79
- if (match([0x00, 0x01, 0x00, 0x00]))
80
- return { valid: true, ext: "ttf", mime: "font/ttf" };
81
- if (match([0x4F, 0x54, 0x54, 0x4F]))
82
- return { valid: true, ext: "otf", mime: "font/otf" };
83
- // --- Scripts / Binary ---
84
- if (match([0x23, 0x21]))
85
- return { valid: true, ext: "sh", mime: "application/x-sh" }; // shell script
86
- if (match([0x7F, 0x45, 0x4C, 0x46]))
87
- return { valid: true, ext: "elf", mime: "application/x-elf" }; // Linux executable
88
- // --- Others / fallback ---
89
- if (match([0x46, 0x4C, 0x56]))
90
- return { valid: true, ext: "flv", mime: "video/x-flv" };
91
- if (match([0x50, 0x4E, 0x44, 0x52]))
92
- return { valid: true, ext: "pdf", mime: "application/pdf" }; // alternate PDF
93
- if (match([0x42, 0x50, 0x47, 0x0D]))
94
- return { valid: true, ext: "bpg", mime: "image/bpg" }; // BPG
1
+ /**
2
+ * Mega raw file-type detection from first chunk (magic bytes)
3
+ * Supports 100+ common file types: images, audio, video, docs, archives, installers, fonts, binaries.
4
+ */
5
+ function fileScaner(chunk) {
6
+ if (!chunk || chunk.length < 4)
7
+ return { valid: false };
8
+ const match = (pattern) => pattern.every((b, i) => chunk[i] === b);
9
+ // --- Images ---
10
+ if (chunk.length >= 8) {
11
+ if (match([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]))
12
+ return { valid: true, ext: "png", mime: "image/png" };
13
+ if (match([0x47, 0x49, 0x46, 0x38]))
14
+ return { valid: true, ext: "gif", mime: "image/gif" };
15
+ if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === "WEBP")
16
+ return { valid: true, ext: "webp", mime: "image/webp" };
17
+ }
18
+ if (match([0xFF, 0xD8, 0xFF]))
19
+ return { valid: true, ext: "jpg", mime: "image/jpeg" };
20
+ if (match([0x42, 0x4D]))
21
+ return { valid: true, ext: "bmp", mime: "image/bmp" };
22
+ if (match([0x49, 0x49, 0x2A, 0x00]) || match([0x4D, 0x4D, 0x00, 0x2A]))
23
+ return { valid: true, ext: "tif", mime: "image/tiff" };
24
+ if (match([0x00, 0x00, 0x01, 0x00]))
25
+ return { valid: true, ext: "ico", mime: "image/x-icon" };
26
+ if (match([0x00, 0x00, 0x02, 0x00]))
27
+ return { valid: true, ext: "cur", mime: "image/x-icon" };
28
+ // --- Audio ---
29
+ if (match([0x49, 0x44, 0x33]))
30
+ return { valid: true, ext: "mp3", mime: "audio/mpeg" };
31
+ if (match([0x66, 0x4C, 0x61, 0x43]))
32
+ return { valid: true, ext: "flac", mime: "audio/flac" };
33
+ if (match([0x4F, 0x67, 0x67, 0x53]))
34
+ return { valid: true, ext: "ogg", mime: "audio/ogg" };
35
+ if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === "WAVE")
36
+ return { valid: true, ext: "wav", mime: "audio/wav" };
37
+ if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32]))
38
+ return { valid: true, ext: "mp4a", mime: "audio/mp4" };
39
+ // --- Video ---
40
+ if (match([0x00, 0x00, 0x00, 0x18]) && chunk.slice(4, 8).toString() === "ftyp")
41
+ return { valid: true, ext: "mp4", mime: "video/mp4" };
42
+ if (match([0x1A, 0x45, 0xDF, 0xA3]))
43
+ return { valid: true, ext: "mkv", mime: "video/x-matroska" };
44
+ if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === "AVI ")
45
+ return { valid: true, ext: "avi", mime: "video/x-msvideo" };
46
+ if (match([0x00, 0x00, 0x01, 0xBA]))
47
+ return { valid: true, ext: "mpeg", mime: "video/mpeg" };
48
+ if (match([0x47, 0x40, 0x00, 0x10]))
49
+ return { valid: true, ext: "ts", mime: "video/MP2T" };
50
+ if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32]))
51
+ return { valid: true, ext: "mov", mime: "video/quicktime" };
52
+ // --- Archives ---
53
+ if (match([0x50, 0x4B, 0x03, 0x04]))
54
+ return { valid: true, ext: "zip", mime: "application/zip" };
55
+ if (match([0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00]))
56
+ return { valid: true, ext: "rar", mime: "application/x-rar-compressed" };
57
+ if (match([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C]))
58
+ return { valid: true, ext: "7z", mime: "application/x-7z-compressed" };
59
+ if (match([0x1F, 0x8B]))
60
+ return { valid: true, ext: "gz", mime: "application/gzip" };
61
+ if (match([0x42, 0x5A, 0x68]))
62
+ return { valid: true, ext: "bz2", mime: "application/x-bzip2" };
63
+ // --- Documents ---
64
+ if (match([0x25, 0x50, 0x44, 0x46]))
65
+ return { valid: true, ext: "pdf", mime: "application/pdf" };
66
+ if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]))
67
+ return { valid: true, ext: "msi", mime: "application/vnd.ms-installer" };
68
+ if (match([0x4D, 0x5A]))
69
+ return { valid: true, ext: "exe", mime: "application/vnd.microsoft.portable-executable" };
70
+ if (match([0x09, 0x08, 0x10, 0x00]))
71
+ return { valid: true, ext: "doc", mime: "application/msword" };
72
+ if (match([0x09, 0x08, 0x10, 0x00, 0x00, 0x06, 0x05]))
73
+ return { valid: true, ext: "xls", mime: "application/vnd.ms-excel" };
74
+ if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1]))
75
+ return { valid: true, ext: "ppt", mime: "application/vnd.ms-powerpoint" };
76
+ if (match([0x50, 0x4B, 0x03, 0x04]))
77
+ return { valid: true, ext: "docx", mime: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" };
78
+ // --- Fonts ---
79
+ if (match([0x00, 0x01, 0x00, 0x00]))
80
+ return { valid: true, ext: "ttf", mime: "font/ttf" };
81
+ if (match([0x4F, 0x54, 0x54, 0x4F]))
82
+ return { valid: true, ext: "otf", mime: "font/otf" };
83
+ // --- Scripts / Binary ---
84
+ if (match([0x23, 0x21]))
85
+ return { valid: true, ext: "sh", mime: "application/x-sh" }; // shell script
86
+ if (match([0x7F, 0x45, 0x4C, 0x46]))
87
+ return { valid: true, ext: "elf", mime: "application/x-elf" }; // Linux executable
88
+ // --- Others / fallback ---
89
+ if (match([0x46, 0x4C, 0x56]))
90
+ return { valid: true, ext: "flv", mime: "video/x-flv" };
91
+ if (match([0x50, 0x4E, 0x44, 0x52]))
92
+ return { valid: true, ext: "pdf", mime: "application/pdf" }; // alternate PDF
93
+ if (match([0x42, 0x50, 0x47, 0x0D]))
94
+ return { valid: true, ext: "bpg", mime: "image/bpg" }; // BPG
95
95
  }export{fileScaner as default,fileScaner};//# sourceMappingURL=FileScaner.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileScaner.mjs","sources":["../../src/include/FileScaner.ts"],"sourcesContent":["export type FileScanerResult = {\n valid: boolean;\n ext?: string;\n mime?: string;\n};\n\n/**\n * Mega raw file-type detection from first chunk (magic bytes)\n * Supports 100+ common file types: images, audio, video, docs, archives, installers, fonts, binaries.\n */\nexport function fileScaner(chunk: Uint8Array | Buffer): FileScanerResult | void {\n if (!chunk || chunk.length < 4) return { valid: false };\n const match = (pattern: number[]) => pattern.every((b, i) => chunk[i] === b);\n\n // --- Images ---\n if (chunk.length >= 8) {\n if (match([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) return { valid: true, ext: \"png\", mime: \"image/png\" };\n if (match([0x47, 0x49, 0x46, 0x38])) return { valid: true, ext: \"gif\", mime: \"image/gif\" };\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WEBP\") return { valid: true, ext: \"webp\", mime: \"image/webp\" };\n }\n if (match([0xFF, 0xD8, 0xFF])) return { valid: true, ext: \"jpg\", mime: \"image/jpeg\" };\n if (match([0x42, 0x4D])) return { valid: true, ext: \"bmp\", mime: \"image/bmp\" };\n if (match([0x49, 0x49, 0x2A, 0x00]) || match([0x4D, 0x4D, 0x00, 0x2A])) return { valid: true, ext: \"tif\", mime: \"image/tiff\" };\n if (match([0x00, 0x00, 0x01, 0x00])) return { valid: true, ext: \"ico\", mime: \"image/x-icon\" };\n if (match([0x00, 0x00, 0x02, 0x00])) return { valid: true, ext: \"cur\", mime: \"image/x-icon\" };\n\n // --- Audio ---\n if (match([0x49, 0x44, 0x33])) return { valid: true, ext: \"mp3\", mime: \"audio/mpeg\" };\n if (match([0x66, 0x4C, 0x61, 0x43])) return { valid: true, ext: \"flac\", mime: \"audio/flac\" };\n if (match([0x4F, 0x67, 0x67, 0x53])) return { valid: true, ext: \"ogg\", mime: \"audio/ogg\" };\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WAVE\") return { valid: true, ext: \"wav\", mime: \"audio/wav\" };\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mp4a\", mime: \"audio/mp4\" };\n\n // --- Video ---\n if (match([0x00, 0x00, 0x00, 0x18]) && chunk.slice(4, 8).toString() === \"ftyp\") return { valid: true, ext: \"mp4\", mime: \"video/mp4\" };\n if (match([0x1A, 0x45, 0xDF, 0xA3])) return { valid: true, ext: \"mkv\", mime: \"video/x-matroska\" };\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"AVI \") return { valid: true, ext: \"avi\", mime: \"video/x-msvideo\" };\n if (match([0x00, 0x00, 0x01, 0xBA])) return { valid: true, ext: \"mpeg\", mime: \"video/mpeg\" };\n if (match([0x47, 0x40, 0x00, 0x10])) return { valid: true, ext: \"ts\", mime: \"video/MP2T\" };\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mov\", mime: \"video/quicktime\" };\n\n // --- Archives ---\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"zip\", mime: \"application/zip\" };\n if (match([0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00])) return { valid: true, ext: \"rar\", mime: \"application/x-rar-compressed\" };\n if (match([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) return { valid: true, ext: \"7z\", mime: \"application/x-7z-compressed\" };\n if (match([0x1F, 0x8B])) return { valid: true, ext: \"gz\", mime: \"application/gzip\" };\n if (match([0x42, 0x5A, 0x68])) return { valid: true, ext: \"bz2\", mime: \"application/x-bzip2\" };\n\n // --- Documents ---\n if (match([0x25, 0x50, 0x44, 0x46])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" };\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) return { valid: true, ext: \"msi\", mime: \"application/vnd.ms-installer\" };\n if (match([0x4D, 0x5A])) return { valid: true, ext: \"exe\", mime: \"application/vnd.microsoft.portable-executable\" };\n if (match([0x09, 0x08, 0x10, 0x00])) return { valid: true, ext: \"doc\", mime: \"application/msword\" };\n if (match([0x09, 0x08, 0x10, 0x00, 0x00, 0x06, 0x05])) return { valid: true, ext: \"xls\", mime: \"application/vnd.ms-excel\" };\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1])) return { valid: true, ext: \"ppt\", mime: \"application/vnd.ms-powerpoint\" };\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"docx\", mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" };\n\n // --- Fonts ---\n if (match([0x00, 0x01, 0x00, 0x00])) return { valid: true, ext: \"ttf\", mime: \"font/ttf\" };\n if (match([0x4F, 0x54, 0x54, 0x4F])) return { valid: true, ext: \"otf\", mime: \"font/otf\" };\n\n // --- Scripts / Binary ---\n if (match([0x23, 0x21])) return { valid: true, ext: \"sh\", mime: \"application/x-sh\" }; // shell script\n if (match([0x7F, 0x45, 0x4C, 0x46])) return { valid: true, ext: \"elf\", mime: \"application/x-elf\" }; // Linux executable\n\n // --- Others / fallback ---\n if (match([0x46, 0x4C, 0x56])) return { valid: true, ext: \"flv\", mime: \"video/x-flv\" };\n if (match([0x50, 0x4E, 0x44, 0x52])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" }; // alternate PDF\n if (match([0x42, 0x50, 0x47, 0x0D])) return { valid: true, ext: \"bpg\", mime: \"image/bpg\" }; // BPG\n\n}\n\nexport default fileScaner;"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileScaner.mjs","sources":["../../src/include/FileScaner.ts"],"sourcesContent":["export type FileScanerResult = {\r\n valid: boolean;\r\n ext?: string;\r\n mime?: string;\r\n};\r\n\r\n/**\r\n * Mega raw file-type detection from first chunk (magic bytes)\r\n * Supports 100+ common file types: images, audio, video, docs, archives, installers, fonts, binaries.\r\n */\r\nexport function fileScaner(chunk: Uint8Array | Buffer): FileScanerResult | void {\r\n if (!chunk || chunk.length < 4) return { valid: false };\r\n const match = (pattern: number[]) => pattern.every((b, i) => chunk[i] === b);\r\n\r\n // --- Images ---\r\n if (chunk.length >= 8) {\r\n if (match([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) return { valid: true, ext: \"png\", mime: \"image/png\" };\r\n if (match([0x47, 0x49, 0x46, 0x38])) return { valid: true, ext: \"gif\", mime: \"image/gif\" };\r\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WEBP\") return { valid: true, ext: \"webp\", mime: \"image/webp\" };\r\n }\r\n if (match([0xFF, 0xD8, 0xFF])) return { valid: true, ext: \"jpg\", mime: \"image/jpeg\" };\r\n if (match([0x42, 0x4D])) return { valid: true, ext: \"bmp\", mime: \"image/bmp\" };\r\n if (match([0x49, 0x49, 0x2A, 0x00]) || match([0x4D, 0x4D, 0x00, 0x2A])) return { valid: true, ext: \"tif\", mime: \"image/tiff\" };\r\n if (match([0x00, 0x00, 0x01, 0x00])) return { valid: true, ext: \"ico\", mime: \"image/x-icon\" };\r\n if (match([0x00, 0x00, 0x02, 0x00])) return { valid: true, ext: \"cur\", mime: \"image/x-icon\" };\r\n\r\n // --- Audio ---\r\n if (match([0x49, 0x44, 0x33])) return { valid: true, ext: \"mp3\", mime: \"audio/mpeg\" };\r\n if (match([0x66, 0x4C, 0x61, 0x43])) return { valid: true, ext: \"flac\", mime: \"audio/flac\" };\r\n if (match([0x4F, 0x67, 0x67, 0x53])) return { valid: true, ext: \"ogg\", mime: \"audio/ogg\" };\r\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"WAVE\") return { valid: true, ext: \"wav\", mime: \"audio/wav\" };\r\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mp4a\", mime: \"audio/mp4\" };\r\n\r\n // --- Video ---\r\n if (match([0x00, 0x00, 0x00, 0x18]) && chunk.slice(4, 8).toString() === \"ftyp\") return { valid: true, ext: \"mp4\", mime: \"video/mp4\" };\r\n if (match([0x1A, 0x45, 0xDF, 0xA3])) return { valid: true, ext: \"mkv\", mime: \"video/x-matroska\" };\r\n if (match([0x52, 0x49, 0x46, 0x46]) && chunk.slice(8, 12).toString() === \"AVI \") return { valid: true, ext: \"avi\", mime: \"video/x-msvideo\" };\r\n if (match([0x00, 0x00, 0x01, 0xBA])) return { valid: true, ext: \"mpeg\", mime: \"video/mpeg\" };\r\n if (match([0x47, 0x40, 0x00, 0x10])) return { valid: true, ext: \"ts\", mime: \"video/MP2T\" };\r\n if (match([0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32])) return { valid: true, ext: \"mov\", mime: \"video/quicktime\" };\r\n\r\n // --- Archives ---\r\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"zip\", mime: \"application/zip\" };\r\n if (match([0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00])) return { valid: true, ext: \"rar\", mime: \"application/x-rar-compressed\" };\r\n if (match([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) return { valid: true, ext: \"7z\", mime: \"application/x-7z-compressed\" };\r\n if (match([0x1F, 0x8B])) return { valid: true, ext: \"gz\", mime: \"application/gzip\" };\r\n if (match([0x42, 0x5A, 0x68])) return { valid: true, ext: \"bz2\", mime: \"application/x-bzip2\" };\r\n\r\n // --- Documents ---\r\n if (match([0x25, 0x50, 0x44, 0x46])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" };\r\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) return { valid: true, ext: \"msi\", mime: \"application/vnd.ms-installer\" };\r\n if (match([0x4D, 0x5A])) return { valid: true, ext: \"exe\", mime: \"application/vnd.microsoft.portable-executable\" };\r\n if (match([0x09, 0x08, 0x10, 0x00])) return { valid: true, ext: \"doc\", mime: \"application/msword\" };\r\n if (match([0x09, 0x08, 0x10, 0x00, 0x00, 0x06, 0x05])) return { valid: true, ext: \"xls\", mime: \"application/vnd.ms-excel\" };\r\n if (match([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1])) return { valid: true, ext: \"ppt\", mime: \"application/vnd.ms-powerpoint\" };\r\n if (match([0x50, 0x4B, 0x03, 0x04])) return { valid: true, ext: \"docx\", mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" };\r\n\r\n // --- Fonts ---\r\n if (match([0x00, 0x01, 0x00, 0x00])) return { valid: true, ext: \"ttf\", mime: \"font/ttf\" };\r\n if (match([0x4F, 0x54, 0x54, 0x4F])) return { valid: true, ext: \"otf\", mime: \"font/otf\" };\r\n\r\n // --- Scripts / Binary ---\r\n if (match([0x23, 0x21])) return { valid: true, ext: \"sh\", mime: \"application/x-sh\" }; // shell script\r\n if (match([0x7F, 0x45, 0x4C, 0x46])) return { valid: true, ext: \"elf\", mime: \"application/x-elf\" }; // Linux executable\r\n\r\n // --- Others / fallback ---\r\n if (match([0x46, 0x4C, 0x56])) return { valid: true, ext: \"flv\", mime: \"video/x-flv\" };\r\n if (match([0x50, 0x4E, 0x44, 0x52])) return { valid: true, ext: \"pdf\", mime: \"application/pdf\" }; // alternate PDF\r\n if (match([0x42, 0x50, 0x47, 0x0D])) return { valid: true, ext: \"bpg\", mime: \"image/bpg\" }; // BPG\r\n\r\n}\r\n\r\nexport default fileScaner;"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- declare function compressBuffer(input: any): Promise<Uint8Array>;
2
- declare function decompressBuffer(input: Uint8Array | Buffer): Promise<any>;
3
- declare function compress(input: any): Promise<string>;
4
- declare function decompress(base64Str: string): Promise<any>;
5
- declare const compresor: {
6
- compress: typeof compress;
7
- decompress: typeof decompress;
8
- compressBuffer: typeof compressBuffer;
9
- decompressBuffer: typeof decompressBuffer;
1
+ declare function compressBuffer(input: any): Promise<Uint8Array>;
2
+ declare function decompressBuffer(input: Uint8Array | Buffer): Promise<any>;
3
+ declare function compress(input: any): Promise<string>;
4
+ declare function decompress(base64Str: string): Promise<any>;
5
+ declare const compresor: {
6
+ compress: typeof compress;
7
+ decompress: typeof decompress;
8
+ compressBuffer: typeof compressBuffer;
9
+ decompressBuffer: typeof decompressBuffer;
10
10
  };
11
11
 
12
12
  export { compresor as default };
@@ -1,19 +1,19 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var fflate=require('fflate'),sodium=require('libsodium-wrappers'),msgpackr=require('msgpackr');async function compressBuffer(input) {
2
- await sodium.ready;
3
- const encode = msgpackr.pack(input);
4
- return fflate.compressSync(encode);
5
- }
6
- async function decompressBuffer(input) {
7
- await sodium.ready;
8
- const compress = fflate.decompressSync(input);
9
- return msgpackr.unpack(compress);
10
- }
11
- async function compress(input) {
12
- const compressed = await compressBuffer(input);
13
- return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);
14
- }
15
- async function decompress(base64Str) {
16
- const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);
17
- return await decompressBuffer(compressed);
18
- }
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var fflate=require('fflate'),sodium=require('libsodium-wrappers'),msgpackr=require('msgpackr');async function compressBuffer(input) {
2
+ await sodium.ready;
3
+ const encode = msgpackr.pack(input);
4
+ return fflate.compressSync(encode);
5
+ }
6
+ async function decompressBuffer(input) {
7
+ await sodium.ready;
8
+ const compress = fflate.decompressSync(input);
9
+ return msgpackr.unpack(compress);
10
+ }
11
+ async function compress(input) {
12
+ const compressed = await compressBuffer(input);
13
+ return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);
14
+ }
15
+ async function decompress(base64Str) {
16
+ const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);
17
+ return await decompressBuffer(compressed);
18
+ }
19
19
  const compresor = { compress, decompress, compressBuffer, decompressBuffer };exports.default=compresor;//# sourceMappingURL=compress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compress.js","sources":["../../src/include/compress.ts"],"sourcesContent":["import { compressSync, decompressSync } from 'fflate';\nimport sodium from 'libsodium-wrappers';\nimport { unpack, pack } from 'msgpackr';\n\nasync function compressBuffer(input: any) {\n await sodium.ready\n const encode = pack(input);\n return compressSync(encode);\n}\n\nasync function decompressBuffer(input: Uint8Array | Buffer) {\n await sodium.ready\n const compress = decompressSync(input);\n return unpack(compress);\n}\n\nasync function compress(input: any) {\n const compressed = await compressBuffer(input);\n return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);\n}\n\nasync function decompress(base64Str: string) {\n const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);\n return await decompressBuffer(compressed);\n}\n\nconst compresor = { compress, decompress, compressBuffer, decompressBuffer };\nexport default compresor;"],"names":["pack","compressSync","decompressSync","unpack"],"mappings":"qKAIA,eAAe,cAAc,CAAC,KAAU,EAAA;IACrC,MAAM,MAAM,CAAC,KAAK;AAClB,IAAA,MAAM,MAAM,GAAGA,aAAI,CAAC,KAAK,CAAC;AAC1B,IAAA,OAAOC,mBAAY,CAAC,MAAM,CAAC;AAC9B;AAEA,eAAe,gBAAgB,CAAC,KAA0B,EAAA;IACvD,MAAM,MAAM,CAAC,KAAK;AAClB,IAAA,MAAM,QAAQ,GAAGC,qBAAc,CAAC,KAAK,CAAC;AACtC,IAAA,OAAOC,eAAM,CAAC,QAAQ,CAAC;AAC1B;AAEA,eAAe,QAAQ,CAAC,KAAU,EAAA;AAC/B,IAAA,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC;AAC9C,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AACvE;AAEA,eAAe,UAAU,CAAC,SAAiB,EAAA;AACxC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AACjF,IAAA,OAAO,MAAM,gBAAgB,CAAC,UAAU,CAAC;AAC5C;AAEA,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB"}
1
+ {"version":3,"file":"compress.js","sources":["../../src/include/compress.ts"],"sourcesContent":["import { compressSync, decompressSync } from 'fflate';\r\nimport sodium from 'libsodium-wrappers';\r\nimport { unpack, pack } from 'msgpackr';\r\n\r\nasync function compressBuffer(input: any) {\r\n await sodium.ready\r\n const encode = pack(input);\r\n return compressSync(encode);\r\n}\r\n\r\nasync function decompressBuffer(input: Uint8Array | Buffer) {\r\n await sodium.ready\r\n const compress = decompressSync(input);\r\n return unpack(compress);\r\n}\r\n\r\nasync function compress(input: any) {\r\n const compressed = await compressBuffer(input);\r\n return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);\r\n}\r\n\r\nasync function decompress(base64Str: string) {\r\n const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);\r\n return await decompressBuffer(compressed);\r\n}\r\n\r\nconst compresor = { compress, decompress, compressBuffer, decompressBuffer };\r\nexport default compresor;"],"names":["pack","compressSync","decompressSync","unpack"],"mappings":"qKAIA,eAAe,cAAc,CAAC,KAAU,EAAA;IACrC,MAAM,MAAM,CAAC,KAAK,CAAA;AAClB,IAAA,MAAM,MAAM,GAAGA,aAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAA,OAAOC,mBAAY,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,eAAe,gBAAgB,CAAC,KAA0B,EAAA;IACvD,MAAM,MAAM,CAAC,KAAK,CAAA;AAClB,IAAA,MAAM,QAAQ,GAAGC,qBAAc,CAAC,KAAK,CAAC,CAAC;AACvC,IAAA,OAAOC,eAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,eAAe,QAAQ,CAAC,KAAU,EAAA;AAC/B,IAAA,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,eAAe,UAAU,CAAC,SAAiB,EAAA;AACxC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAClF,IAAA,OAAO,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB"}
@@ -1,19 +1,19 @@
1
- import {compressSync,decompressSync}from'fflate';import sodium from'libsodium-wrappers';import {pack,unpack}from'msgpackr';async function compressBuffer(input) {
2
- await sodium.ready;
3
- const encode = pack(input);
4
- return compressSync(encode);
5
- }
6
- async function decompressBuffer(input) {
7
- await sodium.ready;
8
- const compress = decompressSync(input);
9
- return unpack(compress);
10
- }
11
- async function compress(input) {
12
- const compressed = await compressBuffer(input);
13
- return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);
14
- }
15
- async function decompress(base64Str) {
16
- const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);
17
- return await decompressBuffer(compressed);
18
- }
1
+ import {compressSync,decompressSync}from'fflate';import sodium from'libsodium-wrappers';import {pack,unpack}from'msgpackr';async function compressBuffer(input) {
2
+ await sodium.ready;
3
+ const encode = pack(input);
4
+ return compressSync(encode);
5
+ }
6
+ async function decompressBuffer(input) {
7
+ await sodium.ready;
8
+ const compress = decompressSync(input);
9
+ return unpack(compress);
10
+ }
11
+ async function compress(input) {
12
+ const compressed = await compressBuffer(input);
13
+ return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);
14
+ }
15
+ async function decompress(base64Str) {
16
+ const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);
17
+ return await decompressBuffer(compressed);
18
+ }
19
19
  const compresor = { compress, decompress, compressBuffer, decompressBuffer };export{compresor as default};//# sourceMappingURL=compress.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"compress.mjs","sources":["../../src/include/compress.ts"],"sourcesContent":["import { compressSync, decompressSync } from 'fflate';\nimport sodium from 'libsodium-wrappers';\nimport { unpack, pack } from 'msgpackr';\n\nasync function compressBuffer(input: any) {\n await sodium.ready\n const encode = pack(input);\n return compressSync(encode);\n}\n\nasync function decompressBuffer(input: Uint8Array | Buffer) {\n await sodium.ready\n const compress = decompressSync(input);\n return unpack(compress);\n}\n\nasync function compress(input: any) {\n const compressed = await compressBuffer(input);\n return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);\n}\n\nasync function decompress(base64Str: string) {\n const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);\n return await decompressBuffer(compressed);\n}\n\nconst compresor = { compress, decompress, compressBuffer, decompressBuffer };\nexport default compresor;"],"names":[],"mappings":"2HAIA,eAAe,cAAc,CAAC,KAAU,EAAA;IACrC,MAAM,MAAM,CAAC,KAAK;AAClB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAA,OAAO,YAAY,CAAC,MAAM,CAAC;AAC9B;AAEA,eAAe,gBAAgB,CAAC,KAA0B,EAAA;IACvD,MAAM,MAAM,CAAC,KAAK;AAClB,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;AACtC,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC;AAC1B;AAEA,eAAe,QAAQ,CAAC,KAAU,EAAA;AAC/B,IAAA,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC;AAC9C,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AACvE;AAEA,eAAe,UAAU,CAAC,SAAiB,EAAA;AACxC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AACjF,IAAA,OAAO,MAAM,gBAAgB,CAAC,UAAU,CAAC;AAC5C;AAEA,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB"}
1
+ {"version":3,"file":"compress.mjs","sources":["../../src/include/compress.ts"],"sourcesContent":["import { compressSync, decompressSync } from 'fflate';\r\nimport sodium from 'libsodium-wrappers';\r\nimport { unpack, pack } from 'msgpackr';\r\n\r\nasync function compressBuffer(input: any) {\r\n await sodium.ready\r\n const encode = pack(input);\r\n return compressSync(encode);\r\n}\r\n\r\nasync function decompressBuffer(input: Uint8Array | Buffer) {\r\n await sodium.ready\r\n const compress = decompressSync(input);\r\n return unpack(compress);\r\n}\r\n\r\nasync function compress(input: any) {\r\n const compressed = await compressBuffer(input);\r\n return sodium.to_base64(compressed, sodium.base64_variants.ORIGINAL);\r\n}\r\n\r\nasync function decompress(base64Str: string) {\r\n const compressed = sodium.from_base64(base64Str, sodium.base64_variants.ORIGINAL);\r\n return await decompressBuffer(compressed);\r\n}\r\n\r\nconst compresor = { compress, decompress, compressBuffer, decompressBuffer };\r\nexport default compresor;"],"names":[],"mappings":"2HAIA,eAAe,cAAc,CAAC,KAAU,EAAA;IACrC,MAAM,MAAM,CAAC,KAAK,CAAA;AAClB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAA,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,eAAe,gBAAgB,CAAC,KAA0B,EAAA;IACvD,MAAM,MAAM,CAAC,KAAK,CAAA;AAClB,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACvC,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,eAAe,QAAQ,CAAC,KAAU,EAAA;AAC/B,IAAA,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,eAAe,UAAU,CAAC,SAAiB,EAAA;AACxC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAClF,IAAA,OAAO,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB"}
@@ -1,18 +1,18 @@
1
- type EncryptInput = string | object | any[];
2
- /** --- STRING --- */
3
- declare function encrypt(input: EncryptInput, secret: string): Promise<string>;
4
- declare function decrypt(base64: string, secret: string): Promise<any | null>;
5
- /** --- BUFFER --- */
6
- declare function encryptBuffer(input: any, secret: string): Promise<Uint8Array>;
7
- declare function decryptBuffer(box: Uint8Array, secret: string): Promise<any | null>;
8
- /** --- HASH --- */
9
- declare function hash(str: string): Promise<string>;
10
- declare const crypto: {
11
- encrypt: typeof encrypt;
12
- decrypt: typeof decrypt;
13
- encryptBuffer: typeof encryptBuffer;
14
- decryptBuffer: typeof decryptBuffer;
15
- hash: typeof hash;
1
+ type EncryptInput = string | object | any[];
2
+ /** --- STRING --- */
3
+ declare function encrypt(input: EncryptInput, secret: string): Promise<string>;
4
+ declare function decrypt(base64: string, secret: string): Promise<any | null>;
5
+ /** --- BUFFER --- */
6
+ declare function encryptBuffer(input: any, secret: string): Promise<Uint8Array>;
7
+ declare function decryptBuffer(box: Uint8Array, secret: string): Promise<any | null>;
8
+ /** --- HASH --- */
9
+ declare function hash(str: string): Promise<string>;
10
+ declare const crypto: {
11
+ encrypt: typeof encrypt;
12
+ decrypt: typeof decrypt;
13
+ encryptBuffer: typeof encryptBuffer;
14
+ decryptBuffer: typeof decryptBuffer;
15
+ hash: typeof hash;
16
16
  };
17
17
 
18
18
  export { decrypt, decryptBuffer, crypto as default, encrypt, encryptBuffer, hash };
package/include/crypto.js CHANGED
@@ -1,55 +1,55 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var sodium=require('libsodium-wrappers'),compress=require('./compress.js');/** --- Key/Nonce Derivation --- */
2
- function deriveKey(secret) {
3
- return sodium.crypto_generichash(sodium.crypto_secretbox_KEYBYTES, sodium.from_string(secret));
4
- }
5
- function deriveNonce(secret) {
6
- return sodium.crypto_generichash(sodium.crypto_secretbox_NONCEBYTES, sodium.from_string(secret));
7
- }
8
- /** --- STRING --- */
9
- async function encrypt(input, secret) {
10
- const encrypted = await encryptBuffer(input, secret);
11
- return sodium.to_base64(encrypted);
12
- }
13
- async function decrypt(base64, secret) {
14
- const cipher = sodium.from_base64(base64);
15
- return await decryptBuffer(cipher, secret);
16
- }
17
- /** --- BUFFER --- */
18
- // Encrypt
19
- async function encryptBuffer(input, secret) {
20
- await sodium.ready;
21
- const key = deriveKey(secret);
22
- const nonce = deriveNonce(secret);
23
- const compressed = await compress.default.compressBuffer(input);
24
- return sodium.crypto_secretbox_easy(compressed, nonce, key);
25
- }
26
- // Decrypt
27
- async function decryptBuffer(box, secret) {
28
- await sodium.ready;
29
- const key = deriveKey(secret);
30
- const nonce = deriveNonce(secret);
31
- try {
32
- const opened = sodium.crypto_secretbox_open_easy(box, nonce, key);
33
- if (!opened)
34
- return null;
35
- return await compress.default.decompressBuffer(opened);
36
- }
37
- catch (error) {
38
- return null;
39
- }
40
- }
41
- /** --- HASH --- */
42
- async function hash(str) {
43
- await sodium.ready;
44
- const digest = sodium.crypto_generichash(32, sodium.from_string(str));
45
- return sodium
46
- .to_base64(digest)
47
- .replace(/[^a-zA-Z0-9]/g, "");
48
- }
49
- const crypto = {
50
- encrypt,
51
- decrypt,
52
- encryptBuffer,
53
- decryptBuffer,
54
- hash,
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var sodium=require('libsodium-wrappers'),compress=require('./compress.js');/** --- Key/Nonce Derivation --- */
2
+ function deriveKey(secret) {
3
+ return sodium.crypto_generichash(sodium.crypto_secretbox_KEYBYTES, sodium.from_string(secret));
4
+ }
5
+ function deriveNonce(secret) {
6
+ return sodium.crypto_generichash(sodium.crypto_secretbox_NONCEBYTES, sodium.from_string(secret));
7
+ }
8
+ /** --- STRING --- */
9
+ async function encrypt(input, secret) {
10
+ const encrypted = await encryptBuffer(input, secret);
11
+ return sodium.to_base64(encrypted);
12
+ }
13
+ async function decrypt(base64, secret) {
14
+ const cipher = sodium.from_base64(base64);
15
+ return await decryptBuffer(cipher, secret);
16
+ }
17
+ /** --- BUFFER --- */
18
+ // Encrypt
19
+ async function encryptBuffer(input, secret) {
20
+ await sodium.ready;
21
+ const key = deriveKey(secret);
22
+ const nonce = deriveNonce(secret);
23
+ const compressed = await compress.default.compressBuffer(input);
24
+ return sodium.crypto_secretbox_easy(compressed, nonce, key);
25
+ }
26
+ // Decrypt
27
+ async function decryptBuffer(box, secret) {
28
+ await sodium.ready;
29
+ const key = deriveKey(secret);
30
+ const nonce = deriveNonce(secret);
31
+ try {
32
+ const opened = sodium.crypto_secretbox_open_easy(box, nonce, key);
33
+ if (!opened)
34
+ return null;
35
+ return await compress.default.decompressBuffer(opened);
36
+ }
37
+ catch (error) {
38
+ return null;
39
+ }
40
+ }
41
+ /** --- HASH --- */
42
+ async function hash(str) {
43
+ await sodium.ready;
44
+ const digest = sodium.crypto_generichash(32, sodium.from_string(str));
45
+ return sodium
46
+ .to_base64(digest)
47
+ .replace(/[^a-zA-Z0-9]/g, "");
48
+ }
49
+ const crypto = {
50
+ encrypt,
51
+ decrypt,
52
+ encryptBuffer,
53
+ decryptBuffer,
54
+ hash,
55
55
  };exports.decrypt=decrypt;exports.decryptBuffer=decryptBuffer;exports.default=crypto;exports.encrypt=encrypt;exports.encryptBuffer=encryptBuffer;exports.hash=hash;//# sourceMappingURL=crypto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sources":["../../src/include/crypto.ts"],"sourcesContent":["import sodium from \"libsodium-wrappers\";\nimport compresor from \"./compress\";\n\nexport type EncryptInput = string | object | any[];\n\n/** --- Key/Nonce Derivation --- */\nfunction deriveKey(secret: string): Uint8Array {\n return sodium.crypto_generichash(\n sodium.crypto_secretbox_KEYBYTES,\n sodium.from_string(secret)\n );\n}\n\nfunction deriveNonce(secret: string): Uint8Array {\n return sodium.crypto_generichash(\n sodium.crypto_secretbox_NONCEBYTES,\n sodium.from_string(secret)\n );\n}\n\n/** --- STRING --- */\nexport async function encrypt(input: EncryptInput, secret: string): Promise<string> {\n const encrypted = await encryptBuffer(input, secret);\n return sodium.to_base64(encrypted);\n}\n\nexport async function decrypt(base64: string, secret: string): Promise<any | null> {\n const cipher = sodium.from_base64(base64);\n return await decryptBuffer(cipher, secret);\n}\n\n/** --- BUFFER --- */\n// Encrypt\nexport async function encryptBuffer(input: any, secret: string): Promise<Uint8Array> {\n await sodium.ready;\n const key = deriveKey(secret);\n const nonce = deriveNonce(secret);\n const compressed = await compresor.compressBuffer(input);\n return sodium.crypto_secretbox_easy(compressed, nonce, key);\n}\n\n// Decrypt\nexport async function decryptBuffer(box: Uint8Array, secret: string): Promise<any | null> {\n await sodium.ready;\n const key = deriveKey(secret);\n const nonce = deriveNonce(secret);\n try {\n const opened = sodium.crypto_secretbox_open_easy(box, nonce, key);\n if (!opened) return null;\n return await compresor.decompressBuffer(opened);\n } catch (error) {\n return null;\n }\n}\n\n/** --- HASH --- */\nexport async function hash(str: string): Promise<string> {\n await sodium.ready;\n const digest = sodium.crypto_generichash(32, sodium.from_string(str));\n return sodium\n .to_base64(digest)\n .replace(/[^a-zA-Z0-9]/g, \"\")\n}\n\nconst crypto = {\n encrypt,\n decrypt,\n encryptBuffer,\n decryptBuffer,\n hash,\n};\n\nexport default crypto;\n"],"names":["compresor"],"mappings":"iJAKA;AACA,SAAS,SAAS,CAAC,MAAc,EAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAC7B,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAC5B;AACJ;AAEA,SAAS,WAAW,CAAC,MAAc,EAAA;AAChC,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAC7B,MAAM,CAAC,2BAA2B,EAClC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAC5B;AACJ;AAEA;AACO,eAAe,OAAO,CAAC,KAAmB,EAAE,MAAc,EAAA;IAC9D,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;AACpD,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AACrC;AAEO,eAAe,OAAO,CAAC,MAAc,EAAE,MAAc,EAAA;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;AACzC,IAAA,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7C;AAEA;AACA;AACO,eAAe,aAAa,CAAC,KAAU,EAAE,MAAc,EAAA;IAC3D,MAAM,MAAM,CAAC,KAAK;AAClB,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;IACjC,MAAM,UAAU,GAAG,MAAMA,gBAAS,CAAC,cAAc,CAAC,KAAK,CAAC;IACxD,OAAO,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC;AAC9D;AAEA;AACO,eAAe,aAAa,CAAC,GAAe,EAAE,MAAc,EAAA;IAChE,MAAM,MAAM,CAAC,KAAK;AAClB,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;IACjC,IAAI;AACD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;AACjE,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AACxB,QAAA,OAAO,MAAMA,gBAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACjD,IAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACb,QAAA,OAAO,IAAI;AACb,IAAA;AACJ;AAEA;AACO,eAAe,IAAI,CAAC,GAAW,EAAA;IACnC,MAAM,MAAM,CAAC,KAAK;AAClB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACrE,IAAA,OAAO;SACH,SAAS,CAAC,MAAM;AAChB,SAAA,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;AACnC;AAEA,MAAM,MAAM,GAAG;IACZ,OAAO;IACP,OAAO;IACP,aAAa;IACb,aAAa;IACb,IAAI;"}
1
+ {"version":3,"file":"crypto.js","sources":["../../src/include/crypto.ts"],"sourcesContent":["import sodium from \"libsodium-wrappers\";\r\nimport compresor from \"./compress\";\r\n\r\nexport type EncryptInput = string | object | any[];\r\n\r\n/** --- Key/Nonce Derivation --- */\r\nfunction deriveKey(secret: string): Uint8Array {\r\n return sodium.crypto_generichash(\r\n sodium.crypto_secretbox_KEYBYTES,\r\n sodium.from_string(secret)\r\n );\r\n}\r\n\r\nfunction deriveNonce(secret: string): Uint8Array {\r\n return sodium.crypto_generichash(\r\n sodium.crypto_secretbox_NONCEBYTES,\r\n sodium.from_string(secret)\r\n );\r\n}\r\n\r\n/** --- STRING --- */\r\nexport async function encrypt(input: EncryptInput, secret: string): Promise<string> {\r\n const encrypted = await encryptBuffer(input, secret);\r\n return sodium.to_base64(encrypted);\r\n}\r\n\r\nexport async function decrypt(base64: string, secret: string): Promise<any | null> {\r\n const cipher = sodium.from_base64(base64);\r\n return await decryptBuffer(cipher, secret);\r\n}\r\n\r\n/** --- BUFFER --- */\r\n// Encrypt\r\nexport async function encryptBuffer(input: any, secret: string): Promise<Uint8Array> {\r\n await sodium.ready;\r\n const key = deriveKey(secret);\r\n const nonce = deriveNonce(secret);\r\n const compressed = await compresor.compressBuffer(input);\r\n return sodium.crypto_secretbox_easy(compressed, nonce, key);\r\n}\r\n\r\n// Decrypt\r\nexport async function decryptBuffer(box: Uint8Array, secret: string): Promise<any | null> {\r\n await sodium.ready;\r\n const key = deriveKey(secret);\r\n const nonce = deriveNonce(secret);\r\n try {\r\n const opened = sodium.crypto_secretbox_open_easy(box, nonce, key);\r\n if (!opened) return null;\r\n return await compresor.decompressBuffer(opened);\r\n } catch (error) {\r\n return null;\r\n }\r\n}\r\n\r\n/** --- HASH --- */\r\nexport async function hash(str: string): Promise<string> {\r\n await sodium.ready;\r\n const digest = sodium.crypto_generichash(32, sodium.from_string(str));\r\n return sodium\r\n .to_base64(digest)\r\n .replace(/[^a-zA-Z0-9]/g, \"\")\r\n}\r\n\r\nconst crypto = {\r\n encrypt,\r\n decrypt,\r\n encryptBuffer,\r\n decryptBuffer,\r\n hash,\r\n};\r\n\r\nexport default crypto;\r\n"],"names":["compresor"],"mappings":"iJAKA;AACA,SAAS,SAAS,CAAC,MAAc,EAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAC7B,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAC5B,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAA;AAChC,IAAA,OAAO,MAAM,CAAC,kBAAkB,CAC7B,MAAM,CAAC,2BAA2B,EAClC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAC5B,CAAC;AACL,CAAC;AAED;AACO,eAAe,OAAO,CAAC,KAAmB,EAAE,MAAc,EAAA;IAC9D,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAEM,eAAe,OAAO,CAAC,MAAc,EAAE,MAAc,EAAA;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAA,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;AACA;AACO,eAAe,aAAa,CAAC,KAAU,EAAE,MAAc,EAAA;IAC3D,MAAM,MAAM,CAAC,KAAK,CAAC;AACnB,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,MAAMA,gBAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED;AACO,eAAe,aAAa,CAAC,GAAe,EAAE,MAAc,EAAA;IAChE,MAAM,MAAM,CAAC,KAAK,CAAC;AACnB,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI;AACD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;AACzB,QAAA,OAAO,MAAMA,gBAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClD,IAAA,CAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACb,QAAA,OAAO,IAAI,CAAC;AACd,IAAA,CAAA;AACJ,CAAC;AAED;AACO,eAAe,IAAI,CAAC,GAAW,EAAA;IACnC,MAAM,MAAM,CAAC,KAAK,CAAC;AACnB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,IAAA,OAAO,MAAM;SACT,SAAS,CAAC,MAAM,CAAC;AACjB,SAAA,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,MAAM,GAAG;IACZ,OAAO;IACP,OAAO;IACP,aAAa;IACb,aAAa;IACb,IAAI;"}