diginext-utils 3.11.2 → 3.11.4
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/file/detectPrivateKeyByFilePath.js +20 -9
- package/dist/file/detectPrivateKeyByFilePath.js.map +1 -1
- package/dist/file/parseEnvFile.d.ts +8 -0
- package/dist/file/parseEnvFile.js +45 -0
- package/dist/file/parseEnvFile.js.map +1 -0
- package/dist/images/loadImageAsBlobUrl.d.ts +1 -1
- package/dist/images/loadImageAsBlobUrl.js +4 -3
- package/dist/images/loadImageAsBlobUrl.js.map +1 -1
- package/dist/response/index.js +2 -2
- package/dist/response/index.js.map +1 -1
- package/esm/file/detectPrivateKeyByFilePath.js +20 -9
- package/esm/file/detectPrivateKeyByFilePath.js.map +1 -1
- package/esm/file/parseEnvFile.d.ts +8 -0
- package/esm/file/parseEnvFile.js +38 -0
- package/esm/file/parseEnvFile.js.map +1 -0
- package/esm/images/loadImageAsBlobUrl.d.ts +1 -1
- package/esm/images/loadImageAsBlobUrl.js +4 -3
- package/esm/images/loadImageAsBlobUrl.js.map +1 -1
- package/esm/response/index.js +2 -2
- package/esm/response/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,20 +5,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.detectPrivateKeyByFilePath = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const
|
|
8
|
+
const parseEnvFile_1 = __importDefault(require("./parseEnvFile"));
|
|
9
9
|
function detectPrivateKeyByFilePath(_path) {
|
|
10
10
|
//
|
|
11
11
|
if (!fs_1.default.existsSync(_path))
|
|
12
12
|
return true;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
if (_path.includes(".env")) {
|
|
14
|
+
const env = (0, parseEnvFile_1.default)(_path);
|
|
15
|
+
const secretPattern = /(SECRET|TOKEN|PRIVATE)/g;
|
|
16
|
+
let success = true;
|
|
17
|
+
for (let i = 0; i < Object.keys(env).length; i++) {
|
|
18
|
+
const key = Object.keys(env)[i];
|
|
19
|
+
const value = env[key];
|
|
20
|
+
if (key.match(secretPattern)) {
|
|
21
|
+
if (!!value) {
|
|
22
|
+
console.error(key, value);
|
|
23
|
+
success = false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return success;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const fileContents = fs_1.default.readFileSync(_path, "utf8");
|
|
31
|
+
if (fileContents.includes(`${`-----`}BEGIN `))
|
|
19
32
|
return false;
|
|
20
|
-
default:
|
|
21
|
-
break;
|
|
22
33
|
}
|
|
23
34
|
return true;
|
|
24
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectPrivateKeyByFilePath.js","sourceRoot":"","sources":["../../src/file/detectPrivateKeyByFilePath.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,
|
|
1
|
+
{"version":3,"file":"detectPrivateKeyByFilePath.js","sourceRoot":"","sources":["../../src/file/detectPrivateKeyByFilePath.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,kEAA0C;AAE1C,SAAwB,0BAA0B,CAAC,KAAa;IAC/D,EAAE;IACF,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,KAAK,CAAC,CAAC;QAEhC,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAEhD,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAEvB,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;gBAC7B,IAAI,CAAC,CAAC,KAAK,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC1B,OAAO,GAAG,KAAK,CAAC;iBAChB;aACD;SACD;QAED,OAAO,OAAO,CAAC;KACf;SAAM;QACN,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAW,CAAC;QAC9D,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,OAAO,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;KAC5D;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AA7BD,6CA6BC;AAEQ,gEAA0B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads an .env file and converts it into a JavaScript object.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} path - The path to the .env file.
|
|
5
|
+
* @return {Object} - An object with keys and values based on the .env file.
|
|
6
|
+
*/
|
|
7
|
+
export default function parseEnvFile(path: string): any;
|
|
8
|
+
export { parseEnvFile };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseEnvFile = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
/**
|
|
9
|
+
* Reads an .env file and converts it into a JavaScript object.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} path - The path to the .env file.
|
|
12
|
+
* @return {Object} - An object with keys and values based on the .env file.
|
|
13
|
+
*/
|
|
14
|
+
function parseEnvFile(path) {
|
|
15
|
+
const env = {};
|
|
16
|
+
// Check if the file exists
|
|
17
|
+
if (!fs_1.default.existsSync(path)) {
|
|
18
|
+
console.error("File not found");
|
|
19
|
+
return env;
|
|
20
|
+
}
|
|
21
|
+
// Read file contents
|
|
22
|
+
const fileContents = fs_1.default.readFileSync(path, "utf8");
|
|
23
|
+
// Split the file content by new lines and iterate over each line
|
|
24
|
+
fileContents.split("\n").forEach((line) => {
|
|
25
|
+
// Trim whitespace and ignore comments or empty lines
|
|
26
|
+
const trimmedLine = line.trim();
|
|
27
|
+
if (trimmedLine.startsWith("#") || trimmedLine === "")
|
|
28
|
+
return;
|
|
29
|
+
// Split each line into key and value at the first '='
|
|
30
|
+
const [key, ...rest] = trimmedLine.split("=");
|
|
31
|
+
let value = rest.join("=").trim();
|
|
32
|
+
// Remove surrounding quotes if they wrap the entire value
|
|
33
|
+
if ((value.startsWith(`"`) && value.endsWith(`"`)) || (value.startsWith(`'`) && value.endsWith(`'`))) {
|
|
34
|
+
// Extract the value within the quotes, preserving any quotes that are part of the value
|
|
35
|
+
value = value.substring(1, value.length - 1);
|
|
36
|
+
}
|
|
37
|
+
// Add to env object
|
|
38
|
+
if (key)
|
|
39
|
+
env[key] = value;
|
|
40
|
+
});
|
|
41
|
+
return env;
|
|
42
|
+
}
|
|
43
|
+
exports.default = parseEnvFile;
|
|
44
|
+
exports.parseEnvFile = parseEnvFile;
|
|
45
|
+
//# sourceMappingURL=parseEnvFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseEnvFile.js","sourceRoot":"","sources":["../../src/file/parseEnvFile.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEpB;;;;;GAKG;AACH,SAAwB,YAAY,CAAC,IAAY;IAChD,MAAM,GAAG,GAAG,EAAS,CAAC;IAEtB,2BAA2B;IAC3B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC;KACX;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEnD,iEAAiE;IACjE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,qDAAqD;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO;QAE9D,sDAAsD;QACtD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAElC,0DAA0D;QAC1D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;YACrG,wFAAwF;YACxF,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC7C;QAED,oBAAoB;QACpB,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACZ,CAAC;AAhCD,+BAgCC;AAEQ,oCAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string>;
|
|
1
|
+
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string | null>;
|
|
@@ -7,7 +7,8 @@ const getUrlBypassCors_1 = __importDefault(require("./getUrlBypassCors"));
|
|
|
7
7
|
const tryLoad = async (url) => {
|
|
8
8
|
const response = await fetch(url);
|
|
9
9
|
if (!response.ok) {
|
|
10
|
-
|
|
10
|
+
return null;
|
|
11
|
+
// throw new Error(`HTTP error! status: ${response.status}`);
|
|
11
12
|
}
|
|
12
13
|
const imageBlob = await response.blob();
|
|
13
14
|
const blobUrl = URL.createObjectURL(imageBlob);
|
|
@@ -19,7 +20,7 @@ async function loadImageAsBlobUrl(imageUrl) {
|
|
|
19
20
|
return imageBlob;
|
|
20
21
|
}
|
|
21
22
|
catch (e) {
|
|
22
|
-
console.error(`loadImageAsBlobUrl error`, e);
|
|
23
|
+
// console.error(`loadImageAsBlobUrl error`, e);
|
|
23
24
|
}
|
|
24
25
|
try {
|
|
25
26
|
const url = (0, getUrlBypassCors_1.default)(imageUrl);
|
|
@@ -29,7 +30,7 @@ async function loadImageAsBlobUrl(imageUrl) {
|
|
|
29
30
|
return imageBlob;
|
|
30
31
|
}
|
|
31
32
|
catch (error) {
|
|
32
|
-
console.error(`loadImageAsBlobUrl error`, error);
|
|
33
|
+
// console.error(`loadImageAsBlobUrl error`, error);
|
|
33
34
|
}
|
|
34
35
|
return imageUrl;
|
|
35
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":";;;;;AAAA,0EAAkD;AAElD,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACjB,
|
|
1
|
+
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":";;;;;AAAA,0EAAkD;AAElD,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACjB,OAAO,IAAI,CAAA;QACX,6DAA6D;KAC7D;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEa,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChE,IAAI;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;KACjB;IAAC,OAAO,CAAC,EAAE;QACX,gDAAgD;KAChD;IAED,IAAI;QACH,MAAM,GAAG,GAAG,IAAA,0BAAgB,EAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;KAEjB;IAAC,OAAO,KAAK,EAAE;QACf,oDAAoD;KACpD;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC;AAnBD,qCAmBC"}
|
package/dist/response/index.js
CHANGED
|
@@ -25,7 +25,7 @@ const getFailedResponse = (...messages) => {
|
|
|
25
25
|
}, [])) || [];
|
|
26
26
|
// Provide a default message if none is provided
|
|
27
27
|
if (flattenedMessages.length === 0) {
|
|
28
|
-
flattenedMessages.push("
|
|
28
|
+
flattenedMessages.push("Something went wrong !");
|
|
29
29
|
}
|
|
30
30
|
// Return the response object
|
|
31
31
|
return { status: 0, error: true, messages: flattenedMessages, data: null };
|
|
@@ -56,7 +56,7 @@ exports.Response = {
|
|
|
56
56
|
return res.status(403).json((0, exports.getFailedResponse)(msg));
|
|
57
57
|
},
|
|
58
58
|
ignore: (res, message) => {
|
|
59
|
-
const msg = message ? message : "
|
|
59
|
+
const msg = message ? message : "Something went wrong?";
|
|
60
60
|
if (res.locals.logEnabled)
|
|
61
61
|
(0, log_1.logRes)(res, { statusCode: 404, message: msg });
|
|
62
62
|
return res.status(200).json((0, exports.getFailedResponse)(msg));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAElC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAS,EAAE,OAAgB,EAAE,EAAE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AAC9E,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAEK,MAAM,iBAAiB,GAAG,CAAC,GAAG,QAA2C,EAAE,EAAE;;IACnF,mDAAmD;IACnD,MAAM,iBAAiB,GACtB,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,yDAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC3B;aAAM,IAAI,CAAC,CAAC,OAAO,EAAE;YACrB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO,GAAG,CAAC;SACX;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,KAAI,EAAE,CAAC;IAEd,gDAAgD;IAChD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,iBAAiB,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
import
|
|
2
|
+
import parseEnvFile from "./parseEnvFile";
|
|
3
3
|
export default function detectPrivateKeyByFilePath(_path) {
|
|
4
4
|
//
|
|
5
5
|
if (!fs.existsSync(_path))
|
|
6
6
|
return true;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
if (_path.includes(".env")) {
|
|
8
|
+
const env = parseEnvFile(_path);
|
|
9
|
+
const secretPattern = /(SECRET|TOKEN|PRIVATE)/g;
|
|
10
|
+
let success = true;
|
|
11
|
+
for (let i = 0; i < Object.keys(env).length; i++) {
|
|
12
|
+
const key = Object.keys(env)[i];
|
|
13
|
+
const value = env[key];
|
|
14
|
+
if (key.match(secretPattern)) {
|
|
15
|
+
if (!!value) {
|
|
16
|
+
console.error(key, value);
|
|
17
|
+
success = false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return success;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const fileContents = fs.readFileSync(_path, "utf8");
|
|
25
|
+
if (fileContents.includes(`${`-----`}BEGIN `))
|
|
13
26
|
return false;
|
|
14
|
-
default:
|
|
15
|
-
break;
|
|
16
27
|
}
|
|
17
28
|
return true;
|
|
18
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectPrivateKeyByFilePath.js","sourceRoot":"","sources":["../../src/file/detectPrivateKeyByFilePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"detectPrivateKeyByFilePath.js","sourceRoot":"","sources":["../../src/file/detectPrivateKeyByFilePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,KAAa;IAC/D,EAAE;IACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAEhC,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAEhD,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAEvB,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;gBAC7B,IAAI,CAAC,CAAC,KAAK,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC1B,OAAO,GAAG,KAAK,CAAC;iBAChB;aACD;SACD;QAED,OAAO,OAAO,CAAC;KACf;SAAM;QACN,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAW,CAAC;QAC9D,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,OAAO,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;KAC5D;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads an .env file and converts it into a JavaScript object.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} path - The path to the .env file.
|
|
5
|
+
* @return {Object} - An object with keys and values based on the .env file.
|
|
6
|
+
*/
|
|
7
|
+
export default function parseEnvFile(path: string): any;
|
|
8
|
+
export { parseEnvFile };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
/**
|
|
3
|
+
* Reads an .env file and converts it into a JavaScript object.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} path - The path to the .env file.
|
|
6
|
+
* @return {Object} - An object with keys and values based on the .env file.
|
|
7
|
+
*/
|
|
8
|
+
export default function parseEnvFile(path) {
|
|
9
|
+
const env = {};
|
|
10
|
+
// Check if the file exists
|
|
11
|
+
if (!fs.existsSync(path)) {
|
|
12
|
+
console.error("File not found");
|
|
13
|
+
return env;
|
|
14
|
+
}
|
|
15
|
+
// Read file contents
|
|
16
|
+
const fileContents = fs.readFileSync(path, "utf8");
|
|
17
|
+
// Split the file content by new lines and iterate over each line
|
|
18
|
+
fileContents.split("\n").forEach((line) => {
|
|
19
|
+
// Trim whitespace and ignore comments or empty lines
|
|
20
|
+
const trimmedLine = line.trim();
|
|
21
|
+
if (trimmedLine.startsWith("#") || trimmedLine === "")
|
|
22
|
+
return;
|
|
23
|
+
// Split each line into key and value at the first '='
|
|
24
|
+
const [key, ...rest] = trimmedLine.split("=");
|
|
25
|
+
let value = rest.join("=").trim();
|
|
26
|
+
// Remove surrounding quotes if they wrap the entire value
|
|
27
|
+
if ((value.startsWith(`"`) && value.endsWith(`"`)) || (value.startsWith(`'`) && value.endsWith(`'`))) {
|
|
28
|
+
// Extract the value within the quotes, preserving any quotes that are part of the value
|
|
29
|
+
value = value.substring(1, value.length - 1);
|
|
30
|
+
}
|
|
31
|
+
// Add to env object
|
|
32
|
+
if (key)
|
|
33
|
+
env[key] = value;
|
|
34
|
+
});
|
|
35
|
+
return env;
|
|
36
|
+
}
|
|
37
|
+
export { parseEnvFile };
|
|
38
|
+
//# sourceMappingURL=parseEnvFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseEnvFile.js","sourceRoot":"","sources":["../../src/file/parseEnvFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,IAAY;IAChD,MAAM,GAAG,GAAG,EAAS,CAAC;IAEtB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC;KACX;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEnD,iEAAiE;IACjE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,qDAAqD;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO;QAE9D,sDAAsD;QACtD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAElC,0DAA0D;QAC1D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;YACrG,wFAAwF;YACxF,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC7C;QAED,oBAAoB;QACpB,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string>;
|
|
1
|
+
export default function loadImageAsBlobUrl(imageUrl: string): Promise<string | null>;
|
|
@@ -2,7 +2,8 @@ import getUrlBypassCors from "./getUrlBypassCors";
|
|
|
2
2
|
const tryLoad = async (url) => {
|
|
3
3
|
const response = await fetch(url);
|
|
4
4
|
if (!response.ok) {
|
|
5
|
-
|
|
5
|
+
return null;
|
|
6
|
+
// throw new Error(`HTTP error! status: ${response.status}`);
|
|
6
7
|
}
|
|
7
8
|
const imageBlob = await response.blob();
|
|
8
9
|
const blobUrl = URL.createObjectURL(imageBlob);
|
|
@@ -14,7 +15,7 @@ export default async function loadImageAsBlobUrl(imageUrl) {
|
|
|
14
15
|
return imageBlob;
|
|
15
16
|
}
|
|
16
17
|
catch (e) {
|
|
17
|
-
console.error(`loadImageAsBlobUrl error`, e);
|
|
18
|
+
// console.error(`loadImageAsBlobUrl error`, e);
|
|
18
19
|
}
|
|
19
20
|
try {
|
|
20
21
|
const url = getUrlBypassCors(imageUrl);
|
|
@@ -24,7 +25,7 @@ export default async function loadImageAsBlobUrl(imageUrl) {
|
|
|
24
25
|
return imageBlob;
|
|
25
26
|
}
|
|
26
27
|
catch (error) {
|
|
27
|
-
console.error(`loadImageAsBlobUrl error`, error);
|
|
28
|
+
// console.error(`loadImageAsBlobUrl error`, error);
|
|
28
29
|
}
|
|
29
30
|
return imageUrl;
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACjB,
|
|
1
|
+
{"version":3,"file":"loadImageAsBlobUrl.js","sourceRoot":"","sources":["../../src/images/loadImageAsBlobUrl.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QACjB,OAAO,IAAI,CAAA;QACX,6DAA6D;KAC7D;IAED,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChE,IAAI;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;KACjB;IAAC,OAAO,CAAC,EAAE;QACX,gDAAgD;KAChD;IAED,IAAI;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;KAEjB;IAAC,OAAO,KAAK,EAAE;QACf,oDAAoD;KACpD;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC"}
|
package/esm/response/index.js
CHANGED
|
@@ -20,7 +20,7 @@ export const getFailedResponse = (...messages) => {
|
|
|
20
20
|
}, [])) || [];
|
|
21
21
|
// Provide a default message if none is provided
|
|
22
22
|
if (flattenedMessages.length === 0) {
|
|
23
|
-
flattenedMessages.push("
|
|
23
|
+
flattenedMessages.push("Something went wrong !");
|
|
24
24
|
}
|
|
25
25
|
// Return the response object
|
|
26
26
|
return { status: 0, error: true, messages: flattenedMessages, data: null };
|
|
@@ -50,7 +50,7 @@ export const Response = {
|
|
|
50
50
|
return res.status(403).json(getFailedResponse(msg));
|
|
51
51
|
},
|
|
52
52
|
ignore: (res, message) => {
|
|
53
|
-
const msg = message ? message : "
|
|
53
|
+
const msg = message ? message : "Something went wrong?";
|
|
54
54
|
if (res.locals.logEnabled)
|
|
55
55
|
logRes(res, { statusCode: 404, message: msg });
|
|
56
56
|
return res.status(200).json(getFailedResponse(msg));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAS,EAAE,OAAgB,EAAE,EAAE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,QAA2C,EAAE,EAAE;;IACnF,mDAAmD;IACnD,MAAM,iBAAiB,GACtB,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,yDAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC3B;aAAM,IAAI,CAAC,CAAC,OAAO,EAAE;YACrB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO,GAAG,CAAC;SACX;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,KAAI,EAAE,CAAC;IAEd,gDAAgD;IAChD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,iBAAiB,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":"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"}
|