diginext-utils 3.13.8 → 3.13.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.
@@ -7,7 +7,7 @@ async function loadImage(list) {
7
7
  return await Promise.all(list.map((url) => {
8
8
  return new Promise((resolve, reject) => {
9
9
  const img = new Image();
10
- img.onload = resolve;
10
+ img.onload = () => resolve(url);
11
11
  img.onerror = reject;
12
12
  img.src = url;
13
13
  return img;
@@ -1 +1,2 @@
1
- export default function guessMimeType(filepath: string): "image/png" | "image/jpeg" | "unknown" | "image/gif" | "image/webp" | "video/mp4" | "video/quicktime" | "video/webm" | "video/mpeg";
1
+ export declare function guessMimeType(filepath: string): Promise<string>;
2
+ export default guessMimeType;
@@ -1,12 +1,77 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const fs_1 = __importDefault(require("fs"));
7
- const guessMimeTypeByBuffer_1 = __importDefault(require("./guessMimeTypeByBuffer"));
8
- function guessMimeType(filepath) {
9
- const buffer = fs_1.default.readFileSync(filepath);
10
- return (0, guessMimeTypeByBuffer_1.default)(buffer);
3
+ exports.guessMimeType = void 0;
4
+ const fs_1 = require("fs");
5
+ async function guessMimeType(filepath) {
6
+ return new Promise((resolve, reject) => {
7
+ const stream = (0, fs_1.createReadStream)(filepath, {
8
+ start: 0,
9
+ end: 11, // Read only first 12 bytes
10
+ });
11
+ let buffer = new Uint8Array(0);
12
+ stream.on("data", (chunk) => {
13
+ const chunkArray = new Uint8Array(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
14
+ // Manual concatenation
15
+ const newBuffer = new Uint8Array(buffer.length + chunkArray.length);
16
+ newBuffer.set(buffer);
17
+ newBuffer.set(chunkArray, buffer.length);
18
+ buffer = newBuffer;
19
+ });
20
+ stream.on("end", () => {
21
+ // Convert to hex string
22
+ const toHex = (arr, start, end) => {
23
+ return Array.from(arr.slice(start, end))
24
+ .map((b) => b.toString(16).padStart(2, "0"))
25
+ .join("");
26
+ };
27
+ const signature = toHex(buffer, 0, 4);
28
+ switch (signature) {
29
+ case "89504e47":
30
+ resolve("image/png");
31
+ break;
32
+ case "47494638":
33
+ resolve("image/gif");
34
+ break;
35
+ case "52494646":
36
+ if (buffer.length >= 12) {
37
+ const webpSignature = toHex(buffer, 8, 12);
38
+ if (webpSignature === "57454250") {
39
+ resolve("image/webp");
40
+ }
41
+ else {
42
+ resolve("unknown");
43
+ }
44
+ }
45
+ else {
46
+ resolve("unknown");
47
+ }
48
+ break;
49
+ case "00000018":
50
+ case "0000001c":
51
+ case "00000020":
52
+ resolve("video/mp4");
53
+ break;
54
+ case "66747970":
55
+ resolve("video/quicktime");
56
+ break;
57
+ case "1a45dfa3":
58
+ resolve("video/webm");
59
+ break;
60
+ case "000001ba":
61
+ case "000001b3":
62
+ resolve("video/mpeg");
63
+ break;
64
+ default:
65
+ if (signature.startsWith("ffd8ff")) {
66
+ resolve("image/jpeg");
67
+ }
68
+ else {
69
+ resolve("application/octet-stream");
70
+ }
71
+ }
72
+ });
73
+ stream.on("error", reject);
74
+ });
11
75
  }
76
+ exports.guessMimeType = guessMimeType;
12
77
  exports.default = guessMimeType;
@@ -1,2 +1,3 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  export default function guessMimeTypeByBuffer(buffer: Buffer): "image/png" | "image/jpeg" | "unknown" | "image/gif" | "image/webp" | "video/mp4" | "video/quicktime" | "video/webm" | "video/mpeg";
@@ -11,7 +11,7 @@ function trimNull(str) {
11
11
  str = str.toString();
12
12
  str = str.replace(/\0/g, "");
13
13
  while (str.indexOf(" ") >= 0) {
14
- str = str.replaceAll(" ", " ");
14
+ str = str.replace(/ /g, " ");
15
15
  }
16
16
  str = (0, trim_1.default)(str);
17
17
  return str;
@@ -41,7 +41,7 @@ exports.getFileNameWithoutExtension = getFileNameWithoutExtension;
41
41
  const getFileNameWithExtension = (url) => {
42
42
  if (!url)
43
43
  return "";
44
- url = url.replaceAll("\\", "/");
44
+ url = url.replace(/\\/g, "/");
45
45
  const _url = decodeURIComponent(url);
46
46
  const m = `${_url.toString().match(/(?:.*\/)?([^\/]+)/)}`;
47
47
  if (m && m.split(",").length > 1) {
@@ -5,7 +5,7 @@ export default async function loadImage(list) {
5
5
  return await Promise.all(list.map((url) => {
6
6
  return new Promise((resolve, reject) => {
7
7
  const img = new Image();
8
- img.onload = resolve;
8
+ img.onload = () => resolve(url);
9
9
  img.onerror = reject;
10
10
  img.src = url;
11
11
  return img;
@@ -1 +1,2 @@
1
- export default function guessMimeType(filepath: string): "image/png" | "image/jpeg" | "unknown" | "image/gif" | "image/webp" | "video/mp4" | "video/quicktime" | "video/webm" | "video/mpeg";
1
+ export declare function guessMimeType(filepath: string): Promise<string>;
2
+ export default guessMimeType;
@@ -1,6 +1,73 @@
1
- import fs from "fs";
2
- import guessMimeTypeByBuffer from "./guessMimeTypeByBuffer";
3
- export default function guessMimeType(filepath) {
4
- const buffer = fs.readFileSync(filepath);
5
- return guessMimeTypeByBuffer(buffer);
1
+ import { createReadStream } from "fs";
2
+ export async function guessMimeType(filepath) {
3
+ return new Promise((resolve, reject) => {
4
+ const stream = createReadStream(filepath, {
5
+ start: 0,
6
+ end: 11, // Read only first 12 bytes
7
+ });
8
+ let buffer = new Uint8Array(0);
9
+ stream.on("data", (chunk) => {
10
+ const chunkArray = new Uint8Array(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
11
+ // Manual concatenation
12
+ const newBuffer = new Uint8Array(buffer.length + chunkArray.length);
13
+ newBuffer.set(buffer);
14
+ newBuffer.set(chunkArray, buffer.length);
15
+ buffer = newBuffer;
16
+ });
17
+ stream.on("end", () => {
18
+ // Convert to hex string
19
+ const toHex = (arr, start, end) => {
20
+ return Array.from(arr.slice(start, end))
21
+ .map((b) => b.toString(16).padStart(2, "0"))
22
+ .join("");
23
+ };
24
+ const signature = toHex(buffer, 0, 4);
25
+ switch (signature) {
26
+ case "89504e47":
27
+ resolve("image/png");
28
+ break;
29
+ case "47494638":
30
+ resolve("image/gif");
31
+ break;
32
+ case "52494646":
33
+ if (buffer.length >= 12) {
34
+ const webpSignature = toHex(buffer, 8, 12);
35
+ if (webpSignature === "57454250") {
36
+ resolve("image/webp");
37
+ }
38
+ else {
39
+ resolve("unknown");
40
+ }
41
+ }
42
+ else {
43
+ resolve("unknown");
44
+ }
45
+ break;
46
+ case "00000018":
47
+ case "0000001c":
48
+ case "00000020":
49
+ resolve("video/mp4");
50
+ break;
51
+ case "66747970":
52
+ resolve("video/quicktime");
53
+ break;
54
+ case "1a45dfa3":
55
+ resolve("video/webm");
56
+ break;
57
+ case "000001ba":
58
+ case "000001b3":
59
+ resolve("video/mpeg");
60
+ break;
61
+ default:
62
+ if (signature.startsWith("ffd8ff")) {
63
+ resolve("image/jpeg");
64
+ }
65
+ else {
66
+ resolve("application/octet-stream");
67
+ }
68
+ }
69
+ });
70
+ stream.on("error", reject);
71
+ });
6
72
  }
73
+ export default guessMimeType;
@@ -1,2 +1,3 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  export default function guessMimeTypeByBuffer(buffer: Buffer): "image/png" | "image/jpeg" | "unknown" | "image/gif" | "image/webp" | "video/mp4" | "video/quicktime" | "video/webm" | "video/mpeg";
@@ -5,7 +5,7 @@ export function trimNull(str) {
5
5
  str = str.toString();
6
6
  str = str.replace(/\0/g, "");
7
7
  while (str.indexOf(" ") >= 0) {
8
- str = str.replaceAll(" ", " ");
8
+ str = str.replace(/ /g, " ");
9
9
  }
10
10
  str = trim(str);
11
11
  return str;
package/esm/string/url.js CHANGED
@@ -34,7 +34,7 @@ export const getFileNameWithoutExtension = (url) => {
34
34
  export const getFileNameWithExtension = (url) => {
35
35
  if (!url)
36
36
  return "";
37
- url = url.replaceAll("\\", "/");
37
+ url = url.replace(/\\/g, "/");
38
38
  const _url = decodeURIComponent(url);
39
39
  const m = `${_url.toString().match(/(?:.*\/)?([^\/]+)/)}`;
40
40
  if (m && m.split(",").length > 1) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "diginext-utils",
3
- "version": "3.13.8",
3
+ "version": "3.13.10",
4
4
  "sideEffects": false,
5
5
  "readme": "README.md",
6
6
  "homepage": "https://wearetopgroup.com",