@arikajs/foundation 0.0.3 → 0.0.5
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 +25 -23
- package/dist/ObjectPool.d.ts +9 -0
- package/dist/ObjectPool.d.ts.map +1 -0
- package/dist/ObjectPool.js +25 -0
- package/dist/ObjectPool.js.map +1 -0
- package/dist/application/Application.d.ts +47 -15
- package/dist/application/Application.d.ts.map +1 -1
- package/dist/application/Application.js +121 -50
- package/dist/application/Application.js.map +1 -1
- package/dist/container/Container.d.ts +22 -0
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +60 -7
- package/dist/container/Container.js.map +1 -1
- package/dist/contracts/Application.d.ts +5 -0
- package/dist/contracts/Application.d.ts.map +1 -1
- package/dist/examples/basic.d.ts +3 -0
- package/dist/examples/basic.d.ts.map +1 -0
- package/dist/examples/basic.js +110 -0
- package/dist/examples/basic.js.map +1 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/src/ObjectPool.d.ts +9 -0
- package/dist/src/ObjectPool.d.ts.map +1 -0
- package/dist/src/ObjectPool.js +25 -0
- package/dist/src/ObjectPool.js.map +1 -0
- package/dist/src/application/Application.d.ts +105 -0
- package/dist/src/application/Application.d.ts.map +1 -0
- package/dist/src/application/Application.js +267 -0
- package/dist/src/application/Application.js.map +1 -0
- package/dist/src/container/Container.d.ts +61 -0
- package/dist/src/container/Container.d.ts.map +1 -0
- package/dist/src/container/Container.js +126 -0
- package/dist/src/container/Container.js.map +1 -0
- package/dist/src/contracts/Application.d.ts +20 -0
- package/dist/src/contracts/Application.d.ts.map +1 -0
- package/dist/src/contracts/Application.js +3 -0
- package/dist/src/contracts/Application.js.map +1 -0
- package/dist/src/contracts/Kernel.d.ts +24 -0
- package/dist/src/contracts/Kernel.d.ts.map +1 -0
- package/dist/src/contracts/Kernel.js +3 -0
- package/dist/src/contracts/Kernel.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +28 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/ServiceProvider.d.ts +25 -0
- package/dist/src/providers/ServiceProvider.d.ts.map +1 -0
- package/dist/src/providers/ServiceProvider.js +26 -0
- package/dist/src/providers/ServiceProvider.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 +213 -0
- package/dist/tests/application.test.js.map +1 -0
- package/dist/tests/config.test.d.ts +2 -0
- package/dist/tests/config.test.d.ts.map +1 -0
- package/dist/tests/config.test.js +120 -0
- package/dist/tests/config.test.js.map +1 -0
- package/dist/tests/config_helper.test.d.ts +2 -0
- package/dist/tests/config_helper.test.d.ts.map +1 -0
- package/dist/tests/config_helper.test.js +46 -0
- package/dist/tests/config_helper.test.js.map +1 -0
- package/dist/tests/container.test.d.ts +2 -0
- package/dist/tests/container.test.d.ts.map +1 -0
- package/dist/tests/container.test.js +94 -0
- package/dist/tests/container.test.js.map +1 -0
- package/dist/tests/env.test.d.ts +2 -0
- package/dist/tests/env.test.d.ts.map +1 -0
- package/dist/tests/env.test.js +101 -0
- package/dist/tests/env.test.js.map +1 -0
- package/dist/tests/provider.test.d.ts +2 -0
- package/dist/tests/provider.test.d.ts.map +1 -0
- package/dist/tests/provider.test.js +87 -0
- package/dist/tests/provider.test.js.map +1 -0
- package/dist/tests/timezone.test.d.ts +2 -0
- package/dist/tests/timezone.test.d.ts.map +1 -0
- package/dist/tests/timezone.test.js +47 -0
- package/dist/tests/timezone.test.js.map +1 -0
- package/package.json +13 -11
- package/dist/config/Repository.d.ts +0 -41
- package/dist/config/Repository.d.ts.map +0 -1
- package/dist/config/Repository.js +0 -140
- package/dist/config/Repository.js.map +0 -1
- package/dist/support/EnvLoader.d.ts +0 -15
- package/dist/support/EnvLoader.d.ts.map +0 -1
- package/dist/support/EnvLoader.js +0 -58
- package/dist/support/EnvLoader.js.map +0 -1
- package/dist/support/config.d.ts +0 -18
- package/dist/support/config.d.ts.map +0 -1
- package/dist/support/config.js +0 -29
- package/dist/support/config.js.map +0 -1
- package/dist/support/env.d.ts +0 -9
- package/dist/support/env.d.ts.map +0 -1
- package/dist/support/env.js +0 -32
- package/dist/support/env.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":";;;AAUA;;;;;;;GAOG;AACH,MAAa,SAAS;IAAtB;QACU,aAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,11 @@ export interface Application {
|
|
|
10
10
|
instance(token: any, value: any): void;
|
|
11
11
|
make<T = any>(token: any): T;
|
|
12
12
|
resolve<T = any>(token: any): T;
|
|
13
|
+
alias(token: any, alias: any): void;
|
|
14
|
+
tag(token: any, tag: string): void;
|
|
15
|
+
tagged<T = any>(tag: string): T[];
|
|
16
|
+
extend<T = any>(token: any, callback: (instance: T) => T): void;
|
|
17
|
+
terminate(): Promise<void>;
|
|
13
18
|
isBooted(): boolean;
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=Application.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../src/contracts/Application.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IACxB,WAAW,IAAI,MAAM,CAAC;IACtB,YAAY,IAAI,GAAG,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC;IACd,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;IAChC,QAAQ,IAAI,OAAO,CAAC;CACvB"}
|
|
1
|
+
{"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../src/contracts/Application.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IACxB,WAAW,IAAI,MAAM,CAAC;IACtB,YAAY,IAAI,GAAG,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC;IACd,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;IAChC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACpC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;IAClC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAChE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,IAAI,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../examples/basic.ts"],"names":[],"mappings":"AAkFA,iBAAe,IAAI,kBAwClB;AAUD,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.main = main;
|
|
4
|
+
const src_1 = require("../src");
|
|
5
|
+
/**
|
|
6
|
+
* Example: Basic ArikaJS Foundation Usage
|
|
7
|
+
*
|
|
8
|
+
* This demonstrates the complete lifecycle:
|
|
9
|
+
* 1. Create application with basePath
|
|
10
|
+
* 2. Register service providers
|
|
11
|
+
* 3. Boot the application
|
|
12
|
+
* 4. Run the application
|
|
13
|
+
*/
|
|
14
|
+
// Define a simple logger service
|
|
15
|
+
class Logger {
|
|
16
|
+
constructor(prefix) {
|
|
17
|
+
this.prefix = prefix;
|
|
18
|
+
}
|
|
19
|
+
log(message) {
|
|
20
|
+
console.log(`[${this.prefix}] ${message}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Create a core service provider
|
|
24
|
+
class CoreServiceProvider extends src_1.ServiceProvider {
|
|
25
|
+
register() {
|
|
26
|
+
// Register logger as singleton
|
|
27
|
+
this.app.singleton(Logger, () => {
|
|
28
|
+
const config = this.app.config().get('app', {
|
|
29
|
+
name: 'ArikaJS App',
|
|
30
|
+
version: '0.1.0',
|
|
31
|
+
env: 'development',
|
|
32
|
+
}) || {
|
|
33
|
+
name: 'ArikaJS App',
|
|
34
|
+
version: '0.1.0',
|
|
35
|
+
env: 'development',
|
|
36
|
+
};
|
|
37
|
+
return new Logger(config.name);
|
|
38
|
+
});
|
|
39
|
+
// Register app config
|
|
40
|
+
this.app.instance('config.app', {
|
|
41
|
+
name: 'ArikaJS Foundation Example',
|
|
42
|
+
version: '0.1.0',
|
|
43
|
+
env: process.env.NODE_ENV || 'development',
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
boot() {
|
|
47
|
+
const logger = this.app.resolve(Logger);
|
|
48
|
+
logger.log('Core services booted successfully');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Create another provider that depends on the logger
|
|
52
|
+
class FeatureServiceProvider extends src_1.ServiceProvider {
|
|
53
|
+
register() {
|
|
54
|
+
// Register a feature service
|
|
55
|
+
this.app.singleton('feature.service', () => {
|
|
56
|
+
return {
|
|
57
|
+
name: 'Example Feature',
|
|
58
|
+
enabled: true,
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
boot() {
|
|
63
|
+
// Access logger from another provider
|
|
64
|
+
const logger = this.app.resolve(Logger);
|
|
65
|
+
const feature = this.app.resolve('feature.service');
|
|
66
|
+
logger.log(`Feature "${feature.name}" is ${feature.enabled ? 'enabled' : 'disabled'}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Main application entry point
|
|
70
|
+
async function main() {
|
|
71
|
+
console.log('🚀 Starting ArikaJS Foundation Example\n');
|
|
72
|
+
// 1. Create application instance
|
|
73
|
+
const app = new src_1.Application(__dirname);
|
|
74
|
+
console.log(`📁 Base path: ${app.getBasePath()}\n`);
|
|
75
|
+
// 2. Register service providers
|
|
76
|
+
console.log('📦 Registering service providers...');
|
|
77
|
+
app.register(CoreServiceProvider);
|
|
78
|
+
app.register(FeatureServiceProvider);
|
|
79
|
+
console.log('✅ Providers registered\n');
|
|
80
|
+
// 3. Boot the application
|
|
81
|
+
console.log('🔧 Booting application...');
|
|
82
|
+
await app.boot();
|
|
83
|
+
console.log('✅ Application booted\n');
|
|
84
|
+
// 4. Use services
|
|
85
|
+
console.log('💡 Using services:');
|
|
86
|
+
const logger = app.resolve(Logger);
|
|
87
|
+
const config = app.resolve('config.app');
|
|
88
|
+
const feature = app.resolve('feature.service');
|
|
89
|
+
logger.log(`Application: ${config.name}`);
|
|
90
|
+
logger.log(`Version: ${config.version}`);
|
|
91
|
+
logger.log(`Environment: ${config.env}`);
|
|
92
|
+
logger.log(`Feature: ${feature.name}\n`);
|
|
93
|
+
// 5. Access configuration
|
|
94
|
+
console.log('⚙️ Configuration access:');
|
|
95
|
+
const appName = app.config().get('app.name', 'Default App');
|
|
96
|
+
console.log(`Config value: ${appName}\n`);
|
|
97
|
+
// 6. Run the application
|
|
98
|
+
console.log('▶️ Running application...');
|
|
99
|
+
await app.run();
|
|
100
|
+
console.log('✅ Application running\n');
|
|
101
|
+
console.log('✨ Example completed successfully!');
|
|
102
|
+
}
|
|
103
|
+
// Run if executed directly
|
|
104
|
+
if (require.main === module) {
|
|
105
|
+
main().catch((error) => {
|
|
106
|
+
console.error('❌ Error:', error);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=basic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../examples/basic.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
export { Application } from './application/Application';
|
|
2
2
|
export * from './container/Container';
|
|
3
3
|
export * from './providers/ServiceProvider';
|
|
4
|
-
export * from '
|
|
4
|
+
export * from '@arikajs/config';
|
|
5
5
|
export { Application as ApplicationContract } from './contracts/Application';
|
|
6
6
|
export { Kernel as KernelContract } from './contracts/Kernel';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './support/config';
|
|
9
|
-
export * from './support/EnvLoader';
|
|
7
|
+
export * from './ObjectPool';
|
|
10
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,cAAc,uBAAuB,CAAC;AAGtC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,cAAc,uBAAuB,CAAC;AAGtC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9D,cAAc,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -22,10 +22,7 @@ Object.defineProperty(exports, "Application", { enumerable: true, get: function
|
|
|
22
22
|
__exportStar(require("./container/Container"), exports);
|
|
23
23
|
// Service Providers
|
|
24
24
|
__exportStar(require("./providers/ServiceProvider"), exports);
|
|
25
|
-
// Configuration
|
|
26
|
-
__exportStar(require("
|
|
27
|
-
|
|
28
|
-
__exportStar(require("./support/env"), exports);
|
|
29
|
-
__exportStar(require("./support/config"), exports);
|
|
30
|
-
__exportStar(require("./support/EnvLoader"), exports);
|
|
25
|
+
// Configuration & Support
|
|
26
|
+
__exportStar(require("@arikajs/config"), exports);
|
|
27
|
+
__exportStar(require("./ObjectPool"), exports);
|
|
31
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AAEpB,YAAY;AACZ,wDAAsC;AAEtC,oBAAoB;AACpB,8DAA4C;AAE5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AAEpB,YAAY;AACZ,wDAAsC;AAEtC,oBAAoB;AACpB,8DAA4C;AAE5C,0BAA0B;AAC1B,kDAAgC;AAKhC,+CAA6B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class ObjectPool<T> {
|
|
2
|
+
private pool;
|
|
3
|
+
private factory;
|
|
4
|
+
private resetFn;
|
|
5
|
+
constructor(factory: () => T, resetFn: (obj: T) => void, initialCapacity?: number);
|
|
6
|
+
acquire(): T;
|
|
7
|
+
release(obj: T): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ObjectPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectPool.d.ts","sourceRoot":"","sources":["../../src/ObjectPool.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,eAAe,SAAM;IAQvE,OAAO,IAAI,CAAC;IAOZ,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;CAI/B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ObjectPool = void 0;
|
|
4
|
+
class ObjectPool {
|
|
5
|
+
constructor(factory, resetFn, initialCapacity = 200) {
|
|
6
|
+
this.pool = [];
|
|
7
|
+
this.factory = factory;
|
|
8
|
+
this.resetFn = resetFn;
|
|
9
|
+
for (let i = 0; i < initialCapacity; i++) {
|
|
10
|
+
this.pool.push(this.factory());
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
acquire() {
|
|
14
|
+
if (this.pool.length > 0) {
|
|
15
|
+
return this.pool.pop();
|
|
16
|
+
}
|
|
17
|
+
return this.factory();
|
|
18
|
+
}
|
|
19
|
+
release(obj) {
|
|
20
|
+
this.resetFn(obj);
|
|
21
|
+
this.pool.push(obj);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ObjectPool = ObjectPool;
|
|
25
|
+
//# sourceMappingURL=ObjectPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectPool.js","sourceRoot":"","sources":["../../src/ObjectPool.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IAKnB,YAAY,OAAgB,EAAE,OAAyB,EAAE,eAAe,GAAG,GAAG;QAJtE,SAAI,GAAQ,EAAE,CAAC;QAKnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAEM,OAAO,CAAC,GAAM;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;CACJ;AAxBD,gCAwBC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Container, Token, Factory } from '../container/Container';
|
|
2
|
+
import { ServiceProvider } from '../providers/ServiceProvider';
|
|
3
|
+
import { Repository } from '@arikajs/config';
|
|
4
|
+
/**
|
|
5
|
+
* Application is the core runtime of ArikaJS.
|
|
6
|
+
*
|
|
7
|
+
* It manages:
|
|
8
|
+
* - Service container
|
|
9
|
+
* - Service providers
|
|
10
|
+
* - Configuration
|
|
11
|
+
* - Application lifecycle (register → boot → run)
|
|
12
|
+
*/
|
|
13
|
+
export declare class Application {
|
|
14
|
+
private readonly container;
|
|
15
|
+
private readonly basePath;
|
|
16
|
+
private readonly configRepository;
|
|
17
|
+
private providers;
|
|
18
|
+
private booted;
|
|
19
|
+
private static instance;
|
|
20
|
+
private terminatingCallbacks;
|
|
21
|
+
constructor(basePath: string);
|
|
22
|
+
/**
|
|
23
|
+
* Get the globally available application instance.
|
|
24
|
+
*/
|
|
25
|
+
static getInstance(): Application;
|
|
26
|
+
/**
|
|
27
|
+
* Get the base path of the application.
|
|
28
|
+
*/
|
|
29
|
+
getBasePath(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Access the underlying container.
|
|
32
|
+
*/
|
|
33
|
+
getContainer(): Container;
|
|
34
|
+
/**
|
|
35
|
+
* Access the configuration repository.
|
|
36
|
+
*/
|
|
37
|
+
config(): Repository;
|
|
38
|
+
/**
|
|
39
|
+
* Alias for make() - resolves a service from the container.
|
|
40
|
+
*/
|
|
41
|
+
make<T>(token: Token<T>): T;
|
|
42
|
+
/**
|
|
43
|
+
* Bind a transient service.
|
|
44
|
+
*/
|
|
45
|
+
bind<T>(token: Token<T>, factory: Factory<T>): void;
|
|
46
|
+
/**
|
|
47
|
+
* Bind a singleton service.
|
|
48
|
+
*/
|
|
49
|
+
singleton<T>(token: Token<T>, factory: Factory<T>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Register an existing instance.
|
|
52
|
+
*/
|
|
53
|
+
instance<T>(token: Token<T>, value: T): void;
|
|
54
|
+
/**
|
|
55
|
+
* Register an alias for a token.
|
|
56
|
+
*/
|
|
57
|
+
alias(token: Token, alias: Token): void;
|
|
58
|
+
/**
|
|
59
|
+
* Tag a token.
|
|
60
|
+
*/
|
|
61
|
+
tag(token: Token, tag: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Resolve all tagged services.
|
|
64
|
+
*/
|
|
65
|
+
tagged<T = any>(tag: string): T[];
|
|
66
|
+
/**
|
|
67
|
+
* Extend a service.
|
|
68
|
+
*/
|
|
69
|
+
extend<T = any>(token: Token<T>, callback: (instance: T) => T): void;
|
|
70
|
+
/**
|
|
71
|
+
* Register a service provider.
|
|
72
|
+
* Can accept a class (will be instantiated) or an instance.
|
|
73
|
+
*/
|
|
74
|
+
register(provider: ServiceProvider | (new (app: Application) => ServiceProvider)): void;
|
|
75
|
+
/**
|
|
76
|
+
* Boot all registered service providers.
|
|
77
|
+
* First runs all register() methods, then all boot() methods.
|
|
78
|
+
*/
|
|
79
|
+
boot(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Run the application.
|
|
82
|
+
*/
|
|
83
|
+
run(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Gracefully terminate the application.
|
|
86
|
+
*/
|
|
87
|
+
terminate(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Register a callback to be run when the application is terminating.
|
|
90
|
+
*/
|
|
91
|
+
onTerminate(callback: () => void | Promise<void>): void;
|
|
92
|
+
/**
|
|
93
|
+
* Alias for make() - resolves a service from the container.
|
|
94
|
+
*/
|
|
95
|
+
resolve<T>(token: Token<T>): T;
|
|
96
|
+
/**
|
|
97
|
+
* Check if a service is registered in the container.
|
|
98
|
+
*/
|
|
99
|
+
has(token: Token): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Check if the application has been booted.
|
|
102
|
+
*/
|
|
103
|
+
isBooted(): boolean;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=Application.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../../src/application/Application.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAkC,MAAM,iBAAiB,CAAC;AAE7E;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;IACnD,OAAO,CAAC,oBAAoB,CAAsC;gBAEtD,QAAQ,EAAE,MAAM;IA2C5B;;OAEG;WACW,WAAW,IAAI,WAAW;IAOxC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,MAAM,IAAI,UAAU;IAIpB;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAqB3B;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAInD;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAIxD;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI5C;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAIvC;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;IAIjC;;OAEG;IACH,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI;IAIpE;;;OAGG;IACH,QAAQ,CACN,QAAQ,EACJ,eAAe,GACf,CAAC,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAAC,GAC9C,IAAI;IAeP;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIvD;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAI9B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAI1B;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGpB"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Application = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const Container_1 = require("../container/Container");
|
|
40
|
+
const ServiceProvider_1 = require("../providers/ServiceProvider");
|
|
41
|
+
const config_1 = require("@arikajs/config");
|
|
42
|
+
/**
|
|
43
|
+
* Application is the core runtime of ArikaJS.
|
|
44
|
+
*
|
|
45
|
+
* It manages:
|
|
46
|
+
* - Service container
|
|
47
|
+
* - Service providers
|
|
48
|
+
* - Configuration
|
|
49
|
+
* - Application lifecycle (register → boot → run)
|
|
50
|
+
*/
|
|
51
|
+
class Application {
|
|
52
|
+
constructor(basePath) {
|
|
53
|
+
this.providers = [];
|
|
54
|
+
this.booted = false;
|
|
55
|
+
this.terminatingCallbacks = [];
|
|
56
|
+
this.basePath = path.resolve(basePath);
|
|
57
|
+
this.container = new Container_1.Container();
|
|
58
|
+
this.configRepository = new config_1.Repository();
|
|
59
|
+
Application.instance = this;
|
|
60
|
+
// Register the config repository in the global support helper
|
|
61
|
+
(0, config_1.setConfigRepository)(this.configRepository);
|
|
62
|
+
// Register the application, container, and config for injection
|
|
63
|
+
this.container.instance(Application, this);
|
|
64
|
+
this.container.instance(Container_1.Container, this.container);
|
|
65
|
+
this.container.instance(config_1.Repository, this.configRepository);
|
|
66
|
+
this.container.alias(config_1.Repository, 'config');
|
|
67
|
+
// Load environment variables from .env if it exists
|
|
68
|
+
config_1.EnvLoader.load(this.basePath);
|
|
69
|
+
// Load configuration
|
|
70
|
+
const cachedConfigPath = path.join(this.basePath, 'bootstrap', 'cache', 'config.json');
|
|
71
|
+
if (fs.existsSync(cachedConfigPath)) {
|
|
72
|
+
try {
|
|
73
|
+
const cachedData = fs.readFileSync(cachedConfigPath, 'utf8');
|
|
74
|
+
this.configRepository = new config_1.Repository(JSON.parse(cachedData));
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
console.error('Failed to load cached config, falling back to directory loading...', e);
|
|
78
|
+
const configPath = path.join(this.basePath, 'config');
|
|
79
|
+
this.configRepository.loadConfigDirectory(configPath);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const configPath = path.join(this.basePath, 'config');
|
|
84
|
+
this.configRepository.loadConfigDirectory(configPath);
|
|
85
|
+
}
|
|
86
|
+
// Apply timezone from config to the Node.js process
|
|
87
|
+
const timezone = this.configRepository.get('app.timezone');
|
|
88
|
+
if (timezone) {
|
|
89
|
+
process.env.TZ = timezone;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get the globally available application instance.
|
|
94
|
+
*/
|
|
95
|
+
static getInstance() {
|
|
96
|
+
if (!this.instance) {
|
|
97
|
+
throw new Error('Application instance has not been created yet.');
|
|
98
|
+
}
|
|
99
|
+
return this.instance;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get the base path of the application.
|
|
103
|
+
*/
|
|
104
|
+
getBasePath() {
|
|
105
|
+
return this.basePath;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Access the underlying container.
|
|
109
|
+
*/
|
|
110
|
+
getContainer() {
|
|
111
|
+
return this.container;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Access the configuration repository.
|
|
115
|
+
*/
|
|
116
|
+
config() {
|
|
117
|
+
return this.configRepository;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Alias for make() - resolves a service from the container.
|
|
121
|
+
*/
|
|
122
|
+
make(token) {
|
|
123
|
+
// Check the container first — explicit bindings always win
|
|
124
|
+
if (this.container.has(token)) {
|
|
125
|
+
return this.container.make(token);
|
|
126
|
+
}
|
|
127
|
+
// If it's a config token (e.g. 'config.app.name'),
|
|
128
|
+
// fall back to the configuration repository
|
|
129
|
+
if (typeof token === 'string' && token.startsWith('config.')) {
|
|
130
|
+
const configKey = token.substring(7);
|
|
131
|
+
const value = this.configRepository.get(configKey);
|
|
132
|
+
if (value !== undefined) {
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Final attempt — let the container throw if not found
|
|
137
|
+
return this.container.make(token);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Bind a transient service.
|
|
141
|
+
*/
|
|
142
|
+
bind(token, factory) {
|
|
143
|
+
this.container.bind(token, factory);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Bind a singleton service.
|
|
147
|
+
*/
|
|
148
|
+
singleton(token, factory) {
|
|
149
|
+
this.container.singleton(token, factory);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Register an existing instance.
|
|
153
|
+
*/
|
|
154
|
+
instance(token, value) {
|
|
155
|
+
this.container.instance(token, value);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Register an alias for a token.
|
|
159
|
+
*/
|
|
160
|
+
alias(token, alias) {
|
|
161
|
+
this.container.alias(token, alias);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Tag a token.
|
|
165
|
+
*/
|
|
166
|
+
tag(token, tag) {
|
|
167
|
+
this.container.tag(token, tag);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Resolve all tagged services.
|
|
171
|
+
*/
|
|
172
|
+
tagged(tag) {
|
|
173
|
+
return this.container.tagged(tag);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Extend a service.
|
|
177
|
+
*/
|
|
178
|
+
extend(token, callback) {
|
|
179
|
+
this.container.extend(token, callback);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Register a service provider.
|
|
183
|
+
* Can accept a class (will be instantiated) or an instance.
|
|
184
|
+
*/
|
|
185
|
+
register(provider) {
|
|
186
|
+
if (this.booted) {
|
|
187
|
+
throw new Error('Cannot register providers after the application has been booted.');
|
|
188
|
+
}
|
|
189
|
+
const providerInstance = provider instanceof ServiceProvider_1.ServiceProvider
|
|
190
|
+
? provider
|
|
191
|
+
: new provider(this);
|
|
192
|
+
this.providers.push(providerInstance);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Boot all registered service providers.
|
|
196
|
+
* First runs all register() methods, then all boot() methods.
|
|
197
|
+
*/
|
|
198
|
+
async boot() {
|
|
199
|
+
if (this.booted) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Phase 1: Register all providers
|
|
203
|
+
for (const provider of this.providers) {
|
|
204
|
+
await provider.register();
|
|
205
|
+
}
|
|
206
|
+
// Phase 2: Boot all providers
|
|
207
|
+
for (const provider of this.providers) {
|
|
208
|
+
await provider.boot();
|
|
209
|
+
}
|
|
210
|
+
// Phase 3: Apply runtime configuration
|
|
211
|
+
// Re-apply timezone in case it was changed after construction
|
|
212
|
+
const timezone = this.configRepository.get('app.timezone');
|
|
213
|
+
if (timezone) {
|
|
214
|
+
process.env.TZ = timezone;
|
|
215
|
+
}
|
|
216
|
+
// Validate APP_KEY (unless in debug/local mode)
|
|
217
|
+
if (!this.configRepository.get('app.key') && process.env.NODE_ENV === 'production') {
|
|
218
|
+
throw new Error('Application key (APP_KEY) is not set. Please run "arika key:generate" to generate one.');
|
|
219
|
+
}
|
|
220
|
+
// Mark config as booted (read-only)
|
|
221
|
+
this.configRepository.markAsBooted();
|
|
222
|
+
this.booted = true;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Run the application.
|
|
226
|
+
*/
|
|
227
|
+
async run() {
|
|
228
|
+
if (!this.booted) {
|
|
229
|
+
await this.boot();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Gracefully terminate the application.
|
|
234
|
+
*/
|
|
235
|
+
async terminate() {
|
|
236
|
+
for (const callback of this.terminatingCallbacks) {
|
|
237
|
+
await callback();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Register a callback to be run when the application is terminating.
|
|
242
|
+
*/
|
|
243
|
+
onTerminate(callback) {
|
|
244
|
+
this.terminatingCallbacks.push(callback);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Alias for make() - resolves a service from the container.
|
|
248
|
+
*/
|
|
249
|
+
resolve(token) {
|
|
250
|
+
return this.make(token);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Check if a service is registered in the container.
|
|
254
|
+
*/
|
|
255
|
+
has(token) {
|
|
256
|
+
return this.container.has(token);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Check if the application has been booted.
|
|
260
|
+
*/
|
|
261
|
+
isBooted() {
|
|
262
|
+
return this.booted;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
exports.Application = Application;
|
|
266
|
+
Application.instance = null;
|
|
267
|
+
//# sourceMappingURL=Application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../../../src/application/Application.ts"],"names":[],"mappings":"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"}
|