clear-router 2.8.2 → 2.8.3

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 (69) hide show
  1. package/dist/ClearRequest.d.cts +5 -5
  2. package/dist/ClearRequest.d.mts +1 -1
  3. package/dist/Controller.d.mts +1 -1
  4. package/dist/ResourceRouteSelection.d.cts +3 -3
  5. package/dist/ResourceRoutes.cjs +12 -0
  6. package/dist/ResourceRoutes.d.cts +16 -22
  7. package/dist/ResourceRoutes.d.mts +13 -19
  8. package/dist/ResourceRoutes.mjs +12 -0
  9. package/dist/{Request-Ci0UQ-Vl.d.mts → Route-tq-rge1g.d.mts} +46 -46
  10. package/dist/Route.d.cts +4 -4
  11. package/dist/Route.d.mts +1 -1
  12. package/dist/RouteGroup.cjs +120 -0
  13. package/dist/RouteGroup.d.cts +64 -0
  14. package/dist/RouteGroup.d.mts +64 -0
  15. package/dist/RouteGroup.mjs +120 -0
  16. package/dist/core/{router.cjs → CoreRouter.cjs} +13 -41
  17. package/dist/core/{router.d.cts → CoreRouter.d.cts} +8 -15
  18. package/dist/core/{router.d.mts → CoreRouter.d.mts} +6 -13
  19. package/dist/core/{router.mjs → CoreRouter.mjs} +13 -41
  20. package/dist/core/Request.d.cts +1 -1
  21. package/dist/core/Request.d.mts +2 -2
  22. package/dist/core/bindings.d.cts +1 -6
  23. package/dist/core/helpers.d.mts +1 -0
  24. package/dist/core/index.cjs +3 -2
  25. package/dist/core/index.d.cts +3 -2
  26. package/dist/core/index.d.mts +3 -2
  27. package/dist/core/index.mjs +3 -2
  28. package/dist/core/plugins.d.cts +2 -2
  29. package/dist/core/plugins.d.mts +1 -1
  30. package/dist/decorators/setup.cjs +2 -2
  31. package/dist/decorators/setup.mjs +1 -1
  32. package/dist/express/router.cjs +4 -4
  33. package/dist/express/router.d.cts +4 -3
  34. package/dist/express/router.d.mts +4 -3
  35. package/dist/express/router.mjs +3 -3
  36. package/dist/fastify/router.cjs +4 -4
  37. package/dist/fastify/router.d.cts +4 -3
  38. package/dist/fastify/router.d.mts +4 -3
  39. package/dist/fastify/router.mjs +3 -3
  40. package/dist/h3/router.cjs +4 -4
  41. package/dist/h3/router.d.cts +4 -3
  42. package/dist/h3/router.d.mts +4 -3
  43. package/dist/h3/router.mjs +3 -3
  44. package/dist/hono/router.cjs +4 -4
  45. package/dist/hono/router.d.cts +4 -3
  46. package/dist/hono/router.d.mts +4 -3
  47. package/dist/hono/router.mjs +3 -3
  48. package/dist/index.cjs +5 -3
  49. package/dist/index.d.cts +4 -3
  50. package/dist/index.d.mts +4 -3
  51. package/dist/index.mjs +4 -3
  52. package/dist/koa/router.cjs +4 -4
  53. package/dist/koa/router.d.cts +4 -3
  54. package/dist/koa/router.d.mts +4 -3
  55. package/dist/koa/router.mjs +3 -3
  56. package/dist/types/basic.d.cts +40 -7
  57. package/dist/types/basic.d.mts +40 -3
  58. package/dist/types/express.d.cts +2 -36
  59. package/dist/types/express.d.mts +1 -1
  60. package/dist/types/fastify.d.cts +3 -15
  61. package/dist/types/fastify.d.mts +1 -1
  62. package/dist/types/h3.d.cts +3 -38
  63. package/dist/types/h3.d.mts +1 -1
  64. package/dist/types/hono.d.cts +3 -17
  65. package/dist/types/hono.d.mts +1 -1
  66. package/dist/types/index.d.mts +1 -1
  67. package/dist/types/koa.d.cts +2 -20
  68. package/dist/types/koa.d.mts +1 -1
  69. package/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ import { importFile } from "./core/helpers.mjs";
2
+ import { isAbsolute, join, resolve } from "node:path";
3
+ import { readdir, stat } from "node:fs/promises";
4
+
5
+ //#region src/RouteGroup.ts
6
+ /**
7
+ * @class clear-router RouteGroup
8
+ * @description A route group describes a collection of routes on clear-router
9
+ * @author 3m1n3nc3
10
+ * @repository https://github.com/arkstack-tmp/clear-router
11
+ */
12
+ var RouteGroup = class {
13
+ checks = [];
14
+ registration;
15
+ routes = /* @__PURE__ */ new Set();
16
+ constructor(options) {
17
+ this.options = options;
18
+ this.registration = this.register();
19
+ }
20
+ /**
21
+ * Returning a falsy value will stop route group registration
22
+ *
23
+ * @param condition
24
+ * @returns
25
+ */
26
+ when(condition) {
27
+ this.checks.push(this.registration.then(async () => {
28
+ if (!await condition(this.options.source)) this.rollback();
29
+ }));
30
+ return this;
31
+ }
32
+ /**
33
+ * Register one or more middleware that will be executed before every route in the group.
34
+ *
35
+ * @param middlewares
36
+ * @returns
37
+ */
38
+ middleware(middlewares) {
39
+ this.checks.push(this.registration.then(() => {
40
+ for (const route of this.routes) route.middleware(middlewares);
41
+ }));
42
+ return this;
43
+ }
44
+ /**
45
+ * Attaches callbacks for the resolution and/or rejection of the RouteGroup.
46
+ *
47
+ * @param onfulfilled
48
+ * @param onrejected
49
+ * @returns
50
+ */
51
+ then(onfulfilled, onrejected) {
52
+ return Promise.all([this.registration, ...this.checks]).then(() => void 0).then(onfulfilled, onrejected);
53
+ }
54
+ /**
55
+ * Register the routes
56
+ */
57
+ async register() {
58
+ const current = this.options.context.getStore();
59
+ const previousPrefix = current?.prefix ?? this.options.defaultPrefix;
60
+ const previousMiddlewares = current?.groupMiddlewares ?? this.options.defaultMiddlewares;
61
+ const fullPrefix = [previousPrefix, this.options.prefix].filter(Boolean).join("/");
62
+ const nextContext = {
63
+ prefix: this.options.normalizePath(fullPrefix),
64
+ groupMiddlewares: [...previousMiddlewares, ...this.options.middlewares || []],
65
+ routeCollectors: [...current?.routeCollectors ?? [], this.routes]
66
+ };
67
+ await this.options.context.run(nextContext, async () => {
68
+ for (const entry of Array.isArray(this.options.source) ? this.options.source : [this.options.source]) {
69
+ if (typeof entry === "function") {
70
+ await Promise.resolve(entry());
71
+ continue;
72
+ }
73
+ for (const file of await this.resolveFiles(entry)) await importFile(file);
74
+ }
75
+ });
76
+ }
77
+ /**
78
+ * Rollback the route registrations
79
+ */
80
+ rollback() {
81
+ for (const route of this.routes) this.options.removeRoute(route);
82
+ }
83
+ /**
84
+ * Resolve files from the group path
85
+ *
86
+ * @param source
87
+ * @returns
88
+ */
89
+ async resolveFiles(source) {
90
+ const resolved = isAbsolute(source) ? source : resolve(process.cwd(), source);
91
+ let sourceStat;
92
+ try {
93
+ sourceStat = await stat(resolved);
94
+ } catch {
95
+ throw new Error(`Route group source not found: ${source}`);
96
+ }
97
+ if (sourceStat.isFile()) return [resolved];
98
+ if (!sourceStat.isDirectory()) throw new Error(`Route group source must be a file or directory: ${source}`);
99
+ return this.readDirectory(resolved);
100
+ }
101
+ /**
102
+ * Read all the files in the configured directory
103
+ *
104
+ * @param directory
105
+ * @returns
106
+ */
107
+ async readDirectory(directory) {
108
+ const entries = await readdir(directory, { withFileTypes: true });
109
+ const files = [];
110
+ for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
111
+ const path = join(directory, entry.name);
112
+ if (entry.isDirectory()) files.push(...await this.readDirectory(path));
113
+ else if (entry.isFile() && /\.(?:[cm]?ts)$/.test(entry.name) && !entry.name.endsWith(".d.ts")) files.push(path);
114
+ }
115
+ return files;
116
+ }
117
+ };
118
+
119
+ //#endregion
120
+ export { RouteGroup };
@@ -3,13 +3,11 @@ const require_Response = require('./Response.cjs');
3
3
  const require_bindings = require('./bindings.cjs');
4
4
  const require_ResourceRoutes = require('../ResourceRoutes.cjs');
5
5
  const require_Route = require('../Route.cjs');
6
- const require_helpers = require('./helpers.cjs');
7
- let node_path = require("node:path");
8
- let node_fs_promises = require("node:fs/promises");
6
+ const require_RouteGroup = require('../RouteGroup.cjs');
9
7
  let node_async_hooks = require("node:async_hooks");
10
8
  let node_module = require("node:module");
11
9
 
12
- //#region src/core/router.ts
10
+ //#region src/core/CoreRouter.ts
13
11
  /**
14
12
  * @class clear-router CoreRouter
15
13
  * @description Core routing logic for clear-router, shared between all supported adapters (Express.js, H3, etc.)
@@ -533,6 +531,7 @@ var CoreRouter = class {
533
531
  });
534
532
  if (!methods.includes("options") && !this.routesByPathMethod.get(`OPTIONS ${fullPath}`)) this.options(path, this.createDefaultOptionsHandler());
535
533
  this.routes.add(route);
534
+ for (const collector of context?.routeCollectors ?? []) collector.add(route);
536
535
  for (const method of methods.map((m) => m.toUpperCase())) {
537
536
  this.routesByPathMethod.set(`${method} ${fullPath}`, route);
538
537
  if (!this.routesByMethod.has(method)) this.routesByMethod.set(method, []);
@@ -643,46 +642,19 @@ var CoreRouter = class {
643
642
  * @param callback
644
643
  * @param middlewares
645
644
  */
646
- static async group(prefix, source, middlewares) {
645
+ static group(prefix, source, middlewares) {
647
646
  this.ensureState();
648
- const context = this.groupContext.getStore();
649
- const previousPrefix = context?.prefix ?? this.prefix;
650
- const previousMiddlewares = context?.groupMiddlewares ?? this.groupMiddlewares;
651
- const fullPrefix = [previousPrefix, prefix].filter(Boolean).join("/");
652
- const nextContext = {
653
- prefix: this.normalizePath(fullPrefix),
654
- groupMiddlewares: [...previousMiddlewares, ...middlewares || []]
655
- };
656
- await this.groupContext.run(nextContext, async () => {
657
- if (typeof source === "function") {
658
- await Promise.resolve(source());
659
- return;
660
- }
661
- for (const file of await this.resolveGroupFiles(source)) await require_helpers.importFile(file);
647
+ return new require_RouteGroup.RouteGroup({
648
+ prefix,
649
+ source,
650
+ middlewares,
651
+ context: this.groupContext,
652
+ defaultPrefix: this.prefix,
653
+ defaultMiddlewares: this.groupMiddlewares,
654
+ normalizePath: (path) => this.normalizePath(path),
655
+ removeRoute: (route) => this.removeRoute(route)
662
656
  });
663
657
  }
664
- static async resolveGroupFiles(source) {
665
- const resolved = (0, node_path.isAbsolute)(source) ? source : (0, node_path.resolve)(process.cwd(), source);
666
- let sourceStat;
667
- try {
668
- sourceStat = await (0, node_fs_promises.stat)(resolved);
669
- } catch {
670
- throw new Error(`Route group source not found: ${source}`);
671
- }
672
- if (sourceStat.isFile()) return [resolved];
673
- if (!sourceStat.isDirectory()) throw new Error(`Route group source must be a file or directory: ${source}`);
674
- return this.readGroupDirectory(resolved);
675
- }
676
- static async readGroupDirectory(directory) {
677
- const entries = await (0, node_fs_promises.readdir)(directory, { withFileTypes: true });
678
- const files = [];
679
- for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
680
- const path = (0, node_path.join)(directory, entry.name);
681
- if (entry.isDirectory()) files.push(...await this.readGroupDirectory(path));
682
- else if (entry.isFile() && /\.(?:[cm]?ts)$/.test(entry.name) && !entry.name.endsWith(".d.ts")) files.push(path);
683
- }
684
- return files;
685
- }
686
658
  /**
687
659
  * Adds global middlewares to the router, which will be applied to all routes.
688
660
  *
@@ -1,13 +1,14 @@
1
- import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupSource, RouterConfig } from "../types/basic.cjs";
1
+ import { Request } from "./Request.cjs";
2
2
  import { Response } from "./Response.cjs";
3
3
  import { Route } from "../Route.cjs";
4
- import { Request } from "./Request.cjs";
5
- import { ClearRouterPluginArgumentsContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind } from "./plugins.cjs";
4
+ import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupContext, RouteGroupSource, RouterConfig } from "../types/basic.cjs";
6
5
  import { Controller } from "../Controller.cjs";
6
+ import { RouteGroup } from "../RouteGroup.cjs";
7
+ import { ClearRouterPluginArgumentsContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind } from "./plugins.cjs";
7
8
  import { ResourceRoutes } from "../ResourceRoutes.cjs";
8
9
  import { AsyncLocalStorage } from "node:async_hooks";
9
10
 
10
- //#region src/core/router.d.ts
11
+ //#region src/core/CoreRouter.d.ts
11
12
  /**
12
13
  * @class clear-router CoreRouter
13
14
  * @description Core routing logic for clear-router, shared between all supported adapters (Express.js, H3, etc.)
@@ -26,10 +27,7 @@ declare abstract class CoreRouter {
26
27
  private static requestProvider?;
27
28
  private static responseProvider?;
28
29
  static config: RouterConfig;
29
- protected static groupContext: AsyncLocalStorage<{
30
- prefix: string;
31
- groupMiddlewares: any[];
32
- }>;
30
+ protected static groupContext: AsyncLocalStorage<RouteGroupContext>;
33
31
  protected static pluginRequestContext: AsyncLocalStorage<ClearRouterPluginRequestContext<any>>;
34
32
  static routes: Set<Route<any, any, any>>;
35
33
  static routesByPathMethod: Map<string, Route<any, any, any>>;
@@ -65,10 +63,7 @@ declare abstract class CoreRouter {
65
63
  protected static getPluginHttpCtxResolvers(): Set<PluginArgumentsResolver>;
66
64
  protected static createDefaultState(): {
67
65
  config: RouterConfig;
68
- groupContext: AsyncLocalStorage<{
69
- prefix: string;
70
- groupMiddlewares: any[];
71
- }>;
66
+ groupContext: AsyncLocalStorage<RouteGroupContext>;
72
67
  routes: Set<never>;
73
68
  routesByPathMethod: Map<any, any>;
74
69
  routesByMethod: Map<any, any>;
@@ -219,9 +214,7 @@ declare abstract class CoreRouter {
219
214
  * @param callback
220
215
  * @param middlewares
221
216
  */
222
- static group(prefix: string, source: RouteGroupSource, middlewares?: any[]): Promise<void>;
223
- protected static resolveGroupFiles(source: string): Promise<string[]>;
224
- protected static readGroupDirectory(directory: string): Promise<string[]>;
217
+ static group(prefix: string, source: RouteGroupSource, middlewares?: any[]): RouteGroup<any, any, any>;
225
218
  /**
226
219
  * Adds global middlewares to the router, which will be applied to all routes.
227
220
  *
@@ -1,13 +1,14 @@
1
- import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupSource, RouterConfig } from "../types/basic.mjs";
2
1
  import { Response } from "./Response.mjs";
3
2
  import { Route } from "../Route.mjs";
3
+ import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupContext, RouteGroupSource, RouterConfig } from "../types/basic.mjs";
4
4
  import { Request } from "./Request.mjs";
5
5
  import { ClearRouterPluginArgumentsContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind } from "./plugins.mjs";
6
6
  import { Controller } from "../Controller.mjs";
7
7
  import { ResourceRoutes } from "../ResourceRoutes.mjs";
8
+ import { RouteGroup } from "../RouteGroup.mjs";
8
9
  import { AsyncLocalStorage } from "node:async_hooks";
9
10
 
10
- //#region src/core/router.d.ts
11
+ //#region src/core/CoreRouter.d.ts
11
12
  /**
12
13
  * @class clear-router CoreRouter
13
14
  * @description Core routing logic for clear-router, shared between all supported adapters (Express.js, H3, etc.)
@@ -26,10 +27,7 @@ declare abstract class CoreRouter {
26
27
  private static requestProvider?;
27
28
  private static responseProvider?;
28
29
  static config: RouterConfig;
29
- protected static groupContext: AsyncLocalStorage<{
30
- prefix: string;
31
- groupMiddlewares: any[];
32
- }>;
30
+ protected static groupContext: AsyncLocalStorage<RouteGroupContext>;
33
31
  protected static pluginRequestContext: AsyncLocalStorage<ClearRouterPluginRequestContext<any>>;
34
32
  static routes: Set<Route<any, any, any>>;
35
33
  static routesByPathMethod: Map<string, Route<any, any, any>>;
@@ -65,10 +63,7 @@ declare abstract class CoreRouter {
65
63
  protected static getPluginHttpCtxResolvers(): Set<PluginArgumentsResolver>;
66
64
  protected static createDefaultState(): {
67
65
  config: RouterConfig;
68
- groupContext: AsyncLocalStorage<{
69
- prefix: string;
70
- groupMiddlewares: any[];
71
- }>;
66
+ groupContext: AsyncLocalStorage<RouteGroupContext>;
72
67
  routes: Set<never>;
73
68
  routesByPathMethod: Map<any, any>;
74
69
  routesByMethod: Map<any, any>;
@@ -219,9 +214,7 @@ declare abstract class CoreRouter {
219
214
  * @param callback
220
215
  * @param middlewares
221
216
  */
222
- static group(prefix: string, source: RouteGroupSource, middlewares?: any[]): Promise<void>;
223
- protected static resolveGroupFiles(source: string): Promise<string[]>;
224
- protected static readGroupDirectory(directory: string): Promise<string[]>;
217
+ static group(prefix: string, source: RouteGroupSource, middlewares?: any[]): RouteGroup<any, any, any>;
225
218
  /**
226
219
  * Adds global middlewares to the router, which will be applied to all routes.
227
220
  *
@@ -3,13 +3,11 @@ import { Response } from "./Response.mjs";
3
3
  import { Container, getBindingMetadataFromTargets, getDesignParamTypes, getStandardMetadata, isClass } from "./bindings.mjs";
4
4
  import { ResourceRoutes } from "../ResourceRoutes.mjs";
5
5
  import { Route } from "../Route.mjs";
6
- import { importFile } from "./helpers.mjs";
6
+ import { RouteGroup } from "../RouteGroup.mjs";
7
7
  import { createRequire } from "node:module";
8
- import { isAbsolute, join, resolve } from "node:path";
9
- import { readdir, stat } from "node:fs/promises";
10
8
  import { AsyncLocalStorage } from "node:async_hooks";
11
9
 
12
- //#region src/core/router.ts
10
+ //#region src/core/CoreRouter.ts
13
11
  /**
14
12
  * @class clear-router CoreRouter
15
13
  * @description Core routing logic for clear-router, shared between all supported adapters (Express.js, H3, etc.)
@@ -533,6 +531,7 @@ var CoreRouter = class {
533
531
  });
534
532
  if (!methods.includes("options") && !this.routesByPathMethod.get(`OPTIONS ${fullPath}`)) this.options(path, this.createDefaultOptionsHandler());
535
533
  this.routes.add(route);
534
+ for (const collector of context?.routeCollectors ?? []) collector.add(route);
536
535
  for (const method of methods.map((m) => m.toUpperCase())) {
537
536
  this.routesByPathMethod.set(`${method} ${fullPath}`, route);
538
537
  if (!this.routesByMethod.has(method)) this.routesByMethod.set(method, []);
@@ -643,46 +642,19 @@ var CoreRouter = class {
643
642
  * @param callback
644
643
  * @param middlewares
645
644
  */
646
- static async group(prefix, source, middlewares) {
645
+ static group(prefix, source, middlewares) {
647
646
  this.ensureState();
648
- const context = this.groupContext.getStore();
649
- const previousPrefix = context?.prefix ?? this.prefix;
650
- const previousMiddlewares = context?.groupMiddlewares ?? this.groupMiddlewares;
651
- const fullPrefix = [previousPrefix, prefix].filter(Boolean).join("/");
652
- const nextContext = {
653
- prefix: this.normalizePath(fullPrefix),
654
- groupMiddlewares: [...previousMiddlewares, ...middlewares || []]
655
- };
656
- await this.groupContext.run(nextContext, async () => {
657
- if (typeof source === "function") {
658
- await Promise.resolve(source());
659
- return;
660
- }
661
- for (const file of await this.resolveGroupFiles(source)) await importFile(file);
647
+ return new RouteGroup({
648
+ prefix,
649
+ source,
650
+ middlewares,
651
+ context: this.groupContext,
652
+ defaultPrefix: this.prefix,
653
+ defaultMiddlewares: this.groupMiddlewares,
654
+ normalizePath: (path) => this.normalizePath(path),
655
+ removeRoute: (route) => this.removeRoute(route)
662
656
  });
663
657
  }
664
- static async resolveGroupFiles(source) {
665
- const resolved = isAbsolute(source) ? source : resolve(process.cwd(), source);
666
- let sourceStat;
667
- try {
668
- sourceStat = await stat(resolved);
669
- } catch {
670
- throw new Error(`Route group source not found: ${source}`);
671
- }
672
- if (sourceStat.isFile()) return [resolved];
673
- if (!sourceStat.isDirectory()) throw new Error(`Route group source must be a file or directory: ${source}`);
674
- return this.readGroupDirectory(resolved);
675
- }
676
- static async readGroupDirectory(directory) {
677
- const entries = await readdir(directory, { withFileTypes: true });
678
- const files = [];
679
- for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
680
- const path = join(directory, entry.name);
681
- if (entry.isDirectory()) files.push(...await this.readGroupDirectory(path));
682
- else if (entry.isFile() && /\.(?:[cm]?ts)$/.test(entry.name) && !entry.name.endsWith(".d.ts")) files.push(path);
683
- }
684
- return files;
685
- }
686
658
  /**
687
659
  * Adds global middlewares to the router, which will be applied to all routes.
688
660
  *
@@ -1,5 +1,5 @@
1
- import { HttpMethod, RequestData } from "../types/basic.cjs";
2
1
  import { Route } from "../Route.cjs";
2
+ import { HttpMethod, RequestData } from "../types/basic.cjs";
3
3
  import { ClearRequest } from "../ClearRequest.cjs";
4
4
 
5
5
  //#region src/core/Request.d.ts
@@ -1,6 +1,6 @@
1
- import { HttpMethod, RequestData } from "../types/basic.mjs";
2
- import { Route } from "../Route.mjs";
3
1
  import { ClearRequest } from "../ClearRequest.mjs";
2
+ import { Route } from "../Route.mjs";
3
+ import { HttpMethod, RequestData } from "../types/basic.mjs";
4
4
 
5
5
  //#region src/core/Request.d.ts
6
6
  declare class Request<X = any, M = any> extends ClearRequest<X, M> {
@@ -2,10 +2,6 @@
2
2
  type BindToken<T = any> = abstract new (...args: any[]) => T;
3
3
  type BindFactory<T = any> = (ctx: any) => T | Promise<T>;
4
4
  type BindValue<T = any> = T | BindFactory<T> | BindToken<T>;
5
- type BindDecorator = MethodDecorator & ClassDecorator & {
6
- <This, Value extends (this: This, ...args: any[]) => any>(value: Value, context: ClassMethodDecoratorContext<This, Value>): void | Value;
7
- <Value extends abstract new (...args: any[]) => any>(value: Value, context: ClassDecoratorContext<Value>): void | Value;
8
- };
9
5
  declare class Container {
10
6
  private static readonly registry;
11
7
  static bind<T>(token: BindToken<T>, value: BindValue<T>): void;
@@ -20,6 +16,5 @@ declare class Container {
20
16
  private static staticPropsMatch;
21
17
  private static resolveBinding;
22
18
  }
23
- declare function Bind(...tokens: BindToken[]): BindDecorator;
24
19
  //#endregion
25
- export { Bind, BindDecorator, BindFactory, BindToken, BindValue, Container };
20
+ export { BindToken, BindValue, Container };
@@ -1,4 +1,5 @@
1
1
  import { FileImporter } from "../types/basic.mjs";
2
+
2
3
  //#region src/core/helpers.d.ts
3
4
  declare const wrap: <T>(value: T | T[] | null | undefined) => T[];
4
5
  /**
@@ -1,5 +1,6 @@
1
+ const require_helpers = require('./helpers.cjs');
2
+ const require_RouteGroup = require('../RouteGroup.cjs');
1
3
  const require_Request = require('./Request.cjs');
2
4
  const require_Response = require('./Response.cjs');
3
5
  const require_plugins = require('./plugins.cjs');
4
- const require_helpers = require('./helpers.cjs');
5
- const require_router = require('./router.cjs');
6
+ const require_CoreRouter = require('./CoreRouter.cjs');
@@ -1,6 +1,7 @@
1
1
  import { Response } from "./Response.cjs";
2
2
  import { Request } from "./Request.cjs";
3
3
  import { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, definePlugin } from "./plugins.cjs";
4
- import { CoreRouter } from "./router.cjs";
4
+ import { RouteGroup } from "../RouteGroup.cjs";
5
+ import { CoreRouter } from "./CoreRouter.cjs";
5
6
  import { importFile, wrap } from "./helpers.cjs";
6
- export { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, definePlugin, importFile, wrap };
7
+ export { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, RouteGroup, definePlugin, importFile, wrap };
@@ -1,6 +1,7 @@
1
1
  import { Response } from "./Response.mjs";
2
2
  import { Request } from "./Request.mjs";
3
3
  import { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, definePlugin } from "./plugins.mjs";
4
- import { CoreRouter } from "./router.mjs";
4
+ import { RouteGroup } from "../RouteGroup.mjs";
5
+ import { CoreRouter } from "./CoreRouter.mjs";
5
6
  import { importFile, wrap } from "./helpers.mjs";
6
- export { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, definePlugin, importFile, wrap };
7
+ export { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, RouteGroup, definePlugin, importFile, wrap };
@@ -2,6 +2,7 @@ import { Request } from "./Request.mjs";
2
2
  import { Response } from "./Response.mjs";
3
3
  import { definePlugin } from "./plugins.mjs";
4
4
  import { importFile, wrap } from "./helpers.mjs";
5
- import { CoreRouter } from "./router.mjs";
5
+ import { RouteGroup } from "../RouteGroup.mjs";
6
+ import { CoreRouter } from "./CoreRouter.mjs";
6
7
 
7
- export { CoreRouter, Request, Response, definePlugin, importFile, wrap };
8
+ export { CoreRouter, Request, Response, RouteGroup, definePlugin, importFile, wrap };
@@ -1,6 +1,6 @@
1
- import { RouterConfig } from "../types/basic.cjs";
2
- import { Response } from "./Response.cjs";
3
1
  import { Request } from "./Request.cjs";
2
+ import { Response } from "./Response.cjs";
3
+ import { RouterConfig } from "../types/basic.cjs";
4
4
  import { BindToken, BindValue, Container } from "./bindings.cjs";
5
5
 
6
6
  //#region src/core/plugins.d.ts
@@ -1,5 +1,5 @@
1
- import { RouterConfig } from "../types/basic.mjs";
2
1
  import { Response } from "./Response.mjs";
2
+ import { RouterConfig } from "../types/basic.mjs";
3
3
  import { Request } from "./Request.mjs";
4
4
  import { BindToken, BindValue, Container } from "./bindings.mjs";
5
5
 
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_bindings = require('../core/bindings.cjs');
3
- const require_router = require('../core/router.cjs');
3
+ const require_CoreRouter = require('../core/CoreRouter.cjs');
4
4
  require('./index.cjs');
5
5
  require("reflect-metadata");
6
6
 
7
7
  //#region src/decorators/setup.ts
8
- require_router.CoreRouter.configureDefaults({ container: {
8
+ require_CoreRouter.CoreRouter.configureDefaults({ container: {
9
9
  enabled: true,
10
10
  autoDiscover: true
11
11
  } });
@@ -1,5 +1,5 @@
1
1
  import { Bind, Container } from "../core/bindings.mjs";
2
- import { CoreRouter } from "../core/router.mjs";
2
+ import { CoreRouter } from "../core/CoreRouter.mjs";
3
3
  import "./index.mjs";
4
4
  import "reflect-metadata";
5
5
 
@@ -1,4 +1,4 @@
1
- const require_router = require('../core/router.cjs');
1
+ const require_CoreRouter = require('../core/CoreRouter.cjs');
2
2
  const require_responses = require('../core/responses.cjs');
3
3
 
4
4
  //#region src/express/router.ts
@@ -9,7 +9,7 @@ const require_responses = require('../core/responses.cjs');
9
9
  * @author 3m1n3nc3
10
10
  * @repository https://github.com/arkstack-tmp/clear-router
11
11
  */
12
- var Router = class Router extends require_router.CoreRouter {
12
+ var Router = class Router extends require_CoreRouter.CoreRouter {
13
13
  static routerStateNamespace = "clear-router:express";
14
14
  static ensureRequestBodyAccessor(req) {
15
15
  if (typeof req.getBody !== "function") req.getBody = () => req.body ?? {};
@@ -141,8 +141,8 @@ var Router = class Router extends require_router.CoreRouter {
141
141
  * @param callback
142
142
  * @param middlewares
143
143
  */
144
- static async group(prefix, source, middlewares) {
145
- await super.group(prefix, source, middlewares);
144
+ static group(prefix, source, middlewares) {
145
+ return super.group(prefix, source, middlewares);
146
146
  }
147
147
  /**
148
148
  * Adds global middlewares to the router, which will be applied to all routes.
@@ -1,8 +1,9 @@
1
- import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupSource } from "../types/basic.cjs";
2
1
  import { Handler, HttpContext, Middleware } from "../types/express.cjs";
3
2
  import { Route } from "../Route.cjs";
3
+ import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupSource } from "../types/basic.cjs";
4
4
  import { ResourceRoutes } from "../ResourceRoutes.cjs";
5
- import { CoreRouter } from "../core/router.cjs";
5
+ import { RouteGroup } from "../RouteGroup.cjs";
6
+ import { CoreRouter } from "../core/CoreRouter.cjs";
6
7
  import { Router } from "express";
7
8
 
8
9
  //#region src/express/router.d.ts
@@ -101,7 +102,7 @@ declare class Router$1 extends CoreRouter {
101
102
  * @param callback
102
103
  * @param middlewares
103
104
  */
104
- static group(prefix: string, source: RouteGroupSource, middlewares?: Middleware[]): Promise<void>;
105
+ static group(prefix: string, source: RouteGroupSource, middlewares?: Middleware[]): RouteGroup<HttpContext, Middleware, Handler>;
105
106
  /**
106
107
  * Adds global middlewares to the router, which will be applied to all routes.
107
108
  *
@@ -1,8 +1,9 @@
1
- import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupSource } from "../types/basic.mjs";
2
1
  import { Handler, HttpContext, Middleware } from "../types/express.mjs";
3
2
  import { Route } from "../Route.mjs";
3
+ import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouteGroupSource } from "../types/basic.mjs";
4
4
  import { ResourceRoutes } from "../ResourceRoutes.mjs";
5
- import { CoreRouter } from "../core/router.mjs";
5
+ import { RouteGroup } from "../RouteGroup.mjs";
6
+ import { CoreRouter } from "../core/CoreRouter.mjs";
6
7
  import { Router } from "express";
7
8
 
8
9
  //#region src/express/router.d.ts
@@ -101,7 +102,7 @@ declare class Router$1 extends CoreRouter {
101
102
  * @param callback
102
103
  * @param middlewares
103
104
  */
104
- static group(prefix: string, source: RouteGroupSource, middlewares?: Middleware[]): Promise<void>;
105
+ static group(prefix: string, source: RouteGroupSource, middlewares?: Middleware[]): RouteGroup<HttpContext, Middleware, Handler>;
105
106
  /**
106
107
  * Adds global middlewares to the router, which will be applied to all routes.
107
108
  *
@@ -1,4 +1,4 @@
1
- import { CoreRouter } from "../core/router.mjs";
1
+ import { CoreRouter } from "../core/CoreRouter.mjs";
2
2
  import { isFetchResponse, resolveResponseMeta, responseWasSent } from "../core/responses.mjs";
3
3
 
4
4
  //#region src/express/router.ts
@@ -141,8 +141,8 @@ var Router = class Router extends CoreRouter {
141
141
  * @param callback
142
142
  * @param middlewares
143
143
  */
144
- static async group(prefix, source, middlewares) {
145
- await super.group(prefix, source, middlewares);
144
+ static group(prefix, source, middlewares) {
145
+ return super.group(prefix, source, middlewares);
146
146
  }
147
147
  /**
148
148
  * Adds global middlewares to the router, which will be applied to all routes.
@@ -1,4 +1,4 @@
1
- const require_router = require('../core/router.cjs');
1
+ const require_CoreRouter = require('../core/CoreRouter.cjs');
2
2
  const require_responses = require('../core/responses.cjs');
3
3
 
4
4
  //#region src/fastify/router.ts
@@ -8,7 +8,7 @@ const require_responses = require('../core/responses.cjs');
8
8
  * @author 3m1n3nc3
9
9
  * @repository https://github.com/arkstack-tmp/clear-router
10
10
  */
11
- var Router = class Router extends require_router.CoreRouter {
11
+ var Router = class Router extends require_CoreRouter.CoreRouter {
12
12
  static routerStateNamespace = "clear-router:fastify";
13
13
  static ensureRequestBodyAccessor(req) {
14
14
  if (typeof req.getBody !== "function") req.getBody = () => req.body ?? {};
@@ -134,8 +134,8 @@ var Router = class Router extends require_router.CoreRouter {
134
134
  * @param callback
135
135
  * @param middlewares
136
136
  */
137
- static async group(prefix, source, middlewares) {
138
- await super.group(prefix, source, middlewares);
137
+ static group(prefix, source, middlewares) {
138
+ return super.group(prefix, source, middlewares);
139
139
  }
140
140
  /**
141
141
  * Apply middlewares to a group of routes defined within the callback