@alis-kit/routers 1.0.0 → 2.0.0

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/README.md CHANGED
@@ -37,7 +37,7 @@ No `reflect-metadata` needed — this library uses **TC39 native decorators** (s
37
37
 
38
38
  ```typescript
39
39
  import express from "express";
40
- import { RouterKit, ReqController, GetMapping, PostMapping } from "@alis-kit/routers";
40
+ import { RouterKit, ReqController, GetMapping } from "@alis-kit/routers";
41
41
 
42
42
  @ReqController("/hello")
43
43
  class HelloController {
@@ -63,6 +63,70 @@ app.listen(3000, () => console.log("Server running on port 3000"));
63
63
 
64
64
  ---
65
65
 
66
+ ## Parameter Injection
67
+
68
+ Parameter injection is configured via `params` in the mapping options. Each entry maps to a method parameter by array index.
69
+
70
+ ```typescript
71
+ @ReqController("/users", { authentication: "auth", tag: "User Management" })
72
+ class UserController {
73
+ @GetMapping("/", {
74
+ summary: "Get all users with pagination",
75
+ params: [
76
+ { type: "query", schema: PaginationSchema },
77
+ ],
78
+ })
79
+ async getAll(query: IPagination) {
80
+ return { items: [], page: query.page };
81
+ }
82
+
83
+ @GetMapping("/:id", {
84
+ summary: "Get user by ID",
85
+ params: [
86
+ { type: "param", key: "id" },
87
+ ],
88
+ })
89
+ async getById(id: string) {
90
+ return { id, name: "John Doe" };
91
+ }
92
+
93
+ @PostMapping("/", {
94
+ summary: "Register new user",
95
+ params: [
96
+ { type: "body", schema: CreateUserSchema },
97
+ ],
98
+ })
99
+ @HttpStatus(201)
100
+ async create(body: ICreateUser) {
101
+ return { id: "new-id", ...body };
102
+ }
103
+
104
+ @PutMapping("/:id", {
105
+ summary: "Update user",
106
+ params: [
107
+ { type: "param", key: "id" },
108
+ { type: "body", schema: UpdateUserSchema },
109
+ ],
110
+ })
111
+ async update(id: string, body: IUpdateUser) {
112
+ return { id, ...body };
113
+ }
114
+ }
115
+ ```
116
+
117
+ ### Param Types
118
+
119
+ | Type | Description |
120
+ |---|---|
121
+ | `"body"` | Injects and validates `req.body` (optional Zod schema) |
122
+ | `"query"` | Injects and validates `req.query` (optional Zod schema) |
123
+ | `"param"` | Injects a route parameter by `key` (e.g. `"id"` for `/:id`) |
124
+ | `"req"` | Injects the raw framework request object |
125
+ | `"cookie"` | Injects a `CookieSetter` instance |
126
+ | `"reply"` | Injects the raw framework reply object (FastifyReply / express.Response) |
127
+
128
+ ---
129
+
66
130
  ## API Reference
67
131
 
68
132
  ### `RouterKit`
@@ -137,17 +201,7 @@ class UserController { ... }
137
201
  | `summary` | `string` | Swagger summary |
138
202
  | `description` | `string` | Swagger description |
139
203
  | `status` | `number` | Default response status code |
140
-
141
- ### Parameter Decorators
142
-
143
- | Decorator | Description |
144
- |---|---|
145
- | `@Body(schema?)` | Injects and validates `req.body` with Zod |
146
- | `@Query(schema?)` | Injects and validates `req.query` with Zod |
147
- | `@Param(key)` | Injects a single route parameter |
148
- | `@Req()` | Injects the raw request object |
149
- | `@Cookie()` | Injects a `CookieSetter` instance |
150
- | `@Reply()` | Injects the raw framework reply object (FastifyReply / express.Response) |
204
+ | `params` | `ParamDescriptor[]` | Parameter injection descriptors |
151
205
 
152
206
  ### Method Decorators
153
207
 
@@ -171,7 +225,7 @@ All exceptions extend `BaseException` and auto-send the appropriate HTTP respons
171
225
 
172
226
  ### `CookieSetter`
173
227
 
174
- Injected via `@Cookie()`. Abstracts cookie operations across frameworks.
228
+ Injected via `{ type: "cookie" }` in `params`. Abstracts cookie operations across frameworks.
175
229
 
176
230
  ```typescript
177
231
  cookie.set(key, value, options?) // Set a cookie
@@ -190,13 +244,12 @@ import {
190
244
  RouterKit,
191
245
  ReqController,
192
246
  GetMapping, PostMapping, PutMapping, DeleteMapping,
193
- Body, Query, Param, Req, Cookie,
194
247
  UseMiddleware, HttpStatus,
195
248
  BadRequestException, NotFoundException, ConflictException,
196
249
  CookieSetter,
197
250
  } from "@alis-kit/routers";
198
251
 
199
- // ── Zod Schemas ───────────────────────────────────────────────────
252
+ // Zod Schemas
200
253
 
201
254
  const CreateUserSchema = z.object({
202
255
  firstName: z.string().min(1),
@@ -211,15 +264,18 @@ const UserQuerySchema = z.object({
211
264
  search: z.string().optional(),
212
265
  });
213
266
 
214
- // ── Controllers ───────────────────────────────────────────────────
267
+ // Controllers
215
268
 
216
269
  @ReqController("/auth", { tag: "Authentication", authentication: false })
217
270
  class AuthController {
218
- @PostMapping("/login", { summary: "Login user" })
219
- async login(
220
- @Body(z.object({ email: z.string().email(), password: z.string().min(6) })) body: { email: string; password: string },
221
- @Cookie() cookie: CookieSetter
222
- ) {
271
+ @PostMapping("/login", {
272
+ summary: "Login user",
273
+ params: [
274
+ { type: "body", schema: z.object({ email: z.string().email(), password: z.string().min(6) }) },
275
+ { type: "cookie" },
276
+ ],
277
+ })
278
+ async login(body: { email: string; password: string }, cookie: CookieSetter) {
223
279
  cookie.set("refresh_token", "token-value", { httpOnly: true, secure: true });
224
280
  return { accessToken: "jwt-token" };
225
281
  }
@@ -227,34 +283,53 @@ class AuthController {
227
283
 
228
284
  @ReqController("/users", { authentication: "auth", tag: "User Management" })
229
285
  class UserController {
230
- @GetMapping("/", { summary: "Get all users with pagination" })
231
- async getAll(@Query(UserQuerySchema) query: { page: number; size: number; search?: string }) {
286
+ @GetMapping("/", {
287
+ summary: "Get all users with pagination",
288
+ params: [{ type: "query", schema: UserQuerySchema }],
289
+ })
290
+ async getAll(query: { page: number; size: number; search?: string }) {
232
291
  // return await UserService.findAll(query);
233
292
  }
234
293
 
235
- @GetMapping("/:id", { summary: "Get user by ID" })
236
- async getById(@Param("id") id: string) {
294
+ @GetMapping("/:id", {
295
+ summary: "Get user by ID",
296
+ params: [{ type: "param", key: "id" }],
297
+ })
298
+ async getById(id: string) {
237
299
  // if (!user) throw new NotFoundException("User not found");
238
300
  }
239
301
 
240
- @PostMapping("/", { authentication: false, summary: "Register new user" })
302
+ @PostMapping("/", {
303
+ authentication: false,
304
+ summary: "Register new user",
305
+ params: [{ type: "body", schema: CreateUserSchema }],
306
+ })
241
307
  @HttpStatus(201)
242
- async create(@Body(CreateUserSchema) body: { firstName: string; lastName: string; email: string; age: number }) {
308
+ async create(body: { firstName: string; lastName: string; email: string; age: number }) {
243
309
  // return await UserService.create(body);
244
310
  }
245
311
 
246
- @PutMapping("/:id", { summary: "Update user" })
247
- async update(@Param("id") id: string, @Body(CreateUserSchema.partial()) body: Partial<{ firstName: string; lastName: string; email: string; age: number }>) {
312
+ @PutMapping("/:id", {
313
+ summary: "Update user",
314
+ params: [
315
+ { type: "param", key: "id" },
316
+ { type: "body", schema: CreateUserSchema.partial() },
317
+ ],
318
+ })
319
+ async update(id: string, body: Partial<{ firstName: string; lastName: string; email: string; age: number }>) {
248
320
  // return await UserService.update(id, body);
249
321
  }
250
322
 
251
- @DeleteMapping("/:id", { summary: "Delete user" })
252
- async delete(@Param("id") id: string) {
323
+ @DeleteMapping("/:id", {
324
+ summary: "Delete user",
325
+ params: [{ type: "param", key: "id" }],
326
+ })
327
+ async delete(id: string) {
253
328
  // return await UserService.delete(id);
254
329
  }
255
330
  }
256
331
 
257
- // ── App Setup ─────────────────────────────────────────────────────
332
+ // App Setup
258
333
 
259
334
  const app = express();
260
335
  app.use(express.json());
@@ -4,14 +4,19 @@ import type { BaseAdapter } from "../adapters/BaseAdapter.js";
4
4
  * Helper class for reading, setting, and deleting cookies.
5
5
  *
6
6
  * Mengabstraksi operasi cookie antara Express dan Fastify melalui adapter pattern.
7
- * Di-inject ke controller method via decorator `@Cookie()`.
7
+ * Di-inject ke controller method via `params: [{ type: "cookie" }]` di mapping options.
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
11
  * @ReqController("/auth")
12
12
  * class AuthController {
13
- * @PostMapping("/login")
14
- * async login(@Body(LoginSchema) body: ILogin, @Cookie() cookie: CookieSetter) {
13
+ * @PostMapping("/login", {
14
+ * params: [
15
+ * { type: "body", schema: LoginSchema },
16
+ * { type: "cookie" },
17
+ * ]
18
+ * })
19
+ * async login(body: ILogin, cookie: CookieSetter) {
15
20
  * // Set cookie
16
21
  * cookie.set("refresh_token", "jwt-token", {
17
22
  * httpOnly: true,
@@ -1 +1 @@
1
- {"version":3,"file":"CookieSetter.d.ts","sourceRoot":"","sources":["../../cookie/CookieSetter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO;IAG/B;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAU9D;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKpC;;;;;;;;;OASG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG1B"}
1
+ {"version":3,"file":"CookieSetter.d.ts","sourceRoot":"","sources":["../../cookie/CookieSetter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO;IAG/B;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAU9D;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKpC;;;;;;;;;OASG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAG1B"}
@@ -2,14 +2,19 @@
2
2
  * Helper class for reading, setting, and deleting cookies.
3
3
  *
4
4
  * Mengabstraksi operasi cookie antara Express dan Fastify melalui adapter pattern.
5
- * Di-inject ke controller method via decorator `@Cookie()`.
5
+ * Di-inject ke controller method via `params: [{ type: "cookie" }]` di mapping options.
6
6
  *
7
7
  * @example
8
8
  * ```typescript
9
9
  * @ReqController("/auth")
10
10
  * class AuthController {
11
- * @PostMapping("/login")
12
- * async login(@Body(LoginSchema) body: ILogin, @Cookie() cookie: CookieSetter) {
11
+ * @PostMapping("/login", {
12
+ * params: [
13
+ * { type: "body", schema: LoginSchema },
14
+ * { type: "cookie" },
15
+ * ]
16
+ * })
17
+ * async login(body: ILogin, cookie: CookieSetter) {
13
18
  * // Set cookie
14
19
  * cookie.set("refresh_token", "jwt-token", {
15
20
  * httpOnly: true,
@@ -1 +1 @@
1
- {"version":3,"file":"CookieSetter.js","sourceRoot":"","sources":["../../cookie/CookieSetter.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,YAAY;IAEJ;IACA;IACA;IAHnB,YACmB,OAAoB,EACpB,GAAY,EACZ,GAAY;QAFZ,YAAO,GAAP,OAAO,CAAa;QACpB,QAAG,GAAH,GAAG,CAAS;QACZ,QAAG,GAAH,GAAG,CAAS;IAC5B,CAAC;IAEJ;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,OAAuB;QACrD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;YAC3C,QAAQ,EAAE,OAAO,EAAE,QAAQ,KAAK,KAAK;YACrC,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK;YACjC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,GAAG;YAC1B,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"CookieSetter.js","sourceRoot":"","sources":["../../cookie/CookieSetter.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,YAAY;IAEJ;IACA;IACA;IAHnB,YACmB,OAAoB,EACpB,GAAY,EACZ,GAAY;QAFZ,YAAO,GAAP,OAAO,CAAa;QACpB,QAAG,GAAH,GAAG,CAAS;QACZ,QAAG,GAAH,GAAG,CAAS;IAC5B,CAAC;IAEJ;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,OAAuB;QACrD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;YAC3C,QAAQ,EAAE,OAAO,EAAE,QAAQ,KAAK,KAAK;YACrC,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK;YACjC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,GAAG;YAC1B,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -2,10 +2,10 @@ import type { MiddlewareFn, ResolvedRoute, Class } from "../types/index.js";
2
2
  import type { BaseAdapter } from "../adapters/BaseAdapter.js";
3
3
  /**
4
4
  * Internal engine yang membaca metadata dari TC39 decorators (`Symbol.metadata`)
5
- * dan WeakMap (parameter decorators), lalu mendaftarkan route ke framework adapter.
5
+ * lalu mendaftarkan route ke framework adapter.
6
6
  *
7
- * Semua logic inti ada di sini: parameter injection, Zod validation,
8
- * error handling, response envelope, auth middleware, dan logging.
7
+ * Semua logic inti ada di sini: parameter injection dari MappingOptions.params,
8
+ * Zod validation, error handling, response envelope, auth middleware, dan logging.
9
9
  */
10
10
  export declare class RouteResolver {
11
11
  private readonly adapter;
@@ -29,7 +29,7 @@ export declare class RouteResolver {
29
29
  constructor(adapter: BaseAdapter, loggerConfig?: (boolean | import("../types/index.js").LoggerConfig) | undefined, authMiddleware?: MiddlewareFn | undefined, refreshMiddleware?: MiddlewareFn | undefined, responseEnvelope?: "wrap" | "raw", globalPrefix?: string);
30
30
  /**
31
31
  * Resolves and registers all routes from a controller class.
32
- * Membaca metadata dari `Symbol.metadata` (TC39) dan WeakMap (parameter),
32
+ * Membaca metadata dari `Symbol.metadata` (TC39),
33
33
  * lalu mendaftarkan setiap route ke adapter.
34
34
  *
35
35
  * @param Controller - Controller class yang sudah di-decorate dengan @ReqController
@@ -1,5 +1,5 @@
1
1
  import { ZodError } from "zod";
2
- import { META, getClassMeta, paramMetaStore } from "../types/index.js";
2
+ import { META, getClassMeta, resolveParamDescriptors } from "../types/index.js";
3
3
  import { CookieSetter } from "../cookie/CookieSetter.js";
4
4
  import { BaseException } from "../exceptions/BaseException.js";
5
5
  import { BadRequestException } from "../exceptions/BadRequestException.js";
@@ -7,10 +7,10 @@ import { ServerErrorException } from "../exceptions/ServerErrorException.js";
7
7
  import { Logger } from "./Logger.js";
8
8
  /**
9
9
  * Internal engine yang membaca metadata dari TC39 decorators (`Symbol.metadata`)
10
- * dan WeakMap (parameter decorators), lalu mendaftarkan route ke framework adapter.
10
+ * lalu mendaftarkan route ke framework adapter.
11
11
  *
12
- * Semua logic inti ada di sini: parameter injection, Zod validation,
13
- * error handling, response envelope, auth middleware, dan logging.
12
+ * Semua logic inti ada di sini: parameter injection dari MappingOptions.params,
13
+ * Zod validation, error handling, response envelope, auth middleware, dan logging.
14
14
  */
15
15
  export class RouteResolver {
16
16
  adapter;
@@ -41,7 +41,7 @@ export class RouteResolver {
41
41
  }
42
42
  /**
43
43
  * Resolves and registers all routes from a controller class.
44
- * Membaca metadata dari `Symbol.metadata` (TC39) dan WeakMap (parameter),
44
+ * Membaca metadata dari `Symbol.metadata` (TC39),
45
45
  * lalu mendaftarkan setiap route ke adapter.
46
46
  *
47
47
  * @param Controller - Controller class yang sudah di-decorate dengan @ReqController
@@ -83,7 +83,7 @@ export class RouteResolver {
83
83
  const middlewaresKey = META.MIDDLEWARES_PREFIX + route.propertyKey;
84
84
  const methodMiddlewares = getClassMeta(Controller, middlewaresKey) ?? [];
85
85
  const allMiddlewares = [...authMiddlewares, ...methodMiddlewares];
86
- const params = paramMetaStore.get(Controller)?.get(route.propertyKey) ?? [];
86
+ const params = resolveParamDescriptors(route.options.params ?? []);
87
87
  const httpStatusKey = META.HTTP_STATUS_PREFIX + route.propertyKey;
88
88
  const statusFromDecorator = getClassMeta(Controller, httpStatusKey);
89
89
  const statusCode = route.options.status ?? statusFromDecorator ?? 200;
@@ -1 +1 @@
1
- {"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["../../core/RouteResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["../../core/RouteResolver.ts"],"names":[],"mappings":"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"}
@@ -1,155 +1,33 @@
1
- import type { ZodSchema } from "zod";
1
+ export {};
2
2
  /**
3
- * Injects and optionally validates `req.body` using a Zod schema.
3
+ * Parameter injection sekarang dikonfigurasi via `MappingOptions.params`
4
+ * di mapping decorators (`@GetMapping`, `@PostMapping`, dll).
4
5
  *
5
- * @param schema - Optional Zod schema for validation. Jika diberikan,
6
- * request body akan di-parse dan divalidasi otomatis.
7
- * Throw `BadRequestException` jika validasi gagal.
6
+ * Tidak ada lagi parameter decorators semua menggunakan TC39 native
7
+ * decorator protocol secara konsisten.
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
- * const CreateUserSchema = z.object({
12
- * name: z.string().min(1),
13
- * email: z.string().email(),
14
- * });
15
- *
16
11
  * @ReqController("/users")
17
12
  * class UserController {
18
- * @PostMapping("/")
19
- * async create(@Body(CreateUserSchema) body: { name: string; email: string }) {
20
- * // body sudah tervalidasi dan typed
13
+ * @GetMapping("/", {
14
+ * params: [
15
+ * { type: "query", schema: PaginationSchema }
16
+ * ]
17
+ * })
18
+ * async getAll(query: IPagination) {
19
+ * return { items: [], page: query.page };
21
20
  * }
22
- * }
23
- * ```
24
21
  *
25
- * @example
26
- * ```typescript
27
- * // Tanpa schema body dikirim raw
28
- * @PostMapping("/webhook")
29
- * async handleWebhook(@Body() body: unknown) {
30
- * // validasi manual
31
- * }
32
- * ```
33
- */
34
- export declare function Body(schema?: ZodSchema): (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
35
- /**
36
- * Injects and optionally validates `req.query` using a Zod schema.
37
- *
38
- * Gunakan `z.coerce` untuk type conversion (string → number, dll).
39
- *
40
- * @param schema - Optional Zod schema for validation
41
- *
42
- * @example
43
- * ```typescript
44
- * const PaginationSchema = z.object({
45
- * page: z.coerce.number().default(1),
46
- * size: z.coerce.number().default(10),
47
- * });
48
- *
49
- * @ReqController("/users")
50
- * class UserController {
51
- * @GetMapping("/")
52
- * async getAll(@Query(PaginationSchema) query: { page: number; size: number }) {
53
- * // query.page dan query.size otomatis di-coerce ke number
22
+ * @PostMapping("/", {
23
+ * params: [
24
+ * { type: "body", schema: CreateUserSchema }
25
+ * ]
26
+ * })
27
+ * async create(body: ICreateUser) {
28
+ * return { id: "new-id", ...body };
54
29
  * }
55
30
  * }
56
31
  * ```
57
32
  */
58
- export declare function Query(schema?: ZodSchema): (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
59
- /**
60
- * Injects a single route parameter by key.
61
- *
62
- * @param key - Nama route parameter (contoh: "id" untuk route `/:id`)
63
- *
64
- * @example
65
- * ```typescript
66
- * @ReqController("/users")
67
- * class UserController {
68
- * @GetMapping("/:id")
69
- * async getById(@Param("id") id: string) {
70
- * // id = "123" untuk request GET /users/123
71
- * }
72
- * }
73
- * ```
74
- */
75
- export declare function Param(key: string): (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
76
- /**
77
- * Injects the raw framework request object.
78
- *
79
- * Berguna saat perlu akses ke properti native request
80
- * seperti headers, raw body stream, atau IP address.
81
- *
82
- * @example
83
- * ```typescript
84
- * @ReqController("/auth")
85
- * class AuthController {
86
- * @PostMapping("/refresh")
87
- * async refresh(@Req() req: express.Request) {
88
- * const token = req.headers["authorization"];
89
- * }
90
- * }
91
- * ```
92
- *
93
- * @example
94
- * ```typescript
95
- * // Dengan Fastify
96
- * @PostMapping("/webhook")
97
- * async handle(@Req() req: FastifyRequest) {
98
- * const sourceIp = req.ip;
99
- * }
100
- * ```
101
- */
102
- export declare function Req(): (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
103
- /**
104
- * Injects a CookieSetter instance for reading, setting, and deleting cookies.
105
- *
106
- * CookieSetter adalah helper yang mengabstraksi operasi cookie
107
- * di Express dan Fastify melalui adapter pattern.
108
- *
109
- * @example
110
- * ```typescript
111
- * @ReqController("/auth")
112
- * class AuthController {
113
- * @PostMapping("/login")
114
- * async login(@Body(LoginSchema) body: ILogin, @Cookie() cookie: CookieSetter) {
115
- * cookie.set("refresh_token", token, { httpOnly: true, secure: true });
116
- * const existing = cookie.get("refresh_token");
117
- * cookie.delete("old_token");
118
- * }
119
- * }
120
- * ```
121
- */
122
- export declare function Cookie(): (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
123
- /**
124
- * Injects the raw framework reply object (FastifyReply / express.Response).
125
- *
126
- * Digunakan saat handler perlu kontrol penuh terhadap response:
127
- * - Set content-type selain JSON (HTML, file stream)
128
- * - Set custom headers
129
- * - Return non-JSON response (misal: redirect, HTML page)
130
- *
131
- * @example
132
- * ```typescript
133
- * @ReqController("/oauth")
134
- * class OAuthController {
135
- * @GetMapping("/callback")
136
- * async callback(@Reply() reply: FastifyReply) {
137
- * reply.type("text/html").send("<h1>Login berhasil</h1>");
138
- * return reply; // Wajib return reply agar framework tidak auto-send
139
- * }
140
- * }
141
- * ```
142
- *
143
- * @example
144
- * ```typescript
145
- * // Express Response — set cookie domain
146
- * @Get("/download")
147
- * async download(@Reply() res: express.Response) {
148
- * res.setHeader("Content-Type", "application/octet-stream");
149
- * res.status(200).send(Buffer.from("..."));
150
- * return res;
151
- * }
152
- * ```
153
- */
154
- export declare function Reply(): (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;
155
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../decorators/parameter/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AA2BrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,IACpB,QAAQ,MAAM,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,IAAI,CAG7F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,IACrB,QAAQ,MAAM,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,IAAI,CAG7F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,IACd,QAAQ,MAAM,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,IAAI,CAG7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,GAAG,KACA,QAAQ,MAAM,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,IAAI,CAG7F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,KACH,QAAQ,MAAM,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,IAAI,CAG7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,KAAK,KACF,QAAQ,MAAM,EAAE,aAAa,MAAM,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,IAAI,CAG7F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../decorators/parameter/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG"}
@@ -1,196 +1,33 @@
1
- import { paramMetaStore } from "../../types/index.js";
1
+ export {};
2
2
  /**
3
- * Internal helper for registering parameter metadata on a method.
3
+ * Parameter injection sekarang dikonfigurasi via `MappingOptions.params`
4
+ * di mapping decorators (`@GetMapping`, `@PostMapping`, dll).
4
5
  *
5
- * TC39 decorators tidak mendukung parameter decorators, jadi metadata
6
- * parameter disimpan di WeakMap (`paramMetaStore`) dan dibaca langsung
7
- * oleh RouteResolver tanpa Reflect API.
8
- *
9
- * @internal
10
- */
11
- function addParamMetadata(target, propertyKey, parameterIndex, metadata) {
12
- const methodMap = paramMetaStore.get(target.constructor) ?? new Map();
13
- const key = String(propertyKey);
14
- const existing = methodMap.get(key) ?? [];
15
- existing.push({ ...metadata, index: parameterIndex });
16
- methodMap.set(key, existing);
17
- paramMetaStore.set(target.constructor, methodMap);
18
- }
19
- /**
20
- * Injects and optionally validates `req.body` using a Zod schema.
21
- *
22
- * @param schema - Optional Zod schema for validation. Jika diberikan,
23
- * request body akan di-parse dan divalidasi otomatis.
24
- * Throw `BadRequestException` jika validasi gagal.
6
+ * Tidak ada lagi parameter decorators semua menggunakan TC39 native
7
+ * decorator protocol secara konsisten.
25
8
  *
26
9
  * @example
27
10
  * ```typescript
28
- * const CreateUserSchema = z.object({
29
- * name: z.string().min(1),
30
- * email: z.string().email(),
31
- * });
32
- *
33
11
  * @ReqController("/users")
34
12
  * class UserController {
35
- * @PostMapping("/")
36
- * async create(@Body(CreateUserSchema) body: { name: string; email: string }) {
37
- * // body sudah tervalidasi dan typed
13
+ * @GetMapping("/", {
14
+ * params: [
15
+ * { type: "query", schema: PaginationSchema }
16
+ * ]
17
+ * })
18
+ * async getAll(query: IPagination) {
19
+ * return { items: [], page: query.page };
38
20
  * }
39
- * }
40
- * ```
41
- *
42
- * @example
43
- * ```typescript
44
- * // Tanpa schema — body dikirim raw
45
- * @PostMapping("/webhook")
46
- * async handleWebhook(@Body() body: unknown) {
47
- * // validasi manual
48
- * }
49
- * ```
50
- */
51
- export function Body(schema) {
52
- return function (target, propertyKey, parameterIndex) {
53
- addParamMetadata(target, propertyKey, parameterIndex, { type: "body", schema });
54
- };
55
- }
56
- /**
57
- * Injects and optionally validates `req.query` using a Zod schema.
58
21
  *
59
- * Gunakan `z.coerce` untuk type conversion (string → number, dll).
60
- *
61
- * @param schema - Optional Zod schema for validation
62
- *
63
- * @example
64
- * ```typescript
65
- * const PaginationSchema = z.object({
66
- * page: z.coerce.number().default(1),
67
- * size: z.coerce.number().default(10),
68
- * });
69
- *
70
- * @ReqController("/users")
71
- * class UserController {
72
- * @GetMapping("/")
73
- * async getAll(@Query(PaginationSchema) query: { page: number; size: number }) {
74
- * // query.page dan query.size otomatis di-coerce ke number
22
+ * @PostMapping("/", {
23
+ * params: [
24
+ * { type: "body", schema: CreateUserSchema }
25
+ * ]
26
+ * })
27
+ * async create(body: ICreateUser) {
28
+ * return { id: "new-id", ...body };
75
29
  * }
76
30
  * }
77
31
  * ```
78
32
  */
79
- export function Query(schema) {
80
- return function (target, propertyKey, parameterIndex) {
81
- addParamMetadata(target, propertyKey, parameterIndex, { type: "query", schema });
82
- };
83
- }
84
- /**
85
- * Injects a single route parameter by key.
86
- *
87
- * @param key - Nama route parameter (contoh: "id" untuk route `/:id`)
88
- *
89
- * @example
90
- * ```typescript
91
- * @ReqController("/users")
92
- * class UserController {
93
- * @GetMapping("/:id")
94
- * async getById(@Param("id") id: string) {
95
- * // id = "123" untuk request GET /users/123
96
- * }
97
- * }
98
- * ```
99
- */
100
- export function Param(key) {
101
- return function (target, propertyKey, parameterIndex) {
102
- addParamMetadata(target, propertyKey, parameterIndex, { type: "param", key });
103
- };
104
- }
105
- /**
106
- * Injects the raw framework request object.
107
- *
108
- * Berguna saat perlu akses ke properti native request
109
- * seperti headers, raw body stream, atau IP address.
110
- *
111
- * @example
112
- * ```typescript
113
- * @ReqController("/auth")
114
- * class AuthController {
115
- * @PostMapping("/refresh")
116
- * async refresh(@Req() req: express.Request) {
117
- * const token = req.headers["authorization"];
118
- * }
119
- * }
120
- * ```
121
- *
122
- * @example
123
- * ```typescript
124
- * // Dengan Fastify
125
- * @PostMapping("/webhook")
126
- * async handle(@Req() req: FastifyRequest) {
127
- * const sourceIp = req.ip;
128
- * }
129
- * ```
130
- */
131
- export function Req() {
132
- return function (target, propertyKey, parameterIndex) {
133
- addParamMetadata(target, propertyKey, parameterIndex, { type: "req" });
134
- };
135
- }
136
- /**
137
- * Injects a CookieSetter instance for reading, setting, and deleting cookies.
138
- *
139
- * CookieSetter adalah helper yang mengabstraksi operasi cookie
140
- * di Express dan Fastify melalui adapter pattern.
141
- *
142
- * @example
143
- * ```typescript
144
- * @ReqController("/auth")
145
- * class AuthController {
146
- * @PostMapping("/login")
147
- * async login(@Body(LoginSchema) body: ILogin, @Cookie() cookie: CookieSetter) {
148
- * cookie.set("refresh_token", token, { httpOnly: true, secure: true });
149
- * const existing = cookie.get("refresh_token");
150
- * cookie.delete("old_token");
151
- * }
152
- * }
153
- * ```
154
- */
155
- export function Cookie() {
156
- return function (target, propertyKey, parameterIndex) {
157
- addParamMetadata(target, propertyKey, parameterIndex, { type: "cookie" });
158
- };
159
- }
160
- /**
161
- * Injects the raw framework reply object (FastifyReply / express.Response).
162
- *
163
- * Digunakan saat handler perlu kontrol penuh terhadap response:
164
- * - Set content-type selain JSON (HTML, file stream)
165
- * - Set custom headers
166
- * - Return non-JSON response (misal: redirect, HTML page)
167
- *
168
- * @example
169
- * ```typescript
170
- * @ReqController("/oauth")
171
- * class OAuthController {
172
- * @GetMapping("/callback")
173
- * async callback(@Reply() reply: FastifyReply) {
174
- * reply.type("text/html").send("<h1>Login berhasil</h1>");
175
- * return reply; // Wajib return reply agar framework tidak auto-send
176
- * }
177
- * }
178
- * ```
179
- *
180
- * @example
181
- * ```typescript
182
- * // Express Response — set cookie domain
183
- * @Get("/download")
184
- * async download(@Reply() res: express.Response) {
185
- * res.setHeader("Content-Type", "application/octet-stream");
186
- * res.status(200).send(Buffer.from("..."));
187
- * return res;
188
- * }
189
- * ```
190
- */
191
- export function Reply() {
192
- return function (target, propertyKey, parameterIndex) {
193
- addParamMetadata(target, propertyKey, parameterIndex, { type: "reply" });
194
- };
195
- }
196
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../decorators/parameter/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,MAAc,EACd,WAA4B,EAC5B,cAAsB,EACtB,QAAsC;IAEtC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,EAA2B,CAAC;IAC/F,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACtD,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7B,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,IAAI,CAAC,MAAkB;IACrC,OAAO,UAAU,MAAc,EAAE,WAA4B,EAAE,cAAsB;QACnF,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,KAAK,CAAC,MAAkB;IACtC,OAAO,UAAU,MAAc,EAAE,WAA4B,EAAE,cAAsB;QACnF,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,UAAU,MAAc,EAAE,WAA4B,EAAE,cAAsB;QACnF,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,GAAG;IACjB,OAAO,UAAU,MAAc,EAAE,WAA4B,EAAE,cAAsB;QACnF,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,UAAU,MAAc,EAAE,WAA4B,EAAE,cAAsB;QACnF,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,UAAU,MAAc,EAAE,WAA4B,EAAE,cAAsB;QACnF,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../decorators/parameter/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export { RouterKit } from "./core/RouterKit.js";
2
2
  export { ReqController } from "./decorators/controller/ReqController.js";
3
3
  export { GetMapping, PostMapping, PutMapping, PatchMapping, DeleteMapping, } from "./decorators/mapping/index.js";
4
- export { Body, Query, Param, Req, Cookie, Reply } from "./decorators/parameter/index.js";
5
4
  export { UseMiddleware, HttpStatus } from "./decorators/method/index.js";
6
5
  export { BaseException } from "./exceptions/BaseException.js";
7
6
  export { BadRequestException } from "./exceptions/BadRequestException.js";
@@ -11,5 +10,5 @@ export { NotFoundException } from "./exceptions/NotFoundException.js";
11
10
  export { ConflictException } from "./exceptions/ConflictException.js";
12
11
  export { ServerErrorException } from "./exceptions/ServerErrorException.js";
13
12
  export { CookieSetter } from "./cookie/CookieSetter.js";
14
- export type { Framework, AuthType, HttpMethod, MiddlewareFn, HandlerFn, Class, CookieOptions, SwaggerConfig, LoggerConfig, RouterKitConfig, ControllerOptions, MappingOptions, } from "./types/index.js";
13
+ export type { Framework, AuthType, HttpMethod, MiddlewareFn, HandlerFn, Class, CookieOptions, SwaggerConfig, LoggerConfig, RouterKitConfig, ControllerOptions, MappingOptions, ParamDescriptor, } from "./types/index.js";
15
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAGzE,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAGzF,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,YAAY,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,GACf,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAGzE,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,YAAY,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -4,8 +4,6 @@ export { RouterKit } from "./core/RouterKit.js";
4
4
  export { ReqController } from "./decorators/controller/ReqController.js";
5
5
  // ── Decorators: Mapping ───────────────────────────────────────────
6
6
  export { GetMapping, PostMapping, PutMapping, PatchMapping, DeleteMapping, } from "./decorators/mapping/index.js";
7
- // ── Decorators: Parameter ─────────────────────────────────────────
8
- export { Body, Query, Param, Req, Cookie, Reply } from "./decorators/parameter/index.js";
9
7
  // ── Decorators: Method ────────────────────────────────────────────
10
8
  export { UseMiddleware, HttpStatus } from "./decorators/method/index.js";
11
9
  // ── Exceptions ────────────────────────────────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qEAAqE;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAEzE,qEAAqE;AACrE,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,+BAA+B,CAAC;AAEvC,qEAAqE;AACrE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAEzF,qEAAqE;AACrE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEzE,qEAAqE;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,qEAAqE;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qEAAqE;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAEzE,qEAAqE;AACrE,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,+BAA+B,CAAC;AAEvC,qEAAqE;AACrE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEzE,qEAAqE;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,qEAAqE;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
@@ -110,6 +110,28 @@ export interface ControllerOptions {
110
110
  /** Whether to include in Swagger docs (default: true) */
111
111
  swagger?: boolean;
112
112
  }
113
+ /**
114
+ * Deskripsi satu parameter injection untuk sebuah method.
115
+ *
116
+ * Array index = parameter index di method signature.
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * // Param 0 = body, param 1 = query
121
+ * params: [
122
+ * { type: "body", schema: CreateSchema },
123
+ * { type: "query", schema: PaginationSchema },
124
+ * ]
125
+ * ```
126
+ */
127
+ export interface ParamDescriptor {
128
+ /** Tipe injection: body, query, param (route), req, cookie, reply */
129
+ type: ParamType;
130
+ /** Zod schema untuk validasi (opsional, untuk body dan query) */
131
+ schema?: ZodSchema;
132
+ /** Nama route parameter (wajib jika type = "param", contoh: "id" untuk /:id) */
133
+ key?: string;
134
+ }
113
135
  /** Options untuk mapping decorators (`@GetMapping`, `@PostMapping`, dll) */
114
136
  export interface MappingOptions {
115
137
  /** Override authentication level untuk route ini */
@@ -124,6 +146,12 @@ export interface MappingOptions {
124
146
  description?: string;
125
147
  /** Default HTTP response status code (override @HttpStatus) */
126
148
  status?: number;
149
+ /**
150
+ * Parameter injection descriptors.
151
+ * Array index = parameter index di method signature.
152
+ * RouteResolver akan resolve dan inject sebagai method arguments.
153
+ */
154
+ params?: ParamDescriptor[];
127
155
  }
128
156
  /** Stored metadata untuk controller class — ditulis oleh `@ReqController` */
129
157
  export interface ControllerMetadata {
@@ -141,7 +169,7 @@ export interface RouteMetadata {
141
169
  }
142
170
  /** Tipe parameter injection yang didukung */
143
171
  export type ParamType = "body" | "query" | "param" | "req" | "cookie" | "reply";
144
- /** Stored metadata untuk satu parameter — ditulis oleh `@Body`, `@Query`, dll */
172
+ /** Stored metadata untuk satu parameter — resolved dari ParamDescriptor */
145
173
  export interface ParamMetadata {
146
174
  type: ParamType;
147
175
  index: number;
@@ -151,8 +179,8 @@ export interface ParamMetadata {
151
179
  /**
152
180
  * Metadata keys untuk TC39 native decorators.
153
181
  * Disimpan sebagai Symbol agar tidak konflik dengan metadata lain.
154
- * Parameter decorators tidak support context.metadata (TC39),
155
- * jadi kita simpan parameter metadata di WeakMap terpisah.
182
+ * Parameter injection dikonfigurasi via MappingOptions.params
183
+ * dan di-resolve oleh RouteResolver tidak ada parameter decorator.
156
184
  */
157
185
  export declare const META: {
158
186
  /** Key untuk controller metadata (class-level) */
@@ -164,15 +192,15 @@ export declare const META: {
164
192
  /** Prefix key untuk method-level http status */
165
193
  readonly HTTP_STATUS_PREFIX: "routerkit:httpstatus:";
166
194
  };
195
+ export declare function getClassMeta<T = unknown>(Controller: Class, key: symbol | string): T | undefined;
167
196
  /**
168
- * WeakMap storage untuk parameter decorators metadata.
169
- * TC39 tidak mendukung parameter decorators, jadi kita simpan
170
- * metadata parameter di WeakMap ini.
197
+ * Converts ParamDescriptor array (from MappingOptions) into ParamMetadata array.
198
+ * Array index dari descriptors digunakan sebagai parameter index.
171
199
  *
172
- * Struktur: WeakMap<ControllerClass, Map<methodName, ParamMetadata[]>>
200
+ * @param descriptors - ParamDescriptor[] dari MappingOptions.params
201
+ * @returns ParamMetadata[] siap pakai oleh RouteResolver
173
202
  */
174
- export declare const paramMetaStore: WeakMap<object, Map<string, ParamMetadata[]>>;
175
- export declare function getClassMeta<T = unknown>(Controller: Class, key: symbol | string): T | undefined;
203
+ export declare function resolveParamDescriptors(descriptors: ParamDescriptor[]): ParamMetadata[];
176
204
  /** OpenAPI path item — mapping from path to operations */
177
205
  export interface OpenAPIPathItem {
178
206
  [method: string]: OpenAPIOperation;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAIrC,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,+CAA+C;AAC/C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE3D,yCAAyC;AACzC,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAI/D,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CACtC;AAID,+BAA+B;AAC/B,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,2BAA2B;AAC3B,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAChF;AAED,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,SAAS,EAAE,SAAS,CAAC;IACrB,2EAA2E;IAC3E,GAAG,EAAE,OAAO,CAAC;IACb,8EAA8E;IAC9E,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC,+BAA+B;IAC/B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAChC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,cAAc,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAClC,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,cAAc,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAClC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,QAAQ,GAAG,KAAK,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhF,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID;;;;;GAKG;AACH,eAAO,MAAM,IAAI;IACf,kDAAkD;;IAElD,2CAA2C;;IAE3C,gDAAgD;;IAEhD,gDAAgD;;CAExC,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,+CAAsD,CAAC;AAoBlF,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAIhG;AAID,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACpC;AAED,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC5C;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE;QACP,kBAAkB,EAAE;YAClB,MAAM,EAAE,aAAa,CAAC;SACvB,CAAC;KACH,CAAC;CACH;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,kBAAkB,EAAE;YAClB,MAAM,EAAE,aAAa,CAAC;SACvB,CAAC;KACH,CAAC;CACH;AAED,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvC,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,cAAc,CAAC;CAC9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Metadata keys untuk TC39 native decorators.
4
4
  * Disimpan sebagai Symbol agar tidak konflik dengan metadata lain.
5
- * Parameter decorators tidak support context.metadata (TC39),
6
- * jadi kita simpan parameter metadata di WeakMap terpisah.
5
+ * Parameter injection dikonfigurasi via MappingOptions.params
6
+ * dan di-resolve oleh RouteResolver tidak ada parameter decorator.
7
7
  */
8
8
  export const META = {
9
9
  /** Key untuk controller metadata (class-level) */
@@ -15,17 +15,24 @@ export const META = {
15
15
  /** Prefix key untuk method-level http status */
16
16
  HTTP_STATUS_PREFIX: "routerkit:httpstatus:",
17
17
  };
18
- /**
19
- * WeakMap storage untuk parameter decorators metadata.
20
- * TC39 tidak mendukung parameter decorators, jadi kita simpan
21
- * metadata parameter di WeakMap ini.
22
- *
23
- * Struktur: WeakMap<ControllerClass, Map<methodName, ParamMetadata[]>>
24
- */
25
- export const paramMetaStore = new WeakMap();
26
18
  export function getClassMeta(Controller, key) {
27
19
  const container = Controller;
28
20
  const meta = container[Symbol.metadata];
29
21
  return meta?.[key];
30
22
  }
23
+ /**
24
+ * Converts ParamDescriptor array (from MappingOptions) into ParamMetadata array.
25
+ * Array index dari descriptors digunakan sebagai parameter index.
26
+ *
27
+ * @param descriptors - ParamDescriptor[] dari MappingOptions.params
28
+ * @returns ParamMetadata[] siap pakai oleh RouteResolver
29
+ */
30
+ export function resolveParamDescriptors(descriptors) {
31
+ return descriptors.map((desc, index) => ({
32
+ type: desc.type,
33
+ index,
34
+ schema: desc.schema,
35
+ key: desc.key,
36
+ }));
37
+ }
31
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAkLA,qEAAqE;AAErE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC,sBAAsB,CAAC;IAC1C,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAClC,gDAAgD;IAChD,kBAAkB,EAAE,wBAAwB;IAC5C,gDAAgD;IAChD,kBAAkB,EAAE,uBAAuB;CACnC,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,EAAwC,CAAC;AAoBlF,MAAM,UAAU,YAAY,CAAc,UAAiB,EAAE,GAAoB;IAC/E,MAAM,SAAS,GAAG,UAAsC,CAAC;IACzD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,QAAkB,CAA8B,CAAC;IAC/E,OAAO,IAAI,EAAE,CAAC,GAAG,CAAkB,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AA+MA,qEAAqE;AAErE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC,sBAAsB,CAAC;IAC1C,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAClC,gDAAgD;IAChD,kBAAkB,EAAE,wBAAwB;IAC5C,gDAAgD;IAChD,kBAAkB,EAAE,uBAAuB;CACnC,CAAC;AAoBX,MAAM,UAAU,YAAY,CAAc,UAAiB,EAAE,GAAoB;IAC/E,MAAM,SAAS,GAAG,UAAsC,CAAC;IACzD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,QAAkB,CAA8B,CAAC;IAC/E,OAAO,IAAI,EAAE,CAAC,GAAG,CAAkB,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAA8B;IACpE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC,CAAC,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alis-kit/routers",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "TC39 decorator-based controller library for Node.js APIs. Supports Express and Fastify with Zod validation.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",