@vercube/core 0.0.24 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +52 -12
  2. 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 basePath = (metadata?.__controller?.path ?? "").replace(/\/$/, "");
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.90.0/helpers/decorate.js
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
- const internalError = this.gContainer.get(ErrorHandlerProvider).handleError(error);
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
- const internalError = this.gContainer.get(ErrorHandlerProvider).handleError(error);
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
- const url = new URL(request.url);
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
- const ctx = propertyName ? target : target.prototype;
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.24",
3
+ "version": "0.0.26",
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.5",
30
- "srvx": "0.8.7",
31
- "@vercube/di": "0.0.24",
32
- "@vercube/logger": "0.0.24"
29
+ "rou3": "0.7.7",
30
+ "srvx": "0.8.15",
31
+ "@vercube/di": "0.0.26",
32
+ "@vercube/logger": "0.0.26"
33
33
  },
34
34
  "devDependencies": {
35
- "rolldown": "1.0.0-beta.39",
36
- "zod": "4.1.11"
35
+ "rolldown": "1.0.0-beta.42",
36
+ "zod": "4.1.12"
37
37
  },
38
38
  "publishConfig": {
39
39
  "access": "public"