@ereactthohir/core 1.3.0 → 1.5.0
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/README.md +16 -22
- package/dist/database/Schema.d.ts +20 -0
- package/dist/database/Schema.d.ts.map +1 -0
- package/dist/database/Schema.js +73 -0
- package/dist/database/Schema.js.map +1 -0
- package/dist/foundation/Application.js +1 -1
- package/dist/foundation/Backup.d.ts +11 -0
- package/dist/foundation/Backup.d.ts.map +1 -0
- package/dist/foundation/Backup.js +48 -0
- package/dist/foundation/Backup.js.map +1 -0
- package/dist/foundation/Events.d.ts +9 -3
- package/dist/foundation/Events.d.ts.map +1 -1
- package/dist/foundation/Events.js +31 -7
- package/dist/foundation/Events.js.map +1 -1
- package/dist/foundation/Health.d.ts +20 -0
- package/dist/foundation/Health.d.ts.map +1 -0
- package/dist/foundation/Health.js +31 -0
- package/dist/foundation/Health.js.map +1 -0
- package/dist/foundation/Lang.d.ts +21 -0
- package/dist/foundation/Lang.d.ts.map +1 -0
- package/dist/foundation/Lang.js +37 -0
- package/dist/foundation/Lang.js.map +1 -0
- package/dist/foundation/Logger.d.ts +3 -0
- package/dist/foundation/Logger.d.ts.map +1 -1
- package/dist/foundation/Logger.js +21 -3
- package/dist/foundation/Logger.js.map +1 -1
- package/dist/foundation/Mail.d.ts +14 -0
- package/dist/foundation/Mail.d.ts.map +1 -0
- package/dist/foundation/Mail.js +26 -0
- package/dist/foundation/Mail.js.map +1 -0
- package/dist/foundation/Storage.d.ts +8 -0
- package/dist/foundation/Storage.d.ts.map +1 -0
- package/dist/foundation/Storage.js +35 -0
- package/dist/foundation/Storage.js.map +1 -0
- package/dist/http/ApiResponse.d.ts +9 -0
- package/dist/http/ApiResponse.d.ts.map +1 -1
- package/dist/http/ApiResponse.js +23 -1
- package/dist/http/ApiResponse.js.map +1 -1
- package/dist/http/Controller.d.ts +24 -0
- package/dist/http/Controller.d.ts.map +1 -1
- package/dist/http/Controller.js +50 -0
- package/dist/http/Controller.js.map +1 -1
- package/dist/http/ExceptionHandler.d.ts +3 -1
- package/dist/http/ExceptionHandler.d.ts.map +1 -1
- package/dist/http/ExceptionHandler.js +151 -8
- package/dist/http/ExceptionHandler.js.map +1 -1
- package/dist/http/Kernel.d.ts +1 -0
- package/dist/http/Kernel.d.ts.map +1 -1
- package/dist/http/Kernel.js +2 -0
- package/dist/http/Kernel.js.map +1 -1
- package/dist/http/Middleware/SetLocale.d.ts +12 -0
- package/dist/http/Middleware/SetLocale.d.ts.map +1 -0
- package/dist/http/Middleware/SetLocale.js +20 -0
- package/dist/http/Middleware/SetLocale.js.map +1 -0
- package/dist/http/Request.d.ts +1 -1
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +9 -20
- package/dist/http/Request.js.map +1 -1
- package/dist/http/Resource.d.ts +23 -0
- package/dist/http/Resource.d.ts.map +1 -0
- package/dist/http/Resource.js +29 -0
- package/dist/http/Resource.js.map +1 -0
- package/dist/http/Router.d.ts +4 -0
- package/dist/http/Router.d.ts.map +1 -1
- package/dist/http/Router.js +35 -0
- package/dist/http/Router.js.map +1 -1
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/security/Encryption.d.ts +14 -0
- package/dist/security/Encryption.d.ts.map +1 -0
- package/dist/security/Encryption.js +36 -0
- package/dist/security/Encryption.js.map +1 -0
- package/dist/security/Hash.d.ts +16 -0
- package/dist/security/Hash.d.ts.map +1 -0
- package/dist/security/Hash.js +30 -0
- package/dist/security/Hash.js.map +1 -0
- package/dist/services/Ai.d.ts +26 -0
- package/dist/services/Ai.d.ts.map +1 -0
- package/dist/services/Ai.js +30 -0
- package/dist/services/Ai.js.map +1 -0
- package/dist/services/Broadcast.d.ts +12 -0
- package/dist/services/Broadcast.d.ts.map +1 -0
- package/dist/services/Broadcast.js +26 -0
- package/dist/services/Broadcast.js.map +1 -0
- package/dist/services/Payment.d.ts +41 -0
- package/dist/services/Payment.d.ts.map +1 -0
- package/dist/services/Payment.js +49 -0
- package/dist/services/Payment.js.map +1 -0
- package/dist/services/Search.d.ts +14 -0
- package/dist/services/Search.d.ts.map +1 -0
- package/dist/services/Search.js +25 -0
- package/dist/services/Search.js.map +1 -0
- package/dist/services/Validator.d.ts.map +1 -1
- package/dist/services/Validator.js +19 -0
- package/dist/services/Validator.js.map +1 -1
- package/dist/services/ai/GeminiDriver.d.ts +12 -0
- package/dist/services/ai/GeminiDriver.d.ts.map +1 -0
- package/dist/services/ai/GeminiDriver.js +23 -0
- package/dist/services/ai/GeminiDriver.js.map +1 -0
- package/dist/services/ai/OllamaDriver.d.ts +12 -0
- package/dist/services/ai/OllamaDriver.d.ts.map +1 -0
- package/dist/services/ai/OllamaDriver.js +22 -0
- package/dist/services/ai/OllamaDriver.js.map +1 -0
- package/dist/services/ai/OpenAiDriver.d.ts +12 -0
- package/dist/services/ai/OpenAiDriver.d.ts.map +1 -0
- package/dist/services/ai/OpenAiDriver.js +22 -0
- package/dist/services/ai/OpenAiDriver.js.map +1 -0
- package/dist/services/ai/index.d.ts +4 -0
- package/dist/services/ai/index.d.ts.map +1 -0
- package/dist/services/ai/index.js +20 -0
- package/dist/services/ai/index.js.map +1 -0
- package/dist/services/payments/DuitkuDriver.d.ts +14 -0
- package/dist/services/payments/DuitkuDriver.d.ts.map +1 -0
- package/dist/services/payments/DuitkuDriver.js +28 -0
- package/dist/services/payments/DuitkuDriver.js.map +1 -0
- package/dist/services/payments/DurianpayDriver.d.ts +12 -0
- package/dist/services/payments/DurianpayDriver.d.ts.map +1 -0
- package/dist/services/payments/DurianpayDriver.js +25 -0
- package/dist/services/payments/DurianpayDriver.js.map +1 -0
- package/dist/services/payments/MidtransDriver.d.ts +14 -0
- package/dist/services/payments/MidtransDriver.d.ts.map +1 -0
- package/dist/services/payments/MidtransDriver.js +31 -0
- package/dist/services/payments/MidtransDriver.js.map +1 -0
- package/dist/services/payments/StripeDriver.d.ts +12 -0
- package/dist/services/payments/StripeDriver.d.ts.map +1 -0
- package/dist/services/payments/StripeDriver.js +28 -0
- package/dist/services/payments/StripeDriver.js.map +1 -0
- package/dist/services/payments/index.d.ts +5 -0
- package/dist/services/payments/index.d.ts.map +1 -0
- package/dist/services/payments/index.js +21 -0
- package/dist/services/payments/index.js.map +1 -0
- package/package.json +43 -38
package/README.md
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
# @ereactthohir/core
|
|
1
|
+
# @ereactthohir/core 🏛️
|
|
2
2
|
|
|
3
|
-
The core
|
|
3
|
+
The core foundation of the **EreactThohir** framework.
|
|
4
4
|
|
|
5
|
-
## 🚀
|
|
5
|
+
## 🚀 Features
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- Validation & Security
|
|
7
|
+
- **High Performance Kernel**: Efficient request/response handling.
|
|
8
|
+
- **Advanced Routing**: Express-like routing with middleware support.
|
|
9
|
+
- **Dependency Injection**: Modular service providers.
|
|
10
|
+
- **Built-in Security**: Helmet, CORS, and CSRF support.
|
|
11
|
+
- **Typed Core**: Fully written in TypeScript for the best DX.
|
|
13
12
|
|
|
14
13
|
## 📦 Installation
|
|
15
14
|
|
|
@@ -17,23 +16,18 @@ The core framework for **EreactThohir**, providing the foundation for enterprise
|
|
|
17
16
|
npm install @ereactthohir/core
|
|
18
17
|
```
|
|
19
18
|
|
|
20
|
-
##
|
|
19
|
+
## 🛠️ Usage
|
|
21
20
|
|
|
22
|
-
```
|
|
23
|
-
import {
|
|
21
|
+
```ts
|
|
22
|
+
import { Kernel, Route } from '@ereactthohir/core';
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
static table = 'users';
|
|
27
|
-
}
|
|
24
|
+
Route.get('/', (req, res) => res.json({ hello: 'world' }));
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
const kernel = new Kernel();
|
|
27
|
+
kernel.handle();
|
|
28
|
+
kernel.listen(3000);
|
|
31
29
|
```
|
|
32
30
|
|
|
33
|
-
## 👤 Author
|
|
34
|
-
|
|
35
|
-
**KangPCode (Dhafa Nazula Permadi)**
|
|
36
|
-
|
|
37
31
|
## 📄 License
|
|
38
32
|
|
|
39
|
-
MIT
|
|
33
|
+
Licensed under the [MIT License](../../LICENSE).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class Blueprint {
|
|
2
|
+
private commands;
|
|
3
|
+
private table;
|
|
4
|
+
constructor(table: string);
|
|
5
|
+
increments(column: string): this;
|
|
6
|
+
string(column: string, length?: number): this;
|
|
7
|
+
text(column: string): this;
|
|
8
|
+
integer(column: string): this;
|
|
9
|
+
boolean(column: string): this;
|
|
10
|
+
timestamps(): this;
|
|
11
|
+
nullable(): this;
|
|
12
|
+
unique(): this;
|
|
13
|
+
default(value: any): this;
|
|
14
|
+
toString(): string;
|
|
15
|
+
}
|
|
16
|
+
export declare class Schema {
|
|
17
|
+
static create(table: string, callback: (table: Blueprint) => void): Promise<void>;
|
|
18
|
+
static dropIfExists(table: string): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/database/Schema.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,EAAE,MAAM;IAIlB,UAAU,CAAC,MAAM,EAAE,MAAM;IAKzB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY;IAK3C,IAAI,CAAC,MAAM,EAAE,MAAM;IAKnB,OAAO,CAAC,MAAM,EAAE,MAAM;IAKtB,OAAO,CAAC,MAAM,EAAE,MAAM;IAKtB,UAAU;IAMV,QAAQ;IAOR,MAAM;IAON,OAAO,CAAC,KAAK,EAAE,GAAG;IAQlB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,MAAM;WACF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI;WAS1D,YAAY,CAAC,KAAK,EAAE,MAAM;CAI1C"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Schema = exports.Blueprint = void 0;
|
|
4
|
+
class Blueprint {
|
|
5
|
+
constructor(table) {
|
|
6
|
+
this.commands = [];
|
|
7
|
+
this.table = table;
|
|
8
|
+
}
|
|
9
|
+
increments(column) {
|
|
10
|
+
this.commands.push(`\`${column}\` INT AUTO_INCREMENT PRIMARY KEY`);
|
|
11
|
+
return this;
|
|
12
|
+
}
|
|
13
|
+
string(column, length = 255) {
|
|
14
|
+
this.commands.push(`\`${column}\` VARCHAR(${length})`);
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
text(column) {
|
|
18
|
+
this.commands.push(`\`${column}\` TEXT`);
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
integer(column) {
|
|
22
|
+
this.commands.push(`\`${column}\` INT`);
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
boolean(column) {
|
|
26
|
+
this.commands.push(`\`${column}\` TINYINT(1)`);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
timestamps() {
|
|
30
|
+
this.commands.push(`\`created_at\` TIMESTAMP DEFAULT CURRENT_TIMESTAMP`);
|
|
31
|
+
this.commands.push(`\`updated_at\` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`);
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
nullable() {
|
|
35
|
+
if (this.commands.length > 0) {
|
|
36
|
+
this.commands[this.commands.length - 1] += ' NULL';
|
|
37
|
+
}
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
unique() {
|
|
41
|
+
if (this.commands.length > 0) {
|
|
42
|
+
this.commands[this.commands.length - 1] += ' UNIQUE';
|
|
43
|
+
}
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
default(value) {
|
|
47
|
+
if (this.commands.length > 0) {
|
|
48
|
+
const formattedValue = typeof value === 'string' ? `'${value}'` : value;
|
|
49
|
+
this.commands[this.commands.length - 1] += ` DEFAULT ${formattedValue}`;
|
|
50
|
+
}
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
toString() {
|
|
54
|
+
return `CREATE TABLE IF NOT EXISTS \`${this.table}\` (\n ${this.commands.join(',\n ')}\n);`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Blueprint = Blueprint;
|
|
58
|
+
class Schema {
|
|
59
|
+
static async create(table, callback) {
|
|
60
|
+
const blueprint = new Blueprint(table);
|
|
61
|
+
callback(blueprint);
|
|
62
|
+
const sql = blueprint.toString();
|
|
63
|
+
console.log(`[Schema] Creating table: ${table}`);
|
|
64
|
+
console.log(sql);
|
|
65
|
+
// Link to database driver here
|
|
66
|
+
}
|
|
67
|
+
static async dropIfExists(table) {
|
|
68
|
+
console.log(`[Schema] Dropping table: ${table}`);
|
|
69
|
+
console.log(`DROP TABLE IF EXISTS \`${table}\``);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.Schema = Schema;
|
|
73
|
+
//# sourceMappingURL=Schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/database/Schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ class Application extends Container_1.Container {
|
|
|
14
14
|
super();
|
|
15
15
|
this.providers = [];
|
|
16
16
|
this.isBooted = false;
|
|
17
|
-
this.version = '1.
|
|
17
|
+
this.version = '1.4.0';
|
|
18
18
|
this.basePath = basePath;
|
|
19
19
|
this.config = new Config_1.Config();
|
|
20
20
|
this.hooks = new Hooks_1.Hooks();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Backup.d.ts","sourceRoot":"","sources":["../../src/foundation/Backup.ts"],"names":[],"mappings":"AAKA,qBAAa,MAAM;IACf;;OAEG;WACiB,GAAG;IAyBvB;;OAEG;WACiB,IAAI;CAO3B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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.Backup = void 0;
|
|
7
|
+
const Storage_1 = require("./Storage");
|
|
8
|
+
const Logger_1 = require("./Logger");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
class Backup {
|
|
12
|
+
/**
|
|
13
|
+
* Run the backup process
|
|
14
|
+
*/
|
|
15
|
+
static async run() {
|
|
16
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
17
|
+
const backupName = `backup-${timestamp}.json`;
|
|
18
|
+
Logger_1.Logger.info('Starting system backup...');
|
|
19
|
+
try {
|
|
20
|
+
// Simplified: In real app, this would dump database and zip storage
|
|
21
|
+
const data = {
|
|
22
|
+
version: '1.4.0',
|
|
23
|
+
timestamp: new Date().toISOString(),
|
|
24
|
+
tables: ['users', 'products', 'orders'],
|
|
25
|
+
disk_usage: '45MB'
|
|
26
|
+
};
|
|
27
|
+
await Storage_1.Storage.put(`backups/${backupName}`, JSON.stringify(data, null, 2));
|
|
28
|
+
Logger_1.Logger.success(`Backup completed: backups/${backupName}`);
|
|
29
|
+
return backupName;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
Logger_1.Logger.error('Backup failed:', error);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List all available backups
|
|
38
|
+
*/
|
|
39
|
+
static async list() {
|
|
40
|
+
const backupDir = path_1.default.join(process.cwd(), 'storage/app/backups');
|
|
41
|
+
if (await fs_extra_1.default.pathExists(backupDir)) {
|
|
42
|
+
return await fs_extra_1.default.readdir(backupDir);
|
|
43
|
+
}
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Backup = Backup;
|
|
48
|
+
//# sourceMappingURL=Backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Backup.js","sourceRoot":"","sources":["../../src/foundation/Backup.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAoC;AACpC,qCAAkC;AAClC,gDAAwB;AACxB,wDAA0B;AAE1B,MAAa,MAAM;IACf;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,GAAG;QACnB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,UAAU,SAAS,OAAO,CAAC;QAE9C,eAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEzC,IAAI,CAAC;YACD,oEAAoE;YACpE,MAAM,IAAI,GAAG;gBACT,OAAO,EAAE,OAAO;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;gBACvC,UAAU,EAAE,MAAM;aACrB,CAAC;YAEF,MAAM,iBAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAE1E,eAAM,CAAC,OAAO,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;YAC1D,OAAO,UAAU,CAAC;QACtB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,eAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI;QACpB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAClE,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO,MAAM,kBAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAvCD,wBAuCC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
type Listener = (data: any) => void
|
|
1
|
+
type Listener = (data: any) => void | Promise<void>;
|
|
2
2
|
export declare class EventDispatcher {
|
|
3
3
|
private listeners;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Register an event listener.
|
|
6
|
+
*/
|
|
7
|
+
listen(event: string | any, listener: Listener): void;
|
|
8
|
+
/**
|
|
9
|
+
* Dispatch an event.
|
|
10
|
+
*/
|
|
11
|
+
dispatch(event: string | any, data?: any): Promise<void>;
|
|
6
12
|
}
|
|
7
13
|
export declare const Events: EventDispatcher;
|
|
8
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../src/foundation/Events.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../src/foundation/Events.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpD,qBAAa,eAAe;IACxB,OAAO,CAAC,SAAS,CAAsC;IAEvD;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ;IAQrD;;OAEG;IACU,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG;CAuBxD;AAED,eAAO,MAAM,MAAM,iBAAwB,CAAC"}
|
|
@@ -5,16 +5,40 @@ class EventDispatcher {
|
|
|
5
5
|
constructor() {
|
|
6
6
|
this.listeners = new Map();
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Register an event listener.
|
|
10
|
+
*/
|
|
11
|
+
listen(event, listener) {
|
|
12
|
+
const eventName = typeof event === 'string' ? event : event.name;
|
|
13
|
+
if (!this.listeners.has(eventName)) {
|
|
14
|
+
this.listeners.set(eventName, []);
|
|
11
15
|
}
|
|
12
|
-
this.listeners.get(
|
|
16
|
+
this.listeners.get(eventName).push(listener);
|
|
13
17
|
}
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Dispatch an event.
|
|
20
|
+
*/
|
|
21
|
+
async dispatch(event, data) {
|
|
22
|
+
let eventName;
|
|
23
|
+
let eventData;
|
|
24
|
+
if (typeof event === 'string') {
|
|
25
|
+
eventName = event;
|
|
26
|
+
eventData = data;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
eventName = event.constructor.name;
|
|
30
|
+
eventData = event;
|
|
31
|
+
}
|
|
32
|
+
const eventListeners = this.listeners.get(eventName);
|
|
16
33
|
if (eventListeners) {
|
|
17
|
-
eventListeners.
|
|
34
|
+
await Promise.all(eventListeners.map(listener => {
|
|
35
|
+
try {
|
|
36
|
+
return Promise.resolve(listener(eventData));
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error(`Error in event listener for ${eventName}:`, error);
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
18
42
|
}
|
|
19
43
|
}
|
|
20
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../src/foundation/Events.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAA5B;QACY,cAAS,GAA4B,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Events.js","sourceRoot":"","sources":["../../src/foundation/Events.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAA5B;QACY,cAAS,GAA4B,IAAI,GAAG,EAAE,CAAC;IAuC3D,CAAC;IArCG;;OAEG;IACI,MAAM,CAAC,KAAmB,EAAE,QAAkB;QACjD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,KAAmB,EAAE,IAAU;QACjD,IAAI,SAAiB,CAAC;QACtB,IAAI,SAAc,CAAC;QAEnB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,SAAS,GAAG,KAAK,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YACnC,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC5C,IAAI,CAAC;oBACD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC,CAAC,CAAC,CAAC;QACR,CAAC;IACL,CAAC;CACJ;AAxCD,0CAwCC;AAEY,QAAA,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface HealthResult {
|
|
2
|
+
status: 'ok' | 'warning' | 'error';
|
|
3
|
+
details: Record<string, {
|
|
4
|
+
status: 'ok' | 'error';
|
|
5
|
+
message?: string;
|
|
6
|
+
meta?: any;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
export type HealthChecker = () => Promise<{
|
|
10
|
+
status: 'ok' | 'error';
|
|
11
|
+
message?: string;
|
|
12
|
+
meta?: any;
|
|
13
|
+
}>;
|
|
14
|
+
export declare class Health {
|
|
15
|
+
private checkers;
|
|
16
|
+
check(name: string, checker: HealthChecker): void;
|
|
17
|
+
run(): Promise<HealthResult>;
|
|
18
|
+
}
|
|
19
|
+
export declare const HealthCheck: Health;
|
|
20
|
+
//# sourceMappingURL=Health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Health.d.ts","sourceRoot":"","sources":["../../src/foundation/Health.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CACrF;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;IAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,CAAC;AAEpG,qBAAa,MAAM;IACf,OAAO,CAAC,QAAQ,CAAyC;IAElD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAIpC,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;CAiB5C;AAED,eAAO,MAAM,WAAW,QAAe,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthCheck = exports.Health = void 0;
|
|
4
|
+
class Health {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.checkers = new Map();
|
|
7
|
+
}
|
|
8
|
+
check(name, checker) {
|
|
9
|
+
this.checkers.set(name, checker);
|
|
10
|
+
}
|
|
11
|
+
async run() {
|
|
12
|
+
const details = {};
|
|
13
|
+
let overallStatus = 'ok';
|
|
14
|
+
for (const [name, checker] of this.checkers) {
|
|
15
|
+
try {
|
|
16
|
+
const result = await checker();
|
|
17
|
+
details[name] = result;
|
|
18
|
+
if (result.status === 'error')
|
|
19
|
+
overallStatus = 'error';
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
details[name] = { status: 'error', message: err.message };
|
|
23
|
+
overallStatus = 'error';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return { status: overallStatus, details };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.Health = Health;
|
|
30
|
+
exports.HealthCheck = new Health();
|
|
31
|
+
//# sourceMappingURL=Health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Health.js","sourceRoot":"","sources":["../../src/foundation/Health.ts"],"names":[],"mappings":";;;AAOA,MAAa,MAAM;IAAnB;QACY,aAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;IAuB7D,CAAC;IArBU,KAAK,CAAC,IAAY,EAAE,OAAsB;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,IAAI,aAAa,GAA2B,IAAI,CAAC;QAEjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBACvB,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;oBAAE,aAAa,GAAG,OAAO,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC1D,aAAa,GAAG,OAAO,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;CACJ;AAxBD,wBAwBC;AAEY,QAAA,WAAW,GAAG,IAAI,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare class Lang {
|
|
2
|
+
private static locales;
|
|
3
|
+
private static currentLocale;
|
|
4
|
+
/**
|
|
5
|
+
* Set the current locale.
|
|
6
|
+
*/
|
|
7
|
+
static setLocale(locale: string): void;
|
|
8
|
+
/**
|
|
9
|
+
* Add translations for a locale.
|
|
10
|
+
*/
|
|
11
|
+
static add(locale: string, translations: Record<string, string>): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get the translation for a key.
|
|
14
|
+
*/
|
|
15
|
+
static get(key: string, replacements?: Record<string, string>): string;
|
|
16
|
+
/**
|
|
17
|
+
* Shortcut for get.
|
|
18
|
+
*/
|
|
19
|
+
static __(key: string, replacements?: Record<string, string>): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Lang.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lang.d.ts","sourceRoot":"","sources":["../../src/foundation/Lang.ts"],"names":[],"mappings":"AAAA,qBAAa,IAAI;IACb,OAAO,CAAC,MAAM,CAAC,OAAO,CAA8C;IACpE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgB;IAE5C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM;IAI/B;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI/D;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM;IAU1E;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM;CAG5E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Lang = void 0;
|
|
4
|
+
class Lang {
|
|
5
|
+
/**
|
|
6
|
+
* Set the current locale.
|
|
7
|
+
*/
|
|
8
|
+
static setLocale(locale) {
|
|
9
|
+
this.currentLocale = locale;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Add translations for a locale.
|
|
13
|
+
*/
|
|
14
|
+
static add(locale, translations) {
|
|
15
|
+
this.locales[locale] = { ...this.locales[locale], ...translations };
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get the translation for a key.
|
|
19
|
+
*/
|
|
20
|
+
static get(key, replacements = {}) {
|
|
21
|
+
let line = this.locales[this.currentLocale]?.[key] || key;
|
|
22
|
+
Object.entries(replacements).forEach(([k, v]) => {
|
|
23
|
+
line = line.replace(`:${k}`, v);
|
|
24
|
+
});
|
|
25
|
+
return line;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Shortcut for get.
|
|
29
|
+
*/
|
|
30
|
+
static __(key, replacements = {}) {
|
|
31
|
+
return this.get(key, replacements);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.Lang = Lang;
|
|
35
|
+
Lang.locales = {};
|
|
36
|
+
Lang.currentLocale = 'en';
|
|
37
|
+
//# sourceMappingURL=Lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lang.js","sourceRoot":"","sources":["../../src/foundation/Lang.ts"],"names":[],"mappings":";;;AAAA,MAAa,IAAI;IAIb;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAc;QAC3B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,YAAoC;QAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,eAAuC,EAAE;QAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAE1D,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,GAAW,EAAE,eAAuC,EAAE;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;;AApCL,oBAqCC;AApCkB,YAAO,GAA2C,EAAE,CAAC;AACrD,kBAAa,GAAW,IAAI,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export declare class Logger {
|
|
2
|
+
private static getTime;
|
|
2
3
|
static info(message: string): void;
|
|
4
|
+
static success(message: string): void;
|
|
3
5
|
static error(message: string, error?: any): void;
|
|
4
6
|
static warn(message: string): void;
|
|
7
|
+
static debug(message: string): void;
|
|
5
8
|
}
|
|
6
9
|
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/foundation/Logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/foundation/Logger.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAI3B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM;IAI9B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAOzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAI3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM;CAK/B"}
|
|
@@ -1,15 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Logger = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
4
8
|
class Logger {
|
|
9
|
+
static getTime() {
|
|
10
|
+
return new Date().toISOString();
|
|
11
|
+
}
|
|
5
12
|
static info(message) {
|
|
6
|
-
console.log(
|
|
13
|
+
console.log(`${chalk_1.default.blue('[INFO]')} [${this.getTime()}] ${message}`);
|
|
14
|
+
}
|
|
15
|
+
static success(message) {
|
|
16
|
+
console.log(`${chalk_1.default.green('[SUCCESS]')} [${this.getTime()}] ${message}`);
|
|
7
17
|
}
|
|
8
18
|
static error(message, error) {
|
|
9
|
-
console.error(
|
|
19
|
+
console.error(`${chalk_1.default.red('[ERROR]')} [${this.getTime()}] ${message}`);
|
|
20
|
+
if (error) {
|
|
21
|
+
console.error(error);
|
|
22
|
+
}
|
|
10
23
|
}
|
|
11
24
|
static warn(message) {
|
|
12
|
-
console.warn(
|
|
25
|
+
console.warn(`${chalk_1.default.yellow('[WARN]')} [${this.getTime()}] ${message}`);
|
|
26
|
+
}
|
|
27
|
+
static debug(message) {
|
|
28
|
+
if (process.env.APP_DEBUG === 'true') {
|
|
29
|
+
console.log(`${chalk_1.default.magenta('[DEBUG]')} [${this.getTime()}] ${message}`);
|
|
30
|
+
}
|
|
13
31
|
}
|
|
14
32
|
}
|
|
15
33
|
exports.Logger = Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/foundation/Logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/foundation/Logger.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,MAAM;IACP,MAAM,CAAC,OAAO;QAClB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,KAAW;QACrC,OAAO,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QACxB,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;CACJ;AA7BD,wBA6BC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface MailConfig {
|
|
2
|
+
driver: 'smtp' | 'log' | 'ses';
|
|
3
|
+
host?: string;
|
|
4
|
+
port?: number;
|
|
5
|
+
user?: string;
|
|
6
|
+
pass?: string;
|
|
7
|
+
from: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class Mail {
|
|
10
|
+
private static config;
|
|
11
|
+
static setConfig(config: MailConfig): void;
|
|
12
|
+
static send(to: string, subject: string, body: string): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Mail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mail.d.ts","sourceRoot":"","sources":["../../src/foundation/Mail.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,IAAI;IACb,OAAO,CAAC,MAAM,CAAC,MAAM,CAGnB;IAEF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU;WAItB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAY9D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mail = void 0;
|
|
4
|
+
const Logger_1 = require("./Logger");
|
|
5
|
+
class Mail {
|
|
6
|
+
static setConfig(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
static async send(to, subject, body) {
|
|
10
|
+
if (this.config.driver === 'log') {
|
|
11
|
+
Logger_1.Logger.info(`Mailing to: ${to}`);
|
|
12
|
+
Logger_1.Logger.info(`Subject: ${subject}`);
|
|
13
|
+
Logger_1.Logger.info(`Body: ${body}`);
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
// TODO: Implement SMTP/SES drivers
|
|
17
|
+
Logger_1.Logger.warn('Mail driver not fully implemented. Falling back to log.');
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.Mail = Mail;
|
|
22
|
+
Mail.config = {
|
|
23
|
+
driver: 'log',
|
|
24
|
+
from: 'noreply@ereactthohir.com'
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=Mail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mail.js","sourceRoot":"","sources":["../../src/foundation/Mail.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAWlC,MAAa,IAAI;IAMb,MAAM,CAAC,SAAS,CAAC,MAAkB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,OAAe,EAAE,IAAY;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC/B,eAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACjC,eAAM,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YACnC,eAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,mCAAmC;QACnC,eAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IAChB,CAAC;;AArBL,oBAsBC;AArBkB,WAAM,GAAe;IAChC,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,0BAA0B;CACnC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class Storage {
|
|
2
|
+
private static root;
|
|
3
|
+
static put(filePath: string, content: string | Buffer): Promise<void>;
|
|
4
|
+
static get(filePath: string): Promise<NonSharedBuffer | null>;
|
|
5
|
+
static delete(filePath: string): Promise<void>;
|
|
6
|
+
static exists(filePath: string): Promise<boolean>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../src/foundation/Storage.ts"],"names":[],"mappings":"AAIA,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAC,IAAI,CAA2C;WAEjD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;WAO9C,GAAG,CAAC,QAAQ,EAAE,MAAM;WAQpB,MAAM,CAAC,QAAQ,EAAE,MAAM;WAMvB,MAAM,CAAC,QAAQ,EAAE,MAAM;CAGvC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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.Storage = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const Logger_1 = require("./Logger");
|
|
10
|
+
class Storage {
|
|
11
|
+
static async put(filePath, content) {
|
|
12
|
+
const fullPath = path_1.default.join(this.root, filePath);
|
|
13
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(fullPath));
|
|
14
|
+
await fs_extra_1.default.writeFile(fullPath, content);
|
|
15
|
+
Logger_1.Logger.success(`File stored: ${filePath}`);
|
|
16
|
+
}
|
|
17
|
+
static async get(filePath) {
|
|
18
|
+
const fullPath = path_1.default.join(this.root, filePath);
|
|
19
|
+
if (await fs_extra_1.default.pathExists(fullPath)) {
|
|
20
|
+
return await fs_extra_1.default.readFile(fullPath);
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
static async delete(filePath) {
|
|
25
|
+
const fullPath = path_1.default.join(this.root, filePath);
|
|
26
|
+
await fs_extra_1.default.remove(fullPath);
|
|
27
|
+
Logger_1.Logger.info(`File deleted: ${filePath}`);
|
|
28
|
+
}
|
|
29
|
+
static async exists(filePath) {
|
|
30
|
+
return await fs_extra_1.default.pathExists(path_1.default.join(this.root, filePath));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.Storage = Storage;
|
|
34
|
+
Storage.root = path_1.default.join(process.cwd(), 'storage/app');
|
|
35
|
+
//# sourceMappingURL=Storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Storage.js","sourceRoot":"","sources":["../../src/foundation/Storage.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AACxB,qCAAkC;AAElC,MAAa,OAAO;IAGhB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,OAAwB;QACvD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtC,eAAM,CAAC,OAAO,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAgB;QAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAgB;QAChC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,kBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,eAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAgB;QAChC,OAAO,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;;AA1BL,0BA2BC;AA1BkB,YAAI,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC"}
|