@delofarag/base-utils 1.3.0 → 1.3.1
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/heart/cli.d.ts +7 -0
- package/dist/heart/cli.d.ts.map +1 -0
- package/dist/heart/cli.js +47 -0
- package/dist/heart/cli.js.map +1 -0
- package/dist/heart/file-utils.d.ts +12 -0
- package/dist/heart/file-utils.d.ts.map +1 -0
- package/dist/heart/file-utils.js +139 -0
- package/dist/heart/file-utils.js.map +1 -0
- package/dist/heart/load_envs.d.ts +2 -0
- package/dist/heart/load_envs.d.ts.map +1 -0
- package/dist/heart/load_envs.js +9 -0
- package/dist/heart/load_envs.js.map +1 -0
- package/dist/heart/mail.d.ts +9 -0
- package/dist/heart/mail.d.ts.map +1 -0
- package/dist/heart/mail.js +28 -0
- package/dist/heart/mail.js.map +1 -0
- package/dist/heart/pino-logger.d.ts +3 -0
- package/dist/heart/pino-logger.d.ts.map +1 -0
- package/dist/heart/pino-logger.js +19 -0
- package/dist/heart/pino-logger.js.map +1 -0
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/rule.d.ts +11 -9
- package/dist/rule.d.ts.map +1 -1
- package/dist/rule.js +13 -9
- package/dist/rule.js.map +1 -1
- package/dist/server/cli.d.ts +7 -0
- package/dist/server/cli.d.ts.map +1 -0
- package/dist/server/cli.js +47 -0
- package/dist/server/cli.js.map +1 -0
- package/dist/server/file-utils.d.ts +12 -0
- package/dist/server/file-utils.d.ts.map +1 -0
- package/dist/server/file-utils.js +139 -0
- package/dist/server/file-utils.js.map +1 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +5 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/mail.d.ts +19 -0
- package/dist/server/mail.d.ts.map +1 -0
- package/dist/server/mail.js +45 -0
- package/dist/server/mail.js.map +1 -0
- package/dist/server/pino-logger.d.ts +3 -0
- package/dist/server/pino-logger.d.ts.map +1 -0
- package/dist/server/pino-logger.js +19 -0
- package/dist/server/pino-logger.js.map +1 -0
- package/package.json +15 -15
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function input(prompt?: string): Promise<string>;
|
|
2
|
+
export declare const terminal: {
|
|
3
|
+
exec: (command: string) => Promise<string>;
|
|
4
|
+
run: (command: string) => Promise<number>;
|
|
5
|
+
exists: (command: string) => Promise<boolean>;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/heart/cli.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1D;AAED,eAAO,MAAM,QAAQ;oBAEY,MAAM,KAAE,OAAO,CAAC,MAAM,CAAC;mBAYxB,MAAM,KAAE,OAAO,CAAC,MAAM,CAAC;sBAYpB,MAAM,KAAE,OAAO,CAAC,OAAO,CAAC;CAQ1D,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as readline from 'readline';
|
|
2
|
+
import { exec, spawn } from 'child_process';
|
|
3
|
+
export function input(prompt = '') {
|
|
4
|
+
const rl = readline.createInterface({
|
|
5
|
+
input: process.stdin,
|
|
6
|
+
output: process.stdout
|
|
7
|
+
});
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
rl.question(prompt, (answer) => {
|
|
10
|
+
rl.close();
|
|
11
|
+
resolve(answer);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export const terminal = {
|
|
16
|
+
exec: async function (command) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
exec(command, (error, stdout, stderr) => {
|
|
19
|
+
if (error) {
|
|
20
|
+
reject(stderr || error);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
resolve(stdout);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
run: async function (command) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
const proc = spawn(command, {
|
|
30
|
+
shell: true,
|
|
31
|
+
stdio: "inherit", // live output
|
|
32
|
+
});
|
|
33
|
+
proc.on("close", code => resolve(code ?? 0));
|
|
34
|
+
proc.on("error", err => reject(err));
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
exists: async function (command) {
|
|
38
|
+
try {
|
|
39
|
+
await this.exec(`command -v ${command}`);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/heart/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,KAAK,CAAC,SAAiB,EAAE;IACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IAEpB,IAAI,EAAE,KAAK,WAAU,OAAc;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;oBACxB,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACT,CAAC;IAED,GAAG,EAAE,KAAK,WAAU,OAAc;QAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE;gBAC1B,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,SAAS,EAAE,cAAc;aACjC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACT,CAAC;IAED,MAAM,EAAE,KAAK,WAAU,OAAc;QACjC,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACP,CAAC;CACJ,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function createFile(file: string, content: string): Promise<boolean>;
|
|
2
|
+
export declare function createSubFile(pathStr: string, content: string): Promise<boolean>;
|
|
3
|
+
export declare function readFile(file: string): Promise<string>;
|
|
4
|
+
export declare function readAllFilesInDir(dir: string): Promise<string[]>;
|
|
5
|
+
export declare function readFileLines(file: string): Promise<string[]>;
|
|
6
|
+
export declare function addToFile(file: string, content: string): Promise<boolean>;
|
|
7
|
+
export declare function doesFileExist(file: string): Promise<boolean>;
|
|
8
|
+
export declare function write_n_run(file: string, content: string, interpreter: string, is_subfile?: boolean, ausführen?: boolean): Promise<string>;
|
|
9
|
+
export declare function write_n_run_py(file: string, content: string, is_subfile?: boolean, aus_führen?: boolean): Promise<string>;
|
|
10
|
+
export declare function write_n_run_js(file: string, content: string, is_subfile?: boolean, aus_führen?: boolean): Promise<string>;
|
|
11
|
+
export declare function removeFile(file: string): Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=file-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/heart/file-utils.ts"],"names":[],"mappings":"AAYA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAShF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWtF;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB5D;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBtE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKnE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS/E;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASlE;AAGD,wBAAsB,WAAW,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,OAAe,EAC3B,SAAS,GAAE,OAAe,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,cAAc,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC5B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,cAAc,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC5B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAGD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU/D"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { exec } from 'child_process';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
const execAsync = promisify(exec);
|
|
6
|
+
function getProjectRoot() {
|
|
7
|
+
return path.resolve(__dirname, '../../../..');
|
|
8
|
+
}
|
|
9
|
+
// creating and reading
|
|
10
|
+
export async function createFile(file, content) {
|
|
11
|
+
try {
|
|
12
|
+
await fs.writeFile(file, content, 'utf-8');
|
|
13
|
+
console.log(`die Datei: '${file}' wurde erstellt`);
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
console.error(`Fehler beim Erstellen der Datei: '${file}': ${e}`);
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export async function createSubFile(pathStr, content) {
|
|
22
|
+
const dir = path.dirname(pathStr);
|
|
23
|
+
try {
|
|
24
|
+
await fs.mkdir(dir, { recursive: true });
|
|
25
|
+
await fs.writeFile(pathStr, content, 'utf-8');
|
|
26
|
+
console.log(`der Tree: '${pathStr}' wurde erstellt`);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
console.error(`Fehler beim Erstellen der Datei: '${pathStr}': ${e}`);
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function readFile(file) {
|
|
35
|
+
let filePath = path.resolve(file);
|
|
36
|
+
if (!path.isAbsolute(file)) {
|
|
37
|
+
const projectRoot = getProjectRoot();
|
|
38
|
+
filePath = path.join(projectRoot, file);
|
|
39
|
+
try {
|
|
40
|
+
await fs.access(filePath);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
filePath = path.resolve(file);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
await fs.access(filePath);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
throw new Error(`Datei nicht gefunden: ${file}`);
|
|
51
|
+
}
|
|
52
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
53
|
+
console.log(`die Datei: '${filePath}' wurde ausgelesen`);
|
|
54
|
+
return content;
|
|
55
|
+
}
|
|
56
|
+
export async function readAllFilesInDir(dir) {
|
|
57
|
+
const dirPath = path.join(getProjectRoot(), dir);
|
|
58
|
+
const files = [];
|
|
59
|
+
async function readDir(currentPath) {
|
|
60
|
+
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
61
|
+
for (const entry of entries) {
|
|
62
|
+
const fullPath = path.join(currentPath, entry.name);
|
|
63
|
+
if (entry.isFile()) {
|
|
64
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
65
|
+
files.push(content);
|
|
66
|
+
console.log(`die Datei: '${fullPath}' wurde ausgelesen`);
|
|
67
|
+
}
|
|
68
|
+
else if (entry.isDirectory()) {
|
|
69
|
+
await readDir(fullPath);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
await readDir(dirPath);
|
|
74
|
+
console.log(`der ordner: ${dir} wurde vollständig ausgelesen`);
|
|
75
|
+
return files;
|
|
76
|
+
}
|
|
77
|
+
export async function readFileLines(file) {
|
|
78
|
+
const content = await fs.readFile(file, 'utf-8');
|
|
79
|
+
const lines = content.split('\n');
|
|
80
|
+
console.log(`die Datei: '${file}' wurde Zeile für Zeile ausgelesen und in ein array gepackt`);
|
|
81
|
+
return lines;
|
|
82
|
+
}
|
|
83
|
+
export async function addToFile(file, content) {
|
|
84
|
+
try {
|
|
85
|
+
await fs.appendFile(file, `\n${content}`, 'utf-8');
|
|
86
|
+
console.log(`in Datei: '${file}' wurde Inhalt: '${content}' hinzugefügt`);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
console.error(`Fehler beim Hinzufügen des Inhalts zu der Datei: '${file}': ${e}`);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export async function doesFileExist(file) {
|
|
95
|
+
try {
|
|
96
|
+
await fs.access(file);
|
|
97
|
+
console.log(`die Datei: '${file}' exestiert`);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
console.log(`die Datei: '${file}' exestiert nicht`);
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// running code
|
|
106
|
+
export async function write_n_run(file, content, interpreter, is_subfile = false, ausführen = false) {
|
|
107
|
+
const filePath = path.resolve(file);
|
|
108
|
+
if (is_subfile) {
|
|
109
|
+
const dir = path.dirname(filePath);
|
|
110
|
+
await fs.mkdir(dir, { recursive: true });
|
|
111
|
+
}
|
|
112
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
113
|
+
console.log(`die ${interpreter} Code-Datei: '${file}' wurde erstellt`);
|
|
114
|
+
if (ausführen) {
|
|
115
|
+
await execAsync(`${interpreter} ${filePath}`);
|
|
116
|
+
console.log(`die ${interpreter} Code-Datei: '${file}' wird ausgeführt`);
|
|
117
|
+
}
|
|
118
|
+
return filePath;
|
|
119
|
+
}
|
|
120
|
+
export async function write_n_run_py(file, content, is_subfile = false, aus_führen = false) {
|
|
121
|
+
return write_n_run(file, content, 'python3', is_subfile, aus_führen);
|
|
122
|
+
}
|
|
123
|
+
export async function write_n_run_js(file, content, is_subfile = false, aus_führen = false) {
|
|
124
|
+
return write_n_run(file, content, 'node', is_subfile, aus_führen);
|
|
125
|
+
}
|
|
126
|
+
// removing
|
|
127
|
+
export async function removeFile(file) {
|
|
128
|
+
try {
|
|
129
|
+
await fs.unlink(file);
|
|
130
|
+
console.log(`die Datei: '${file}' wurde gelöscht`);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
// Datei existiert nicht oder kann nicht gelöscht werden
|
|
135
|
+
console.error(`Fehler beim Löschen der Datei: '${file}': ${e}`);
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=file-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/heart/file-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load_envs.d.ts","sourceRoot":"","sources":["../../src/heart/load_envs.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,gBAAgB,SAIvC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import dotenv from "dotenv";
|
|
2
|
+
import { resolve, dirname } from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
export default function global_load_envs() {
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
7
|
+
dotenv.config({ path: resolve(__dirname, "../.env") });
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=load_envs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load_envs.js","sourceRoot":"","sources":["../../src/heart/load_envs.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;AAC1D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default function sendMailToMe({ subject, text, attachments }: {
|
|
2
|
+
subject: string;
|
|
3
|
+
text: string;
|
|
4
|
+
attachments?: {
|
|
5
|
+
filename: string;
|
|
6
|
+
content: string | Buffer;
|
|
7
|
+
}[];
|
|
8
|
+
}): Promise<import("nodemailer/lib/smtp-transport").SentMessageInfo>;
|
|
9
|
+
//# sourceMappingURL=mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/heart/mail.ts"],"names":[],"mappings":"AAYE,wBAA8B,YAAY,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAC,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAA;CAAC,oEAevK"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import nodemailer from "nodemailer";
|
|
2
|
+
const transporter = nodemailer.createTransport({
|
|
3
|
+
host: "smtp.zoho.eu",
|
|
4
|
+
port: 465,
|
|
5
|
+
secure: true,
|
|
6
|
+
auth: {
|
|
7
|
+
user: "delo@recruitvoiceai.de",
|
|
8
|
+
pass: process.env.MAIL_PASS
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export default async function sendMailToMe({ subject, text, attachments }) {
|
|
12
|
+
try {
|
|
13
|
+
const info = await transporter.sendMail({
|
|
14
|
+
from: `"RecruitAI" <delo@recruitvoiceai.de>`,
|
|
15
|
+
to: `faragdelo@gmail.com`,
|
|
16
|
+
subject,
|
|
17
|
+
text,
|
|
18
|
+
attachments
|
|
19
|
+
});
|
|
20
|
+
console.log("Mail sent:", info.messageId);
|
|
21
|
+
return info;
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error("Error sending mail:", err);
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=mail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/heart/mail.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;IAC3C,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE;QACJ,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;KAC5B;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAkG;IACtK,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC;YACtC,IAAI,EAAE,sCAAsC;YAC5C,EAAE,EAAE,qBAAqB;YACzB,OAAO;YACP,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pino-logger.d.ts","sourceRoot":"","sources":["../../src/heart/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,eAAO,MAAM,MAAM,6BAeb,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import pino from "pino";
|
|
2
|
+
const isDevelopment = process.env.NODE_ENV === "development" || process.env.NODE_ENV === undefined;
|
|
3
|
+
export const logger = isDevelopment
|
|
4
|
+
? pino({
|
|
5
|
+
transport: {
|
|
6
|
+
target: "pino-pretty",
|
|
7
|
+
options: {
|
|
8
|
+
colorize: true,
|
|
9
|
+
translateTime: "HH:MM:ss",
|
|
10
|
+
ignore: "pid,hostname",
|
|
11
|
+
destination: 1, // stdout
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
level: "debug",
|
|
15
|
+
})
|
|
16
|
+
: pino({
|
|
17
|
+
level: "info",
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=pino-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pino-logger.js","sourceRoot":"","sources":["../../src/heart/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAA;AAElG,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa;IACjC,CAAC,CAAC,IAAI,CAAC;QACH,SAAS,EAAE;YACT,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,UAAU;gBACzB,MAAM,EAAE,cAAc;gBACtB,WAAW,EAAE,CAAC,EAAE,SAAS;aAC1B;SACF;QACD,KAAK,EAAE,OAAO;KACf,CAAC;IACJ,CAAC,CAAC,IAAI,CAAC;QACH,KAAK,EAAE,MAAM;KACd,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA"}
|
package/dist/rule.d.ts
CHANGED
|
@@ -15,33 +15,35 @@
|
|
|
15
15
|
const user:User = {
|
|
16
16
|
name: "John Doe",
|
|
17
17
|
age: 20,
|
|
18
|
-
email: "john.doe@
|
|
18
|
+
email: "john.doe@exampl.com",
|
|
19
19
|
is_admin: false,
|
|
20
20
|
has_payed: false,
|
|
21
21
|
tier: "free"
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
* const rule = Rule
|
|
25
|
-
.
|
|
25
|
+
.is(user => user.age > 18) //man kann hier auch mit "is<User>(user => ...)" typisieren
|
|
26
26
|
.and(user => !user.is_admin)
|
|
27
27
|
.and(user => user.has_payed)
|
|
28
|
-
.or(Rule
|
|
28
|
+
.or(Rule
|
|
29
|
+
.is(user => user.tier === "free")
|
|
29
30
|
.and(user => !user.has_payed)
|
|
30
31
|
.and(user => user.age === 21))
|
|
31
|
-
.or(Rule
|
|
32
|
+
.or(Rule
|
|
33
|
+
.is(user => user.name === "John Doe")
|
|
32
34
|
.and(user => user.age === 20)
|
|
33
|
-
.and(user => user.email === "john.doe@
|
|
35
|
+
.and(user => user.email === "john.doe@exampl.com"))
|
|
34
36
|
|
|
35
37
|
console.log(rule.allows(user)) // returned true
|
|
36
38
|
*/
|
|
37
|
-
export declare class Rule {
|
|
39
|
+
export declare class Rule<T = any> {
|
|
38
40
|
private root;
|
|
39
41
|
private and_rules;
|
|
40
42
|
private or_rules;
|
|
41
43
|
private constructor();
|
|
42
|
-
static
|
|
43
|
-
and(fn: (input:
|
|
44
|
+
static is<T = any>(root: (input: T) => boolean): Rule<T>;
|
|
45
|
+
and(fn: (input: T) => boolean): this;
|
|
44
46
|
or(rule: Rule): this;
|
|
45
|
-
allows(input:
|
|
47
|
+
allows(input: T): boolean;
|
|
46
48
|
}
|
|
47
49
|
//# sourceMappingURL=rule.d.ts.map
|
package/dist/rule.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,IAAI,CAAC,CAAC,GAAG,GAAG;IACrB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO;WAGO,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAC,CAAC,KAAK,EAAC,CAAC,KAAK,OAAO;IAG5C,GAAG,CAAC,EAAE,EAAC,CAAC,KAAK,EAAC,CAAC,KAAK,OAAO;IAI3B,EAAE,CAAC,IAAI,EAAC,IAAI;IAIZ,MAAM,CAAC,KAAK,EAAC,CAAC,GAAE,OAAO;CAmBjC"}
|
package/dist/rule.js
CHANGED
|
@@ -15,22 +15,24 @@
|
|
|
15
15
|
const user:User = {
|
|
16
16
|
name: "John Doe",
|
|
17
17
|
age: 20,
|
|
18
|
-
email: "john.doe@
|
|
18
|
+
email: "john.doe@exampl.com",
|
|
19
19
|
is_admin: false,
|
|
20
20
|
has_payed: false,
|
|
21
21
|
tier: "free"
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
* const rule = Rule
|
|
25
|
-
.
|
|
25
|
+
.is(user => user.age > 18) //man kann hier auch mit "is<User>(user => ...)" typisieren
|
|
26
26
|
.and(user => !user.is_admin)
|
|
27
27
|
.and(user => user.has_payed)
|
|
28
|
-
.or(Rule
|
|
28
|
+
.or(Rule
|
|
29
|
+
.is(user => user.tier === "free")
|
|
29
30
|
.and(user => !user.has_payed)
|
|
30
31
|
.and(user => user.age === 21))
|
|
31
|
-
.or(Rule
|
|
32
|
+
.or(Rule
|
|
33
|
+
.is(user => user.name === "John Doe")
|
|
32
34
|
.and(user => user.age === 20)
|
|
33
|
-
.and(user => user.email === "john.doe@
|
|
35
|
+
.and(user => user.email === "john.doe@exampl.com"))
|
|
34
36
|
|
|
35
37
|
console.log(rule.allows(user)) // returned true
|
|
36
38
|
*/
|
|
@@ -41,7 +43,7 @@ export class Rule {
|
|
|
41
43
|
constructor(root) {
|
|
42
44
|
this.root = root;
|
|
43
45
|
}
|
|
44
|
-
static
|
|
46
|
+
static is(root) {
|
|
45
47
|
return new Rule(root);
|
|
46
48
|
}
|
|
47
49
|
and(fn) {
|
|
@@ -79,13 +81,15 @@ const user = {
|
|
|
79
81
|
tier: "free"
|
|
80
82
|
};
|
|
81
83
|
const rule = Rule
|
|
82
|
-
.
|
|
84
|
+
.is(user => user.age > 18)
|
|
83
85
|
.and(user => !user.is_admin)
|
|
84
86
|
.and(user => user.has_payed)
|
|
85
|
-
.or(Rule
|
|
87
|
+
.or(Rule
|
|
88
|
+
.is(user => user.tier === "free")
|
|
86
89
|
.and(user => !user.has_payed)
|
|
87
90
|
.and(user => user.age === 21))
|
|
88
|
-
.or(Rule
|
|
91
|
+
.or(Rule
|
|
92
|
+
.is(user => user.name === "John Doe")
|
|
89
93
|
.and(user => user.age === 20)
|
|
90
94
|
.and(user => user.email === "john.doe@example.com"));
|
|
91
95
|
console.log(rule.allows(user));
|
package/dist/rule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAO,IAAI;IACL,IAAI,CAAO;IACX,SAAS,GAAY,EAAE,CAAA;IACvB,QAAQ,GAAU,EAAE,CAAA;IAE5B,YAAoB,IAAyB;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;IACM,MAAM,CAAC,EAAE,CAAU,IAAyB;QAC/C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACM,GAAG,CAAC,EAAuB;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,OAAO,IAAI,CAAA;IACf,CAAC;IACM,EAAE,CAAC,IAAS;QACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACf,CAAC;IACM,MAAM,CAAC,KAAO;QACjB,IAAI,MAAM,CAAC;QACX,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEzB,KAAI,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAC,CAAC;YAClC,IAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,MAAM,GAAG,KAAK,CAAA;gBACd,MAAK;YACT,CAAC;QACL,CAAC;QAED,KAAI,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAC,CAAC;YAChC,IAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,GAAG,IAAI,CAAA;gBACb,MAAK;YACT,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ;AAaD,MAAM,IAAI,GAAQ;IACd,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,sBAAsB;IAC7B,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,IAAI,EAAE,MAAM;CACf,CAAA;AAED,MAAM,IAAI,GAAG,IAAI;KACZ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;KACzB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;KAC3B,EAAE,CAAC,IAAI;KACH,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;KAChC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;KACjC,EAAE,CAAC,IAAI;KACH,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;KACpC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;KAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,sBAAsB,CAAC,CAAC,CAAA;AAG5D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function input(prompt?: string): Promise<string>;
|
|
2
|
+
export declare const terminal: {
|
|
3
|
+
exec: (command: string) => Promise<string>;
|
|
4
|
+
run: (command: string) => Promise<number>;
|
|
5
|
+
exists: (command: string) => Promise<boolean>;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/server/cli.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1D;AAED,eAAO,MAAM,QAAQ;oBAEY,MAAM,KAAE,OAAO,CAAC,MAAM,CAAC;mBAYxB,MAAM,KAAE,OAAO,CAAC,MAAM,CAAC;sBAYpB,MAAM,KAAE,OAAO,CAAC,OAAO,CAAC;CAQ1D,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as readline from 'readline';
|
|
2
|
+
import { exec, spawn } from 'child_process';
|
|
3
|
+
export function input(prompt = '') {
|
|
4
|
+
const rl = readline.createInterface({
|
|
5
|
+
input: process.stdin,
|
|
6
|
+
output: process.stdout
|
|
7
|
+
});
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
rl.question(prompt, (answer) => {
|
|
10
|
+
rl.close();
|
|
11
|
+
resolve(answer);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export const terminal = {
|
|
16
|
+
exec: async function (command) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
exec(command, (error, stdout, stderr) => {
|
|
19
|
+
if (error) {
|
|
20
|
+
reject(stderr || error);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
resolve(stdout);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
run: async function (command) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
const proc = spawn(command, {
|
|
30
|
+
shell: true,
|
|
31
|
+
stdio: "inherit", // live output
|
|
32
|
+
});
|
|
33
|
+
proc.on("close", code => resolve(code ?? 0));
|
|
34
|
+
proc.on("error", err => reject(err));
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
exists: async function (command) {
|
|
38
|
+
try {
|
|
39
|
+
await this.exec(`command -v ${command}`);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/server/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,KAAK,CAAC,SAAiB,EAAE;IACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IAEpB,IAAI,EAAE,KAAK,WAAU,OAAc;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;oBACxB,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACT,CAAC;IAED,GAAG,EAAE,KAAK,WAAU,OAAc;QAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE;gBAC1B,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,SAAS,EAAE,cAAc;aACjC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACT,CAAC;IAED,MAAM,EAAE,KAAK,WAAU,OAAc;QACjC,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACP,CAAC;CACJ,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function createFile(file: string, content: string): Promise<boolean>;
|
|
2
|
+
export declare function createSubFile(pathStr: string, content: string): Promise<boolean>;
|
|
3
|
+
export declare function readFile(file: string): Promise<string>;
|
|
4
|
+
export declare function readAllFilesInDir(dir: string): Promise<string[]>;
|
|
5
|
+
export declare function readFileLines(file: string): Promise<string[]>;
|
|
6
|
+
export declare function addToFile(file: string, content: string): Promise<boolean>;
|
|
7
|
+
export declare function doesFileExist(file: string): Promise<boolean>;
|
|
8
|
+
export declare function write_n_run(file: string, content: string, interpreter: string, is_subfile?: boolean, ausführen?: boolean): Promise<string>;
|
|
9
|
+
export declare function write_n_run_py(file: string, content: string, is_subfile?: boolean, aus_führen?: boolean): Promise<string>;
|
|
10
|
+
export declare function write_n_run_js(file: string, content: string, is_subfile?: boolean, aus_führen?: boolean): Promise<string>;
|
|
11
|
+
export declare function removeFile(file: string): Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=file-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/server/file-utils.ts"],"names":[],"mappings":"AAYA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAShF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWtF;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB5D;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBtE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKnE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS/E;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASlE;AAGD,wBAAsB,WAAW,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,OAAe,EAC3B,SAAS,GAAE,OAAe,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,cAAc,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC5B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,cAAc,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC5B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAGD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU/D"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { exec } from 'child_process';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
const execAsync = promisify(exec);
|
|
6
|
+
function getProjectRoot() {
|
|
7
|
+
return path.resolve(__dirname, '../../../..');
|
|
8
|
+
}
|
|
9
|
+
// creating and reading
|
|
10
|
+
export async function createFile(file, content) {
|
|
11
|
+
try {
|
|
12
|
+
await fs.writeFile(file, content, 'utf-8');
|
|
13
|
+
console.log(`die Datei: '${file}' wurde erstellt`);
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
console.error(`Fehler beim Erstellen der Datei: '${file}': ${e}`);
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export async function createSubFile(pathStr, content) {
|
|
22
|
+
const dir = path.dirname(pathStr);
|
|
23
|
+
try {
|
|
24
|
+
await fs.mkdir(dir, { recursive: true });
|
|
25
|
+
await fs.writeFile(pathStr, content, 'utf-8');
|
|
26
|
+
console.log(`der Tree: '${pathStr}' wurde erstellt`);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
console.error(`Fehler beim Erstellen der Datei: '${pathStr}': ${e}`);
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function readFile(file) {
|
|
35
|
+
let filePath = path.resolve(file);
|
|
36
|
+
if (!path.isAbsolute(file)) {
|
|
37
|
+
const projectRoot = getProjectRoot();
|
|
38
|
+
filePath = path.join(projectRoot, file);
|
|
39
|
+
try {
|
|
40
|
+
await fs.access(filePath);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
filePath = path.resolve(file);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
await fs.access(filePath);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
throw new Error(`Datei nicht gefunden: ${file}`);
|
|
51
|
+
}
|
|
52
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
53
|
+
console.log(`die Datei: '${filePath}' wurde ausgelesen`);
|
|
54
|
+
return content;
|
|
55
|
+
}
|
|
56
|
+
export async function readAllFilesInDir(dir) {
|
|
57
|
+
const dirPath = path.join(getProjectRoot(), dir);
|
|
58
|
+
const files = [];
|
|
59
|
+
async function readDir(currentPath) {
|
|
60
|
+
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
61
|
+
for (const entry of entries) {
|
|
62
|
+
const fullPath = path.join(currentPath, entry.name);
|
|
63
|
+
if (entry.isFile()) {
|
|
64
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
65
|
+
files.push(content);
|
|
66
|
+
console.log(`die Datei: '${fullPath}' wurde ausgelesen`);
|
|
67
|
+
}
|
|
68
|
+
else if (entry.isDirectory()) {
|
|
69
|
+
await readDir(fullPath);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
await readDir(dirPath);
|
|
74
|
+
console.log(`der ordner: ${dir} wurde vollständig ausgelesen`);
|
|
75
|
+
return files;
|
|
76
|
+
}
|
|
77
|
+
export async function readFileLines(file) {
|
|
78
|
+
const content = await fs.readFile(file, 'utf-8');
|
|
79
|
+
const lines = content.split('\n');
|
|
80
|
+
console.log(`die Datei: '${file}' wurde Zeile für Zeile ausgelesen und in ein array gepackt`);
|
|
81
|
+
return lines;
|
|
82
|
+
}
|
|
83
|
+
export async function addToFile(file, content) {
|
|
84
|
+
try {
|
|
85
|
+
await fs.appendFile(file, `\n${content}`, 'utf-8');
|
|
86
|
+
console.log(`in Datei: '${file}' wurde Inhalt: '${content}' hinzugefügt`);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
console.error(`Fehler beim Hinzufügen des Inhalts zu der Datei: '${file}': ${e}`);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export async function doesFileExist(file) {
|
|
95
|
+
try {
|
|
96
|
+
await fs.access(file);
|
|
97
|
+
console.log(`die Datei: '${file}' exestiert`);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
console.log(`die Datei: '${file}' exestiert nicht`);
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// running code
|
|
106
|
+
export async function write_n_run(file, content, interpreter, is_subfile = false, ausführen = false) {
|
|
107
|
+
const filePath = path.resolve(file);
|
|
108
|
+
if (is_subfile) {
|
|
109
|
+
const dir = path.dirname(filePath);
|
|
110
|
+
await fs.mkdir(dir, { recursive: true });
|
|
111
|
+
}
|
|
112
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
113
|
+
console.log(`die ${interpreter} Code-Datei: '${file}' wurde erstellt`);
|
|
114
|
+
if (ausführen) {
|
|
115
|
+
await execAsync(`${interpreter} ${filePath}`);
|
|
116
|
+
console.log(`die ${interpreter} Code-Datei: '${file}' wird ausgeführt`);
|
|
117
|
+
}
|
|
118
|
+
return filePath;
|
|
119
|
+
}
|
|
120
|
+
export async function write_n_run_py(file, content, is_subfile = false, aus_führen = false) {
|
|
121
|
+
return write_n_run(file, content, 'python3', is_subfile, aus_führen);
|
|
122
|
+
}
|
|
123
|
+
export async function write_n_run_js(file, content, is_subfile = false, aus_führen = false) {
|
|
124
|
+
return write_n_run(file, content, 'node', is_subfile, aus_führen);
|
|
125
|
+
}
|
|
126
|
+
// removing
|
|
127
|
+
export async function removeFile(file) {
|
|
128
|
+
try {
|
|
129
|
+
await fs.unlink(file);
|
|
130
|
+
console.log(`die Datei: '${file}' wurde gelöscht`);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
// Datei existiert nicht oder kann nicht gelöscht werden
|
|
135
|
+
console.error(`Fehler beim Löschen der Datei: '${file}': ${e}`);
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=file-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/server/file-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function sendEmail({ to, from, subject, text, attachments }: {
|
|
2
|
+
to: string;
|
|
3
|
+
from: string;
|
|
4
|
+
subject: string;
|
|
5
|
+
text: string;
|
|
6
|
+
attachments?: {
|
|
7
|
+
filename: string;
|
|
8
|
+
content: string | Buffer;
|
|
9
|
+
}[];
|
|
10
|
+
}): Promise<import("nodemailer/lib/smtp-transport").SentMessageInfo>;
|
|
11
|
+
export declare function emailMe({ subject, text, attachments }: {
|
|
12
|
+
subject: string;
|
|
13
|
+
text: string;
|
|
14
|
+
attachments?: {
|
|
15
|
+
filename: string;
|
|
16
|
+
content: string | Buffer;
|
|
17
|
+
}[];
|
|
18
|
+
}): Promise<import("nodemailer/lib/smtp-transport").SentMessageInfo>;
|
|
19
|
+
//# sourceMappingURL=mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/server/mail.ts"],"names":[],"mappings":"AAYA,wBAAsB,SAAS,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,WAAW,EAAC,EAAE;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAA;CAAC,oEAgB5L;AAED,wBAAsB,OAAO,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAC,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAA;CAAC,oEAexJ"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import nodemailer from "nodemailer";
|
|
2
|
+
const transporter = nodemailer.createTransport({
|
|
3
|
+
host: "smtp.zoho.eu",
|
|
4
|
+
port: 465,
|
|
5
|
+
secure: true,
|
|
6
|
+
auth: {
|
|
7
|
+
user: "delo@recruitvoiceai.de",
|
|
8
|
+
pass: process.env.MAIL_PASS
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export async function sendEmail({ to, from, subject, text, attachments }) {
|
|
12
|
+
try {
|
|
13
|
+
const info = await transporter.sendMail({
|
|
14
|
+
from,
|
|
15
|
+
to,
|
|
16
|
+
subject,
|
|
17
|
+
text,
|
|
18
|
+
attachments
|
|
19
|
+
});
|
|
20
|
+
console.log("Mail sent:", info.messageId);
|
|
21
|
+
return info;
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error("Error sending mail:", err);
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export async function emailMe({ subject, text, attachments }) {
|
|
29
|
+
try {
|
|
30
|
+
const info = await transporter.sendMail({
|
|
31
|
+
from: `"RecruitAI" <delo@recruitvoiceai.de>`,
|
|
32
|
+
to: `faragdelo@gmail.com`,
|
|
33
|
+
subject,
|
|
34
|
+
text,
|
|
35
|
+
attachments
|
|
36
|
+
});
|
|
37
|
+
console.log("Mail sent:", info.messageId);
|
|
38
|
+
return info;
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
console.error("Error sending mail:", err);
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=mail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/server/mail.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;IAC7C,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE;QACJ,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;KAC5B;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,WAAW,EAA4H;IAC3L,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC;YACtC,IAAI;YACJ,EAAE;YACF,OAAO;YACP,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAkG;IACvJ,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC;YACtC,IAAI,EAAE,sCAAsC;YAC5C,EAAE,EAAE,qBAAqB;YACzB,OAAO;YACP,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pino-logger.d.ts","sourceRoot":"","sources":["../../src/server/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,eAAO,MAAM,MAAM,6BAeb,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import pino from "pino";
|
|
2
|
+
const isDevelopment = process.env.NODE_ENV === "development" || process.env.NODE_ENV === undefined;
|
|
3
|
+
export const logger = isDevelopment
|
|
4
|
+
? pino({
|
|
5
|
+
transport: {
|
|
6
|
+
target: "pino-pretty",
|
|
7
|
+
options: {
|
|
8
|
+
colorize: true,
|
|
9
|
+
translateTime: "HH:MM:ss",
|
|
10
|
+
ignore: "pid,hostname",
|
|
11
|
+
destination: 1, // stdout
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
level: "debug",
|
|
15
|
+
})
|
|
16
|
+
: pino({
|
|
17
|
+
level: "info",
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=pino-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pino-logger.js","sourceRoot":"","sources":["../../src/server/pino-logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAA;AAElG,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa;IACjC,CAAC,CAAC,IAAI,CAAC;QACH,SAAS,EAAE;YACT,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,UAAU;gBACzB,MAAM,EAAE,cAAc;gBACtB,WAAW,EAAE,CAAC,EAAE,SAAS;aAC1B;SACF;QACD,KAAK,EAAE,OAAO;KACf,CAAC;IACJ,CAAC,CAAC,IAAI,CAAC;QACH,KAAK,EAAE,MAAM;KACd,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@delofarag/base-utils",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./server": {
|
|
13
|
+
"types": "./dist/server/index.d.ts",
|
|
14
|
+
"default": "./dist/server/index.js"
|
|
15
|
+
}
|
|
13
16
|
},
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
"build": "tsc"
|
|
20
|
-
}
|
|
21
|
-
}
|
|
17
|
+
"files": ["dist", "README.md"],
|
|
18
|
+
"scripts": {"build": "tsc"},
|
|
19
|
+
"dependencies": {"dotenv": "^17.2.3", "nodemailer": "^7.0.13", "readline": "^1.3.0"},
|
|
20
|
+
"devDependencies": {"@types/node": "^20.0.0", "@types/nodemailer": "^7.0.9", "typescript": "^5.0.0"}
|
|
21
|
+
}
|