@ereactthohir/core 1.1.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 +39 -0
- package/dist/database/MigrationRunner.d.ts +21 -0
- package/dist/database/MigrationRunner.d.ts.map +1 -0
- package/dist/database/MigrationRunner.js +60 -0
- package/dist/database/MigrationRunner.js.map +1 -0
- package/dist/database/Model.d.ts +81 -0
- package/dist/database/Model.d.ts.map +1 -0
- package/dist/database/Model.js +186 -0
- package/dist/database/Model.js.map +1 -0
- package/dist/database/QueryBuilder.d.ts +132 -0
- package/dist/database/QueryBuilder.d.ts.map +1 -0
- package/dist/database/QueryBuilder.js +267 -0
- package/dist/database/QueryBuilder.js.map +1 -0
- package/dist/database/drivers/SawitDriver.d.ts +7 -0
- package/dist/database/drivers/SawitDriver.d.ts.map +1 -0
- package/dist/database/drivers/SawitDriver.js +28 -0
- package/dist/database/drivers/SawitDriver.js.map +1 -0
- package/dist/foundation/Application.d.ts +23 -0
- package/dist/foundation/Application.d.ts.map +1 -0
- package/dist/foundation/Application.js +71 -0
- package/dist/foundation/Application.js.map +1 -0
- package/dist/foundation/Cache.d.ts +35 -0
- package/dist/foundation/Cache.d.ts.map +1 -0
- package/dist/foundation/Cache.js +92 -0
- package/dist/foundation/Cache.js.map +1 -0
- package/dist/foundation/Config.d.ts +9 -0
- package/dist/foundation/Config.d.ts.map +1 -0
- package/dist/foundation/Config.js +31 -0
- package/dist/foundation/Config.js.map +1 -0
- package/dist/foundation/Container.d.ts +24 -0
- package/dist/foundation/Container.d.ts.map +1 -0
- package/dist/foundation/Container.js +94 -0
- package/dist/foundation/Container.js.map +1 -0
- package/dist/foundation/Env.d.ts +17 -0
- package/dist/foundation/Env.d.ts.map +1 -0
- package/dist/foundation/Env.js +57 -0
- package/dist/foundation/Env.js.map +1 -0
- package/dist/foundation/Events.d.ts +9 -0
- package/dist/foundation/Events.d.ts.map +1 -0
- package/dist/foundation/Events.js +23 -0
- package/dist/foundation/Events.js.map +1 -0
- package/dist/foundation/Hooks.d.ts +9 -0
- package/dist/foundation/Hooks.d.ts.map +1 -0
- package/dist/foundation/Hooks.js +28 -0
- package/dist/foundation/Hooks.js.map +1 -0
- package/dist/foundation/Logger.d.ts +6 -0
- package/dist/foundation/Logger.d.ts.map +1 -0
- package/dist/foundation/Logger.js +16 -0
- package/dist/foundation/Logger.js.map +1 -0
- package/dist/foundation/Middleware.d.ts +7 -0
- package/dist/foundation/Middleware.d.ts.map +1 -0
- package/dist/foundation/Middleware.js +7 -0
- package/dist/foundation/Middleware.js.map +1 -0
- package/dist/foundation/Pipeline.d.ts +14 -0
- package/dist/foundation/Pipeline.d.ts.map +1 -0
- package/dist/foundation/Pipeline.js +63 -0
- package/dist/foundation/Pipeline.js.map +1 -0
- package/dist/foundation/Queue.d.ts +11 -0
- package/dist/foundation/Queue.d.ts.map +1 -0
- package/dist/foundation/Queue.js +38 -0
- package/dist/foundation/Queue.js.map +1 -0
- package/dist/foundation/RateLimiter.d.ts +16 -0
- package/dist/foundation/RateLimiter.d.ts.map +1 -0
- package/dist/foundation/RateLimiter.js +51 -0
- package/dist/foundation/RateLimiter.js.map +1 -0
- package/dist/foundation/Scheduler.d.ts +10 -0
- package/dist/foundation/Scheduler.d.ts.map +1 -0
- package/dist/foundation/Scheduler.js +48 -0
- package/dist/foundation/Scheduler.js.map +1 -0
- package/dist/foundation/ServiceProvider.d.ts +23 -0
- package/dist/foundation/ServiceProvider.d.ts.map +1 -0
- package/dist/foundation/ServiceProvider.js +28 -0
- package/dist/foundation/ServiceProvider.js.map +1 -0
- package/dist/foundation/Session.d.ts +26 -0
- package/dist/foundation/Session.d.ts.map +1 -0
- package/dist/foundation/Session.js +59 -0
- package/dist/foundation/Session.js.map +1 -0
- package/dist/foundation/View.d.ts +6 -0
- package/dist/foundation/View.d.ts.map +1 -0
- package/dist/foundation/View.js +207 -0
- package/dist/foundation/View.js.map +1 -0
- package/dist/http/ApiResponse.d.ts +38 -0
- package/dist/http/ApiResponse.d.ts.map +1 -0
- package/dist/http/ApiResponse.js +152 -0
- package/dist/http/ApiResponse.js.map +1 -0
- package/dist/http/Controller.d.ts +3 -0
- package/dist/http/Controller.d.ts.map +1 -0
- package/dist/http/Controller.js +7 -0
- package/dist/http/Controller.js.map +1 -0
- package/dist/http/ExceptionHandler.d.ts +6 -0
- package/dist/http/ExceptionHandler.d.ts.map +1 -0
- package/dist/http/ExceptionHandler.js +32 -0
- package/dist/http/ExceptionHandler.js.map +1 -0
- package/dist/http/Kernel.d.ts +8 -0
- package/dist/http/Kernel.d.ts.map +1 -0
- package/dist/http/Kernel.js +59 -0
- package/dist/http/Kernel.js.map +1 -0
- package/dist/http/Middleware/AuthMiddleware.d.ts +8 -0
- package/dist/http/Middleware/AuthMiddleware.d.ts.map +1 -0
- package/dist/http/Middleware/AuthMiddleware.js +17 -0
- package/dist/http/Middleware/AuthMiddleware.js.map +1 -0
- package/dist/http/Request.d.ts +35 -0
- package/dist/http/Request.d.ts.map +1 -0
- package/dist/http/Request.js +106 -0
- package/dist/http/Request.js.map +1 -0
- package/dist/http/Response.d.ts +26 -0
- package/dist/http/Response.d.ts.map +1 -0
- package/dist/http/Response.js +90 -0
- package/dist/http/Response.js.map +1 -0
- package/dist/http/Router.d.ts +46 -0
- package/dist/http/Router.d.ts.map +1 -0
- package/dist/http/Router.js +150 -0
- package/dist/http/Router.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/security/CSRF.d.ts +18 -0
- package/dist/security/CSRF.d.ts.map +1 -0
- package/dist/security/CSRF.js +79 -0
- package/dist/security/CSRF.js.map +1 -0
- package/dist/security/Encrypter.d.ts +18 -0
- package/dist/security/Encrypter.d.ts.map +1 -0
- package/dist/security/Encrypter.js +75 -0
- package/dist/security/Encrypter.js.map +1 -0
- package/dist/security/InputSanitizer.d.ts +23 -0
- package/dist/security/InputSanitizer.d.ts.map +1 -0
- package/dist/security/InputSanitizer.js +65 -0
- package/dist/security/InputSanitizer.js.map +1 -0
- package/dist/security/PasswordHasher.d.ts +22 -0
- package/dist/security/PasswordHasher.d.ts.map +1 -0
- package/dist/security/PasswordHasher.js +68 -0
- package/dist/security/PasswordHasher.js.map +1 -0
- package/dist/services/Auth.d.ts +20 -0
- package/dist/services/Auth.d.ts.map +1 -0
- package/dist/services/Auth.js +28 -0
- package/dist/services/Auth.js.map +1 -0
- package/dist/services/Gate.d.ts +10 -0
- package/dist/services/Gate.d.ts.map +1 -0
- package/dist/services/Gate.js +36 -0
- package/dist/services/Gate.js.map +1 -0
- package/dist/services/Service.d.ts +4 -0
- package/dist/services/Service.d.ts.map +1 -0
- package/dist/services/Service.js +7 -0
- package/dist/services/Service.js.map +1 -0
- package/dist/services/Validator.d.ts +8 -0
- package/dist/services/Validator.d.ts.map +1 -0
- package/dist/services/Validator.js +39 -0
- package/dist/services/Validator.js.map +1 -0
- package/dist/src/database/Model.d.ts +13 -0
- package/dist/src/database/Model.d.ts.map +1 -0
- package/dist/src/database/Model.js +37 -0
- package/dist/src/database/Model.js.map +1 -0
- package/dist/src/database/QueryBuilder.d.ts +15 -0
- package/dist/src/database/QueryBuilder.d.ts.map +1 -0
- package/dist/src/database/QueryBuilder.js +43 -0
- package/dist/src/database/QueryBuilder.js.map +1 -0
- package/dist/src/database/drivers/SawitDriver.d.ts +7 -0
- package/dist/src/database/drivers/SawitDriver.d.ts.map +1 -0
- package/dist/src/database/drivers/SawitDriver.js +28 -0
- package/dist/src/database/drivers/SawitDriver.js.map +1 -0
- package/dist/src/foundation/Application.d.ts +13 -0
- package/dist/src/foundation/Application.d.ts.map +1 -0
- package/dist/src/foundation/Application.js +41 -0
- package/dist/src/foundation/Application.js.map +1 -0
- package/dist/src/foundation/Container.d.ts +11 -0
- package/dist/src/foundation/Container.d.ts.map +1 -0
- package/dist/src/foundation/Container.js +43 -0
- package/dist/src/foundation/Container.js.map +1 -0
- package/dist/src/foundation/Events.d.ts +9 -0
- package/dist/src/foundation/Events.d.ts.map +1 -0
- package/dist/src/foundation/Events.js +23 -0
- package/dist/src/foundation/Events.js.map +1 -0
- package/dist/src/foundation/Logger.d.ts +6 -0
- package/dist/src/foundation/Logger.d.ts.map +1 -0
- package/dist/src/foundation/Logger.js +16 -0
- package/dist/src/foundation/Logger.js.map +1 -0
- package/dist/src/foundation/Queue.d.ts +11 -0
- package/dist/src/foundation/Queue.d.ts.map +1 -0
- package/dist/src/foundation/Queue.js +38 -0
- package/dist/src/foundation/Queue.js.map +1 -0
- package/dist/src/foundation/Scheduler.d.ts +10 -0
- package/dist/src/foundation/Scheduler.d.ts.map +1 -0
- package/dist/src/foundation/Scheduler.js +48 -0
- package/dist/src/foundation/Scheduler.js.map +1 -0
- package/dist/src/foundation/ServiceProvider.d.ts +13 -0
- package/dist/src/foundation/ServiceProvider.d.ts.map +1 -0
- package/dist/src/foundation/ServiceProvider.js +14 -0
- package/dist/src/foundation/ServiceProvider.js.map +1 -0
- package/dist/src/foundation/View.d.ts +6 -0
- package/dist/src/foundation/View.d.ts.map +1 -0
- package/dist/src/foundation/View.js +37 -0
- package/dist/src/foundation/View.js.map +1 -0
- package/dist/src/http/Controller.d.ts +3 -0
- package/dist/src/http/Controller.d.ts.map +1 -0
- package/dist/src/http/Controller.js +7 -0
- package/dist/src/http/Controller.js.map +1 -0
- package/dist/src/http/ExceptionHandler.d.ts +6 -0
- package/dist/src/http/ExceptionHandler.d.ts.map +1 -0
- package/dist/src/http/ExceptionHandler.js +32 -0
- package/dist/src/http/ExceptionHandler.js.map +1 -0
- package/dist/src/http/Kernel.d.ts +8 -0
- package/dist/src/http/Kernel.d.ts.map +1 -0
- package/dist/src/http/Kernel.js +58 -0
- package/dist/src/http/Kernel.js.map +1 -0
- package/dist/src/http/Middleware/AuthMiddleware.d.ts +8 -0
- package/dist/src/http/Middleware/AuthMiddleware.d.ts.map +1 -0
- package/dist/src/http/Middleware/AuthMiddleware.js +17 -0
- package/dist/src/http/Middleware/AuthMiddleware.js.map +1 -0
- package/dist/src/http/Router.d.ts +27 -0
- package/dist/src/http/Router.d.ts.map +1 -0
- package/dist/src/http/Router.js +74 -0
- package/dist/src/http/Router.js.map +1 -0
- package/dist/src/index.d.ts +20 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +37 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/services/Auth.d.ts +20 -0
- package/dist/src/services/Auth.d.ts.map +1 -0
- package/dist/src/services/Auth.js +28 -0
- package/dist/src/services/Auth.js.map +1 -0
- package/dist/src/services/Gate.d.ts +10 -0
- package/dist/src/services/Gate.d.ts.map +1 -0
- package/dist/src/services/Gate.js +36 -0
- package/dist/src/services/Gate.js.map +1 -0
- package/dist/src/services/Service.d.ts +4 -0
- package/dist/src/services/Service.d.ts.map +1 -0
- package/dist/src/services/Service.js +7 -0
- package/dist/src/services/Service.js.map +1 -0
- package/dist/src/services/Validator.d.ts +8 -0
- package/dist/src/services/Validator.d.ts.map +1 -0
- package/dist/src/services/Validator.js +39 -0
- package/dist/src/services/Validator.js.map +1 -0
- package/dist/testing/Factory.d.ts +31 -0
- package/dist/testing/Factory.d.ts.map +1 -0
- package/dist/testing/Factory.js +68 -0
- package/dist/testing/Factory.js.map +1 -0
- package/dist/testing/TestHelpers.d.ts +65 -0
- package/dist/testing/TestHelpers.d.ts.map +1 -0
- package/dist/testing/TestHelpers.js +141 -0
- package/dist/testing/TestHelpers.js.map +1 -0
- package/dist/tests/Application.test.d.ts +2 -0
- package/dist/tests/Application.test.d.ts.map +1 -0
- package/dist/tests/Application.test.js +22 -0
- package/dist/tests/Application.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Container = void 0;
|
|
4
|
+
class Container {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.bindings = new Map();
|
|
7
|
+
this.instances = new Map();
|
|
8
|
+
this.resolvers = new Map();
|
|
9
|
+
this.aliases = new Map();
|
|
10
|
+
this.tags = new Map();
|
|
11
|
+
}
|
|
12
|
+
bind(abstract, concrete, singleton = false) {
|
|
13
|
+
this.bindings.set(abstract, { concrete, singleton });
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
singleton(abstract, concrete) {
|
|
17
|
+
this.bind(abstract, concrete, true);
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
instance(abstract, instance) {
|
|
21
|
+
this.instances.set(abstract, instance);
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
resolve(abstract, resolver) {
|
|
25
|
+
this.resolvers.set(abstract, resolver);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
alias(alias, abstract) {
|
|
29
|
+
this.aliases.set(alias, abstract);
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
tag(tags, bindings) {
|
|
33
|
+
bindings.forEach(binding => {
|
|
34
|
+
if (!this.tags.has(binding)) {
|
|
35
|
+
this.tags.set(binding, []);
|
|
36
|
+
}
|
|
37
|
+
this.tags.get(binding).push(...tags);
|
|
38
|
+
});
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
tagged(tag) {
|
|
42
|
+
const results = [];
|
|
43
|
+
this.tags.forEach((bindingTags, binding) => {
|
|
44
|
+
if (bindingTags.includes(tag)) {
|
|
45
|
+
results.push(this.make(binding));
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return results;
|
|
49
|
+
}
|
|
50
|
+
make(abstract) {
|
|
51
|
+
// Handle aliases
|
|
52
|
+
const realAbstract = this.aliases.get(abstract) || abstract;
|
|
53
|
+
if (this.instances.has(realAbstract)) {
|
|
54
|
+
return this.instances.get(realAbstract);
|
|
55
|
+
}
|
|
56
|
+
if (this.resolvers.has(realAbstract)) {
|
|
57
|
+
const instance = this.resolvers.get(realAbstract)(this);
|
|
58
|
+
this.instances.set(realAbstract, instance);
|
|
59
|
+
return instance;
|
|
60
|
+
}
|
|
61
|
+
const binding = this.bindings.get(realAbstract);
|
|
62
|
+
if (!binding) {
|
|
63
|
+
throw new Error(`Target [${abstract}] is not bound in the container.`);
|
|
64
|
+
}
|
|
65
|
+
let instance;
|
|
66
|
+
if (typeof binding.concrete === 'function' && !binding.concrete.prototype) {
|
|
67
|
+
// It's a closure
|
|
68
|
+
instance = binding.concrete(this);
|
|
69
|
+
}
|
|
70
|
+
else if (typeof binding.concrete === 'function') {
|
|
71
|
+
// It's a class
|
|
72
|
+
instance = new binding.concrete();
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// It's a value
|
|
76
|
+
instance = binding.concrete;
|
|
77
|
+
}
|
|
78
|
+
if (binding.singleton) {
|
|
79
|
+
this.instances.set(realAbstract, instance);
|
|
80
|
+
}
|
|
81
|
+
return instance;
|
|
82
|
+
}
|
|
83
|
+
has(abstract) {
|
|
84
|
+
return (this.bindings.has(abstract) ||
|
|
85
|
+
this.instances.has(abstract) ||
|
|
86
|
+
this.resolvers.has(abstract) ||
|
|
87
|
+
this.aliases.has(abstract));
|
|
88
|
+
}
|
|
89
|
+
bound(abstract) {
|
|
90
|
+
return this.has(abstract);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.Container = Container;
|
|
94
|
+
//# sourceMappingURL=Container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/foundation/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Configuration - Secure env variable management
|
|
3
|
+
*/
|
|
4
|
+
export declare class Env {
|
|
5
|
+
private values;
|
|
6
|
+
constructor(envObject?: Record<string, any>);
|
|
7
|
+
get(key: string, defaultValue?: any): any;
|
|
8
|
+
set(key: string, value: any): void;
|
|
9
|
+
has(key: string): boolean;
|
|
10
|
+
string(key: string, defaultValue?: string): string;
|
|
11
|
+
integer(key: string, defaultValue?: number): number;
|
|
12
|
+
boolean(key: string, defaultValue?: boolean): boolean;
|
|
13
|
+
array(key: string, defaultValue?: any[]): any[];
|
|
14
|
+
all(): Record<string, any>;
|
|
15
|
+
fromObject(obj: Record<string, any>): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=Env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Env.d.ts","sourceRoot":"","sources":["../../src/foundation/Env.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAA+B;gBAEjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQ3C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG;IAIzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,SAAK,GAAG,MAAM;IAI9C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM;IAK9C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO;IAOnD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAG,EAAO,GAAG,GAAG,EAAE;IAKnD,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQ1B,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAK3C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Environment Configuration - Secure env variable management
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Env = void 0;
|
|
7
|
+
class Env {
|
|
8
|
+
constructor(envObject) {
|
|
9
|
+
this.values = new Map();
|
|
10
|
+
if (envObject) {
|
|
11
|
+
Object.entries(envObject).forEach(([key, value]) => {
|
|
12
|
+
this.values.set(key, value);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
get(key, defaultValue) {
|
|
17
|
+
return this.values.get(key) ?? defaultValue;
|
|
18
|
+
}
|
|
19
|
+
set(key, value) {
|
|
20
|
+
this.values.set(key, value);
|
|
21
|
+
}
|
|
22
|
+
has(key) {
|
|
23
|
+
return this.values.has(key);
|
|
24
|
+
}
|
|
25
|
+
string(key, defaultValue = '') {
|
|
26
|
+
return String(this.get(key, defaultValue));
|
|
27
|
+
}
|
|
28
|
+
integer(key, defaultValue = 0) {
|
|
29
|
+
const value = this.get(key, defaultValue);
|
|
30
|
+
return typeof value === 'number' ? value : parseInt(String(value), 10);
|
|
31
|
+
}
|
|
32
|
+
boolean(key, defaultValue = false) {
|
|
33
|
+
const value = this.get(key, defaultValue);
|
|
34
|
+
if (typeof value === 'boolean')
|
|
35
|
+
return value;
|
|
36
|
+
const str = String(value).toLowerCase();
|
|
37
|
+
return str === 'true' || str === '1' || str === 'yes';
|
|
38
|
+
}
|
|
39
|
+
array(key, defaultValue = []) {
|
|
40
|
+
const value = this.get(key, defaultValue);
|
|
41
|
+
return Array.isArray(value) ? value : defaultValue;
|
|
42
|
+
}
|
|
43
|
+
all() {
|
|
44
|
+
const result = {};
|
|
45
|
+
this.values.forEach((value, key) => {
|
|
46
|
+
result[key] = value;
|
|
47
|
+
});
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
fromObject(obj) {
|
|
51
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
52
|
+
this.set(key, value);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.Env = Env;
|
|
57
|
+
//# sourceMappingURL=Env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Env.js","sourceRoot":"","sources":["../../src/foundation/Env.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,MAAa,GAAG;IAGd,YAAY,SAA+B;QAFnC,WAAM,GAAqB,IAAI,GAAG,EAAE,CAAC;QAG3C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,YAAkB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAU;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,YAAY,GAAG,EAAE;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,YAAY,GAAG,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,YAAY,GAAG,KAAK;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,eAAsB,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IACrD,CAAC;IAED,GAAG;QACD,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU,CAAC,GAAwB;QACjC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzDD,kBAyDC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type Listener = (data: any) => void;
|
|
2
|
+
export declare class EventDispatcher {
|
|
3
|
+
private listeners;
|
|
4
|
+
on(event: string, listener: Listener): void;
|
|
5
|
+
emit(event: string, data: any): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const Events: EventDispatcher;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=Events.d.ts.map
|
|
@@ -0,0 +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;AAEpC,qBAAa,eAAe;IACxB,OAAO,CAAC,SAAS,CAAsC;IAEhD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAOpC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;CAMvC;AAED,eAAO,MAAM,MAAM,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Events = exports.EventDispatcher = void 0;
|
|
4
|
+
class EventDispatcher {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.listeners = new Map();
|
|
7
|
+
}
|
|
8
|
+
on(event, listener) {
|
|
9
|
+
if (!this.listeners.has(event)) {
|
|
10
|
+
this.listeners.set(event, []);
|
|
11
|
+
}
|
|
12
|
+
this.listeners.get(event).push(listener);
|
|
13
|
+
}
|
|
14
|
+
emit(event, data) {
|
|
15
|
+
const eventListeners = this.listeners.get(event);
|
|
16
|
+
if (eventListeners) {
|
|
17
|
+
eventListeners.forEach(listener => listener(data));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.EventDispatcher = EventDispatcher;
|
|
22
|
+
exports.Events = new EventDispatcher();
|
|
23
|
+
//# sourceMappingURL=Events.js.map
|
|
@@ -0,0 +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;IAe3D,CAAC;IAbU,EAAE,CAAC,KAAa,EAAE,QAAkB;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,IAAS;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,cAAc,EAAE,CAAC;YACjB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;CACJ;AAhBD,0CAgBC;AAEY,QAAA,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type HookCallback = (...args: any[]) => Promise<void> | void;
|
|
2
|
+
export declare class Hooks {
|
|
3
|
+
private hooks;
|
|
4
|
+
on(event: string, callback: HookCallback): void;
|
|
5
|
+
fire(event: string, ...args: any[]): Promise<void>;
|
|
6
|
+
forget(event: string): void;
|
|
7
|
+
forgetAll(): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hooks.d.ts","sourceRoot":"","sources":["../../src/foundation/Hooks.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEpE,qBAAa,KAAK;IACd,OAAO,CAAC,KAAK,CAA0C;IAEhD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAOzC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,SAAS,IAAI,IAAI;CAG3B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hooks = void 0;
|
|
4
|
+
class Hooks {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.hooks = new Map();
|
|
7
|
+
}
|
|
8
|
+
on(event, callback) {
|
|
9
|
+
if (!this.hooks.has(event)) {
|
|
10
|
+
this.hooks.set(event, []);
|
|
11
|
+
}
|
|
12
|
+
this.hooks.get(event).push(callback);
|
|
13
|
+
}
|
|
14
|
+
async fire(event, ...args) {
|
|
15
|
+
const callbacks = this.hooks.get(event) || [];
|
|
16
|
+
for (const callback of callbacks) {
|
|
17
|
+
await Promise.resolve(callback(...args));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
forget(event) {
|
|
21
|
+
this.hooks.delete(event);
|
|
22
|
+
}
|
|
23
|
+
forgetAll() {
|
|
24
|
+
this.hooks.clear();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.Hooks = Hooks;
|
|
28
|
+
//# sourceMappingURL=Hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hooks.js","sourceRoot":"","sources":["../../src/foundation/Hooks.ts"],"names":[],"mappings":";;;AAEA,MAAa,KAAK;IAAlB;QACY,UAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAuB3D,CAAC;IArBU,EAAE,CAAC,KAAa,EAAE,QAAsB;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAa;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,SAAS;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACJ;AAxBD,sBAwBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/foundation/Logger.ts"],"names":[],"mappings":"AAAA,qBAAa,MAAM;IACf,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAI3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAIzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;CAG9B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logger = void 0;
|
|
4
|
+
class Logger {
|
|
5
|
+
static info(message) {
|
|
6
|
+
console.log(`[INFO] [${new Date().toISOString()}] ${message}`);
|
|
7
|
+
}
|
|
8
|
+
static error(message, error) {
|
|
9
|
+
console.error(`[ERROR] [${new Date().toISOString()}] ${message}`, error);
|
|
10
|
+
}
|
|
11
|
+
static warn(message) {
|
|
12
|
+
console.warn(`[WARN] [${new Date().toISOString()}] ${message}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.Logger = Logger;
|
|
16
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/foundation/Logger.ts"],"names":[],"mappings":";;;AAAA,MAAa,MAAM;IACf,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,KAAW;QACrC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;CACJ;AAZD,wBAYC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface IMiddleware {
|
|
2
|
+
handle(request: any, response: any, next: (err?: Error) => Promise<void>): Promise<void>;
|
|
3
|
+
}
|
|
4
|
+
export declare abstract class Middleware implements IMiddleware {
|
|
5
|
+
abstract handle(request: any, response: any, next: (err?: Error) => Promise<void>): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=Middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../../src/foundation/Middleware.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F;AAED,8BAAsB,UAAW,YAAW,WAAW;IACnD,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CACpG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Middleware.js","sourceRoot":"","sources":["../../src/foundation/Middleware.ts"],"names":[],"mappings":";;;AAIA,MAAsB,UAAU;CAE/B;AAFD,gCAEC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline - Advanced request/data processing pipeline
|
|
3
|
+
*/
|
|
4
|
+
export type PipelineCallback<T> = (value: T) => T | Promise<T>;
|
|
5
|
+
export declare class Pipeline<T> {
|
|
6
|
+
private pipes;
|
|
7
|
+
through(...callbacks: PipelineCallback<T>[]): this;
|
|
8
|
+
process(value: T): Promise<T>;
|
|
9
|
+
then(callback: (value: T) => void | Promise<void>): this;
|
|
10
|
+
map<U>(callback: (value: T) => U | Promise<U>): Pipeline<U>;
|
|
11
|
+
filter(callback: (value: T) => boolean): this;
|
|
12
|
+
catch(callback: (error: Error) => T): Pipeline<T>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pipeline.d.ts","sourceRoot":"","sources":["../../src/foundation/Pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE/D,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,KAAK,CAA6B;IAE1C,OAAO,CAAC,GAAG,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAK5C,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAUnC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQxD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAc3D,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI;IAU7C,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;CAWlD"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pipeline - Advanced request/data processing pipeline
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Pipeline = void 0;
|
|
7
|
+
class Pipeline {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.pipes = [];
|
|
10
|
+
}
|
|
11
|
+
through(...callbacks) {
|
|
12
|
+
this.pipes.push(...callbacks);
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
async process(value) {
|
|
16
|
+
let result = value;
|
|
17
|
+
for (const pipe of this.pipes) {
|
|
18
|
+
result = await pipe(result);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
then(callback) {
|
|
23
|
+
this.pipes.push(async (value) => {
|
|
24
|
+
await callback(value);
|
|
25
|
+
return value;
|
|
26
|
+
});
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
map(callback) {
|
|
30
|
+
const newPipeline = new Pipeline();
|
|
31
|
+
newPipeline.pipes = [];
|
|
32
|
+
for (const pipe of this.pipes) {
|
|
33
|
+
newPipeline.pipes.push(async (value) => {
|
|
34
|
+
const processed = await pipe(value);
|
|
35
|
+
return callback(processed);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return newPipeline;
|
|
39
|
+
}
|
|
40
|
+
filter(callback) {
|
|
41
|
+
this.pipes.push((value) => {
|
|
42
|
+
if (!callback(value)) {
|
|
43
|
+
throw new Error('Value filtered out');
|
|
44
|
+
}
|
|
45
|
+
return value;
|
|
46
|
+
});
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
catch(callback) {
|
|
50
|
+
const oldProcess = this.process.bind(this);
|
|
51
|
+
this.process = async (value) => {
|
|
52
|
+
try {
|
|
53
|
+
return await oldProcess(value);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return callback(error);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Pipeline = Pipeline;
|
|
63
|
+
//# sourceMappingURL=Pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../../src/foundation/Pipeline.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIH,MAAa,QAAQ;IAArB;QACU,UAAK,GAA0B,EAAE,CAAC;IA4D5C,CAAC;IA1DC,OAAO,CAAC,GAAG,SAAgC;QACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAQ;QACpB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAA4C;QAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAI,QAAsC;QAC3C,MAAM,WAAW,GAAG,IAAI,QAAQ,EAAK,CAAC;QACtC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;QAEvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAU,EAAE,EAAE;gBAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,QAA+B;QACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,QAA6B;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,KAAQ,EAAE,EAAE;YAChC,IAAI,CAAC;gBACH,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,QAAQ,CAAC,KAAc,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA7DD,4BA6DC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Job {
|
|
2
|
+
handle(): Promise<void>;
|
|
3
|
+
}
|
|
4
|
+
export declare class Queue {
|
|
5
|
+
private jobs;
|
|
6
|
+
private isProcessing;
|
|
7
|
+
dispatch(job: Job): void;
|
|
8
|
+
private process;
|
|
9
|
+
}
|
|
10
|
+
export declare const QueueManager: Queue;
|
|
11
|
+
//# sourceMappingURL=Queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../src/foundation/Queue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAChB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,qBAAa,KAAK;IACd,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,YAAY,CAAkB;IAE/B,QAAQ,CAAC,GAAG,EAAE,GAAG;YAMV,OAAO;CAuBxB;AAED,eAAO,MAAM,YAAY,OAAc,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueueManager = exports.Queue = void 0;
|
|
4
|
+
class Queue {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.jobs = [];
|
|
7
|
+
this.isProcessing = false;
|
|
8
|
+
}
|
|
9
|
+
dispatch(job) {
|
|
10
|
+
this.jobs.push(job);
|
|
11
|
+
console.log(`Job dispatched. Queue size: ${this.jobs.length}`);
|
|
12
|
+
this.process();
|
|
13
|
+
}
|
|
14
|
+
async process() {
|
|
15
|
+
if (this.isProcessing || this.jobs.length === 0)
|
|
16
|
+
return;
|
|
17
|
+
this.isProcessing = true;
|
|
18
|
+
const job = this.jobs.shift();
|
|
19
|
+
if (job) {
|
|
20
|
+
try {
|
|
21
|
+
console.log('Processing job...');
|
|
22
|
+
await job.handle();
|
|
23
|
+
console.log('Job processed successfully.');
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error('Job failed:', error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
this.isProcessing = false;
|
|
30
|
+
// Process next job
|
|
31
|
+
if (this.jobs.length > 0) {
|
|
32
|
+
this.process();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.Queue = Queue;
|
|
37
|
+
exports.QueueManager = new Queue();
|
|
38
|
+
//# sourceMappingURL=Queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../src/foundation/Queue.ts"],"names":[],"mappings":";;;AAIA,MAAa,KAAK;IAAlB;QACY,SAAI,GAAU,EAAE,CAAC;QACjB,iBAAY,GAAY,KAAK,CAAC;IA+B1C,CAAC;IA7BU,QAAQ,CAAC,GAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,OAAO;QACjB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAE9B,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACjC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,mBAAmB;QACnB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ;AAjCD,sBAiCC;AAEY,QAAA,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate Limiter - Prevent abuse with configurable rate limiting
|
|
3
|
+
*/
|
|
4
|
+
export interface RateLimitConfig {
|
|
5
|
+
maxAttempts: number;
|
|
6
|
+
decayMinutes: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class RateLimiter {
|
|
9
|
+
private attempts;
|
|
10
|
+
hit(key: string, config?: RateLimitConfig): Promise<boolean>;
|
|
11
|
+
attempt(key: string, config: RateLimitConfig, callback: () => Promise<any>, onLimitExceeded?: () => Promise<any>): Promise<any>;
|
|
12
|
+
clear(key: string): void;
|
|
13
|
+
remaining(key: string, config: RateLimitConfig): number;
|
|
14
|
+
resetAfter(key: string): number;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=RateLimiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/foundation/RateLimiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAyD;IAEnE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,eAAsD,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBlG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAC5B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GACnC,OAAO,CAAC,GAAG,CAAC;IAWf,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM;IAMvD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAOhC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rate Limiter - Prevent abuse with configurable rate limiting
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RateLimiter = void 0;
|
|
7
|
+
class RateLimiter {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.attempts = new Map();
|
|
10
|
+
}
|
|
11
|
+
async hit(key, config = { maxAttempts: 60, decayMinutes: 1 }) {
|
|
12
|
+
const now = Date.now();
|
|
13
|
+
const entry = this.attempts.get(key);
|
|
14
|
+
if (!entry || entry.resetAt < now) {
|
|
15
|
+
this.attempts.set(key, { count: 1, resetAt: now + config.decayMinutes * 60 * 1000 });
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
if (entry.count < config.maxAttempts) {
|
|
19
|
+
entry.count++;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
async attempt(key, config, callback, onLimitExceeded) {
|
|
25
|
+
const allowed = await this.hit(key, config);
|
|
26
|
+
if (!allowed) {
|
|
27
|
+
if (onLimitExceeded)
|
|
28
|
+
return onLimitExceeded();
|
|
29
|
+
throw new Error('Rate limit exceeded');
|
|
30
|
+
}
|
|
31
|
+
return callback();
|
|
32
|
+
}
|
|
33
|
+
clear(key) {
|
|
34
|
+
this.attempts.delete(key);
|
|
35
|
+
}
|
|
36
|
+
remaining(key, config) {
|
|
37
|
+
const entry = this.attempts.get(key);
|
|
38
|
+
if (!entry || entry.resetAt < Date.now())
|
|
39
|
+
return config.maxAttempts;
|
|
40
|
+
return Math.max(0, config.maxAttempts - entry.count);
|
|
41
|
+
}
|
|
42
|
+
resetAfter(key) {
|
|
43
|
+
const entry = this.attempts.get(key);
|
|
44
|
+
if (!entry)
|
|
45
|
+
return 0;
|
|
46
|
+
const remaining = entry.resetAt - Date.now();
|
|
47
|
+
return remaining > 0 ? Math.ceil(remaining / 1000) : 0;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.RateLimiter = RateLimiter;
|
|
51
|
+
//# sourceMappingURL=RateLimiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/foundation/RateLimiter.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAOH,MAAa,WAAW;IAAxB;QACU,aAAQ,GAAG,IAAI,GAAG,EAA8C,CAAC;IAoD3E,CAAC;IAlDC,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,SAA0B,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;QACnF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CACX,GAAW,EACX,MAAuB,EACvB,QAA4B,EAC5B,eAAoC;QAEpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,eAAe;gBAAE,OAAO,eAAe,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,MAAuB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,MAAM,CAAC,WAAW,CAAC;QACpE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QAErB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7C,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AArDD,kCAqDC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ScheduledTask = () => Promise<void> | void;
|
|
2
|
+
export declare class Scheduler {
|
|
3
|
+
private tasks;
|
|
4
|
+
private timer;
|
|
5
|
+
schedule(name: string, intervalMs: number, task: ScheduledTask): void;
|
|
6
|
+
start(): void;
|
|
7
|
+
stop(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare const Schedule: Scheduler;
|
|
10
|
+
//# sourceMappingURL=Scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../src/foundation/Scheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEvD,qBAAa,SAAS;IAClB,OAAO,CAAC,KAAK,CAAsF;IACnG,OAAO,CAAC,KAAK,CAA+B;IAErC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAS9D,KAAK;IAsBL,IAAI;CAMd;AAED,eAAO,MAAM,QAAQ,WAAkB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Schedule = exports.Scheduler = void 0;
|
|
4
|
+
class Scheduler {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.tasks = new Map();
|
|
7
|
+
this.timer = null;
|
|
8
|
+
}
|
|
9
|
+
schedule(name, intervalMs, task) {
|
|
10
|
+
this.tasks.set(name, {
|
|
11
|
+
task,
|
|
12
|
+
interval: intervalMs,
|
|
13
|
+
lastRun: 0
|
|
14
|
+
});
|
|
15
|
+
this.start();
|
|
16
|
+
}
|
|
17
|
+
start() {
|
|
18
|
+
if (this.timer)
|
|
19
|
+
return;
|
|
20
|
+
this.timer = setInterval(() => {
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
this.tasks.forEach((config, name) => {
|
|
23
|
+
if (now - config.lastRun >= config.interval) {
|
|
24
|
+
try {
|
|
25
|
+
console.log(`[Scheduler] Running task: ${name}`);
|
|
26
|
+
const result = config.task();
|
|
27
|
+
if (result instanceof Promise) {
|
|
28
|
+
result.catch(err => console.error(`[Scheduler] Task ${name} failed:`, err));
|
|
29
|
+
}
|
|
30
|
+
config.lastRun = now;
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
console.error(`[Scheduler] Task ${name} failed:`, err);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}, 1000); // Check every second
|
|
38
|
+
}
|
|
39
|
+
stop() {
|
|
40
|
+
if (this.timer) {
|
|
41
|
+
clearInterval(this.timer);
|
|
42
|
+
this.timer = null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.Scheduler = Scheduler;
|
|
47
|
+
exports.Schedule = new Scheduler();
|
|
48
|
+
//# sourceMappingURL=Scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../src/foundation/Scheduler.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAAtB;QACY,UAAK,GAA4E,IAAI,GAAG,EAAE,CAAC;QAC3F,UAAK,GAA0B,IAAI,CAAC;IAuChD,CAAC;IArCU,QAAQ,CAAC,IAAY,EAAE,UAAkB,EAAE,IAAmB;QACjE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI;YACJ,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,CAAC;SACb,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK;QACR,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAEvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChC,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC1C,IAAI,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;wBACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;4BAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;wBAChF,CAAC;wBACD,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;oBACzB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,EAAE,GAAG,CAAC,CAAC;oBAC3D,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB;IACnC,CAAC;IAEM,IAAI;QACP,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;IACL,CAAC;CACJ;AAzCD,8BAyCC;AAEY,QAAA,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC"}
|