@vercube/core 0.0.23 → 0.0.25
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/dist/index.d.mts +14 -1
- package/dist/index.mjs +124 -152
- package/package.json +8 -7
package/dist/index.d.mts
CHANGED
|
@@ -2,6 +2,7 @@ import { Container } from "@vercube/di";
|
|
|
2
2
|
import { FastResponse, ServerPlugin } from "srvx";
|
|
3
3
|
import { LoggerTypes } from "@vercube/logger";
|
|
4
4
|
import { DotenvOptions } from "c12";
|
|
5
|
+
import { RolldownPluginOption } from "rolldown";
|
|
5
6
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
7
|
|
|
7
8
|
//#region src/Services/Plugins/BasePlugin.d.ts
|
|
@@ -70,11 +71,23 @@ declare namespace ConfigTypes {
|
|
|
70
71
|
/**
|
|
71
72
|
* The entry point file for the application build.
|
|
72
73
|
*/
|
|
73
|
-
entry?: string;
|
|
74
|
+
entry?: string | string[];
|
|
74
75
|
/**
|
|
75
76
|
* Defines to pass to the build.
|
|
76
77
|
*/
|
|
77
78
|
define?: Record<string, string>;
|
|
79
|
+
/**
|
|
80
|
+
* Path to the tsconfig file to use for the build.
|
|
81
|
+
*/
|
|
82
|
+
tsconfig?: string;
|
|
83
|
+
/**
|
|
84
|
+
* Flag to indicate if declaration files should be generated.
|
|
85
|
+
*/
|
|
86
|
+
dts?: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Additional plugins to use in the bundler.
|
|
89
|
+
*/
|
|
90
|
+
plugins?: RolldownPluginOption[];
|
|
78
91
|
/**
|
|
79
92
|
* Output configuration for build artifacts.
|
|
80
93
|
*/
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "node:module";
|
|
2
1
|
import { BaseDecorator, Container, Inject, InjectOptional, createDecorator, initializeContainer } from "@vercube/di";
|
|
3
2
|
import { FastResponse, serve } from "srvx";
|
|
4
3
|
import { addRoute, createRouter, findRoute } from "rou3";
|
|
@@ -10,32 +9,6 @@ import { ConsoleProvider } from "@vercube/logger/drivers/ConsoleProvider";
|
|
|
10
9
|
import { loadConfig, setupDotenv } from "c12";
|
|
11
10
|
import { defu } from "defu";
|
|
12
11
|
|
|
13
|
-
//#region rolldown:runtime
|
|
14
|
-
var __create = Object.create;
|
|
15
|
-
var __defProp = Object.defineProperty;
|
|
16
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
17
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
18
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
19
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
20
|
-
var __commonJS = (cb, mod) => function() {
|
|
21
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
22
|
-
};
|
|
23
|
-
var __copyProps = (to, from, except, desc) => {
|
|
24
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
25
|
-
key = keys[i];
|
|
26
|
-
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
27
|
-
get: ((k) => from[k]).bind(null, key),
|
|
28
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
return to;
|
|
32
|
-
};
|
|
33
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
34
|
-
value: mod,
|
|
35
|
-
enumerable: true
|
|
36
|
-
}) : target, mod));
|
|
37
|
-
|
|
38
|
-
//#endregion
|
|
39
12
|
//#region src/Services/Config/RuntimeConfig.ts
|
|
40
13
|
/**
|
|
41
14
|
* RuntimeConfig class manages the runtime configuration for the Vercube application.
|
|
@@ -171,7 +144,7 @@ var BadRequestError = class BadRequestError extends HttpError {
|
|
|
171
144
|
*/
|
|
172
145
|
async function resolveRequestBody(event) {
|
|
173
146
|
const text = await event.request.text();
|
|
174
|
-
if (!text) return
|
|
147
|
+
if (!text) return;
|
|
175
148
|
try {
|
|
176
149
|
return JSON.parse(text);
|
|
177
150
|
} catch {
|
|
@@ -208,8 +181,7 @@ function getRequestHeaders(event) {
|
|
|
208
181
|
* @returns The value of the query parameter if found, null otherwise
|
|
209
182
|
*/
|
|
210
183
|
function resolveQueryParam(name, event) {
|
|
211
|
-
|
|
212
|
-
return url.searchParams.get(name);
|
|
184
|
+
return new URL(event.request.url).searchParams.get(name);
|
|
213
185
|
}
|
|
214
186
|
/**
|
|
215
187
|
* Resolves all query parameters from the URL of a router event
|
|
@@ -255,9 +227,7 @@ var MetadataResolver = class {
|
|
|
255
227
|
resolveUrl(params) {
|
|
256
228
|
const { instance, propertyName, path: rawPath } = params;
|
|
257
229
|
const metadata = instance.__metadata;
|
|
258
|
-
const
|
|
259
|
-
const cleanPath = rawPath.replace(/^\//, "");
|
|
260
|
-
const url = `${basePath}/${cleanPath}`;
|
|
230
|
+
const url = `${(metadata?.__controller?.path ?? "").replace(/\/$/, "")}/${rawPath.replace(/^\//, "")}`;
|
|
261
231
|
metadata.__methods[propertyName].url = url;
|
|
262
232
|
return url;
|
|
263
233
|
}
|
|
@@ -313,8 +283,7 @@ var MetadataResolver = class {
|
|
|
313
283
|
* @public
|
|
314
284
|
*/
|
|
315
285
|
resolveMiddlewares(ctx, propertyName) {
|
|
316
|
-
|
|
317
|
-
return middlewares.sort((a) => a.target === "__global__" ? -1 : 1);
|
|
286
|
+
return (ctx?.__metadata?.__middlewares?.filter((m) => m.target === "__global__" || m.target === propertyName) ?? []).sort((a) => a.target === "__global__" ? -1 : 1);
|
|
318
287
|
}
|
|
319
288
|
};
|
|
320
289
|
|
|
@@ -364,20 +333,16 @@ var GlobalMiddlewareRegistry = class {
|
|
|
364
333
|
};
|
|
365
334
|
|
|
366
335
|
//#endregion
|
|
367
|
-
//#region
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
}
|
|
375
|
-
module.exports = __decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
376
|
-
}) });
|
|
336
|
+
//#region \0@oxc-project+runtime@0.94.0/helpers/decorate.js
|
|
337
|
+
function __decorate(decorators, target, key, desc) {
|
|
338
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
339
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
340
|
+
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;
|
|
341
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
342
|
+
}
|
|
377
343
|
|
|
378
344
|
//#endregion
|
|
379
345
|
//#region src/Services/Router/RequestHandler.ts
|
|
380
|
-
var import_decorate$17 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
381
346
|
/**
|
|
382
347
|
* Handles HTTP requests by preparing and executing route handlers with their associated middlewares
|
|
383
348
|
*
|
|
@@ -405,8 +370,7 @@ var RequestHandler = class {
|
|
|
405
370
|
const method = this.gMetadataResolver.resolveMethod(prototype, propertyName);
|
|
406
371
|
const middlewares = this.gMetadataResolver.resolveMiddlewares(prototype, propertyName);
|
|
407
372
|
const globalMiddlewares = this.gGlobalMiddlewareRegistry.middlewares;
|
|
408
|
-
const
|
|
409
|
-
const resolvedMiddlewares = uniqueMiddlewares.map((m) => ({
|
|
373
|
+
const resolvedMiddlewares = [...middlewares, ...globalMiddlewares].filter((m, index, self) => self.findIndex((t) => t.middleware === m.middleware) === index).map((m) => ({
|
|
410
374
|
...m,
|
|
411
375
|
middleware: this.gContainer.resolve(m.middleware)
|
|
412
376
|
}));
|
|
@@ -426,6 +390,50 @@ var RequestHandler = class {
|
|
|
426
390
|
};
|
|
427
391
|
}
|
|
428
392
|
/**
|
|
393
|
+
* This method processes preflight requests by executing global middlewares
|
|
394
|
+
* and returning an appropriate response. It's typically used for handling CORS.
|
|
395
|
+
*
|
|
396
|
+
* The request handling lifecycle:
|
|
397
|
+
* 1. Execute "before" global middlewares
|
|
398
|
+
* 2. Execute "after" global middlewares
|
|
399
|
+
* 3. Format and return the final response
|
|
400
|
+
*
|
|
401
|
+
* @param request - The incoming HTTP request
|
|
402
|
+
* @returns {Promise<Response>} The HTTP response
|
|
403
|
+
*/
|
|
404
|
+
async handlePreflight(request) {
|
|
405
|
+
try {
|
|
406
|
+
let fakeResponse = new FastResponse(void 0, { headers: { "Content-Type": request.headers.get("Content-Type") ?? "application/json" } });
|
|
407
|
+
const middlewares = this.gGlobalMiddlewareRegistry.middlewares.map((m) => ({
|
|
408
|
+
...m,
|
|
409
|
+
middleware: this.gContainer.resolve(m.middleware)
|
|
410
|
+
}));
|
|
411
|
+
for await (const hook of middlewares) try {
|
|
412
|
+
let hookResponse = await hook.middleware.onRequest?.(request, fakeResponse, {
|
|
413
|
+
middlewareArgs: hook.args,
|
|
414
|
+
methodArgs: []
|
|
415
|
+
});
|
|
416
|
+
if (hookResponse instanceof Response) return hookResponse;
|
|
417
|
+
else if (hookResponse !== null) fakeResponse = this.processOverrideResponse(hookResponse, fakeResponse);
|
|
418
|
+
hookResponse = await hook.middleware.onResponse?.(request, fakeResponse, {
|
|
419
|
+
middlewareArgs: hook.args,
|
|
420
|
+
methodArgs: []
|
|
421
|
+
});
|
|
422
|
+
if (hookResponse instanceof Response) return hookResponse;
|
|
423
|
+
else if (hookResponse !== null) fakeResponse = this.processOverrideResponse(hookResponse, fakeResponse);
|
|
424
|
+
} catch (error) {
|
|
425
|
+
return await Promise.resolve(this.gContainer.get(ErrorHandlerProvider).handleError(error));
|
|
426
|
+
}
|
|
427
|
+
return new Response(null, {
|
|
428
|
+
status: fakeResponse.status ?? 204,
|
|
429
|
+
statusText: fakeResponse.statusText ?? "No Content",
|
|
430
|
+
headers: fakeResponse.headers
|
|
431
|
+
});
|
|
432
|
+
} catch (error) {
|
|
433
|
+
return this.gContainer.get(ErrorHandlerProvider).handleError(error);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
429
437
|
* Processes an HTTP request through the middleware chain and route handler
|
|
430
438
|
*
|
|
431
439
|
* The request handling lifecycle:
|
|
@@ -459,8 +467,7 @@ var RequestHandler = class {
|
|
|
459
467
|
});
|
|
460
468
|
if (hookResponse instanceof Response) return hookResponse;
|
|
461
469
|
} catch (error) {
|
|
462
|
-
|
|
463
|
-
if (internalError instanceof Response) return internalError;
|
|
470
|
+
return await Promise.resolve(this.gContainer.get(ErrorHandlerProvider).handleError(error));
|
|
464
471
|
}
|
|
465
472
|
for (const action of actions) {
|
|
466
473
|
const actionResponse = action.handler(request, fakeResponse);
|
|
@@ -472,16 +479,15 @@ var RequestHandler = class {
|
|
|
472
479
|
const hookResponse = await hook.middleware.onResponse?.(request, fakeResponse, handlerResponse);
|
|
473
480
|
if (hookResponse !== null) fakeResponse = this.processOverrideResponse(hookResponse, fakeResponse);
|
|
474
481
|
} catch (error) {
|
|
475
|
-
|
|
476
|
-
if (internalError instanceof Response) return internalError;
|
|
482
|
+
return await Promise.resolve(this.gContainer.get(ErrorHandlerProvider).handleError(error));
|
|
477
483
|
}
|
|
484
|
+
if (handlerResponse instanceof Response) return handlerResponse;
|
|
478
485
|
const body = fakeResponse?.body ?? JSON.stringify(handlerResponse);
|
|
479
|
-
|
|
486
|
+
return new Response(body, {
|
|
480
487
|
status: fakeResponse.status ?? 200,
|
|
481
488
|
statusText: fakeResponse.statusText ?? "OK",
|
|
482
489
|
headers: fakeResponse.headers
|
|
483
490
|
});
|
|
484
|
-
return response;
|
|
485
491
|
} catch (error) {
|
|
486
492
|
return this.gContainer.get(ErrorHandlerProvider).handleError(error);
|
|
487
493
|
}
|
|
@@ -512,9 +518,9 @@ var RequestHandler = class {
|
|
|
512
518
|
return fakeResponse;
|
|
513
519
|
}
|
|
514
520
|
};
|
|
515
|
-
(
|
|
516
|
-
(
|
|
517
|
-
(
|
|
521
|
+
__decorate([Inject(MetadataResolver)], RequestHandler.prototype, "gMetadataResolver", void 0);
|
|
522
|
+
__decorate([Inject(Container)], RequestHandler.prototype, "gContainer", void 0);
|
|
523
|
+
__decorate([Inject(GlobalMiddlewareRegistry)], RequestHandler.prototype, "gGlobalMiddlewareRegistry", void 0);
|
|
518
524
|
|
|
519
525
|
//#endregion
|
|
520
526
|
//#region src/Hooks/Router/RouterAfterInitHook.ts
|
|
@@ -627,8 +633,7 @@ var HooksService = class {
|
|
|
627
633
|
const instance = new ClassConstructor();
|
|
628
634
|
if (data) for (const key of Object.keys(data)) {
|
|
629
635
|
const rawInstance = instance;
|
|
630
|
-
|
|
631
|
-
rawInstance[key] = rawData[key];
|
|
636
|
+
rawInstance[key] = data[key];
|
|
632
637
|
}
|
|
633
638
|
return instance;
|
|
634
639
|
}
|
|
@@ -636,7 +641,6 @@ var HooksService = class {
|
|
|
636
641
|
|
|
637
642
|
//#endregion
|
|
638
643
|
//#region src/Services/Router/Router.ts
|
|
639
|
-
var import_decorate$16 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
640
644
|
/**
|
|
641
645
|
* Router service responsible for managing application routes
|
|
642
646
|
*
|
|
@@ -689,12 +693,12 @@ var Router = class {
|
|
|
689
693
|
return findRoute(this.fRouterContext, route.method.toUpperCase(), url);
|
|
690
694
|
}
|
|
691
695
|
};
|
|
692
|
-
(
|
|
696
|
+
__decorate([Inject(HooksService)], Router.prototype, "gHooksService", void 0);
|
|
693
697
|
|
|
694
698
|
//#endregion
|
|
695
699
|
//#region src/Utils/Mine.ts
|
|
696
700
|
const mime = { getType(ext) {
|
|
697
|
-
|
|
701
|
+
return {
|
|
698
702
|
".html": "text/html",
|
|
699
703
|
".css": "text/css",
|
|
700
704
|
".js": "application/javascript",
|
|
@@ -705,8 +709,7 @@ const mime = { getType(ext) {
|
|
|
705
709
|
".gif": "image/gif",
|
|
706
710
|
".svg": "image/svg+xml",
|
|
707
711
|
".ico": "image/x-icon"
|
|
708
|
-
};
|
|
709
|
-
return types[ext] || null;
|
|
712
|
+
}[ext] || null;
|
|
710
713
|
} };
|
|
711
714
|
|
|
712
715
|
//#endregion
|
|
@@ -744,9 +747,7 @@ var StaticRequestHandler = class {
|
|
|
744
747
|
const dirs = this.fOptions?.dirs ?? [];
|
|
745
748
|
if (!dirs) return;
|
|
746
749
|
if (request.method !== "GET") return;
|
|
747
|
-
|
|
748
|
-
const path = normalize(url.pathname);
|
|
749
|
-
let relativePath = path;
|
|
750
|
+
let relativePath = normalize(new URL(request.url).pathname);
|
|
750
751
|
for (const dir of dirs) relativePath = relativePath.replace(dir, "");
|
|
751
752
|
for (const dir of dirs) {
|
|
752
753
|
const fullPath = join(process.cwd(), dir, relativePath);
|
|
@@ -785,7 +786,6 @@ var StaticRequestHandler = class {
|
|
|
785
786
|
|
|
786
787
|
//#endregion
|
|
787
788
|
//#region src/Services/HttpServer/HttpServer.ts
|
|
788
|
-
var import_decorate$15 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
789
789
|
/**
|
|
790
790
|
* HTTP server implementation for handling incoming web requests
|
|
791
791
|
*
|
|
@@ -879,6 +879,7 @@ var HttpServer = class {
|
|
|
879
879
|
path: request.url,
|
|
880
880
|
method: request.method
|
|
881
881
|
});
|
|
882
|
+
if (!route && request.method === "OPTIONS") return this.gRequestHandler.handlePreflight(request);
|
|
882
883
|
if (!route) {
|
|
883
884
|
const response = await this.gStaticRequestHandler.handleRequest(request);
|
|
884
885
|
if (response) return response;
|
|
@@ -890,10 +891,10 @@ var HttpServer = class {
|
|
|
890
891
|
}
|
|
891
892
|
}
|
|
892
893
|
};
|
|
893
|
-
(
|
|
894
|
-
(
|
|
895
|
-
(
|
|
896
|
-
(
|
|
894
|
+
__decorate([Inject(Container)], HttpServer.prototype, "gContainer", void 0);
|
|
895
|
+
__decorate([Inject(Router)], HttpServer.prototype, "gRouter", void 0);
|
|
896
|
+
__decorate([Inject(RequestHandler)], HttpServer.prototype, "gRequestHandler", void 0);
|
|
897
|
+
__decorate([Inject(StaticRequestHandler)], HttpServer.prototype, "gStaticRequestHandler", void 0);
|
|
897
898
|
|
|
898
899
|
//#endregion
|
|
899
900
|
//#region src/Services/Plugins/BasePlugin.ts
|
|
@@ -915,7 +916,6 @@ var BasePlugin = class {
|
|
|
915
916
|
|
|
916
917
|
//#endregion
|
|
917
918
|
//#region src/Services/Plugins/PluginsRegistry.ts
|
|
918
|
-
var import_decorate$14 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
919
919
|
var PluginsRegistry = class {
|
|
920
920
|
gContainer;
|
|
921
921
|
/** Holds the list of plugins */
|
|
@@ -951,11 +951,10 @@ var PluginsRegistry = class {
|
|
|
951
951
|
for (const { instance, options } of this.fPlugins.values()) await instance.use(app, options);
|
|
952
952
|
}
|
|
953
953
|
};
|
|
954
|
-
(
|
|
954
|
+
__decorate([Inject(Container)], PluginsRegistry.prototype, "gContainer", void 0);
|
|
955
955
|
|
|
956
956
|
//#endregion
|
|
957
957
|
//#region src/Common/App.ts
|
|
958
|
-
var import_decorate$13 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
959
958
|
/**
|
|
960
959
|
* Represents the main application class.
|
|
961
960
|
*/
|
|
@@ -1051,11 +1050,11 @@ var App = class {
|
|
|
1051
1050
|
await this.gPluginsRegistry.init(this);
|
|
1052
1051
|
}
|
|
1053
1052
|
};
|
|
1054
|
-
(
|
|
1055
|
-
(
|
|
1056
|
-
(
|
|
1057
|
-
(
|
|
1058
|
-
(
|
|
1053
|
+
__decorate([Inject(Router)], App.prototype, "gRouter", void 0);
|
|
1054
|
+
__decorate([Inject(PluginsRegistry)], App.prototype, "gPluginsRegistry", void 0);
|
|
1055
|
+
__decorate([Inject(HttpServer)], App.prototype, "gHttpServer", void 0);
|
|
1056
|
+
__decorate([Inject(StaticRequestHandler)], App.prototype, "gStaticRequestHandler", void 0);
|
|
1057
|
+
__decorate([Inject(RuntimeConfig)], App.prototype, "gRuntimeConfig", void 0);
|
|
1059
1058
|
|
|
1060
1059
|
//#endregion
|
|
1061
1060
|
//#region src/Errors/Http/InternalServerError.ts
|
|
@@ -1082,7 +1081,6 @@ var InternalServerError = class InternalServerError extends HttpError {
|
|
|
1082
1081
|
|
|
1083
1082
|
//#endregion
|
|
1084
1083
|
//#region src/Services/ErrorHandler/DefaultErrorHandlerProvider.ts
|
|
1085
|
-
var import_decorate$12 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1086
1084
|
/**
|
|
1087
1085
|
* Default error handler provider
|
|
1088
1086
|
*
|
|
@@ -1104,7 +1102,7 @@ var DefaultErrorHandlerProvider = class extends ErrorHandlerProvider {
|
|
|
1104
1102
|
return new FastResponse(JSON.stringify({ ...error?.cause ?? _internalError }, void 0, 2), { status });
|
|
1105
1103
|
}
|
|
1106
1104
|
};
|
|
1107
|
-
(
|
|
1105
|
+
__decorate([Inject(Logger)], DefaultErrorHandlerProvider.prototype, "gLogger", void 0);
|
|
1108
1106
|
|
|
1109
1107
|
//#endregion
|
|
1110
1108
|
//#region src/Services/Validation/ValidationProvider.ts
|
|
@@ -1266,7 +1264,6 @@ function defineConfig(config) {
|
|
|
1266
1264
|
|
|
1267
1265
|
//#endregion
|
|
1268
1266
|
//#region src/Middleware/ValidationMiddleware.ts
|
|
1269
|
-
var import_decorate$11 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1270
1267
|
/**
|
|
1271
1268
|
* Middleware for validating request data against a schema
|
|
1272
1269
|
* @class ValidationMiddleware
|
|
@@ -1299,8 +1296,8 @@ var ValidationMiddleware = class {
|
|
|
1299
1296
|
}
|
|
1300
1297
|
}
|
|
1301
1298
|
};
|
|
1302
|
-
(
|
|
1303
|
-
(
|
|
1299
|
+
__decorate([InjectOptional(Logger)], ValidationMiddleware.prototype, "gLogger", void 0);
|
|
1300
|
+
__decorate([InjectOptional(ValidationProvider)], ValidationMiddleware.prototype, "gValidationProvider", void 0);
|
|
1304
1301
|
|
|
1305
1302
|
//#endregion
|
|
1306
1303
|
//#region src/Utils/Utils.ts
|
|
@@ -1366,8 +1363,7 @@ var BodyDecorator = class extends BaseDecorator {
|
|
|
1366
1363
|
*/
|
|
1367
1364
|
created() {
|
|
1368
1365
|
const meta = initializeMetadata(this.prototype);
|
|
1369
|
-
|
|
1370
|
-
method.args.push({
|
|
1366
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
1371
1367
|
idx: this.propertyIndex,
|
|
1372
1368
|
type: "body",
|
|
1373
1369
|
validate: this.options?.validationSchema ? true : false,
|
|
@@ -1396,7 +1392,6 @@ function Body(options) {
|
|
|
1396
1392
|
|
|
1397
1393
|
//#endregion
|
|
1398
1394
|
//#region src/Decorators/Http/Connect.ts
|
|
1399
|
-
var import_decorate$10 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1400
1395
|
/**
|
|
1401
1396
|
* A decorator class for handling HTTP CONNECT requests.
|
|
1402
1397
|
*
|
|
@@ -1435,9 +1430,9 @@ var ConnectDecorator = class extends BaseDecorator {
|
|
|
1435
1430
|
});
|
|
1436
1431
|
}
|
|
1437
1432
|
};
|
|
1438
|
-
(
|
|
1439
|
-
(
|
|
1440
|
-
(
|
|
1433
|
+
__decorate([Inject(Router)], ConnectDecorator.prototype, "gRouter", void 0);
|
|
1434
|
+
__decorate([Inject(RequestHandler)], ConnectDecorator.prototype, "gRequestHandler", void 0);
|
|
1435
|
+
__decorate([Inject(MetadataResolver)], ConnectDecorator.prototype, "gMetadataResolver", void 0);
|
|
1441
1436
|
/**
|
|
1442
1437
|
* A factory function for creating a ConnectDecorator.
|
|
1443
1438
|
*
|
|
@@ -1474,7 +1469,6 @@ function Controller(path) {
|
|
|
1474
1469
|
|
|
1475
1470
|
//#endregion
|
|
1476
1471
|
//#region src/Decorators/Http/Delete.ts
|
|
1477
|
-
var import_decorate$9 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1478
1472
|
/**
|
|
1479
1473
|
* A decorator class for handling HTTP DELETE requests.
|
|
1480
1474
|
*
|
|
@@ -1513,9 +1507,9 @@ var DeleteDecorator = class extends BaseDecorator {
|
|
|
1513
1507
|
});
|
|
1514
1508
|
}
|
|
1515
1509
|
};
|
|
1516
|
-
(
|
|
1517
|
-
(
|
|
1518
|
-
(
|
|
1510
|
+
__decorate([Inject(Router)], DeleteDecorator.prototype, "gRouter", void 0);
|
|
1511
|
+
__decorate([Inject(RequestHandler)], DeleteDecorator.prototype, "gRequestHandler", void 0);
|
|
1512
|
+
__decorate([Inject(MetadataResolver)], DeleteDecorator.prototype, "gMetadataResolver", void 0);
|
|
1519
1513
|
/**
|
|
1520
1514
|
* A factory function for creating a DeleteDecorator.
|
|
1521
1515
|
*
|
|
@@ -1531,7 +1525,6 @@ function Delete(path) {
|
|
|
1531
1525
|
|
|
1532
1526
|
//#endregion
|
|
1533
1527
|
//#region src/Decorators/Http/Get.ts
|
|
1534
|
-
var import_decorate$8 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1535
1528
|
/**
|
|
1536
1529
|
* A decorator class for handling HTTP GET requests.
|
|
1537
1530
|
*
|
|
@@ -1570,9 +1563,9 @@ var GetDecorator = class extends BaseDecorator {
|
|
|
1570
1563
|
});
|
|
1571
1564
|
}
|
|
1572
1565
|
};
|
|
1573
|
-
(
|
|
1574
|
-
(
|
|
1575
|
-
(
|
|
1566
|
+
__decorate([Inject(Router)], GetDecorator.prototype, "gRouter", void 0);
|
|
1567
|
+
__decorate([Inject(RequestHandler)], GetDecorator.prototype, "gRequestHandler", void 0);
|
|
1568
|
+
__decorate([Inject(MetadataResolver)], GetDecorator.prototype, "gMetadataResolver", void 0);
|
|
1576
1569
|
/**
|
|
1577
1570
|
* A decorator function for handling HTTP GET requests.
|
|
1578
1571
|
*
|
|
@@ -1588,7 +1581,6 @@ function Get(path) {
|
|
|
1588
1581
|
|
|
1589
1582
|
//#endregion
|
|
1590
1583
|
//#region src/Decorators/Http/Head.ts
|
|
1591
|
-
var import_decorate$7 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1592
1584
|
/**
|
|
1593
1585
|
* A decorator class for handling HTTP HEAD requests.
|
|
1594
1586
|
*
|
|
@@ -1627,9 +1619,9 @@ var HeadDecorator = class extends BaseDecorator {
|
|
|
1627
1619
|
});
|
|
1628
1620
|
}
|
|
1629
1621
|
};
|
|
1630
|
-
(
|
|
1631
|
-
(
|
|
1632
|
-
(
|
|
1622
|
+
__decorate([Inject(Router)], HeadDecorator.prototype, "gRouter", void 0);
|
|
1623
|
+
__decorate([Inject(RequestHandler)], HeadDecorator.prototype, "gRequestHandler", void 0);
|
|
1624
|
+
__decorate([Inject(MetadataResolver)], HeadDecorator.prototype, "gMetadataResolver", void 0);
|
|
1633
1625
|
/**
|
|
1634
1626
|
* A factory function for creating a HeadDecorator.
|
|
1635
1627
|
*
|
|
@@ -1663,8 +1655,7 @@ var HeaderDecorator = class extends BaseDecorator {
|
|
|
1663
1655
|
*/
|
|
1664
1656
|
created() {
|
|
1665
1657
|
initializeMetadata(this.prototype);
|
|
1666
|
-
|
|
1667
|
-
method.args.push({
|
|
1658
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
1668
1659
|
idx: this.propertyIndex,
|
|
1669
1660
|
type: "header",
|
|
1670
1661
|
data: { name: this.options.name }
|
|
@@ -1705,8 +1696,7 @@ var HeadersDecorator = class extends BaseDecorator {
|
|
|
1705
1696
|
*/
|
|
1706
1697
|
created() {
|
|
1707
1698
|
initializeMetadata(this.prototype);
|
|
1708
|
-
|
|
1709
|
-
method.args.push({
|
|
1699
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
1710
1700
|
idx: this.propertyIndex,
|
|
1711
1701
|
type: "headers"
|
|
1712
1702
|
});
|
|
@@ -1726,7 +1716,6 @@ function Headers$1() {
|
|
|
1726
1716
|
|
|
1727
1717
|
//#endregion
|
|
1728
1718
|
//#region src/Decorators/Http/Options.ts
|
|
1729
|
-
var import_decorate$6 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1730
1719
|
/**
|
|
1731
1720
|
* A decorator class for handling HTTP OPTIONS requests.
|
|
1732
1721
|
*
|
|
@@ -1765,9 +1754,9 @@ var OptionsDecorator = class extends BaseDecorator {
|
|
|
1765
1754
|
});
|
|
1766
1755
|
}
|
|
1767
1756
|
};
|
|
1768
|
-
(
|
|
1769
|
-
(
|
|
1770
|
-
(
|
|
1757
|
+
__decorate([Inject(Router)], OptionsDecorator.prototype, "gRouter", void 0);
|
|
1758
|
+
__decorate([Inject(RequestHandler)], OptionsDecorator.prototype, "gRequestHandler", void 0);
|
|
1759
|
+
__decorate([Inject(MetadataResolver)], OptionsDecorator.prototype, "gMetadataResolver", void 0);
|
|
1771
1760
|
/**
|
|
1772
1761
|
* A factory function for creating an OptionsDecorator.
|
|
1773
1762
|
*
|
|
@@ -1783,7 +1772,6 @@ function Options(path) {
|
|
|
1783
1772
|
|
|
1784
1773
|
//#endregion
|
|
1785
1774
|
//#region src/Decorators/Http/Param.ts
|
|
1786
|
-
var import_decorate$5 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1787
1775
|
/**
|
|
1788
1776
|
* This class is responsible for managing parameter decorators.
|
|
1789
1777
|
*
|
|
@@ -1803,15 +1791,14 @@ var ParamDecorator = class extends BaseDecorator {
|
|
|
1803
1791
|
*/
|
|
1804
1792
|
created() {
|
|
1805
1793
|
initializeMetadata(this.prototype);
|
|
1806
|
-
|
|
1807
|
-
method.args.push({
|
|
1794
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
1808
1795
|
idx: this.propertyIndex,
|
|
1809
1796
|
type: "param",
|
|
1810
1797
|
data: { name: this.options.name }
|
|
1811
1798
|
});
|
|
1812
1799
|
}
|
|
1813
1800
|
};
|
|
1814
|
-
(
|
|
1801
|
+
__decorate([Inject(MetadataResolver)], ParamDecorator.prototype, "gMetadataResolver", void 0);
|
|
1815
1802
|
/**
|
|
1816
1803
|
* A factory function for creating a ParamDecorator.
|
|
1817
1804
|
*
|
|
@@ -1829,7 +1816,6 @@ function Param(name) {
|
|
|
1829
1816
|
|
|
1830
1817
|
//#endregion
|
|
1831
1818
|
//#region src/Decorators/Http/Patch.ts
|
|
1832
|
-
var import_decorate$4 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1833
1819
|
/**
|
|
1834
1820
|
* A decorator class for handling HTTP PATCH requests.
|
|
1835
1821
|
*
|
|
@@ -1868,9 +1854,9 @@ var PatchDecorator = class extends BaseDecorator {
|
|
|
1868
1854
|
});
|
|
1869
1855
|
}
|
|
1870
1856
|
};
|
|
1871
|
-
(
|
|
1872
|
-
(
|
|
1873
|
-
(
|
|
1857
|
+
__decorate([Inject(Router)], PatchDecorator.prototype, "gRouter", void 0);
|
|
1858
|
+
__decorate([Inject(RequestHandler)], PatchDecorator.prototype, "gRequestHandler", void 0);
|
|
1859
|
+
__decorate([Inject(MetadataResolver)], PatchDecorator.prototype, "gMetadataResolver", void 0);
|
|
1874
1860
|
/**
|
|
1875
1861
|
* A factory function for creating a PatchDecorator.
|
|
1876
1862
|
*
|
|
@@ -1886,7 +1872,6 @@ function Patch(path) {
|
|
|
1886
1872
|
|
|
1887
1873
|
//#endregion
|
|
1888
1874
|
//#region src/Decorators/Http/Post.ts
|
|
1889
|
-
var import_decorate$3 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1890
1875
|
/**
|
|
1891
1876
|
* A decorator class for handling HTTP POST requests.
|
|
1892
1877
|
*
|
|
@@ -1925,9 +1910,9 @@ var PostDecorator = class extends BaseDecorator {
|
|
|
1925
1910
|
});
|
|
1926
1911
|
}
|
|
1927
1912
|
};
|
|
1928
|
-
(
|
|
1929
|
-
(
|
|
1930
|
-
(
|
|
1913
|
+
__decorate([Inject(Router)], PostDecorator.prototype, "gRouter", void 0);
|
|
1914
|
+
__decorate([Inject(MetadataResolver)], PostDecorator.prototype, "gMetadataResolver", void 0);
|
|
1915
|
+
__decorate([Inject(RequestHandler)], PostDecorator.prototype, "gRequestHandler", void 0);
|
|
1931
1916
|
/**
|
|
1932
1917
|
* A factory function for creating a PostDecorator.
|
|
1933
1918
|
*
|
|
@@ -1943,7 +1928,6 @@ function Post(path) {
|
|
|
1943
1928
|
|
|
1944
1929
|
//#endregion
|
|
1945
1930
|
//#region src/Decorators/Http/Put.ts
|
|
1946
|
-
var import_decorate$2 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
1947
1931
|
/**
|
|
1948
1932
|
* A decorator class for handling HTTP PUT requests.
|
|
1949
1933
|
*
|
|
@@ -1982,9 +1966,9 @@ var PutDecorator = class extends BaseDecorator {
|
|
|
1982
1966
|
});
|
|
1983
1967
|
}
|
|
1984
1968
|
};
|
|
1985
|
-
(
|
|
1986
|
-
(
|
|
1987
|
-
(
|
|
1969
|
+
__decorate([Inject(Router)], PutDecorator.prototype, "gRouter", void 0);
|
|
1970
|
+
__decorate([Inject(RequestHandler)], PutDecorator.prototype, "gRequestHandler", void 0);
|
|
1971
|
+
__decorate([Inject(MetadataResolver)], PutDecorator.prototype, "gMetadataResolver", void 0);
|
|
1988
1972
|
/**
|
|
1989
1973
|
* A factory function for creating a PutDecorator.
|
|
1990
1974
|
*
|
|
@@ -2018,8 +2002,7 @@ var QueryParamDecorator = class extends BaseDecorator {
|
|
|
2018
2002
|
*/
|
|
2019
2003
|
created() {
|
|
2020
2004
|
const meta = initializeMetadata(this.prototype);
|
|
2021
|
-
|
|
2022
|
-
method.args.push({
|
|
2005
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
2023
2006
|
idx: this.propertyIndex,
|
|
2024
2007
|
type: "query-param",
|
|
2025
2008
|
data: { name: this.options.name },
|
|
@@ -2067,8 +2050,7 @@ var QueryParamsDecorator = class extends BaseDecorator {
|
|
|
2067
2050
|
*/
|
|
2068
2051
|
created() {
|
|
2069
2052
|
const meta = initializeMetadata(this.prototype);
|
|
2070
|
-
|
|
2071
|
-
method.args.push({
|
|
2053
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
2072
2054
|
idx: this.propertyIndex,
|
|
2073
2055
|
type: "query-params",
|
|
2074
2056
|
data: {},
|
|
@@ -2116,8 +2098,7 @@ var RequestDecorator = class extends BaseDecorator {
|
|
|
2116
2098
|
*/
|
|
2117
2099
|
created() {
|
|
2118
2100
|
initializeMetadata(this.prototype);
|
|
2119
|
-
|
|
2120
|
-
method.args.push({
|
|
2101
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
2121
2102
|
idx: this.propertyIndex,
|
|
2122
2103
|
type: "request"
|
|
2123
2104
|
});
|
|
@@ -2155,8 +2136,7 @@ var ResponseDecorator = class extends BaseDecorator {
|
|
|
2155
2136
|
*/
|
|
2156
2137
|
created() {
|
|
2157
2138
|
initializeMetadata(this.prototype);
|
|
2158
|
-
|
|
2159
|
-
method.args.push({
|
|
2139
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
2160
2140
|
idx: this.propertyIndex,
|
|
2161
2141
|
type: "response"
|
|
2162
2142
|
});
|
|
@@ -2176,7 +2156,6 @@ function Response$1() {
|
|
|
2176
2156
|
|
|
2177
2157
|
//#endregion
|
|
2178
2158
|
//#region src/Decorators/Http/Trace.ts
|
|
2179
|
-
var import_decorate$1 = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
2180
2159
|
/**
|
|
2181
2160
|
* A decorator class for handling HTTP TRACE requests.
|
|
2182
2161
|
*
|
|
@@ -2215,9 +2194,9 @@ var TraceDecorator = class extends BaseDecorator {
|
|
|
2215
2194
|
});
|
|
2216
2195
|
}
|
|
2217
2196
|
};
|
|
2218
|
-
(
|
|
2219
|
-
(
|
|
2220
|
-
(
|
|
2197
|
+
__decorate([Inject(Router)], TraceDecorator.prototype, "gRouter", void 0);
|
|
2198
|
+
__decorate([Inject(RequestHandler)], TraceDecorator.prototype, "gRequestHandler", void 0);
|
|
2199
|
+
__decorate([Inject(MetadataResolver)], TraceDecorator.prototype, "gMetadataResolver", void 0);
|
|
2221
2200
|
/**
|
|
2222
2201
|
* A factory function for creating a TraceDecorator.
|
|
2223
2202
|
*
|
|
@@ -2245,8 +2224,7 @@ var SetHeaderDecorator = class extends BaseDecorator {
|
|
|
2245
2224
|
*/
|
|
2246
2225
|
created() {
|
|
2247
2226
|
initializeMetadata(this.prototype);
|
|
2248
|
-
|
|
2249
|
-
method.actions.push({ handler: (req, res) => {
|
|
2227
|
+
initializeMetadataMethod(this.prototype, this.propertyName).actions.push({ handler: (req, res) => {
|
|
2250
2228
|
res.headers.delete(this.options.key);
|
|
2251
2229
|
res.headers.append(this.options.key, this.options.value);
|
|
2252
2230
|
return res;
|
|
@@ -2347,8 +2325,7 @@ var StatusDecorator = class extends BaseDecorator {
|
|
|
2347
2325
|
*/
|
|
2348
2326
|
created() {
|
|
2349
2327
|
initializeMetadata(this.prototype);
|
|
2350
|
-
|
|
2351
|
-
method.actions.push({ handler: () => ({ status: this.options.code }) });
|
|
2328
|
+
initializeMetadataMethod(this.prototype, this.propertyName).actions.push({ handler: () => ({ status: this.options.code }) });
|
|
2352
2329
|
}
|
|
2353
2330
|
};
|
|
2354
2331
|
/**
|
|
@@ -2371,8 +2348,7 @@ var RedirectDecorator = class extends BaseDecorator {
|
|
|
2371
2348
|
*/
|
|
2372
2349
|
created() {
|
|
2373
2350
|
initializeMetadata(this.prototype);
|
|
2374
|
-
|
|
2375
|
-
method.actions.push({ handler: () => {
|
|
2351
|
+
initializeMetadataMethod(this.prototype, this.propertyName).actions.push({ handler: () => {
|
|
2376
2352
|
return new FastResponse(void 0, {
|
|
2377
2353
|
status: this.options.code,
|
|
2378
2354
|
headers: { Location: this.options.location }
|
|
@@ -2419,9 +2395,7 @@ function Redirect(location, code = 301) {
|
|
|
2419
2395
|
*/
|
|
2420
2396
|
function Middleware(middleware, opts) {
|
|
2421
2397
|
return function internalDecorator(target, propertyName) {
|
|
2422
|
-
|
|
2423
|
-
const meta = initializeMetadata(ctx);
|
|
2424
|
-
meta.__middlewares.push({
|
|
2398
|
+
initializeMetadata(propertyName ? target : target.prototype).__middlewares.push({
|
|
2425
2399
|
target: propertyName ?? "__global__",
|
|
2426
2400
|
priority: opts?.priority ?? 999,
|
|
2427
2401
|
middleware
|
|
@@ -2445,8 +2419,7 @@ var MultipartFormDataDecorator = class extends BaseDecorator {
|
|
|
2445
2419
|
*/
|
|
2446
2420
|
created() {
|
|
2447
2421
|
initializeMetadata(this.prototype);
|
|
2448
|
-
|
|
2449
|
-
method.args.push({
|
|
2422
|
+
initializeMetadataMethod(this.prototype, this.propertyName).args.push({
|
|
2450
2423
|
idx: this.propertyIndex,
|
|
2451
2424
|
type: "multipart-form-data"
|
|
2452
2425
|
});
|
|
@@ -2472,7 +2445,6 @@ function MultipartFormData() {
|
|
|
2472
2445
|
|
|
2473
2446
|
//#endregion
|
|
2474
2447
|
//#region src/Decorators/Hooks/Listen.ts
|
|
2475
|
-
var import_decorate = /* @__PURE__ */ __toESM(require_decorate(), 1);
|
|
2476
2448
|
/**
|
|
2477
2449
|
* This class is responsible for managing cache decorator.
|
|
2478
2450
|
*/
|
|
@@ -2493,7 +2465,7 @@ var ListenDecorator = class extends BaseDecorator {
|
|
|
2493
2465
|
this.gHooksService.off(this.fHook);
|
|
2494
2466
|
}
|
|
2495
2467
|
};
|
|
2496
|
-
(
|
|
2468
|
+
__decorate([Inject(HooksService)], ListenDecorator.prototype, "gHooksService", void 0);
|
|
2497
2469
|
/**
|
|
2498
2470
|
* This decorator stores metadata about hook listeners. It can be later used along with function
|
|
2499
2471
|
* applyEventListeners() to automatically register all listeners.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vercube/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"description": "Core module for Vercube framework",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,16 +23,17 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@standard-schema/spec": "1.0.0",
|
|
26
|
-
"c12": "3.
|
|
26
|
+
"c12": "3.3.0",
|
|
27
27
|
"defu": "6.1.4",
|
|
28
28
|
"pathe": "2.0.3",
|
|
29
|
-
"rou3": "0.7.
|
|
30
|
-
"srvx": "0.8.
|
|
31
|
-
"@vercube/di": "0.0.
|
|
32
|
-
"@vercube/logger": "0.0.
|
|
29
|
+
"rou3": "0.7.7",
|
|
30
|
+
"srvx": "0.8.15",
|
|
31
|
+
"@vercube/di": "0.0.25",
|
|
32
|
+
"@vercube/logger": "0.0.25"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"
|
|
35
|
+
"rolldown": "1.0.0-beta.42",
|
|
36
|
+
"zod": "4.1.12"
|
|
36
37
|
},
|
|
37
38
|
"publishConfig": {
|
|
38
39
|
"access": "public"
|