@arikajs/foundation 0.0.4 → 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.
Files changed (96) hide show
  1. package/README.md +25 -23
  2. package/dist/ObjectPool.d.ts +9 -0
  3. package/dist/ObjectPool.d.ts.map +1 -0
  4. package/dist/ObjectPool.js +25 -0
  5. package/dist/ObjectPool.js.map +1 -0
  6. package/dist/application/Application.d.ts +47 -15
  7. package/dist/application/Application.d.ts.map +1 -1
  8. package/dist/application/Application.js +121 -50
  9. package/dist/application/Application.js.map +1 -1
  10. package/dist/container/Container.d.ts +22 -0
  11. package/dist/container/Container.d.ts.map +1 -1
  12. package/dist/container/Container.js +60 -7
  13. package/dist/container/Container.js.map +1 -1
  14. package/dist/contracts/Application.d.ts +5 -0
  15. package/dist/contracts/Application.d.ts.map +1 -1
  16. package/dist/examples/basic.d.ts +3 -0
  17. package/dist/examples/basic.d.ts.map +1 -0
  18. package/dist/examples/basic.js +110 -0
  19. package/dist/examples/basic.js.map +1 -0
  20. package/dist/index.d.ts +2 -4
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +3 -6
  23. package/dist/index.js.map +1 -1
  24. package/dist/src/ObjectPool.d.ts +9 -0
  25. package/dist/src/ObjectPool.d.ts.map +1 -0
  26. package/dist/src/ObjectPool.js +25 -0
  27. package/dist/src/ObjectPool.js.map +1 -0
  28. package/dist/src/application/Application.d.ts +105 -0
  29. package/dist/src/application/Application.d.ts.map +1 -0
  30. package/dist/src/application/Application.js +267 -0
  31. package/dist/src/application/Application.js.map +1 -0
  32. package/dist/src/container/Container.d.ts +61 -0
  33. package/dist/src/container/Container.d.ts.map +1 -0
  34. package/dist/src/container/Container.js +126 -0
  35. package/dist/src/container/Container.js.map +1 -0
  36. package/dist/src/contracts/Application.d.ts +20 -0
  37. package/dist/src/contracts/Application.d.ts.map +1 -0
  38. package/dist/src/contracts/Application.js +3 -0
  39. package/dist/src/contracts/Application.js.map +1 -0
  40. package/dist/src/contracts/Kernel.d.ts +24 -0
  41. package/dist/src/contracts/Kernel.d.ts.map +1 -0
  42. package/dist/src/contracts/Kernel.js +3 -0
  43. package/dist/src/contracts/Kernel.js.map +1 -0
  44. package/dist/src/index.d.ts +8 -0
  45. package/dist/src/index.d.ts.map +1 -0
  46. package/dist/src/index.js +28 -0
  47. package/dist/src/index.js.map +1 -0
  48. package/dist/src/providers/ServiceProvider.d.ts +25 -0
  49. package/dist/src/providers/ServiceProvider.d.ts.map +1 -0
  50. package/dist/src/providers/ServiceProvider.js +26 -0
  51. package/dist/src/providers/ServiceProvider.js.map +1 -0
  52. package/dist/tests/application.test.d.ts +2 -0
  53. package/dist/tests/application.test.d.ts.map +1 -0
  54. package/dist/tests/application.test.js +213 -0
  55. package/dist/tests/application.test.js.map +1 -0
  56. package/dist/tests/config.test.d.ts +2 -0
  57. package/dist/tests/config.test.d.ts.map +1 -0
  58. package/dist/tests/config.test.js +120 -0
  59. package/dist/tests/config.test.js.map +1 -0
  60. package/dist/tests/config_helper.test.d.ts +2 -0
  61. package/dist/tests/config_helper.test.d.ts.map +1 -0
  62. package/dist/tests/config_helper.test.js +46 -0
  63. package/dist/tests/config_helper.test.js.map +1 -0
  64. package/dist/tests/container.test.d.ts +2 -0
  65. package/dist/tests/container.test.d.ts.map +1 -0
  66. package/dist/tests/container.test.js +94 -0
  67. package/dist/tests/container.test.js.map +1 -0
  68. package/dist/tests/env.test.d.ts +2 -0
  69. package/dist/tests/env.test.d.ts.map +1 -0
  70. package/dist/tests/env.test.js +101 -0
  71. package/dist/tests/env.test.js.map +1 -0
  72. package/dist/tests/provider.test.d.ts +2 -0
  73. package/dist/tests/provider.test.d.ts.map +1 -0
  74. package/dist/tests/provider.test.js +87 -0
  75. package/dist/tests/provider.test.js.map +1 -0
  76. package/dist/tests/timezone.test.d.ts +2 -0
  77. package/dist/tests/timezone.test.d.ts.map +1 -0
  78. package/dist/tests/timezone.test.js +47 -0
  79. package/dist/tests/timezone.test.js.map +1 -0
  80. package/package.json +13 -11
  81. package/dist/config/Repository.d.ts +0 -41
  82. package/dist/config/Repository.d.ts.map +0 -1
  83. package/dist/config/Repository.js +0 -140
  84. package/dist/config/Repository.js.map +0 -1
  85. package/dist/support/EnvLoader.d.ts +0 -15
  86. package/dist/support/EnvLoader.d.ts.map +0 -1
  87. package/dist/support/EnvLoader.js +0 -58
  88. package/dist/support/EnvLoader.js.map +0 -1
  89. package/dist/support/config.d.ts +0 -18
  90. package/dist/support/config.d.ts.map +0 -1
  91. package/dist/support/config.js +0 -29
  92. package/dist/support/config.js.map +0 -1
  93. package/dist/support/env.d.ts +0 -9
  94. package/dist/support/env.d.ts.map +0 -1
  95. package/dist/support/env.js +0 -32
  96. 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;IAmE/C,CAAC;IAjEC;;OAEG;IACH,IAAI,CAAI,KAAe,EAAE,OAAmB;QAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,SAAS,CAAI,KAAe,EAAE,OAAmB;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,QAAQ,CAAI,KAAe,EAAE,KAAQ;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE;YACvB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;YACpB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI,CAAI,KAAe;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,qDAAqD;YACrD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,IAAK,KAAa,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,0CAA0C,MAAM,CAAC,KAAK,CAAC,GAAG,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,OAAO,CAAC,QAAa,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO,CAAI,KAAe;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,KAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AApED,8BAoEC"}
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,3 @@
1
+ declare function main(): Promise<void>;
2
+ export { main };
3
+ //# sourceMappingURL=basic.d.ts.map
@@ -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 './config/Repository';
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 './support/env';
8
- export * from './support/config';
9
- export * from './support/EnvLoader';
7
+ export * from './ObjectPool';
10
8
  //# sourceMappingURL=index.d.ts.map
@@ -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,qBAAqB,CAAC;AAGpC,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAG9D,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,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("./config/Repository"), exports);
27
- // Support
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,gBAAgB;AAChB,sDAAoC;AAMpC,UAAU;AACV,gDAA8B;AAC9B,mDAAiC;AACjC,sDAAoC"}
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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"}