@riktajs/core 0.2.3 ā 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/core/application.d.ts.map +1 -1
- package/dist/core/application.js +27 -14
- package/dist/core/application.js.map +1 -1
- package/dist/core/decorators/controller.decorator.d.ts.map +1 -1
- package/dist/core/decorators/controller.decorator.js +0 -1
- package/dist/core/decorators/controller.decorator.js.map +1 -1
- package/dist/core/discovery.d.ts +5 -5
- package/dist/core/discovery.d.ts.map +1 -1
- package/dist/core/discovery.js +26 -42
- package/dist/core/discovery.js.map +1 -1
- package/dist/core/router/router.d.ts +26 -13
- package/dist/core/router/router.d.ts.map +1 -1
- package/dist/core/router/router.js +160 -108
- package/dist/core/router/router.js.map +1 -1
- package/dist/core/types.d.ts +3 -1
- package/dist/core/types.d.ts.map +1 -1
- package/package.json +10 -6
package/README.md
CHANGED
|
@@ -101,6 +101,40 @@ Everything you need to build production-ready APIs.
|
|
|
101
101
|
| [**Validation**](./docs/guide/validation.md) | **New!** Type-safe validation with Zod. |
|
|
102
102
|
| [**Lifecycle**](./docs/guide/lifecycle.md) | Hooks (`OnProviderInit`) and the Event Bus. |
|
|
103
103
|
| [**Error Handling**](./docs/guide/error-handling.md) | Exception filters and standard JSON responses. |
|
|
104
|
+
| [**Benchmarks**](./benchmarks/README.md) | Performance comparison with Fastify & NestJS. |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## ā” Performance
|
|
109
|
+
|
|
110
|
+
Rikta is built on Fastify and delivers **excellent performance**. From our [benchmarks](./benchmarks/README.md):
|
|
111
|
+
|
|
112
|
+
| Metric | Rikta vs NestJS | Result |
|
|
113
|
+
|--------|-----------------|--------|
|
|
114
|
+
| **Startup** | š¢ **-37.7%** | Rikta is faster |
|
|
115
|
+
| **GET requests** | š¢ **-44.3%** | Rikta is faster |
|
|
116
|
+
| **POST requests** | š¢ **-14.8%** | Rikta is faster |
|
|
117
|
+
| **Param requests** | š¢ **-36.7%** | Rikta is faster |
|
|
118
|
+
| **Average** | š¢ **-32.0%** | Rikta is faster |
|
|
119
|
+
|
|
120
|
+
For detailed tests:
|
|
121
|
+
```bash
|
|
122
|
+
cd benchmarks
|
|
123
|
+
npm install
|
|
124
|
+
npm run bench
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Production Mode
|
|
128
|
+
|
|
129
|
+
For maximum performance, use silent mode:
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
const app = await Rikta.create({
|
|
133
|
+
port: 3000,
|
|
134
|
+
silent: true, // Disable all console output
|
|
135
|
+
logger: false // Disable Fastify logging
|
|
136
|
+
});
|
|
137
|
+
```
|
|
104
138
|
|
|
105
139
|
---
|
|
106
140
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAe1B,OAAO,EAAe,WAAW,EAAE,gBAAgB,EAAqB,MAAM,SAAS,CAAC;AASxF;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;;;;;;;;;;OAcG;WACU,MAAM,CAAC,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAe1B,OAAO,EAAe,WAAW,EAAE,gBAAgB,EAAqB,MAAM,SAAS,CAAC;AASxF;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;;;;;;;;;;OAcG;WACU,MAAM,CAAC,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAsBzE;AAyUD,OAAO,EAAE,YAAY,IAAI,KAAK,EAAE,CAAC"}
|
package/dist/core/application.js
CHANGED
|
@@ -37,16 +37,20 @@ class RiktaFactory {
|
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
39
|
static async create(config = {}) {
|
|
40
|
-
|
|
40
|
+
const silent = config.silent ?? false;
|
|
41
|
+
if (!silent)
|
|
42
|
+
console.log('\nš Rikta Framework Starting...\n');
|
|
41
43
|
const callerDir = (0, discovery_1.getCallerDirectory)();
|
|
42
|
-
console.log(' Caller Directory:', callerDir);
|
|
43
44
|
let discoveredFiles = [];
|
|
44
45
|
// Auto-discovery: scan for controllers and services
|
|
45
|
-
if (!config.controllers) {
|
|
46
|
-
const patterns = config.autowired
|
|
47
|
-
|
|
46
|
+
if (!config.controllers && config.autowired !== false) {
|
|
47
|
+
const patterns = Array.isArray(config.autowired) && config.autowired.length > 0
|
|
48
|
+
? config.autowired
|
|
49
|
+
: ['./**'];
|
|
50
|
+
if (!silent)
|
|
51
|
+
console.log('\nš Auto-discovering modules...');
|
|
48
52
|
discoveredFiles = await (0, discovery_1.discoverModules)(patterns, callerDir);
|
|
49
|
-
if (discoveredFiles.length > 0) {
|
|
53
|
+
if (discoveredFiles.length > 0 && !silent) {
|
|
50
54
|
console.log(` Found ${discoveredFiles.length} module(s)`);
|
|
51
55
|
}
|
|
52
56
|
}
|
|
@@ -72,11 +76,14 @@ class RiktaApplicationImpl {
|
|
|
72
76
|
isListening = false;
|
|
73
77
|
address = '';
|
|
74
78
|
constructor(config) {
|
|
79
|
+
const silent = config.silent ?? false;
|
|
75
80
|
this.config = {
|
|
76
81
|
port: config.port ?? constants_1.DEFAULT_CONFIG.port,
|
|
77
82
|
host: config.host ?? constants_1.DEFAULT_CONFIG.host,
|
|
78
|
-
|
|
83
|
+
// If silent mode, disable logger unless explicitly set
|
|
84
|
+
logger: config.logger ?? (silent ? false : constants_1.DEFAULT_CONFIG.logger),
|
|
79
85
|
prefix: config.prefix ?? constants_1.DEFAULT_CONFIG.prefix,
|
|
86
|
+
silent: silent,
|
|
80
87
|
controllers: config.controllers,
|
|
81
88
|
providers: config.providers,
|
|
82
89
|
exceptionFilter: config.exceptionFilter,
|
|
@@ -118,13 +125,15 @@ class RiktaApplicationImpl {
|
|
|
118
125
|
}
|
|
119
126
|
// Set Fastify error handler
|
|
120
127
|
this.server.setErrorHandler((0, exceptions_1.createExceptionHandler)(globalFilter, this.customExceptionFilters));
|
|
121
|
-
|
|
128
|
+
if (!this.config.silent)
|
|
129
|
+
console.log('š”ļø Exception handler configured');
|
|
122
130
|
}
|
|
123
131
|
/**
|
|
124
132
|
* Initialize the application
|
|
125
133
|
*/
|
|
126
134
|
async init(discoveredFiles = []) {
|
|
127
|
-
|
|
135
|
+
if (!this.config.silent)
|
|
136
|
+
console.log('\nš§ Rikta Framework Initializing...\n');
|
|
128
137
|
// Emit discovery event
|
|
129
138
|
await this.events.emit('app:discovery', { files: discoveredFiles });
|
|
130
139
|
// 1. Process @Provider classes first
|
|
@@ -145,9 +154,10 @@ class RiktaApplicationImpl {
|
|
|
145
154
|
}
|
|
146
155
|
// 5. Register routes
|
|
147
156
|
const controllers = this.config.controllers ?? registry_1.registry.getControllers();
|
|
148
|
-
|
|
157
|
+
if (!this.config.silent)
|
|
158
|
+
console.log('š” Registering routes:');
|
|
149
159
|
for (const controller of controllers) {
|
|
150
|
-
this.router.registerController(controller);
|
|
160
|
+
this.router.registerController(controller, this.config.silent);
|
|
151
161
|
}
|
|
152
162
|
await this.events.emit('app:routes', { count: controllers.length });
|
|
153
163
|
// 6. Call onApplicationBootstrap hooks
|
|
@@ -155,7 +165,8 @@ class RiktaApplicationImpl {
|
|
|
155
165
|
await this.events.emit('app:bootstrap', {
|
|
156
166
|
providerCount: this.initializedProviders.length
|
|
157
167
|
});
|
|
158
|
-
|
|
168
|
+
if (!this.config.silent)
|
|
169
|
+
console.log('\nā
Application initialized successfully\n');
|
|
159
170
|
}
|
|
160
171
|
/**
|
|
161
172
|
* Process all @Provider decorated classes
|
|
@@ -260,7 +271,8 @@ class RiktaApplicationImpl {
|
|
|
260
271
|
host: this.config.host,
|
|
261
272
|
});
|
|
262
273
|
this.isListening = true;
|
|
263
|
-
|
|
274
|
+
if (!this.config.silent)
|
|
275
|
+
console.log(`š Server listening on ${this.address}\n`);
|
|
264
276
|
// Call onApplicationListen hooks
|
|
265
277
|
for (const { instance } of this.initializedProviders) {
|
|
266
278
|
if (this.hasHook(instance, 'onApplicationListen')) {
|
|
@@ -299,7 +311,8 @@ class RiktaApplicationImpl {
|
|
|
299
311
|
await this.events.emit('app:destroy', {
|
|
300
312
|
uptime: Date.now() - this.startTime
|
|
301
313
|
});
|
|
302
|
-
|
|
314
|
+
if (!this.config.silent)
|
|
315
|
+
console.log('\nš Application closed\n');
|
|
303
316
|
}
|
|
304
317
|
/**
|
|
305
318
|
* Get the server URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":";;;;;;AAAA,4BAA0B;AAC1B,sDAAmD;AACnD,qDAAkD;AAClD,4CAAyC;AACzC,yCAAsC;AACtC,2CAAkE;AAElE,qDAAiD;AACjD,2DAA8E;AAQ9E,2CAAqF;AACrF,6CAKsB;AAEtB;;;;;GAKG;AACH,MAAa,YAAY;IACvB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAsB,EAAE;QAC1C,
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":";;;;;;AAAA,4BAA0B;AAC1B,sDAAmD;AACnD,qDAAkD;AAClD,4CAAyC;AACzC,yCAAsC;AACtC,2CAAkE;AAElE,qDAAiD;AACjD,2DAA8E;AAQ9E,2CAAqF;AACrF,6CAKsB;AAEtB;;;;;GAKG;AACH,MAAa,YAAY;IACvB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAsB,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAA,8BAAkB,GAAE,CAAC;QACvC,IAAI,eAAe,GAAa,EAAE,CAAC;QAEnC,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAC7E,CAAC,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACb,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAC7D,eAAe,GAAG,MAAM,IAAA,2BAAe,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,YAAY,eAAe,CAAC,MAAM,YAAY,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAtCD,oCAsCC;AAyUwB,6BAAK;AAvU9B;;GAEG;AACH,MAAM,oBAAoB;IACf,MAAM,CAAkB;IAChB,SAAS,CAAY;IACrB,MAAM,CAAkO;IACxO,MAAM,CAAS;IACf,MAAM,CAAW;IACjB,oBAAoB,GAAiE,EAAE,CAAC;IACxF,sBAAsB,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC9D,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChC,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,GAAG,EAAE,CAAC;IAErB,YAAY,MAAmB;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,0BAAc,CAAC,IAAI;YACxC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,0BAAc,CAAC,IAAI;YACxC,uDAAuD;YACvD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,0BAAc,CAAC,MAAM,CAAC;YACjE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,0BAAc,CAAC,MAAM;YAC9C,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAA,iBAAO,EAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,qBAAS,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1E,+BAA+B;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,oBAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvD,iCAAiC;QACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,6CAA6C;QAC7C,MAAM,YAAY,GAAG,IAAI,kCAAqB,CAAC;YAC7C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY;YACvD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS;SAClD,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACzD,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAA,6BAAgB,EAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAoB,CAAC;YAE9E,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,wCAAwC;gBACxC,KAAK,MAAM,aAAa,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBAChD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,MAAM,CAAC,eAAe,CACzB,IAAA,mCAAsB,EAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAClE,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,kBAA4B,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAE/E,uBAAuB;QACvB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAEpE,qCAAqC;QACrC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YACtC,KAAK,EAAE,mBAAQ,CAAC,kBAAkB,EAAE,CAAC,MAAM;SAC5C,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE5C,4CAA4C;QAC5C,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QACxD,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,0CAA0C;QAC1C,KAAK,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,mBAAQ,CAAC,cAAc,EAAE,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC/D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpE,uCAAuC;QACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YACtC,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB;QAClC,MAAM,eAAe,GAAG,mBAAQ,CAAC,kBAAkB,EAAE,CAAC;QACtD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEzC,KAAK,MAAM,aAAa,IAAI,eAAe,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAiC,OAAO,CAAC,WAAW,CAChE,6BAAiB,EACjB,aAAa,CACd,CAAC;YAEF,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAE5D,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,MAAM,SAAS,GAAG,mBAAQ,CAAC,YAAY,EAAE,CAAC;QAE1C,OAAO,SAAS;aACb,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACd,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;SAC3C,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,MAAmB;QAC7C,MAAM,OAAO,GACX,OAAO,CAAC,WAAW,CAAC,+BAAmB,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,MAAmB,EAAE,QAAgB;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,6BAA6B;QAC7B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,2BAA2B;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC7C,MAAO,QAA2B,CAAC,cAAc,EAAE,CAAC;QACtD,CAAC;QAED,2BAA2B;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE9E,oDAAoD;QACpD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,MAAmB,EAAE,QAAiB;QACnE,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEvD,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAI,QAAqC,CAAC,UAAU,CAAC,CAAC;YAClE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAAqB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CAAC,QAAgB;QACrC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACrC,MAAO,QAAuD,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,QAAiB,EAAE,QAAgB;QACjD,OAAO,CACL,QAAQ,KAAK,IAAI;YACjB,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,IAAI,QAAQ;YACpB,OAAQ,QAAoC,CAAC,QAAQ,CAAC,KAAK,UAAU,CACtE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QAEjF,iCAAiC;QACjC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,CAAC;gBAClD,MAAO,QAAgC,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SACvB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAe;QACzB,0BAA0B;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnD,uCAAuC;QACvC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;QAE1D,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,QAAQ,EAAE,CAAC;YACpC,6BAA6B;YAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC;gBACpD,MAAO,QAAkC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC1E,CAAC;YAED,yBAAyB;YACzB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBAChD,MAAO,QAA8B,CAAC,iBAAiB,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,yBAAyB;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,KAAqB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"controller.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,cAAc,CAuBvF"}
|
|
@@ -42,7 +42,6 @@ function Controller(prefixOrOptions) {
|
|
|
42
42
|
// Mark as injectable
|
|
43
43
|
Reflect.defineMetadata(constants_1.INJECTABLE_METADATA, { scope: 'singleton' }, target);
|
|
44
44
|
// Register in DI container
|
|
45
|
-
console.log(`ļæ½ Controller registered: ${target.name} (prefix: '${normalizedPrefix}')`);
|
|
46
45
|
container_1.container.register(target, { scope: 'singleton' });
|
|
47
46
|
// Auto-register in global registry for discovery
|
|
48
47
|
registry_1.registry.registerController(target);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":";;AAoCA,
|
|
1
|
+
{"version":3,"file":"controller.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/controller.decorator.ts"],"names":[],"mappings":";;AAoCA,gCAuBC;AA3DD,4BAA0B;AAC1B,4CAAwE;AACxE,sDAAmD;AACnD,0CAAuC;AAUvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,UAAU,CAAC,eAA4C;IACrE,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,OAAO,eAAe,KAAK,QAAQ;YAChD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,eAAe,EAAE,MAAM,IAAI,EAAE,CAAC;QAElC,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,MAAM;YAC7B,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;YAClD,CAAC,CAAC,EAAE,CAAC;QAEP,4BAA4B;QAC5B,OAAO,CAAC,cAAc,CAAC,+BAAmB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;QAElF,qBAAqB;QACrB,OAAO,CAAC,cAAc,CAAC,+BAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,qBAAS,CAAC,QAAQ,CAAC,MAA6C,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1F,iDAAiD;QACjD,mBAAQ,CAAC,kBAAkB,CAAC,MAA6C,CAAC,CAAC;IAC7E,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/core/discovery.d.ts
CHANGED
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
*/
|
|
24
24
|
export declare function discoverModules(patterns?: string[], cwd?: string): Promise<string[]>;
|
|
25
25
|
/**
|
|
26
|
-
* Get the
|
|
26
|
+
* Get the entry point directory (where the main script is located)
|
|
27
27
|
*
|
|
28
|
-
* This
|
|
29
|
-
*
|
|
30
|
-
* as an external library in node_modules.
|
|
28
|
+
* This uses process.argv[1] to determine the directory of the script
|
|
29
|
+
* that started the Node.js process. This works correctly when rikta-core
|
|
30
|
+
* is installed as an external library in node_modules.
|
|
31
31
|
*
|
|
32
|
-
* @returns The directory of the
|
|
32
|
+
* @returns The directory of the main script, or process.cwd() as fallback
|
|
33
33
|
*/
|
|
34
34
|
export declare function getCallerDirectory(): string;
|
|
35
35
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"AA8DA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,GAAE,MAAM,EAAuB,EACvC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,EAAE,CAAC,CAqEnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
package/dist/core/discovery.js
CHANGED
|
@@ -48,47 +48,31 @@ const DEFAULT_IGNORE_PATTERNS = [
|
|
|
48
48
|
'**/node_modules/**',
|
|
49
49
|
'**/dist/**',
|
|
50
50
|
'**/build/**',
|
|
51
|
+
'**/benchmarks/**',
|
|
51
52
|
'**/*.test.ts',
|
|
52
53
|
'**/*.spec.ts',
|
|
53
54
|
'**/*.d.ts',
|
|
54
55
|
];
|
|
55
56
|
/**
|
|
56
|
-
* Get the
|
|
57
|
-
*
|
|
58
|
-
*
|
|
57
|
+
* Get the entry point directory of the application.
|
|
58
|
+
*
|
|
59
|
+
* Uses process.argv[1] which contains the path to the main script being executed.
|
|
60
|
+
* This is the cleanest way to determine the user's project directory when
|
|
61
|
+
* rikta-core is installed in node_modules.
|
|
62
|
+
*
|
|
63
|
+
* Falls back to process.cwd() if argv[1] is not available.
|
|
59
64
|
*/
|
|
60
|
-
function
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
for (const site of stack) {
|
|
69
|
-
const filename = site.getFileName();
|
|
70
|
-
if (filename &&
|
|
71
|
-
!filename.includes('discovery.ts') &&
|
|
72
|
-
!filename.includes('discovery.js') &&
|
|
73
|
-
!filename.includes('application.ts') &&
|
|
74
|
-
!filename.includes('application.js') &&
|
|
75
|
-
!filename.includes('rikta-core')) {
|
|
76
|
-
callerFile = filename;
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (callerFile) {
|
|
81
|
-
// Handle file:// URLs (ESM) and regular paths
|
|
82
|
-
const filePath = callerFile.startsWith('file://')
|
|
83
|
-
? new URL(callerFile).pathname
|
|
84
|
-
: callerFile;
|
|
85
|
-
return path_1.default.dirname(filePath);
|
|
86
|
-
}
|
|
87
|
-
return process.cwd();
|
|
88
|
-
}
|
|
89
|
-
finally {
|
|
90
|
-
Error.prepareStackTrace = originalPrepareStackTrace;
|
|
65
|
+
function getEntryPointDirectory() {
|
|
66
|
+
const mainScript = process.argv[1];
|
|
67
|
+
if (mainScript) {
|
|
68
|
+
// Handle file:// URLs (ESM) and regular paths
|
|
69
|
+
const filePath = mainScript.startsWith('file://')
|
|
70
|
+
? new URL(mainScript).pathname
|
|
71
|
+
: mainScript;
|
|
72
|
+
return path_1.default.dirname(filePath);
|
|
91
73
|
}
|
|
74
|
+
// Fallback to current working directory
|
|
75
|
+
return process.cwd();
|
|
92
76
|
}
|
|
93
77
|
/**
|
|
94
78
|
* Regex patterns to detect Rikta decorators
|
|
@@ -134,9 +118,9 @@ async function containsRiktaDecorators(filePath) {
|
|
|
134
118
|
* ```
|
|
135
119
|
*/
|
|
136
120
|
async function discoverModules(patterns = ['./**/*.{ts,js}'], cwd) {
|
|
137
|
-
// If no cwd provided,
|
|
121
|
+
// If no cwd provided, use the entry point directory (where the main script is)
|
|
138
122
|
// This is crucial when rikta-core is installed in node_modules
|
|
139
|
-
const baseDir = cwd ??
|
|
123
|
+
const baseDir = cwd ?? getEntryPointDirectory();
|
|
140
124
|
// Resolve the base directory to absolute if needed
|
|
141
125
|
const absoluteBaseDir = path_1.default.isAbsolute(baseDir)
|
|
142
126
|
? baseDir
|
|
@@ -195,15 +179,15 @@ async function discoverModules(patterns = ['./**/*.{ts,js}'], cwd) {
|
|
|
195
179
|
return importedFiles;
|
|
196
180
|
}
|
|
197
181
|
/**
|
|
198
|
-
* Get the
|
|
182
|
+
* Get the entry point directory (where the main script is located)
|
|
199
183
|
*
|
|
200
|
-
* This
|
|
201
|
-
*
|
|
202
|
-
* as an external library in node_modules.
|
|
184
|
+
* This uses process.argv[1] to determine the directory of the script
|
|
185
|
+
* that started the Node.js process. This works correctly when rikta-core
|
|
186
|
+
* is installed as an external library in node_modules.
|
|
203
187
|
*
|
|
204
|
-
* @returns The directory of the
|
|
188
|
+
* @returns The directory of the main script, or process.cwd() as fallback
|
|
205
189
|
*/
|
|
206
190
|
function getCallerDirectory() {
|
|
207
|
-
return
|
|
191
|
+
return getEntryPointDirectory();
|
|
208
192
|
}
|
|
209
193
|
//# sourceMappingURL=discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,39 +9,52 @@ import { Constructor } from '../types';
|
|
|
9
9
|
* - Scanning controllers for route metadata
|
|
10
10
|
* - Registering routes with Fastify
|
|
11
11
|
* - Handling parameter injection
|
|
12
|
+
*
|
|
13
|
+
* Performance optimizations:
|
|
14
|
+
* - Pre-compiled parameter extractors
|
|
15
|
+
* - Guard instance caching
|
|
16
|
+
* - Fast path for simple routes
|
|
12
17
|
*/
|
|
13
18
|
export declare class Router {
|
|
14
19
|
private readonly server;
|
|
15
20
|
private readonly container;
|
|
16
21
|
private readonly globalPrefix;
|
|
22
|
+
/** Cache for guard instances (singleton per guard class) */
|
|
23
|
+
private readonly guardCache;
|
|
17
24
|
constructor(server: FastifyInstance, container: Container, globalPrefix?: string);
|
|
18
25
|
/**
|
|
19
26
|
* Register all routes from a controller
|
|
20
27
|
*/
|
|
21
|
-
registerController(controllerClass: Constructor): void;
|
|
28
|
+
registerController(controllerClass: Constructor, silent?: boolean): void;
|
|
22
29
|
/**
|
|
23
30
|
* Register a single route
|
|
24
31
|
*/
|
|
25
32
|
private registerRoute;
|
|
26
33
|
/**
|
|
27
|
-
*
|
|
34
|
+
* OPTIMIZATION: Compile parameter resolvers at route registration time
|
|
35
|
+
* Each resolver is a pre-built extractor function
|
|
28
36
|
*/
|
|
29
|
-
private
|
|
37
|
+
private compileParamResolvers;
|
|
38
|
+
/**
|
|
39
|
+
* OPTIMIZATION: Create a specialized extractor function for each param type
|
|
40
|
+
* This avoids switch statements at runtime
|
|
41
|
+
*/
|
|
42
|
+
private createParamExtractor;
|
|
30
43
|
/**
|
|
31
|
-
* Resolve
|
|
44
|
+
* OPTIMIZATION: Resolve params using pre-compiled extractors
|
|
32
45
|
*/
|
|
33
|
-
private
|
|
46
|
+
private resolveParamsOptimized;
|
|
34
47
|
/**
|
|
35
|
-
*
|
|
48
|
+
* OPTIMIZATION: Pre-resolve guard instances at route registration
|
|
36
49
|
*/
|
|
37
|
-
private
|
|
50
|
+
private resolveGuardInstances;
|
|
38
51
|
/**
|
|
39
|
-
* Execute guards
|
|
40
|
-
* Guards are executed in order (controller-level first, then method-level)
|
|
41
|
-
* All guards must pass (AND logic)
|
|
42
|
-
*
|
|
43
|
-
* @throws ForbiddenException if any guard returns false
|
|
52
|
+
* OPTIMIZATION: Execute guards using pre-resolved instances
|
|
44
53
|
*/
|
|
45
|
-
private
|
|
54
|
+
private executeGuardsOptimized;
|
|
55
|
+
/**
|
|
56
|
+
* Build the full route path
|
|
57
|
+
*/
|
|
58
|
+
private buildPath;
|
|
46
59
|
}
|
|
47
60
|
//# sourceMappingURL=router.d.ts.map
|
|
@@ -1 +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;
|
|
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;AA6BtE;;;;;;;;;;;;GAYG;AACH,qBAAa,MAAM;IAKf,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;gBAG9C,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,SAAS,EACpB,YAAY,GAAE,MAAW;IAG5C;;OAEG;IACH,kBAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,GAAE,OAAe,GAAG,IAAI;IAuB/E;;OAEG;IACH,OAAO,CAAC,aAAa;IA+FrB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+B7B;;OAEG;YACW,sBAAsB;IAcpC;;OAEG;IACH,OAAO,CAAC,SAAS;CAQlB"}
|
|
@@ -14,11 +14,18 @@ const use_guards_decorator_1 = require("../guards/use-guards.decorator");
|
|
|
14
14
|
* - Scanning controllers for route metadata
|
|
15
15
|
* - Registering routes with Fastify
|
|
16
16
|
* - Handling parameter injection
|
|
17
|
+
*
|
|
18
|
+
* Performance optimizations:
|
|
19
|
+
* - Pre-compiled parameter extractors
|
|
20
|
+
* - Guard instance caching
|
|
21
|
+
* - Fast path for simple routes
|
|
17
22
|
*/
|
|
18
23
|
class Router {
|
|
19
24
|
server;
|
|
20
25
|
container;
|
|
21
26
|
globalPrefix;
|
|
27
|
+
/** Cache for guard instances (singleton per guard class) */
|
|
28
|
+
guardCache = new Map();
|
|
22
29
|
constructor(server, container, globalPrefix = '') {
|
|
23
30
|
this.server = server;
|
|
24
31
|
this.container = container;
|
|
@@ -27,7 +34,7 @@ class Router {
|
|
|
27
34
|
/**
|
|
28
35
|
* Register all routes from a controller
|
|
29
36
|
*/
|
|
30
|
-
registerController(controllerClass) {
|
|
37
|
+
registerController(controllerClass, silent = false) {
|
|
31
38
|
// Get controller metadata
|
|
32
39
|
const controllerMeta = Reflect.getMetadata(constants_1.CONTROLLER_METADATA, controllerClass);
|
|
33
40
|
if (!controllerMeta) {
|
|
@@ -40,13 +47,13 @@ class Router {
|
|
|
40
47
|
const routes = Reflect.getMetadata(constants_1.ROUTES_METADATA, controllerClass) ?? [];
|
|
41
48
|
// Register each route
|
|
42
49
|
for (const route of routes) {
|
|
43
|
-
this.registerRoute(controllerClass, controllerInstance, controllerMeta.prefix, route);
|
|
50
|
+
this.registerRoute(controllerClass, controllerInstance, controllerMeta.prefix, route, silent);
|
|
44
51
|
}
|
|
45
52
|
}
|
|
46
53
|
/**
|
|
47
54
|
* Register a single route
|
|
48
55
|
*/
|
|
49
|
-
registerRoute(controllerClass, controllerInstance, controllerPrefix, route) {
|
|
56
|
+
registerRoute(controllerClass, controllerInstance, controllerPrefix, route, silent = false) {
|
|
50
57
|
// Build full path
|
|
51
58
|
const fullPath = this.buildPath(controllerPrefix, route.path);
|
|
52
59
|
// Get the handler method
|
|
@@ -60,154 +67,199 @@ class Router {
|
|
|
60
67
|
const statusCode = Reflect.getMetadata(constants_1.HTTP_CODE_METADATA, controllerClass, route.handlerName);
|
|
61
68
|
// Get guards for this route (controller-level + method-level)
|
|
62
69
|
const guards = (0, use_guards_decorator_1.getGuardsMetadata)(controllerClass, route.handlerName);
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
70
|
+
// ============================================
|
|
71
|
+
// OPTIMIZATION: Pre-compile parameter resolvers
|
|
72
|
+
// ============================================
|
|
73
|
+
const compiledResolvers = this.compileParamResolvers(paramsMeta);
|
|
74
|
+
const hasParams = compiledResolvers.length > 0;
|
|
75
|
+
const maxParamIndex = hasParams ? Math.max(...compiledResolvers.map(r => r.index)) : -1;
|
|
76
|
+
// ============================================
|
|
77
|
+
// OPTIMIZATION: Pre-resolve guard instances
|
|
78
|
+
// ============================================
|
|
79
|
+
const guardInstances = this.resolveGuardInstances(guards);
|
|
80
|
+
const hasGuards = guardInstances.length > 0;
|
|
81
|
+
// ============================================
|
|
82
|
+
// OPTIMIZATION: Create specialized handlers
|
|
83
|
+
// ============================================
|
|
84
|
+
let routeHandler;
|
|
85
|
+
if (!hasGuards && !hasParams && !statusCode) {
|
|
86
|
+
// FAST PATH: No guards, no params, no custom status
|
|
87
|
+
routeHandler = async (_request, _reply) => {
|
|
88
|
+
return handler.call(controllerInstance);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
else if (!hasGuards && !hasParams) {
|
|
92
|
+
// Fast path: Just status code
|
|
93
|
+
routeHandler = async (_request, reply) => {
|
|
94
|
+
const result = await handler.call(controllerInstance);
|
|
95
|
+
if (statusCode)
|
|
96
|
+
reply.status(statusCode);
|
|
97
|
+
return result;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
else if (!hasGuards) {
|
|
101
|
+
// Medium path: Params but no guards
|
|
102
|
+
routeHandler = async (request, reply) => {
|
|
103
|
+
const args = this.resolveParamsOptimized(compiledResolvers, maxParamIndex, request, reply);
|
|
81
104
|
const result = await handler.apply(controllerInstance, args);
|
|
82
|
-
|
|
83
|
-
if (statusCode) {
|
|
105
|
+
if (statusCode)
|
|
84
106
|
reply.status(statusCode);
|
|
85
|
-
}
|
|
86
|
-
// Return result (Fastify will serialize it)
|
|
87
107
|
return result;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
// Full path: Guards + params
|
|
112
|
+
// Pre-create execution context factory for this route
|
|
113
|
+
const createContext = (req, rep) => new execution_context_1.ExecutionContextImpl(req, rep, controllerClass, route.handlerName);
|
|
114
|
+
routeHandler = async (request, reply) => {
|
|
115
|
+
// Execute guards with cached instances
|
|
116
|
+
await this.executeGuardsOptimized(guardInstances, createContext(request, reply));
|
|
117
|
+
// Resolve params if needed
|
|
118
|
+
const args = hasParams
|
|
119
|
+
? this.resolveParamsOptimized(compiledResolvers, maxParamIndex, request, reply)
|
|
120
|
+
: [];
|
|
121
|
+
const result = await handler.apply(controllerInstance, args);
|
|
122
|
+
if (statusCode)
|
|
123
|
+
reply.status(statusCode);
|
|
124
|
+
return result;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
94
127
|
// Register with Fastify
|
|
95
128
|
const method = route.method.toLowerCase();
|
|
96
129
|
this.server[method](fullPath, routeHandler);
|
|
97
130
|
// Log route registration
|
|
98
|
-
|
|
131
|
+
if (!silent)
|
|
132
|
+
console.log(` ā ${route.method.padEnd(7)} ${fullPath}`);
|
|
99
133
|
}
|
|
100
134
|
/**
|
|
101
|
-
*
|
|
135
|
+
* OPTIMIZATION: Compile parameter resolvers at route registration time
|
|
136
|
+
* Each resolver is a pre-built extractor function
|
|
102
137
|
*/
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
.filter(Boolean)
|
|
106
|
-
.join('');
|
|
107
|
-
// Normalize multiple slashes
|
|
108
|
-
return parts.replace(/\/+/g, '/') || '/';
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Resolve handler parameters based on metadata
|
|
112
|
-
*/
|
|
113
|
-
resolveParams(paramsMeta, context) {
|
|
114
|
-
if (paramsMeta.length === 0) {
|
|
138
|
+
compileParamResolvers(paramsMeta) {
|
|
139
|
+
if (paramsMeta.length === 0)
|
|
115
140
|
return [];
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
return args;
|
|
141
|
+
return paramsMeta.map(param => {
|
|
142
|
+
const extractor = this.createParamExtractor(param);
|
|
143
|
+
return {
|
|
144
|
+
index: param.index,
|
|
145
|
+
extract: extractor,
|
|
146
|
+
zodSchema: param.zodSchema,
|
|
147
|
+
validationLabel: `${param.type}${param.key ? ` (${param.key})` : ''}`
|
|
148
|
+
};
|
|
149
|
+
});
|
|
126
150
|
}
|
|
127
151
|
/**
|
|
128
|
-
*
|
|
152
|
+
* OPTIMIZATION: Create a specialized extractor function for each param type
|
|
153
|
+
* This avoids switch statements at runtime
|
|
129
154
|
*/
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
let rawValue;
|
|
155
|
+
createParamExtractor(param) {
|
|
156
|
+
const key = param.key;
|
|
133
157
|
switch (param.type) {
|
|
134
158
|
case constants_1.ParamType.BODY:
|
|
135
|
-
|
|
136
|
-
?
|
|
137
|
-
:
|
|
138
|
-
break;
|
|
159
|
+
return key
|
|
160
|
+
? (ctx) => ctx.body?.[key]
|
|
161
|
+
: (ctx) => ctx.body;
|
|
139
162
|
case constants_1.ParamType.QUERY:
|
|
140
|
-
|
|
141
|
-
?
|
|
142
|
-
:
|
|
143
|
-
break;
|
|
163
|
+
return key
|
|
164
|
+
? (ctx) => ctx.query[key]
|
|
165
|
+
: (ctx) => ctx.query;
|
|
144
166
|
case constants_1.ParamType.PARAM:
|
|
145
|
-
|
|
146
|
-
?
|
|
147
|
-
:
|
|
148
|
-
break;
|
|
167
|
+
return key
|
|
168
|
+
? (ctx) => ctx.params[key]
|
|
169
|
+
: (ctx) => ctx.params;
|
|
149
170
|
case constants_1.ParamType.HEADERS:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
171
|
+
const headerKey = key?.toLowerCase();
|
|
172
|
+
return headerKey
|
|
173
|
+
? (ctx) => ctx.request.headers[headerKey]
|
|
174
|
+
: (ctx) => ctx.request.headers;
|
|
154
175
|
case constants_1.ParamType.REQUEST:
|
|
155
|
-
return
|
|
176
|
+
return (ctx) => ctx.request;
|
|
156
177
|
case constants_1.ParamType.REPLY:
|
|
157
|
-
return
|
|
178
|
+
return (ctx) => ctx.reply;
|
|
158
179
|
case constants_1.ParamType.CONTEXT:
|
|
159
|
-
return
|
|
180
|
+
return (ctx) => ctx;
|
|
160
181
|
default:
|
|
161
|
-
return undefined;
|
|
182
|
+
return () => undefined;
|
|
162
183
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* OPTIMIZATION: Resolve params using pre-compiled extractors
|
|
187
|
+
*/
|
|
188
|
+
resolveParamsOptimized(resolvers, maxIndex, request, reply) {
|
|
189
|
+
// Build context once
|
|
190
|
+
const context = {
|
|
191
|
+
request,
|
|
192
|
+
reply,
|
|
193
|
+
params: request.params,
|
|
194
|
+
query: request.query,
|
|
195
|
+
body: request.body,
|
|
196
|
+
};
|
|
197
|
+
// Pre-allocate array
|
|
198
|
+
const args = new Array(maxIndex + 1);
|
|
199
|
+
for (let i = 0; i < resolvers.length; i++) {
|
|
200
|
+
const resolver = resolvers[i];
|
|
201
|
+
let value = resolver.extract(context);
|
|
202
|
+
// Validate if schema present
|
|
203
|
+
if (resolver.zodSchema) {
|
|
204
|
+
const result = resolver.zodSchema.safeParse(value);
|
|
205
|
+
if (!result.success) {
|
|
206
|
+
throw new validation_exception_1.ValidationException(result.error, `Validation failed for ${resolver.validationLabel}`);
|
|
207
|
+
}
|
|
208
|
+
value = result.data;
|
|
169
209
|
}
|
|
170
|
-
|
|
171
|
-
return result.data;
|
|
210
|
+
args[resolver.index] = value;
|
|
172
211
|
}
|
|
173
|
-
|
|
174
|
-
return rawValue;
|
|
212
|
+
return args;
|
|
175
213
|
}
|
|
176
214
|
/**
|
|
177
|
-
*
|
|
178
|
-
* Guards are executed in order (controller-level first, then method-level)
|
|
179
|
-
* All guards must pass (AND logic)
|
|
180
|
-
*
|
|
181
|
-
* @throws ForbiddenException if any guard returns false
|
|
215
|
+
* OPTIMIZATION: Pre-resolve guard instances at route registration
|
|
182
216
|
*/
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
217
|
+
resolveGuardInstances(guards) {
|
|
218
|
+
return guards.map(GuardClass => {
|
|
219
|
+
// Check cache first
|
|
220
|
+
let instance = this.guardCache.get(GuardClass);
|
|
221
|
+
if (instance)
|
|
222
|
+
return instance;
|
|
223
|
+
// Resolve from container
|
|
190
224
|
try {
|
|
191
|
-
|
|
225
|
+
instance = this.container.resolve(GuardClass);
|
|
192
226
|
}
|
|
193
227
|
catch (error) {
|
|
194
228
|
throw new Error(`Failed to resolve guard ${GuardClass.name}. ` +
|
|
195
229
|
`Make sure it is decorated with @Injectable(). ` +
|
|
196
230
|
`Original error: ${error instanceof Error ? error.message : String(error)}`);
|
|
197
231
|
}
|
|
198
|
-
// Verify
|
|
199
|
-
if (typeof
|
|
232
|
+
// Verify interface
|
|
233
|
+
if (typeof instance.canActivate !== 'function') {
|
|
200
234
|
throw new Error(`${GuardClass.name} does not implement CanActivate interface. ` +
|
|
201
235
|
`The guard must have a canActivate(context: ExecutionContext) method.`);
|
|
202
236
|
}
|
|
203
|
-
//
|
|
204
|
-
|
|
205
|
-
|
|
237
|
+
// Cache for future use
|
|
238
|
+
this.guardCache.set(GuardClass, instance);
|
|
239
|
+
return instance;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* OPTIMIZATION: Execute guards using pre-resolved instances
|
|
244
|
+
*/
|
|
245
|
+
async executeGuardsOptimized(guardInstances, context) {
|
|
246
|
+
for (let i = 0; i < guardInstances.length; i++) {
|
|
247
|
+
const result = await guardInstances[i].canActivate(context);
|
|
206
248
|
if (result !== true) {
|
|
207
|
-
throw new exceptions_1.ForbiddenException(`Access denied by
|
|
249
|
+
throw new exceptions_1.ForbiddenException(`Access denied by guard`);
|
|
208
250
|
}
|
|
209
251
|
}
|
|
210
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Build the full route path
|
|
255
|
+
*/
|
|
256
|
+
buildPath(controllerPrefix, routePath) {
|
|
257
|
+
const parts = [this.globalPrefix, controllerPrefix, routePath]
|
|
258
|
+
.filter(Boolean)
|
|
259
|
+
.join('');
|
|
260
|
+
// Normalize multiple slashes
|
|
261
|
+
return parts.replace(/\/+/g, '/') || '/';
|
|
262
|
+
}
|
|
211
263
|
}
|
|
212
264
|
exports.Router = Router;
|
|
213
265
|
//# sourceMappingURL=router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/core/router/router.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAG1B,4CAMsB;AAGtB,6EAAyE;AACzE,yDAA8D;AAC9D,mEAAmE;AACnE,yEAA+E;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/core/router/router.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -80,6 +80,8 @@ export interface RiktaConfig {
|
|
|
80
80
|
host?: string;
|
|
81
81
|
/** Enable Fastify logging (default: true) */
|
|
82
82
|
logger?: boolean | object;
|
|
83
|
+
/** Disable all framework console output (default: false) */
|
|
84
|
+
silent?: boolean;
|
|
83
85
|
/** Global route prefix (default: '') */
|
|
84
86
|
prefix?: string;
|
|
85
87
|
/**
|
|
@@ -97,7 +99,7 @@ export interface RiktaConfig {
|
|
|
97
99
|
* autowired: ['./src/**\/*.controller.ts', './src/**\/*.service.ts']
|
|
98
100
|
* ```
|
|
99
101
|
*/
|
|
100
|
-
autowired?: string[];
|
|
102
|
+
autowired?: string[] | false;
|
|
101
103
|
/**
|
|
102
104
|
* Explicit list of controllers to register.
|
|
103
105
|
* If not provided, all @Controller decorated classes are auto-discovered.
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM7E;;GAEG;AAEH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE1B,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riktajs/core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "A fast and modern TypeScript backend framework with zero-config autowiring, powered by Fastify",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,7 +15,11 @@
|
|
|
15
15
|
"test:watch": "vitest",
|
|
16
16
|
"test:coverage": "vitest run --coverage",
|
|
17
17
|
"lint": "eslint src --ext .ts",
|
|
18
|
-
"prepublishOnly": "npm run build"
|
|
18
|
+
"prepublishOnly": "npm run build",
|
|
19
|
+
"bench": "cd benchmarks && npm install && npm run bench",
|
|
20
|
+
"bench:startup": "cd benchmarks && npm install && npm run bench:startup",
|
|
21
|
+
"bench:requests": "cd benchmarks && npm install && npm run bench:requests",
|
|
22
|
+
"bench:autocannon": "cd benchmarks && npm install && npm run bench:autocannon"
|
|
19
23
|
},
|
|
20
24
|
"keywords": [
|
|
21
25
|
"framework",
|
|
@@ -29,10 +33,10 @@
|
|
|
29
33
|
"author": "",
|
|
30
34
|
"license": "MIT",
|
|
31
35
|
"dependencies": {
|
|
32
|
-
"fast-glob": "
|
|
33
|
-
"fastify": "
|
|
34
|
-
"reflect-metadata": "
|
|
35
|
-
"zod": "
|
|
36
|
+
"fast-glob": "3.3.3",
|
|
37
|
+
"fastify": "5.3.2",
|
|
38
|
+
"reflect-metadata": "0.2.2",
|
|
39
|
+
"zod": "3.25.76"
|
|
36
40
|
},
|
|
37
41
|
"devDependencies": {
|
|
38
42
|
"@types/node": "^22.10.2",
|