@asenajs/hono-adapter 1.4.0 → 1.5.1

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 (36) hide show
  1. package/README.md +2 -2
  2. package/dist/lib/HonoAdapter.d.ts +49 -4
  3. package/dist/lib/HonoAdapter.js +209 -51
  4. package/dist/lib/HonoAdapter.js.map +1 -1
  5. package/dist/lib/HonoContextWrapper.d.ts +17 -3
  6. package/dist/lib/HonoContextWrapper.js +85 -2
  7. package/dist/lib/HonoContextWrapper.js.map +1 -1
  8. package/dist/lib/HonoWebsocketAdapter.d.ts +2 -16
  9. package/dist/lib/HonoWebsocketAdapter.js +26 -50
  10. package/dist/lib/HonoWebsocketAdapter.js.map +1 -1
  11. package/dist/lib/defaults/ValidationService.d.ts +4 -4
  12. package/dist/lib/middlewares/CorsMiddleware.d.ts +1 -1
  13. package/dist/lib/middlewares/CorsMiddleware.js +5 -6
  14. package/dist/lib/middlewares/CorsMiddleware.js.map +1 -1
  15. package/dist/lib/middlewares/RateLimiterMiddleware.d.ts +1 -1
  16. package/dist/lib/middlewares/RateLimiterMiddleware.js +9 -7
  17. package/dist/lib/middlewares/RateLimiterMiddleware.js.map +1 -1
  18. package/dist/lib/types/HonoAdapterOptions.d.ts +27 -0
  19. package/dist/lib/types/HonoAdapterOptions.js +2 -0
  20. package/dist/lib/types/HonoAdapterOptions.js.map +1 -0
  21. package/dist/lib/types/SendPingStrategy.d.ts +4 -0
  22. package/dist/lib/types/SendPingStrategy.js +2 -0
  23. package/dist/lib/types/SendPingStrategy.js.map +1 -0
  24. package/dist/lib/types/index.d.ts +2 -0
  25. package/dist/lib/types/index.js +2 -0
  26. package/dist/lib/types/index.js.map +1 -1
  27. package/dist/lib/utils/createHonoAdapter.d.ts +2 -1
  28. package/dist/lib/utils/createHonoAdapter.js +9 -1
  29. package/dist/lib/utils/createHonoAdapter.js.map +1 -1
  30. package/dist/lib/utils/middlewareParser.d.ts +5 -1
  31. package/dist/lib/utils/middlewareParser.js +16 -6
  32. package/dist/lib/utils/middlewareParser.js.map +1 -1
  33. package/dist/lib/utils/routePriority.d.ts +40 -0
  34. package/dist/lib/utils/routePriority.js +75 -0
  35. package/dist/lib/utils/routePriority.js.map +1 -0
  36. package/package.json +16 -13
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * **Usage in Asena Application:**
14
14
  * ```typescript
15
- * import { Middleware } from '@asenajs/asena/server';
15
+ * import { Middleware } from '@asenajs/asena/decorators';
16
16
  * import { RateLimiterMiddleware } from '@asenajs/hono-adapter';
17
17
  *
18
18
  * // Create custom rate limiter for your needs
@@ -230,11 +230,10 @@ export class RateLimiterMiddleware extends MiddlewareService {
230
230
  }
231
231
  // Consume tokens
232
232
  bucket.tokens -= requestCost;
233
- // Set rate limit headers using Hono's context
234
- const honoContext = context.context;
235
- honoContext.header('X-RateLimit-Limit', String(Math.floor(this.refillRate * 60)));
236
- honoContext.header('X-RateLimit-Remaining', String(Math.floor(bucket.tokens)));
237
- honoContext.header('X-RateLimit-Reset', String(Math.floor(bucket.lastRefill / 1000 + 60)));
233
+ // Set rate limit headers via AsenaContext abstraction
234
+ context.setResponseHeader('X-RateLimit-Limit', String(Math.floor(this.refillRate * 60)));
235
+ context.setResponseHeader('X-RateLimit-Remaining', String(Math.floor(bucket.tokens)));
236
+ context.setResponseHeader('X-RateLimit-Reset', String(Math.floor(bucket.lastRefill / 1000 + 60)));
238
237
  // Continue to next middleware/handler
239
238
  return await next();
240
239
  }
@@ -270,7 +269,10 @@ export class RateLimiterMiddleware extends MiddlewareService {
270
269
  * @returns Client identifier
271
270
  */
272
271
  defaultKeyGenerator(context) {
273
- return context.req.header('x-forwarded-for') || context.req.header('cf-connecting-ip') || 'unknown';
272
+ const req = context.req;
273
+ const forwarded = typeof req.header === 'function' ? req.header('x-forwarded-for') : context.headers?.['x-forwarded-for'];
274
+ const cfIp = typeof req.header === 'function' ? req.header('cf-connecting-ip') : context.headers?.['cf-connecting-ip'];
275
+ return forwarded || cfIp || context.getRequestIp?.() || 'unknown';
274
276
  }
275
277
  /**
276
278
  * Setup automatic cleanup of inactive buckets
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiterMiddleware.js","sourceRoot":"","sources":["../../../lib/middlewares/RateLimiterMiddleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RateLimiterMiddleware.js","sourceRoot":"","sources":["../../../lib/middlewares/RateLimiterMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Hono } from 'hono';
2
+ import type { ServerLogger } from '@asenajs/asena/logger';
3
+ import type { HonoWebsocketAdapter } from '../HonoWebsocketAdapter';
4
+ export interface HonoAdapterOptions {
5
+ /**
6
+ * Logger instance for the adapter
7
+ */
8
+ logger: ServerLogger;
9
+ /**
10
+ * Optional pre-configured Hono app instance.
11
+ * Use this to add custom middleware or configure Hono before Asena takes over.
12
+ */
13
+ app?: Hono<any, any, any>;
14
+ /**
15
+ * Optional custom WebSocket adapter.
16
+ * Defaults to HonoWebsocketAdapter if not provided.
17
+ */
18
+ websocketAdapter?: HonoWebsocketAdapter;
19
+ /**
20
+ * Hono strict mode for route matching.
21
+ * When false, `/health` and `/health/` match the same route.
22
+ * Default: true (Hono default)
23
+ *
24
+ * @see https://hono.dev/docs/api/hono#strict-mode
25
+ */
26
+ strict?: boolean;
27
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HonoAdapterOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HonoAdapterOptions.js","sourceRoot":"","sources":["../../../lib/types/HonoAdapterOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @deprecated Import SendPingStrategy from '@asenajs/asena/web-socket' instead.
3
+ */
4
+ export type { SendPingStrategy } from '@asenajs/asena/web-socket';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SendPingStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendPingStrategy.js","sourceRoot":"","sources":["../../../lib/types/SendPingStrategy.ts"],"names":[],"mappings":""}
@@ -1,3 +1,5 @@
1
1
  export * from './HonoHandler';
2
2
  export * from '../defaults/Context';
3
3
  export * from './StaticServeExtras';
4
+ export * from './HonoAdapterOptions';
5
+ export * from './SendPingStrategy';
@@ -1,4 +1,6 @@
1
1
  export * from './HonoHandler';
2
2
  export * from '../defaults/Context';
3
3
  export * from './StaticServeExtras';
4
+ export * from './HonoAdapterOptions';
5
+ export * from './SendPingStrategy';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import { HonoAdapter } from '../../index';
2
2
  import type { ServerLogger } from '@asenajs/asena/logger';
3
- export declare const createHonoAdapter: (logger?: ServerLogger) => [HonoAdapter, ServerLogger];
3
+ import type { HonoAdapterOptions } from '../types/HonoAdapterOptions';
4
+ export declare const createHonoAdapter: (loggerOrOptions?: ServerLogger | Partial<HonoAdapterOptions>) => [HonoAdapter, ServerLogger];
@@ -1,5 +1,13 @@
1
1
  import { HonoAdapter } from '../../index';
2
- export const createHonoAdapter = (logger) => {
2
+ export const createHonoAdapter = (loggerOrOptions) => {
3
+ if (loggerOrOptions && typeof loggerOrOptions === 'object' && 'logger' in loggerOrOptions) {
4
+ const logger = loggerOrOptions.logger;
5
+ return [
6
+ new HonoAdapter(loggerOrOptions),
7
+ logger,
8
+ ];
9
+ }
10
+ const logger = loggerOrOptions;
3
11
  return [new HonoAdapter(logger), logger];
4
12
  };
5
13
  //# sourceMappingURL=createHonoAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createHonoAdapter.js","sourceRoot":"","sources":["../../../lib/utils/createHonoAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAqB,EAA+B,EAAE;IACtF,OAAO,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"createHonoAdapter.js","sourceRoot":"","sources":["../../../lib/utils/createHonoAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,eAA4D,EAC/B,EAAE;IAC/B,IAAI,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,QAAQ,IAAI,eAAe,EAAE,CAAC;QAC1F,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAEtC,OAAO;YACL,IAAI,WAAW,CAAC,eAAqC,CAAC;YACtD,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,eAA+B,CAAC;IAE/C,OAAO,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { Server } from 'bun';
1
2
  import type { MiddlewareHandler } from 'hono';
2
3
  import type { Context as HonoAdapterContext } from '../defaults';
3
4
  import type { BaseMiddleware } from '@asenajs/asena/adapter';
@@ -6,5 +7,8 @@ import type { BaseMiddleware } from '@asenajs/asena/adapter';
6
7
  * - Reuses context wrappers when possible
7
8
  * - Handles middleware return values (false stops pipeline)
8
9
  * - Adds error handling
10
+ *
11
+ * @param middlewares - Asena middlewares to convert
12
+ * @param getServer - Lazy server getter (server available at request time, not registration time)
9
13
  */
10
- export declare const middlewareParser: (middlewares: BaseMiddleware<HonoAdapterContext>[]) => MiddlewareHandler[];
14
+ export declare const middlewareParser: (middlewares: BaseMiddleware<HonoAdapterContext>[], getServer?: () => Server<never> | undefined) => MiddlewareHandler[];
@@ -5,8 +5,11 @@ import { createFactory } from 'hono/factory';
5
5
  * - Reuses context wrappers when possible
6
6
  * - Handles middleware return values (false stops pipeline)
7
7
  * - Adds error handling
8
+ *
9
+ * @param middlewares - Asena middlewares to convert
10
+ * @param getServer - Lazy server getter (server available at request time, not registration time)
8
11
  */
9
- export const middlewareParser = (middlewares) => {
12
+ export const middlewareParser = (middlewares, getServer) => {
10
13
  const factory = createFactory();
11
14
  return middlewares.map((middleware) => {
12
15
  if (middleware.override) {
@@ -17,21 +20,28 @@ export const middlewareParser = (middlewares) => {
17
20
  // Reuse wrapper if already exists in context (performance optimization)
18
21
  let wrapper = context.get('_asenaContextWrapper');
19
22
  if (!wrapper) {
20
- wrapper = new HonoContextWrapper(context);
23
+ wrapper = new HonoContextWrapper(context, getServer?.());
21
24
  context.set('_asenaContextWrapper', wrapper);
22
25
  }
23
26
  // eslint-disable-next-line no-useless-catch
24
27
  try {
25
28
  // Call middleware handler
26
29
  const result = await middleware.handle(wrapper, next);
27
- // If middleware returns false, stop the pipeline
30
+ // If middleware returns false, stop the pipeline and return 403
31
+ // (consistent with Ergenecore adapter behavior)
28
32
  if (result === false) {
33
+ context.res = new Response('Forbidden', { status: 403 });
29
34
  return;
30
35
  }
31
- // If middleware returns Response, return it to Hono
32
- // This allows middleware to short-circuit the chain (like Hono's built-in CORS)
36
+ // If middleware returns Response, set it on the Hono context.
37
+ // Raw Response return may not propagate through factory.createMiddleware,
38
+ // so we set c.res directly to ensure Hono uses this response.
33
39
  if (result instanceof Response) {
34
- return result;
40
+ context.res = new Response(result.body, {
41
+ status: result.status,
42
+ headers: result.headers,
43
+ });
44
+ return;
35
45
  }
36
46
  // If middleware didn't call next(), we call it here
37
47
  // Note: Hono middleware should handle next() calls properly
@@ -1 +1 @@
1
- {"version":3,"file":"middlewareParser.js","sourceRoot":"","sources":["../../../lib/utils/middlewareParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAiD,EAAuB,EAAE;IACzG,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACpC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,uEAAuE;YACvE,OAAO,CAAC,CAAU,EAAE,IAAc,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAgB,EAAE,IAAU,EAAE,EAAE;YACrE,wEAAwE;YACxE,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAuB,CAAC;YAExE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC;gBACH,0BAA0B;gBAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEtD,iDAAiD;gBACjD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,OAAO;gBACT,CAAC;gBAED,oDAAoD;gBACpD,gFAAgF;gBAChF,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;oBAC/B,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,oDAAoD;gBACpD,4DAA4D;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,oCAAoC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"middlewareParser.js","sourceRoot":"","sources":["../../../lib/utils/middlewareParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,WAAiD,EACjD,SAA2C,EACtB,EAAE;IACvB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACpC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,uEAAuE;YACvE,OAAO,CAAC,CAAU,EAAE,IAAc,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAgB,EAAE,IAAU,EAAE,EAAE;YACrE,wEAAwE;YACxE,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAuB,CAAC;YAExE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC;gBACH,0BAA0B;gBAC1B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEtD,gEAAgE;gBAChE,gDAAgD;gBAChD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;oBAEzD,OAAO;gBACT,CAAC;gBAED,8DAA8D;gBAC9D,0EAA0E;gBAC1E,8DAA8D;gBAC9D,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;oBAC/B,OAAO,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;wBACtC,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;qBACxB,CAAC,CAAC;oBAEH,OAAO;gBACT,CAAC;gBAED,oDAAoD;gBACpD,4DAA4D;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,oCAAoC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Route priority sorting for Hono adapter.
3
+ *
4
+ * Hono matches routes in registration order — the first matching route wins.
5
+ * This utility sorts routes so that more specific (static) paths are registered
6
+ * before less specific (param, wildcard) paths, following the industry-standard
7
+ * priority hierarchy used by Fastify's find-my-way radix tree router.
8
+ *
9
+ * Priority hierarchy (highest to lowest):
10
+ * 1. Static segments (/count, /search)
11
+ * 2. Parametric segments (/:id, /:name)
12
+ * 3. Wildcard segments (/*, /**)
13
+ * 4. Longer (more specific) paths before shorter ones
14
+ *
15
+ * @see https://github.com/delvedor/find-my-way — Fastify's router priority algorithm
16
+ */
17
+ /**
18
+ * Returns a priority score for a single path segment.
19
+ *
20
+ * @param segment - A single path segment (between slashes)
21
+ * @returns 0 for static, 1 for param, 2 for wildcard
22
+ */
23
+ export declare function segmentScore(segment: string): number;
24
+ /**
25
+ * Compares two route paths for registration priority.
26
+ *
27
+ * Returns negative if `a` should be registered before `b` (higher priority),
28
+ * positive if `b` should be registered before `a`,
29
+ * 0 if they have equal priority.
30
+ *
31
+ * @param pathA - First route path
32
+ * @param pathB - Second route path
33
+ * @returns Comparison result for Array.sort()
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * routes.sort((a, b) => compareRoutePriority(a.path, b.path));
38
+ * ```
39
+ */
40
+ export declare function compareRoutePriority(pathA: string, pathB: string): number;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Route priority sorting for Hono adapter.
3
+ *
4
+ * Hono matches routes in registration order — the first matching route wins.
5
+ * This utility sorts routes so that more specific (static) paths are registered
6
+ * before less specific (param, wildcard) paths, following the industry-standard
7
+ * priority hierarchy used by Fastify's find-my-way radix tree router.
8
+ *
9
+ * Priority hierarchy (highest to lowest):
10
+ * 1. Static segments (/count, /search)
11
+ * 2. Parametric segments (/:id, /:name)
12
+ * 3. Wildcard segments (/*, /**)
13
+ * 4. Longer (more specific) paths before shorter ones
14
+ *
15
+ * @see https://github.com/delvedor/find-my-way — Fastify's router priority algorithm
16
+ */
17
+ /**
18
+ * Returns a priority score for a single path segment.
19
+ *
20
+ * @param segment - A single path segment (between slashes)
21
+ * @returns 0 for static, 1 for param, 2 for wildcard
22
+ */
23
+ export function segmentScore(segment) {
24
+ if (segment === '*' || segment.includes('*'))
25
+ return 2;
26
+ if (segment.startsWith(':'))
27
+ return 1;
28
+ return 0;
29
+ }
30
+ /**
31
+ * Compares two route paths for registration priority.
32
+ *
33
+ * Returns negative if `a` should be registered before `b` (higher priority),
34
+ * positive if `b` should be registered before `a`,
35
+ * 0 if they have equal priority.
36
+ *
37
+ * @param pathA - First route path
38
+ * @param pathB - Second route path
39
+ * @returns Comparison result for Array.sort()
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * routes.sort((a, b) => compareRoutePriority(a.path, b.path));
44
+ * ```
45
+ */
46
+ export function compareRoutePriority(pathA, pathB) {
47
+ const segA = pathA.split('/').filter(Boolean);
48
+ const segB = pathB.split('/').filter(Boolean);
49
+ // Wildcard paths always go last — a path containing * is less specific than any non-wildcard path
50
+ const aHasWildcard = segA.some((s) => s === '*' || s.includes('*'));
51
+ const bHasWildcard = segB.some((s) => s === '*' || s.includes('*'));
52
+ if (aHasWildcard && !bHasWildcard)
53
+ return 1;
54
+ if (!aHasWildcard && bHasWildcard)
55
+ return -1;
56
+ // Segment-by-segment comparison
57
+ const maxLen = Math.max(segA.length, segB.length);
58
+ for (let i = 0; i < maxLen; i++) {
59
+ const a = segA[i];
60
+ const b = segB[i];
61
+ // One path ran out of segments — longer path is more specific, goes first
62
+ if (!a && b)
63
+ return 1;
64
+ if (a && !b)
65
+ return -1;
66
+ const scoreA = segmentScore(a);
67
+ const scoreB = segmentScore(b);
68
+ // Different segment types at this position — lower score wins
69
+ if (scoreA !== scoreB)
70
+ return scoreA - scoreB;
71
+ }
72
+ // Identical priority — maintain original order (stable sort)
73
+ return 0;
74
+ }
75
+ //# sourceMappingURL=routePriority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routePriority.js","sourceRoot":"","sources":["../../../lib/utils/routePriority.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtC,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,KAAa;IAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE9C,kGAAkG;IAClG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpE,IAAI,YAAY,IAAI,CAAC,YAAY;QAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,IAAI,YAAY;QAAE,OAAO,CAAC,CAAC,CAAC;IAE7C,gCAAgC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElB,0EAA0E;QAC1E,IAAI,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAEvB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAE/B,8DAA8D;QAC9D,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,MAAM,GAAG,MAAM,CAAC;IAChD,CAAC;IAED,6DAA6D;IAC7D,OAAO,CAAC,CAAC;AACX,CAAC"}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "README.md",
10
10
  "LICENSE"
11
11
  ],
12
- "version": "1.4.0",
12
+ "version": "1.5.1",
13
13
  "author": "LibirSoft",
14
14
  "repository": {
15
15
  "type": "git",
@@ -31,26 +31,29 @@
31
31
  "format": "prettier --write .",
32
32
  "format:check": "prettier --check .",
33
33
  "check": "bun run lint && bun run format:check",
34
- "check:fix": "bun run lint:fix && bun run format"
34
+ "check:fix": "bun run lint:fix && bun run format",
35
+ "changeset": "changeset",
36
+ "version": "changeset version",
37
+ "release": "bun run build && changeset publish"
35
38
  },
36
39
  "devDependencies": {
37
- "@asenajs/asena": "latest",
38
- "@changesets/cli": "^2.29.7",
40
+ "@asenajs/asena": "^0.7.0",
41
+ "@changesets/cli": "^2.30.0",
39
42
  "@types/bun": "latest",
40
- "@typescript-eslint/eslint-plugin": "^8.46.2",
41
- "@typescript-eslint/parser": "^8.46.2",
42
- "eslint": "^9.38.0",
43
+ "@typescript-eslint/eslint-plugin": "^8.58.0",
44
+ "@typescript-eslint/parser": "^8.58.0",
45
+ "eslint": "^9.39.4",
43
46
  "eslint-config-prettier": "^9.1.2",
44
- "prettier": "^3.6.2",
45
- "typescript-eslint": "^8.46.2"
47
+ "prettier": "^3.8.1",
48
+ "typescript-eslint": "^8.58.0"
46
49
  },
47
50
  "peerDependencies": {
48
- "@asenajs/asena": "^0.6.0",
51
+ "@asenajs/asena": "^0.7.0",
49
52
  "typescript": "^5.8.2"
50
53
  },
51
54
  "dependencies": {
52
55
  "@hono/zod-validator": "^0.4.3",
53
- "hono": "^4.10.4",
54
- "zod": "^3.25.76"
56
+ "hono": "^4.12.9",
57
+ "zod": "^4.3.6"
55
58
  }
56
- }
59
+ }