@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.
- package/LICENSE +21 -0
- package/README.md +205 -0
- package/dist/core/application.d.ts +28 -0
- package/dist/core/application.d.ts.map +1 -0
- package/dist/core/application.js +321 -0
- package/dist/core/application.js.map +1 -0
- package/dist/core/constants.d.ts +70 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +77 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/container/container.d.ts +101 -0
- package/dist/core/container/container.d.ts.map +1 -0
- package/dist/core/container/container.js +327 -0
- package/dist/core/container/container.js.map +1 -0
- package/dist/core/container/index.d.ts +3 -0
- package/dist/core/container/index.d.ts.map +1 -0
- package/dist/core/container/index.js +19 -0
- package/dist/core/container/index.js.map +1 -0
- package/dist/core/container/injection-token.d.ts +58 -0
- package/dist/core/container/injection-token.d.ts.map +1 -0
- package/dist/core/container/injection-token.js +37 -0
- package/dist/core/container/injection-token.js.map +1 -0
- package/dist/core/decorators/autowired.decorator.d.ts +72 -0
- package/dist/core/decorators/autowired.decorator.d.ts.map +1 -0
- package/dist/core/decorators/autowired.decorator.js +143 -0
- package/dist/core/decorators/autowired.decorator.js.map +1 -0
- package/dist/core/decorators/controller.decorator.d.ts +33 -0
- package/dist/core/decorators/controller.decorator.d.ts.map +1 -0
- package/dist/core/decorators/controller.decorator.js +50 -0
- package/dist/core/decorators/controller.decorator.js.map +1 -0
- package/dist/core/decorators/index.d.ts +7 -0
- package/dist/core/decorators/index.d.ts.map +1 -0
- package/dist/core/decorators/index.js +24 -0
- package/dist/core/decorators/index.js.map +1 -0
- package/dist/core/decorators/injectable.decorator.d.ts +26 -0
- package/dist/core/decorators/injectable.decorator.d.ts.map +1 -0
- package/dist/core/decorators/injectable.decorator.js +40 -0
- package/dist/core/decorators/injectable.decorator.js.map +1 -0
- package/dist/core/decorators/param.decorator.d.ts +72 -0
- package/dist/core/decorators/param.decorator.d.ts.map +1 -0
- package/dist/core/decorators/param.decorator.js +88 -0
- package/dist/core/decorators/param.decorator.js.map +1 -0
- package/dist/core/decorators/provider.decorator.d.ts +64 -0
- package/dist/core/decorators/provider.decorator.d.ts.map +1 -0
- package/dist/core/decorators/provider.decorator.js +69 -0
- package/dist/core/decorators/provider.decorator.js.map +1 -0
- package/dist/core/decorators/route.decorator.d.ts +53 -0
- package/dist/core/decorators/route.decorator.d.ts.map +1 -0
- package/dist/core/decorators/route.decorator.js +85 -0
- package/dist/core/decorators/route.decorator.js.map +1 -0
- package/dist/core/discovery.d.ts +24 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +168 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/exceptions/catch.decorator.d.ts +71 -0
- package/dist/core/exceptions/catch.decorator.d.ts.map +1 -0
- package/dist/core/exceptions/catch.decorator.js +77 -0
- package/dist/core/exceptions/catch.decorator.js.map +1 -0
- package/dist/core/exceptions/exception-filter.d.ts +134 -0
- package/dist/core/exceptions/exception-filter.d.ts.map +1 -0
- package/dist/core/exceptions/exception-filter.js +161 -0
- package/dist/core/exceptions/exception-filter.js.map +1 -0
- package/dist/core/exceptions/exceptions.d.ts +212 -0
- package/dist/core/exceptions/exceptions.d.ts.map +1 -0
- package/dist/core/exceptions/exceptions.js +275 -0
- package/dist/core/exceptions/exceptions.js.map +1 -0
- package/dist/core/exceptions/http-exception.d.ts +79 -0
- package/dist/core/exceptions/http-exception.d.ts.map +1 -0
- package/dist/core/exceptions/http-exception.js +106 -0
- package/dist/core/exceptions/http-exception.js.map +1 -0
- package/dist/core/exceptions/index.d.ts +5 -0
- package/dist/core/exceptions/index.d.ts.map +1 -0
- package/dist/core/exceptions/index.js +38 -0
- package/dist/core/exceptions/index.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +28 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lifecycle/event-bus.d.ts +96 -0
- package/dist/core/lifecycle/event-bus.d.ts.map +1 -0
- package/dist/core/lifecycle/event-bus.js +91 -0
- package/dist/core/lifecycle/event-bus.js.map +1 -0
- package/dist/core/lifecycle/index.d.ts +4 -0
- package/dist/core/lifecycle/index.d.ts.map +1 -0
- package/dist/core/lifecycle/index.js +21 -0
- package/dist/core/lifecycle/index.js.map +1 -0
- package/dist/core/lifecycle/interfaces.d.ts +106 -0
- package/dist/core/lifecycle/interfaces.d.ts.map +1 -0
- package/dist/core/lifecycle/interfaces.js +10 -0
- package/dist/core/lifecycle/interfaces.js.map +1 -0
- package/dist/core/lifecycle/on.decorator.d.ts +62 -0
- package/dist/core/lifecycle/on.decorator.d.ts.map +1 -0
- package/dist/core/lifecycle/on.decorator.js +65 -0
- package/dist/core/lifecycle/on.decorator.js.map +1 -0
- package/dist/core/registry.d.ts +64 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +91 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/router/router.d.ts +39 -0
- package/dist/core/router/router.d.ts.map +1 -0
- package/dist/core/router/router.js +150 -0
- package/dist/core/router/router.js.map +1 -0
- package/dist/core/types.d.ts +161 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- 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 @@
|
|
|
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"}
|