@riktajs/core 0.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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +205 -0
  3. package/dist/core/application.d.ts +28 -0
  4. package/dist/core/application.d.ts.map +1 -0
  5. package/dist/core/application.js +321 -0
  6. package/dist/core/application.js.map +1 -0
  7. package/dist/core/constants.d.ts +70 -0
  8. package/dist/core/constants.d.ts.map +1 -0
  9. package/dist/core/constants.js +77 -0
  10. package/dist/core/constants.js.map +1 -0
  11. package/dist/core/container/container.d.ts +101 -0
  12. package/dist/core/container/container.d.ts.map +1 -0
  13. package/dist/core/container/container.js +327 -0
  14. package/dist/core/container/container.js.map +1 -0
  15. package/dist/core/container/index.d.ts +3 -0
  16. package/dist/core/container/index.d.ts.map +1 -0
  17. package/dist/core/container/index.js +19 -0
  18. package/dist/core/container/index.js.map +1 -0
  19. package/dist/core/container/injection-token.d.ts +58 -0
  20. package/dist/core/container/injection-token.d.ts.map +1 -0
  21. package/dist/core/container/injection-token.js +37 -0
  22. package/dist/core/container/injection-token.js.map +1 -0
  23. package/dist/core/decorators/autowired.decorator.d.ts +72 -0
  24. package/dist/core/decorators/autowired.decorator.d.ts.map +1 -0
  25. package/dist/core/decorators/autowired.decorator.js +143 -0
  26. package/dist/core/decorators/autowired.decorator.js.map +1 -0
  27. package/dist/core/decorators/controller.decorator.d.ts +33 -0
  28. package/dist/core/decorators/controller.decorator.d.ts.map +1 -0
  29. package/dist/core/decorators/controller.decorator.js +50 -0
  30. package/dist/core/decorators/controller.decorator.js.map +1 -0
  31. package/dist/core/decorators/index.d.ts +7 -0
  32. package/dist/core/decorators/index.d.ts.map +1 -0
  33. package/dist/core/decorators/index.js +24 -0
  34. package/dist/core/decorators/index.js.map +1 -0
  35. package/dist/core/decorators/injectable.decorator.d.ts +26 -0
  36. package/dist/core/decorators/injectable.decorator.d.ts.map +1 -0
  37. package/dist/core/decorators/injectable.decorator.js +40 -0
  38. package/dist/core/decorators/injectable.decorator.js.map +1 -0
  39. package/dist/core/decorators/param.decorator.d.ts +72 -0
  40. package/dist/core/decorators/param.decorator.d.ts.map +1 -0
  41. package/dist/core/decorators/param.decorator.js +88 -0
  42. package/dist/core/decorators/param.decorator.js.map +1 -0
  43. package/dist/core/decorators/provider.decorator.d.ts +64 -0
  44. package/dist/core/decorators/provider.decorator.d.ts.map +1 -0
  45. package/dist/core/decorators/provider.decorator.js +69 -0
  46. package/dist/core/decorators/provider.decorator.js.map +1 -0
  47. package/dist/core/decorators/route.decorator.d.ts +53 -0
  48. package/dist/core/decorators/route.decorator.d.ts.map +1 -0
  49. package/dist/core/decorators/route.decorator.js +85 -0
  50. package/dist/core/decorators/route.decorator.js.map +1 -0
  51. package/dist/core/discovery.d.ts +24 -0
  52. package/dist/core/discovery.d.ts.map +1 -0
  53. package/dist/core/discovery.js +168 -0
  54. package/dist/core/discovery.js.map +1 -0
  55. package/dist/core/exceptions/catch.decorator.d.ts +71 -0
  56. package/dist/core/exceptions/catch.decorator.d.ts.map +1 -0
  57. package/dist/core/exceptions/catch.decorator.js +77 -0
  58. package/dist/core/exceptions/catch.decorator.js.map +1 -0
  59. package/dist/core/exceptions/exception-filter.d.ts +134 -0
  60. package/dist/core/exceptions/exception-filter.d.ts.map +1 -0
  61. package/dist/core/exceptions/exception-filter.js +161 -0
  62. package/dist/core/exceptions/exception-filter.js.map +1 -0
  63. package/dist/core/exceptions/exceptions.d.ts +212 -0
  64. package/dist/core/exceptions/exceptions.d.ts.map +1 -0
  65. package/dist/core/exceptions/exceptions.js +275 -0
  66. package/dist/core/exceptions/exceptions.js.map +1 -0
  67. package/dist/core/exceptions/http-exception.d.ts +79 -0
  68. package/dist/core/exceptions/http-exception.d.ts.map +1 -0
  69. package/dist/core/exceptions/http-exception.js +106 -0
  70. package/dist/core/exceptions/http-exception.js.map +1 -0
  71. package/dist/core/exceptions/index.d.ts +5 -0
  72. package/dist/core/exceptions/index.d.ts.map +1 -0
  73. package/dist/core/exceptions/index.js +38 -0
  74. package/dist/core/exceptions/index.js.map +1 -0
  75. package/dist/core/index.d.ts +11 -0
  76. package/dist/core/index.d.ts.map +1 -0
  77. package/dist/core/index.js +28 -0
  78. package/dist/core/index.js.map +1 -0
  79. package/dist/core/lifecycle/event-bus.d.ts +96 -0
  80. package/dist/core/lifecycle/event-bus.d.ts.map +1 -0
  81. package/dist/core/lifecycle/event-bus.js +91 -0
  82. package/dist/core/lifecycle/event-bus.js.map +1 -0
  83. package/dist/core/lifecycle/index.d.ts +4 -0
  84. package/dist/core/lifecycle/index.d.ts.map +1 -0
  85. package/dist/core/lifecycle/index.js +21 -0
  86. package/dist/core/lifecycle/index.js.map +1 -0
  87. package/dist/core/lifecycle/interfaces.d.ts +106 -0
  88. package/dist/core/lifecycle/interfaces.d.ts.map +1 -0
  89. package/dist/core/lifecycle/interfaces.js +10 -0
  90. package/dist/core/lifecycle/interfaces.js.map +1 -0
  91. package/dist/core/lifecycle/on.decorator.d.ts +62 -0
  92. package/dist/core/lifecycle/on.decorator.d.ts.map +1 -0
  93. package/dist/core/lifecycle/on.decorator.js +65 -0
  94. package/dist/core/lifecycle/on.decorator.js.map +1 -0
  95. package/dist/core/registry.d.ts +64 -0
  96. package/dist/core/registry.d.ts.map +1 -0
  97. package/dist/core/registry.js +91 -0
  98. package/dist/core/registry.js.map +1 -0
  99. package/dist/core/router/router.d.ts +39 -0
  100. package/dist/core/router/router.d.ts.map +1 -0
  101. package/dist/core/router/router.js +150 -0
  102. package/dist/core/router/router.js.map +1 -0
  103. package/dist/core/types.d.ts +161 -0
  104. package/dist/core/types.d.ts.map +1 -0
  105. package/dist/core/types.js +3 -0
  106. package/dist/core/types.js.map +1 -0
  107. package/dist/index.d.ts +44 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +64 -0
  110. package/dist/index.js.map +1 -0
  111. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../src/core/lifecycle/event-bus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,eAAe,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,eAAe,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,cAAc,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,kBAAkB,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,aAAa,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC;AAEhD,KAAK,QAAQ,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7F;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,aAAa,CAAyC;IAE9D;;;OAGG;IACH,EAAE,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IACzE,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAU1F;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IACrE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQtF;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACjF,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjE;;OAEG;IACH,OAAO,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAK/C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAIrC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.EventBus = void 0;
10
+ const injectable_decorator_1 = require("../decorators/injectable.decorator");
11
+ /**
12
+ * EventBus - Central event system for lifecycle and custom events
13
+ *
14
+ * Provides a flexible pub/sub mechanism that works alongside
15
+ * the interface-based lifecycle hooks.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * @Injectable()
20
+ * class MonitoringService {
21
+ * constructor(private events: EventBus) {
22
+ * events.on('app:listen', ({ address }) => {
23
+ * console.log(`Server started at ${address}`);
24
+ * });
25
+ * }
26
+ * }
27
+ * ```
28
+ */
29
+ let EventBus = class EventBus {
30
+ listeners = new Map();
31
+ onceListeners = new Map();
32
+ on(event, listener) {
33
+ if (!this.listeners.has(event)) {
34
+ this.listeners.set(event, new Set());
35
+ }
36
+ this.listeners.get(event).add(listener);
37
+ return () => this.listeners.get(event)?.delete(listener);
38
+ }
39
+ once(event, listener) {
40
+ if (!this.onceListeners.has(event)) {
41
+ this.onceListeners.set(event, new Set());
42
+ }
43
+ this.onceListeners.get(event).add(listener);
44
+ }
45
+ async emit(event, payload) {
46
+ // Call regular listeners
47
+ const listeners = this.listeners.get(event);
48
+ if (listeners) {
49
+ for (const listener of listeners) {
50
+ await listener(payload);
51
+ }
52
+ }
53
+ // Call and remove once listeners
54
+ const onceListeners = this.onceListeners.get(event);
55
+ if (onceListeners) {
56
+ for (const listener of onceListeners) {
57
+ await listener(payload);
58
+ }
59
+ this.onceListeners.delete(event);
60
+ }
61
+ }
62
+ waitFor(event) {
63
+ return new Promise(resolve => this.once(event, resolve));
64
+ }
65
+ /**
66
+ * Remove all listeners for an event
67
+ */
68
+ off(event) {
69
+ this.listeners.delete(event);
70
+ this.onceListeners.delete(event);
71
+ }
72
+ /**
73
+ * Remove all listeners
74
+ */
75
+ clear() {
76
+ this.listeners.clear();
77
+ this.onceListeners.clear();
78
+ }
79
+ /**
80
+ * Get listener count for an event
81
+ */
82
+ listenerCount(event) {
83
+ return (this.listeners.get(event)?.size ?? 0) +
84
+ (this.onceListeners.get(event)?.size ?? 0);
85
+ }
86
+ };
87
+ exports.EventBus = EventBus;
88
+ exports.EventBus = EventBus = __decorate([
89
+ (0, injectable_decorator_1.Injectable)()
90
+ ], EventBus);
91
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/core/lifecycle/event-bus.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6EAAgE;AAsBhE;;;;;;;;;;;;;;;;;GAiBG;AAEI,IAAM,QAAQ,GAAd,MAAM,QAAQ;IACX,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClD,aAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;IAQ9D,EAAE,CAAC,KAAa,EAAE,QAAoD;QACpE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEzC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAOD,IAAI,CAAC,KAAa,EAAE,QAAoD;QACtE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAOD,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,OAAgB;QACxC,yBAAyB;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBACrC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAOD,OAAO,CAAC,KAAa;QACnB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAc,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,KAAa;QACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa;QACzB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YACtC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;CACF,CAAA;AAvFY,4BAAQ;mBAAR,QAAQ;IADpB,IAAA,iCAAU,GAAE;GACA,QAAQ,CAuFpB"}
@@ -0,0 +1,4 @@
1
+ export * from './event-bus';
2
+ export * from './on.decorator';
3
+ export * from './interfaces';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/lifecycle/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,21 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Lifecycle exports
18
+ __exportStar(require("./event-bus"), exports);
19
+ __exportStar(require("./on.decorator"), exports);
20
+ __exportStar(require("./interfaces"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/lifecycle/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oBAAoB;AACpB,8CAA4B;AAC5B,iDAA+B;AAC/B,+CAA6B"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Lifecycle Hook Interfaces
3
+ *
4
+ * These interfaces provide type-safe lifecycle hooks for providers.
5
+ * Implement these interfaces to receive callbacks at specific points
6
+ * in the application lifecycle.
7
+ */
8
+ /**
9
+ * Called when a provider is initialized
10
+ *
11
+ * This is called after the provider is instantiated and all its
12
+ * dependencies are injected. Use this for async initialization.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * @Injectable()
17
+ * class DatabaseService implements OnProviderInit {
18
+ * async onProviderInit() {
19
+ * await this.connect();
20
+ * console.log('Database connected');
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ export interface OnProviderInit {
26
+ onProviderInit(): Promise<void> | void;
27
+ }
28
+ /**
29
+ * Called when a provider is being destroyed
30
+ *
31
+ * This is called during application shutdown, in reverse priority order.
32
+ * Use this for cleanup operations.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * @Injectable()
37
+ * class DatabaseService implements OnProviderDestroy {
38
+ * async onProviderDestroy() {
39
+ * await this.connection.close();
40
+ * console.log('Database disconnected');
41
+ * }
42
+ * }
43
+ * ```
44
+ */
45
+ export interface OnProviderDestroy {
46
+ onProviderDestroy(): Promise<void> | void;
47
+ }
48
+ /**
49
+ * Called after all providers are initialized
50
+ *
51
+ * This is called once after all providers have been initialized.
52
+ * The application is fully bootstrapped at this point.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * @Injectable()
57
+ * class AppService implements OnApplicationBootstrap {
58
+ * onApplicationBootstrap() {
59
+ * console.log('Application is ready');
60
+ * }
61
+ * }
62
+ * ```
63
+ */
64
+ export interface OnApplicationBootstrap {
65
+ onApplicationBootstrap(): Promise<void> | void;
66
+ }
67
+ /**
68
+ * Called after the server starts listening
69
+ *
70
+ * This is called after app.listen() completes successfully.
71
+ * The address parameter contains the server URL.
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * @Injectable()
76
+ * class HealthService implements OnApplicationListen {
77
+ * onApplicationListen(address: string) {
78
+ * console.log(`Health checks active at ${address}/health`);
79
+ * }
80
+ * }
81
+ * ```
82
+ */
83
+ export interface OnApplicationListen {
84
+ onApplicationListen(address: string): Promise<void> | void;
85
+ }
86
+ /**
87
+ * Called when the application is shutting down
88
+ *
89
+ * This is called when app.close() is invoked.
90
+ * Use this for graceful shutdown operations.
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * @Injectable()
95
+ * class MetricsService implements OnApplicationShutdown {
96
+ * async onApplicationShutdown(signal?: string) {
97
+ * console.log(`Shutting down due to ${signal}`);
98
+ * await this.flushMetrics();
99
+ * }
100
+ * }
101
+ * ```
102
+ */
103
+ export interface OnApplicationShutdown {
104
+ onApplicationShutdown(signal?: string): Promise<void> | void;
105
+ }
106
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/core/lifecycle/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,sBAAsB;IACrC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChD;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9D"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Lifecycle Hook Interfaces
4
+ *
5
+ * These interfaces provide type-safe lifecycle hooks for providers.
6
+ * Implement these interfaces to receive callbacks at specific points
7
+ * in the application lifecycle.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/core/lifecycle/interfaces.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -0,0 +1,62 @@
1
+ import 'reflect-metadata';
2
+ import { LifecycleEvent } from './event-bus';
3
+ export declare const ON_EVENT_METADATA: unique symbol;
4
+ /**
5
+ * Metadata for @On() decorated methods
6
+ */
7
+ export interface OnEventMetadata {
8
+ event: string;
9
+ methodName: string;
10
+ priority: number;
11
+ }
12
+ /**
13
+ * @On() decorator - Listen to lifecycle or custom events
14
+ *
15
+ * Marks a method to be called when a specific event is emitted.
16
+ * Can be used for built-in lifecycle events or custom events.
17
+ *
18
+ * @param event - The event name to listen for
19
+ * @param options - Optional configuration (priority)
20
+ *
21
+ * @example Built-in lifecycle events:
22
+ * ```typescript
23
+ * @Injectable()
24
+ * class MonitoringService {
25
+ * @On('app:listen')
26
+ * onServerStart({ address, port }: EventPayload['app:listen']) {
27
+ * console.log(`Server listening on ${address}:${port}`);
28
+ * }
29
+ *
30
+ * @On('app:shutdown')
31
+ * async onShutdown({ signal }: EventPayload['app:shutdown']) {
32
+ * await this.flushMetrics();
33
+ * }
34
+ * }
35
+ * ```
36
+ *
37
+ * @example Custom events:
38
+ * ```typescript
39
+ * @Injectable()
40
+ * class NotificationService {
41
+ * @On('user:created')
42
+ * async sendWelcome(user: User) {
43
+ * await this.email.send(user.email, 'Welcome!');
44
+ * }
45
+ * }
46
+ * ```
47
+ *
48
+ * @example With priority (higher = called first):
49
+ * ```typescript
50
+ * @Injectable()
51
+ * class CriticalService {
52
+ * @On('app:shutdown', { priority: 100 })
53
+ * async saveState() {
54
+ * // Called before other shutdown handlers
55
+ * }
56
+ * }
57
+ * ```
58
+ */
59
+ export declare function On(event: LifecycleEvent | string, options?: {
60
+ priority?: number;
61
+ }): MethodDecorator;
62
+ //# sourceMappingURL=on.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/lifecycle/on.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,EAAE,CAChB,KAAK,EAAE,cAAc,GAAG,MAAM,EAC9B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,eAAe,CAajB"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ON_EVENT_METADATA = void 0;
4
+ exports.On = On;
5
+ require("reflect-metadata");
6
+ exports.ON_EVENT_METADATA = Symbol('on:event:metadata');
7
+ /**
8
+ * @On() decorator - Listen to lifecycle or custom events
9
+ *
10
+ * Marks a method to be called when a specific event is emitted.
11
+ * Can be used for built-in lifecycle events or custom events.
12
+ *
13
+ * @param event - The event name to listen for
14
+ * @param options - Optional configuration (priority)
15
+ *
16
+ * @example Built-in lifecycle events:
17
+ * ```typescript
18
+ * @Injectable()
19
+ * class MonitoringService {
20
+ * @On('app:listen')
21
+ * onServerStart({ address, port }: EventPayload['app:listen']) {
22
+ * console.log(`Server listening on ${address}:${port}`);
23
+ * }
24
+ *
25
+ * @On('app:shutdown')
26
+ * async onShutdown({ signal }: EventPayload['app:shutdown']) {
27
+ * await this.flushMetrics();
28
+ * }
29
+ * }
30
+ * ```
31
+ *
32
+ * @example Custom events:
33
+ * ```typescript
34
+ * @Injectable()
35
+ * class NotificationService {
36
+ * @On('user:created')
37
+ * async sendWelcome(user: User) {
38
+ * await this.email.send(user.email, 'Welcome!');
39
+ * }
40
+ * }
41
+ * ```
42
+ *
43
+ * @example With priority (higher = called first):
44
+ * ```typescript
45
+ * @Injectable()
46
+ * class CriticalService {
47
+ * @On('app:shutdown', { priority: 100 })
48
+ * async saveState() {
49
+ * // Called before other shutdown handlers
50
+ * }
51
+ * }
52
+ * ```
53
+ */
54
+ function On(event, options) {
55
+ return (target, propertyKey) => {
56
+ const existing = Reflect.getMetadata(exports.ON_EVENT_METADATA, target.constructor) ?? [];
57
+ existing.push({
58
+ event,
59
+ methodName: String(propertyKey),
60
+ priority: options?.priority ?? 0,
61
+ });
62
+ Reflect.defineMetadata(exports.ON_EVENT_METADATA, existing, target.constructor);
63
+ };
64
+ }
65
+ //# sourceMappingURL=on.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on.decorator.js","sourceRoot":"","sources":["../../../src/core/lifecycle/on.decorator.ts"],"names":[],"mappings":";;;AA6DA,gBAgBC;AA7ED,4BAA0B;AAGb,QAAA,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAW7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,SAAgB,EAAE,CAChB,KAA8B,EAC9B,OAA+B;IAE/B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,yBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAEnE,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK;YACL,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;YAC/B,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO,CAAC,cAAc,CAAC,yBAAiB,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { Constructor } from './types';
2
+ /**
3
+ * Global Registry
4
+ *
5
+ * Stores references to all decorated classes for auto-discovery.
6
+ * Controllers and providers register themselves here via decorators.
7
+ */
8
+ declare class Registry {
9
+ private static instance;
10
+ /** All registered controllers */
11
+ private controllers;
12
+ /** All registered providers (services via @Injectable) */
13
+ private providers;
14
+ /** All registered custom providers (via @Provider) */
15
+ private customProviders;
16
+ private constructor();
17
+ static getInstance(): Registry;
18
+ /**
19
+ * Reset the registry (useful for testing)
20
+ */
21
+ static reset(): void;
22
+ /**
23
+ * Register a controller
24
+ */
25
+ registerController(target: Constructor): void;
26
+ /**
27
+ * Register a provider
28
+ */
29
+ registerProvider(target: Constructor): void;
30
+ /**
31
+ * Get all registered controllers
32
+ */
33
+ getControllers(): Constructor[];
34
+ /**
35
+ * Get all registered providers
36
+ */
37
+ getProviders(): Constructor[];
38
+ /**
39
+ * Check if a controller is registered
40
+ */
41
+ hasController(target: Constructor): boolean;
42
+ /**
43
+ * Check if a provider is registered
44
+ */
45
+ hasProvider(target: Constructor): boolean;
46
+ /**
47
+ * Register a custom provider (@Provider)
48
+ */
49
+ registerCustomProvider(target: Constructor): void;
50
+ /**
51
+ * Get all registered custom providers
52
+ */
53
+ getCustomProviders(): Constructor[];
54
+ /**
55
+ * Check if a custom provider is registered
56
+ */
57
+ hasCustomProvider(target: Constructor): boolean;
58
+ }
59
+ /**
60
+ * Global registry instance
61
+ */
62
+ export declare const registry: Registry;
63
+ export { Registry };
64
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;;GAKG;AACH,cAAM,QAAQ;IACZ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,iCAAiC;IACjC,OAAO,CAAC,WAAW,CAA0B;IAE7C,0DAA0D;IAC1D,OAAO,CAAC,SAAS,CAA0B;IAE3C,sDAAsD;IACtD,OAAO,CAAC,eAAe,CAA0B;IAEjD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,QAAQ;IAO9B;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAI7C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAI3C;;OAEG;IACH,cAAc,IAAI,WAAW,EAAE;IAI/B;;OAEG;IACH,YAAY,IAAI,WAAW,EAAE;IAI7B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI3C;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAIzC;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIjD;;OAEG;IACH,kBAAkB,IAAI,WAAW,EAAE;IAInC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;CAGhD;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,UAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Registry = exports.registry = void 0;
4
+ /**
5
+ * Global Registry
6
+ *
7
+ * Stores references to all decorated classes for auto-discovery.
8
+ * Controllers and providers register themselves here via decorators.
9
+ */
10
+ class Registry {
11
+ static instance;
12
+ /** All registered controllers */
13
+ controllers = new Set();
14
+ /** All registered providers (services via @Injectable) */
15
+ providers = new Set();
16
+ /** All registered custom providers (via @Provider) */
17
+ customProviders = new Set();
18
+ constructor() { }
19
+ static getInstance() {
20
+ if (!Registry.instance) {
21
+ Registry.instance = new Registry();
22
+ }
23
+ return Registry.instance;
24
+ }
25
+ /**
26
+ * Reset the registry (useful for testing)
27
+ */
28
+ static reset() {
29
+ Registry.instance = new Registry();
30
+ }
31
+ /**
32
+ * Register a controller
33
+ */
34
+ registerController(target) {
35
+ this.controllers.add(target);
36
+ }
37
+ /**
38
+ * Register a provider
39
+ */
40
+ registerProvider(target) {
41
+ this.providers.add(target);
42
+ }
43
+ /**
44
+ * Get all registered controllers
45
+ */
46
+ getControllers() {
47
+ return [...this.controllers];
48
+ }
49
+ /**
50
+ * Get all registered providers
51
+ */
52
+ getProviders() {
53
+ return [...this.providers];
54
+ }
55
+ /**
56
+ * Check if a controller is registered
57
+ */
58
+ hasController(target) {
59
+ return this.controllers.has(target);
60
+ }
61
+ /**
62
+ * Check if a provider is registered
63
+ */
64
+ hasProvider(target) {
65
+ return this.providers.has(target);
66
+ }
67
+ /**
68
+ * Register a custom provider (@Provider)
69
+ */
70
+ registerCustomProvider(target) {
71
+ this.customProviders.add(target);
72
+ }
73
+ /**
74
+ * Get all registered custom providers
75
+ */
76
+ getCustomProviders() {
77
+ return [...this.customProviders];
78
+ }
79
+ /**
80
+ * Check if a custom provider is registered
81
+ */
82
+ hasCustomProvider(target) {
83
+ return this.customProviders.has(target);
84
+ }
85
+ }
86
+ exports.Registry = Registry;
87
+ /**
88
+ * Global registry instance
89
+ */
90
+ exports.registry = Registry.getInstance();
91
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,MAAM,QAAQ;IACJ,MAAM,CAAC,QAAQ,CAAW;IAElC,iCAAiC;IACzB,WAAW,GAAG,IAAI,GAAG,EAAe,CAAC;IAE7C,0DAA0D;IAClD,SAAS,GAAG,IAAI,GAAG,EAAe,CAAC;IAE3C,sDAAsD;IAC9C,eAAe,GAAG,IAAI,GAAG,EAAe,CAAC;IAEjD,gBAAuB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAAmB;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAmB;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAmB;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAmB;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,MAAmB;QACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAAmB;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;CACF;AAMQ,4BAAQ;AAJjB;;GAEG;AACU,QAAA,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import 'reflect-metadata';
2
+ import { FastifyInstance } from 'fastify';
3
+ import { Container } from '../container/container';
4
+ import { Constructor } from '../types';
5
+ /**
6
+ * Router class
7
+ *
8
+ * Responsible for:
9
+ * - Scanning controllers for route metadata
10
+ * - Registering routes with Fastify
11
+ * - Handling parameter injection
12
+ */
13
+ export declare class Router {
14
+ private readonly server;
15
+ private readonly container;
16
+ private readonly globalPrefix;
17
+ constructor(server: FastifyInstance, container: Container, globalPrefix?: string);
18
+ /**
19
+ * Register all routes from a controller
20
+ */
21
+ registerController(controllerClass: Constructor): void;
22
+ /**
23
+ * Register a single route
24
+ */
25
+ private registerRoute;
26
+ /**
27
+ * Build the full route path
28
+ */
29
+ private buildPath;
30
+ /**
31
+ * Resolve handler parameters based on metadata
32
+ */
33
+ private resolveParams;
34
+ /**
35
+ * Resolve a single parameter
36
+ */
37
+ private resolveParam;
38
+ }
39
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/core/router/router.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,OAAO,EAAE,WAAW,EAAiC,MAAM,UAAU,CAAC;AAGtE;;;;;;;GAOG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,SAAS,EACpB,YAAY,GAAE,MAAW;IAG5C;;OAEG;IACH,kBAAkB,CAAC,eAAe,EAAE,WAAW,GAAG,IAAI;IAuBtD;;OAEG;IACH,OAAO,CAAC,aAAa;IA+DrB;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,YAAY;CAmCrB"}