@vercube/core 0.0.24 → 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.mjs +52 -12
- package/package.json +7 -7
package/dist/index.mjs
CHANGED
|
@@ -227,9 +227,7 @@ var MetadataResolver = class {
|
|
|
227
227
|
resolveUrl(params) {
|
|
228
228
|
const { instance, propertyName, path: rawPath } = params;
|
|
229
229
|
const metadata = instance.__metadata;
|
|
230
|
-
const
|
|
231
|
-
const cleanPath = rawPath.replace(/^\//, "");
|
|
232
|
-
const url = `${basePath}/${cleanPath}`;
|
|
230
|
+
const url = `${(metadata?.__controller?.path ?? "").replace(/\/$/, "")}/${rawPath.replace(/^\//, "")}`;
|
|
233
231
|
metadata.__methods[propertyName].url = url;
|
|
234
232
|
return url;
|
|
235
233
|
}
|
|
@@ -335,7 +333,7 @@ var GlobalMiddlewareRegistry = class {
|
|
|
335
333
|
};
|
|
336
334
|
|
|
337
335
|
//#endregion
|
|
338
|
-
//#region \0@oxc-project+runtime@0.
|
|
336
|
+
//#region \0@oxc-project+runtime@0.94.0/helpers/decorate.js
|
|
339
337
|
function __decorate(decorators, target, key, desc) {
|
|
340
338
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
341
339
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -392,6 +390,50 @@ var RequestHandler = class {
|
|
|
392
390
|
};
|
|
393
391
|
}
|
|
394
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
|
+
/**
|
|
395
437
|
* Processes an HTTP request through the middleware chain and route handler
|
|
396
438
|
*
|
|
397
439
|
* The request handling lifecycle:
|
|
@@ -425,8 +467,7 @@ var RequestHandler = class {
|
|
|
425
467
|
});
|
|
426
468
|
if (hookResponse instanceof Response) return hookResponse;
|
|
427
469
|
} catch (error) {
|
|
428
|
-
|
|
429
|
-
if (internalError instanceof Response) return internalError;
|
|
470
|
+
return await Promise.resolve(this.gContainer.get(ErrorHandlerProvider).handleError(error));
|
|
430
471
|
}
|
|
431
472
|
for (const action of actions) {
|
|
432
473
|
const actionResponse = action.handler(request, fakeResponse);
|
|
@@ -438,9 +479,9 @@ var RequestHandler = class {
|
|
|
438
479
|
const hookResponse = await hook.middleware.onResponse?.(request, fakeResponse, handlerResponse);
|
|
439
480
|
if (hookResponse !== null) fakeResponse = this.processOverrideResponse(hookResponse, fakeResponse);
|
|
440
481
|
} catch (error) {
|
|
441
|
-
|
|
442
|
-
if (internalError instanceof Response) return internalError;
|
|
482
|
+
return await Promise.resolve(this.gContainer.get(ErrorHandlerProvider).handleError(error));
|
|
443
483
|
}
|
|
484
|
+
if (handlerResponse instanceof Response) return handlerResponse;
|
|
444
485
|
const body = fakeResponse?.body ?? JSON.stringify(handlerResponse);
|
|
445
486
|
return new Response(body, {
|
|
446
487
|
status: fakeResponse.status ?? 200,
|
|
@@ -706,8 +747,7 @@ var StaticRequestHandler = class {
|
|
|
706
747
|
const dirs = this.fOptions?.dirs ?? [];
|
|
707
748
|
if (!dirs) return;
|
|
708
749
|
if (request.method !== "GET") return;
|
|
709
|
-
|
|
710
|
-
let relativePath = normalize(url.pathname);
|
|
750
|
+
let relativePath = normalize(new URL(request.url).pathname);
|
|
711
751
|
for (const dir of dirs) relativePath = relativePath.replace(dir, "");
|
|
712
752
|
for (const dir of dirs) {
|
|
713
753
|
const fullPath = join(process.cwd(), dir, relativePath);
|
|
@@ -839,6 +879,7 @@ var HttpServer = class {
|
|
|
839
879
|
path: request.url,
|
|
840
880
|
method: request.method
|
|
841
881
|
});
|
|
882
|
+
if (!route && request.method === "OPTIONS") return this.gRequestHandler.handlePreflight(request);
|
|
842
883
|
if (!route) {
|
|
843
884
|
const response = await this.gStaticRequestHandler.handleRequest(request);
|
|
844
885
|
if (response) return response;
|
|
@@ -2354,8 +2395,7 @@ function Redirect(location, code = 301) {
|
|
|
2354
2395
|
*/
|
|
2355
2396
|
function Middleware(middleware, opts) {
|
|
2356
2397
|
return function internalDecorator(target, propertyName) {
|
|
2357
|
-
|
|
2358
|
-
initializeMetadata(ctx).__middlewares.push({
|
|
2398
|
+
initializeMetadata(propertyName ? target : target.prototype).__middlewares.push({
|
|
2359
2399
|
target: propertyName ?? "__global__",
|
|
2360
2400
|
priority: opts?.priority ?? 999,
|
|
2361
2401
|
middleware
|
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",
|
|
@@ -26,14 +26,14 @@
|
|
|
26
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
|
-
"rolldown": "1.0.0-beta.
|
|
36
|
-
"zod": "4.1.
|
|
35
|
+
"rolldown": "1.0.0-beta.42",
|
|
36
|
+
"zod": "4.1.12"
|
|
37
37
|
},
|
|
38
38
|
"publishConfig": {
|
|
39
39
|
"access": "public"
|