@taserjs/router 0.1.3 → 0.1.4
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 +0 -7
- package/dist/cjs/builder/constants.cjs +0 -6
- package/dist/cjs/builder/constants.cjs.map +1 -1
- package/dist/cjs/builder/constants.d.cts +0 -5
- package/dist/cjs/builder/middleware-unit.cjs +55 -0
- package/dist/cjs/builder/middleware-unit.cjs.map +1 -0
- package/dist/cjs/builder/middleware-unit.d.cts +18 -0
- package/dist/cjs/builder/middleware.cjs +2 -1
- package/dist/cjs/builder/middleware.cjs.map +1 -1
- package/dist/cjs/builder/route.cjs +6 -21
- package/dist/cjs/builder/route.cjs.map +1 -1
- package/dist/cjs/builder/router.cjs +0 -4
- package/dist/cjs/builder/router.cjs.map +1 -1
- package/dist/cjs/builder/router.d.cts +1 -11
- package/dist/cjs/define/middleware.cjs +10 -14
- package/dist/cjs/define/middleware.cjs.map +1 -1
- package/dist/cjs/define/middleware.d.cts +42 -31
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/middleware/body-limit.cjs +3 -3
- package/dist/cjs/middleware/body-limit.cjs.map +1 -1
- package/dist/cjs/middleware/body-limit.d.cts +1 -1
- package/dist/cjs/middleware/compress.cjs +3 -3
- package/dist/cjs/middleware/compress.cjs.map +1 -1
- package/dist/cjs/middleware/compress.d.cts +1 -1
- package/dist/cjs/middleware/cors.cjs +3 -3
- package/dist/cjs/middleware/cors.cjs.map +1 -1
- package/dist/cjs/middleware/cors.d.cts +1 -1
- package/dist/cjs/middleware/csrf.cjs +3 -3
- package/dist/cjs/middleware/csrf.cjs.map +1 -1
- package/dist/cjs/middleware/csrf.d.cts +1 -1
- package/dist/cjs/middleware/etag.cjs +3 -3
- package/dist/cjs/middleware/etag.cjs.map +1 -1
- package/dist/cjs/middleware/etag.d.cts +1 -1
- package/dist/cjs/middleware/hono-mw.cjs +23 -0
- package/dist/cjs/middleware/hono-mw.cjs.map +1 -0
- package/dist/cjs/middleware/hono-mw.d.cts +16 -0
- package/dist/cjs/middleware/jwk.cjs +6 -2
- package/dist/cjs/middleware/jwk.cjs.map +1 -1
- package/dist/cjs/middleware/jwt.cjs +6 -2
- package/dist/cjs/middleware/jwt.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.cjs +3 -3
- package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.d.cts +1 -1
- package/dist/cjs/middleware/timing.cjs +3 -3
- package/dist/cjs/middleware/timing.cjs.map +1 -1
- package/dist/cjs/middleware/timing.d.cts +1 -1
- package/dist/cjs/types/index.d.cts +4 -41
- package/dist/cjs/types/units.d.cts +9 -34
- package/dist/esm/builder/constants.d.ts +0 -5
- package/dist/esm/builder/constants.js +1 -6
- package/dist/esm/builder/constants.js.map +1 -1
- package/dist/esm/builder/middleware-unit.d.ts +18 -0
- package/dist/esm/builder/middleware-unit.js +55 -0
- package/dist/esm/builder/middleware-unit.js.map +1 -0
- package/dist/esm/builder/middleware.js +2 -1
- package/dist/esm/builder/middleware.js.map +1 -1
- package/dist/esm/builder/route.js +6 -21
- package/dist/esm/builder/route.js.map +1 -1
- package/dist/esm/builder/router.d.ts +1 -11
- package/dist/esm/builder/router.js +0 -4
- package/dist/esm/builder/router.js.map +1 -1
- package/dist/esm/define/middleware.d.ts +42 -31
- package/dist/esm/define/middleware.js +10 -14
- package/dist/esm/define/middleware.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/middleware/body-limit.d.ts +1 -1
- package/dist/esm/middleware/body-limit.js +3 -3
- package/dist/esm/middleware/body-limit.js.map +1 -1
- package/dist/esm/middleware/compress.d.ts +1 -1
- package/dist/esm/middleware/compress.js +3 -3
- package/dist/esm/middleware/compress.js.map +1 -1
- package/dist/esm/middleware/cors.d.ts +1 -1
- package/dist/esm/middleware/cors.js +3 -3
- package/dist/esm/middleware/cors.js.map +1 -1
- package/dist/esm/middleware/csrf.d.ts +1 -1
- package/dist/esm/middleware/csrf.js +3 -3
- package/dist/esm/middleware/csrf.js.map +1 -1
- package/dist/esm/middleware/etag.d.ts +1 -1
- package/dist/esm/middleware/etag.js +3 -3
- package/dist/esm/middleware/etag.js.map +1 -1
- package/dist/esm/middleware/hono-mw.d.ts +16 -0
- package/dist/esm/middleware/hono-mw.js +23 -0
- package/dist/esm/middleware/hono-mw.js.map +1 -0
- package/dist/esm/middleware/jwk.js +6 -2
- package/dist/esm/middleware/jwk.js.map +1 -1
- package/dist/esm/middleware/jwt.js +6 -2
- package/dist/esm/middleware/jwt.js.map +1 -1
- package/dist/esm/middleware/secure-headers.d.ts +1 -1
- package/dist/esm/middleware/secure-headers.js +3 -3
- package/dist/esm/middleware/secure-headers.js.map +1 -1
- package/dist/esm/middleware/timing.d.ts +1 -1
- package/dist/esm/middleware/timing.js +3 -3
- package/dist/esm/middleware/timing.js.map +1 -1
- package/dist/esm/types/index.d.ts +4 -41
- package/dist/esm/types/units.d.ts +9 -34
- package/package.json +3 -3
- package/src/builder/constants.ts +0 -6
- package/src/builder/middleware-unit.ts +55 -0
- package/src/builder/middleware.ts +6 -2
- package/src/builder/route.ts +8 -34
- package/src/builder/router.ts +1 -18
- package/src/define/middleware.ts +133 -228
- package/src/index.ts +3 -1
- package/src/middleware/body-limit.ts +3 -4
- package/src/middleware/compress.ts +3 -4
- package/src/middleware/cors.ts +3 -4
- package/src/middleware/csrf.ts +3 -4
- package/src/middleware/etag.ts +3 -4
- package/src/middleware/hono-mw.ts +22 -0
- package/src/middleware/jwk.ts +9 -7
- package/src/middleware/jwt.ts +8 -6
- package/src/middleware/secure-headers.ts +3 -4
- package/src/middleware/timing.ts +3 -4
- package/src/types/index.ts +15 -172
- package/src/types/units.ts +119 -77
- package/dist/cjs/define/handler.cjs +0 -38
- package/dist/cjs/define/handler.cjs.map +0 -1
- package/dist/cjs/define/handler.d.cts +0 -13
- package/dist/cjs/middleware/wrap-hono.cjs +0 -19
- package/dist/cjs/middleware/wrap-hono.cjs.map +0 -1
- package/dist/cjs/middleware/wrap-hono.d.cts +0 -7
- package/dist/cjs/types/units.cjs +0 -8
- package/dist/cjs/types/units.cjs.map +0 -1
- package/dist/esm/define/handler.d.ts +0 -13
- package/dist/esm/define/handler.js +0 -38
- package/dist/esm/define/handler.js.map +0 -1
- package/dist/esm/middleware/wrap-hono.d.ts +0 -7
- package/dist/esm/middleware/wrap-hono.js +0 -18
- package/dist/esm/middleware/wrap-hono.js.map +0 -1
- package/dist/esm/types/units.js +0 -8
- package/dist/esm/types/units.js.map +0 -1
- package/src/define/handler.ts +0 -62
- package/src/middleware/wrap-hono.ts +0 -25
package/src/types/index.ts
CHANGED
|
@@ -14,13 +14,11 @@ import type { Schema } from "./schema.js";
|
|
|
14
14
|
import type {
|
|
15
15
|
AppContext,
|
|
16
16
|
ExtractState,
|
|
17
|
-
HandlerContext,
|
|
18
|
-
HandlerUnit,
|
|
19
|
-
InlineMiddlewareOptions,
|
|
20
17
|
Method,
|
|
21
18
|
MiddlewareDefinition,
|
|
22
19
|
MiddlewareReturnFromParts,
|
|
23
20
|
MiddlewareUnit,
|
|
21
|
+
NextFn,
|
|
24
22
|
ValidatorParts,
|
|
25
23
|
} from "./units.js";
|
|
26
24
|
|
|
@@ -56,16 +54,14 @@ export type {
|
|
|
56
54
|
export type {
|
|
57
55
|
AppContext,
|
|
58
56
|
ExtractState,
|
|
59
|
-
HandlerContext,
|
|
60
|
-
HandlerUnit,
|
|
61
57
|
HttpMethod,
|
|
62
|
-
InlineMiddlewareOptions,
|
|
63
58
|
IsUnknown,
|
|
64
59
|
Method,
|
|
65
60
|
MiddlewareDefinition,
|
|
66
61
|
MiddlewareNext,
|
|
67
62
|
MiddlewareReturnFromParts,
|
|
68
63
|
MiddlewareUnit,
|
|
64
|
+
MiddlewareUnitBuilder,
|
|
69
65
|
NextFn,
|
|
70
66
|
NextResult,
|
|
71
67
|
StandaloneMiddlewareContext,
|
|
@@ -482,41 +478,14 @@ export type MiddlewareBuilder<
|
|
|
482
478
|
},
|
|
483
479
|
]
|
|
484
480
|
): MiddlewareBuilder<Layout, readonly [...Acc, TAcc], TAppContext>;
|
|
485
|
-
use<
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
TQueryIn = unknown,
|
|
491
|
-
TParamsIn = unknown,
|
|
492
|
-
TBodyIn = unknown,
|
|
493
|
-
R = unknown,
|
|
494
|
-
>(
|
|
495
|
-
options: InlineMiddlewareOptions<
|
|
496
|
-
MiddlewareChainContext<Layout, Acc, TQuery, TParams, TBody, TAppContext>,
|
|
497
|
-
TQuery,
|
|
498
|
-
TParams,
|
|
499
|
-
TBody,
|
|
500
|
-
TReturns,
|
|
501
|
-
TQueryIn,
|
|
502
|
-
TParamsIn,
|
|
503
|
-
TBodyIn,
|
|
504
|
-
R
|
|
505
|
-
>,
|
|
481
|
+
use<R = unknown>(
|
|
482
|
+
fn: (
|
|
483
|
+
ctx: MiddlewareChainContext<Layout, Acc, unknown, unknown, unknown, TAppContext>,
|
|
484
|
+
next: NextFn,
|
|
485
|
+
) => Awaitable<R>,
|
|
506
486
|
): MiddlewareBuilder<
|
|
507
487
|
Layout,
|
|
508
|
-
readonly [
|
|
509
|
-
...Acc,
|
|
510
|
-
MiddlewareReturnFromParts<
|
|
511
|
-
TQuery,
|
|
512
|
-
TParams,
|
|
513
|
-
TBody,
|
|
514
|
-
ExtractState<R>,
|
|
515
|
-
TQueryIn,
|
|
516
|
-
TParamsIn,
|
|
517
|
-
TBodyIn
|
|
518
|
-
>,
|
|
519
|
-
],
|
|
488
|
+
readonly [...Acc, MiddlewareReturnFromParts<unknown, unknown, unknown, ExtractState<R>>],
|
|
520
489
|
TAppContext
|
|
521
490
|
>;
|
|
522
491
|
};
|
|
@@ -532,7 +501,6 @@ export type RouteExport<
|
|
|
532
501
|
readonly method: TMethod | "ANY" | "ALL";
|
|
533
502
|
readonly methods?: readonly Method[];
|
|
534
503
|
readonly middlewares: readonly MiddlewareDefinition[];
|
|
535
|
-
readonly handlerMiddlewares: readonly MiddlewareDefinition[];
|
|
536
504
|
readonly returns?: TReturns;
|
|
537
505
|
readonly bodyMode?: "json" | "form" | "urlencoded";
|
|
538
506
|
handler: (ctx: unknown) => Awaitable<Response>;
|
|
@@ -548,9 +516,6 @@ export type RouteExport<
|
|
|
548
516
|
query?: Schema<unknown>;
|
|
549
517
|
params?: Schema<unknown>;
|
|
550
518
|
body?: Schema<unknown>;
|
|
551
|
-
handlerQuery?: Schema<unknown>;
|
|
552
|
-
handlerParams?: Schema<unknown>;
|
|
553
|
-
handlerBody?: Schema<unknown>;
|
|
554
519
|
};
|
|
555
520
|
|
|
556
521
|
type RouteHandleResult<
|
|
@@ -639,44 +604,17 @@ export type RouteBuilderBase<
|
|
|
639
604
|
Omit<TReturns, keyof UReturns> & UReturns,
|
|
640
605
|
TAppContext
|
|
641
606
|
>;
|
|
642
|
-
use<
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
TQueryIn = unknown,
|
|
648
|
-
TParamsIn = unknown,
|
|
649
|
-
TBodyIn = unknown,
|
|
650
|
-
R = unknown,
|
|
651
|
-
>(
|
|
652
|
-
options: InlineMiddlewareOptions<
|
|
653
|
-
RouteChainContext<Path, TMethod, Acc, TQuery, TParams, TBody, TAppContext>,
|
|
654
|
-
TQuery,
|
|
655
|
-
TParams,
|
|
656
|
-
TBody,
|
|
657
|
-
UReturns,
|
|
658
|
-
TQueryIn,
|
|
659
|
-
TParamsIn,
|
|
660
|
-
TBodyIn,
|
|
661
|
-
R
|
|
662
|
-
>,
|
|
607
|
+
use<R = unknown>(
|
|
608
|
+
fn: (
|
|
609
|
+
ctx: RouteChainContext<Path, TMethod, Acc, unknown, unknown, unknown, TAppContext>,
|
|
610
|
+
next: NextFn,
|
|
611
|
+
) => Awaitable<R>,
|
|
663
612
|
): RouteBuilder<
|
|
664
613
|
Path,
|
|
665
614
|
TMethod,
|
|
666
|
-
readonly [
|
|
667
|
-
...Acc,
|
|
668
|
-
MiddlewareReturnFromParts<
|
|
669
|
-
TQuery,
|
|
670
|
-
TParams,
|
|
671
|
-
TBody,
|
|
672
|
-
ExtractState<R>,
|
|
673
|
-
TQueryIn,
|
|
674
|
-
TParamsIn,
|
|
675
|
-
TBodyIn
|
|
676
|
-
>,
|
|
677
|
-
],
|
|
615
|
+
readonly [...Acc, MiddlewareReturnFromParts<unknown, unknown, unknown, ExtractState<R>>],
|
|
678
616
|
Validators,
|
|
679
|
-
|
|
617
|
+
TReturns,
|
|
680
618
|
TAppContext
|
|
681
619
|
>;
|
|
682
620
|
handler<R extends Response = Response>(
|
|
@@ -694,22 +632,6 @@ export type RouteBuilderBase<
|
|
|
694
632
|
},
|
|
695
633
|
]
|
|
696
634
|
): RouteHandleResult<Path, TMethod, Acc, Validators, TReturns, R, TAppContext>;
|
|
697
|
-
handler<
|
|
698
|
-
HandlerAcc extends readonly unknown[] = readonly [],
|
|
699
|
-
HandlerValidators extends ValidatorParts = ValidatorParts,
|
|
700
|
-
HReturns extends ReturnsMap = {},
|
|
701
|
-
HOutput = Response,
|
|
702
|
-
>(
|
|
703
|
-
unit: HandlerUnit<HandlerAcc, HandlerValidators, HReturns, HOutput>,
|
|
704
|
-
): RouteHandleResult<
|
|
705
|
-
Path,
|
|
706
|
-
TMethod,
|
|
707
|
-
readonly [...Acc, ...HandlerAcc],
|
|
708
|
-
Validators,
|
|
709
|
-
Omit<TReturns, keyof HReturns> & HReturns,
|
|
710
|
-
HOutput,
|
|
711
|
-
TAppContext
|
|
712
|
-
>;
|
|
713
635
|
};
|
|
714
636
|
|
|
715
637
|
export type RouteBuilder<
|
|
@@ -746,85 +668,6 @@ export type RouteBuilder<
|
|
|
746
668
|
>;
|
|
747
669
|
});
|
|
748
670
|
|
|
749
|
-
export type HandlerBuilder<
|
|
750
|
-
Acc extends readonly unknown[] = readonly [],
|
|
751
|
-
Validators extends ValidatorParts = {},
|
|
752
|
-
TReturns extends ReturnsMap = {},
|
|
753
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
754
|
-
> = {
|
|
755
|
-
returns<const M extends ReturnsMap>(
|
|
756
|
-
map: M,
|
|
757
|
-
): HandlerBuilder<Acc, Validators, Omit<TReturns, keyof M> & M, TAppContext>;
|
|
758
|
-
use<TAcc, UReturns extends ReturnsMap = {}, TRequiredLayouts = unknown, TRequiredState = unknown>(
|
|
759
|
-
unit: MiddlewareUnit<TAcc, UReturns, TRequiredLayouts, TRequiredState>,
|
|
760
|
-
..._assert: [IsStateSatisfied<MergeMiddlewareField<Acc, "state">, TRequiredState>] extends [
|
|
761
|
-
true,
|
|
762
|
-
]
|
|
763
|
-
? []
|
|
764
|
-
: [
|
|
765
|
-
{
|
|
766
|
-
error: "Middleware cannot be attached to this handler";
|
|
767
|
-
requiredState: TRequiredState;
|
|
768
|
-
actualState: MergeMiddlewareField<Acc, "state">;
|
|
769
|
-
},
|
|
770
|
-
]
|
|
771
|
-
): HandlerBuilder<
|
|
772
|
-
readonly [...Acc, TAcc],
|
|
773
|
-
Validators,
|
|
774
|
-
Omit<TReturns, keyof UReturns> & UReturns,
|
|
775
|
-
TAppContext
|
|
776
|
-
>;
|
|
777
|
-
use<
|
|
778
|
-
TQuery = unknown,
|
|
779
|
-
TParams = unknown,
|
|
780
|
-
TBody = unknown,
|
|
781
|
-
UReturns extends ReturnsMap = {},
|
|
782
|
-
TQueryIn = unknown,
|
|
783
|
-
TParamsIn = unknown,
|
|
784
|
-
TBodyIn = unknown,
|
|
785
|
-
R = unknown,
|
|
786
|
-
>(
|
|
787
|
-
options: InlineMiddlewareOptions<
|
|
788
|
-
HandlerContext<Acc, { query: TQuery; params: TParams; body: TBody }, TAppContext>,
|
|
789
|
-
TQuery,
|
|
790
|
-
TParams,
|
|
791
|
-
TBody,
|
|
792
|
-
UReturns,
|
|
793
|
-
TQueryIn,
|
|
794
|
-
TParamsIn,
|
|
795
|
-
TBodyIn,
|
|
796
|
-
R
|
|
797
|
-
>,
|
|
798
|
-
): HandlerBuilder<
|
|
799
|
-
readonly [
|
|
800
|
-
...Acc,
|
|
801
|
-
MiddlewareReturnFromParts<
|
|
802
|
-
TQuery,
|
|
803
|
-
TParams,
|
|
804
|
-
TBody,
|
|
805
|
-
ExtractState<R>,
|
|
806
|
-
TQueryIn,
|
|
807
|
-
TParamsIn,
|
|
808
|
-
TBodyIn
|
|
809
|
-
>,
|
|
810
|
-
],
|
|
811
|
-
Validators,
|
|
812
|
-
Omit<TReturns, keyof UReturns> & UReturns,
|
|
813
|
-
TAppContext
|
|
814
|
-
>;
|
|
815
|
-
handler<R extends Response = Response>(
|
|
816
|
-
fn: (ctx: HandlerContext<Acc, Validators, TAppContext>) => Awaitable<R>,
|
|
817
|
-
..._assert: [R] extends [ValidHandlerReply<R, TReturns>]
|
|
818
|
-
? []
|
|
819
|
-
: [
|
|
820
|
-
{
|
|
821
|
-
expected: ValidHandlerReply<R, TReturns>;
|
|
822
|
-
actual: R;
|
|
823
|
-
},
|
|
824
|
-
]
|
|
825
|
-
): HandlerUnit<Acc, Validators, TReturns, R>;
|
|
826
|
-
};
|
|
827
|
-
|
|
828
671
|
export type RouteDefinition<
|
|
829
672
|
Path extends RoutePath = RoutePath,
|
|
830
673
|
TMethod extends Method = Method,
|
package/src/types/units.ts
CHANGED
|
@@ -5,14 +5,7 @@ import type {
|
|
|
5
5
|
TaserHeaders,
|
|
6
6
|
} from "@taserjs/router-core";
|
|
7
7
|
|
|
8
|
-
import type {
|
|
9
|
-
MergeMiddlewareField,
|
|
10
|
-
MergePart,
|
|
11
|
-
RequestShape,
|
|
12
|
-
Simplify,
|
|
13
|
-
UnitRuntimeContext,
|
|
14
|
-
UnwrapPart,
|
|
15
|
-
} from "./type-utils.js";
|
|
8
|
+
import type { RequestShape, Simplify, UnitRuntimeContext, UnwrapPart } from "./type-utils.js";
|
|
16
9
|
import type { ReturnsMap } from "./returns.js";
|
|
17
10
|
import type { Schema } from "./schema.js";
|
|
18
11
|
|
|
@@ -131,37 +124,6 @@ export type StandaloneMiddlewareContext<
|
|
|
131
124
|
}
|
|
132
125
|
>;
|
|
133
126
|
|
|
134
|
-
export type HandlerContext<
|
|
135
|
-
Acc extends readonly unknown[],
|
|
136
|
-
Validators extends ValidatorParts,
|
|
137
|
-
TAppContext extends Record<string, unknown> = AppContext,
|
|
138
|
-
> = Simplify<
|
|
139
|
-
TAppContext &
|
|
140
|
-
UnitRuntimeContext & {
|
|
141
|
-
query: Simplify<
|
|
142
|
-
MergePart<
|
|
143
|
-
Validators extends { query?: infer Q } ? Q : unknown,
|
|
144
|
-
MergeMiddlewareField<Acc, "query">
|
|
145
|
-
>
|
|
146
|
-
>;
|
|
147
|
-
params: Simplify<
|
|
148
|
-
MergePart<
|
|
149
|
-
Validators extends { params?: infer P } ? P : unknown,
|
|
150
|
-
MergeMiddlewareField<Acc, "params">
|
|
151
|
-
>
|
|
152
|
-
>;
|
|
153
|
-
body: Simplify<
|
|
154
|
-
MergePart<
|
|
155
|
-
Validators extends { body?: infer B } ? B : unknown,
|
|
156
|
-
MergeMiddlewareField<Acc, "body">
|
|
157
|
-
>
|
|
158
|
-
>;
|
|
159
|
-
state: Simplify<MergeMiddlewareField<Acc, "state">>;
|
|
160
|
-
headers: TaserHeaders;
|
|
161
|
-
cookies: TaserCookieJar;
|
|
162
|
-
}
|
|
163
|
-
>;
|
|
164
|
-
|
|
165
127
|
export type MiddlewareUnit<
|
|
166
128
|
TAcc = unknown,
|
|
167
129
|
TReturns extends ReturnsMap = {},
|
|
@@ -174,50 +136,130 @@ export type MiddlewareUnit<
|
|
|
174
136
|
readonly __requiredState?: TRequiredState;
|
|
175
137
|
};
|
|
176
138
|
|
|
177
|
-
export type
|
|
178
|
-
_Acc extends readonly unknown[],
|
|
179
|
-
_Validators extends ValidatorParts,
|
|
180
|
-
TReturns extends ReturnsMap = {},
|
|
181
|
-
TOutput = Response,
|
|
182
|
-
> = {
|
|
183
|
-
readonly __returns?: TReturns;
|
|
184
|
-
readonly $Infer: {
|
|
185
|
-
Output: TOutput;
|
|
186
|
-
};
|
|
187
|
-
middlewares: readonly MiddlewareDefinition[];
|
|
188
|
-
handler: (ctx: unknown) => Awaitable<Response>;
|
|
189
|
-
returns?: ReturnsMap;
|
|
190
|
-
query?: Schema<unknown>;
|
|
191
|
-
params?: Schema<unknown>;
|
|
192
|
-
body?: Schema<unknown>;
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
export type InlineMiddlewareOptions<
|
|
196
|
-
Ctx = unknown,
|
|
139
|
+
export type MiddlewareUnitBuilder<
|
|
197
140
|
TQuery = unknown,
|
|
198
141
|
TParams = unknown,
|
|
199
142
|
TBody = unknown,
|
|
200
143
|
TReturns extends ReturnsMap = {},
|
|
144
|
+
TRequiredLayouts = unknown,
|
|
145
|
+
TRequiredState = {},
|
|
146
|
+
TAppContext extends Record<string, unknown> = AppContext,
|
|
147
|
+
TInheritedState = {},
|
|
201
148
|
TQueryIn = unknown,
|
|
202
149
|
TParamsIn = unknown,
|
|
203
150
|
TBodyIn = unknown,
|
|
204
|
-
R = unknown,
|
|
205
151
|
> = {
|
|
206
|
-
query
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
152
|
+
query<Q, QIn = unknown>(
|
|
153
|
+
schema: Schema<Q, QIn>,
|
|
154
|
+
): MiddlewareUnitBuilder<
|
|
155
|
+
Q,
|
|
156
|
+
TParams,
|
|
157
|
+
TBody,
|
|
158
|
+
TReturns,
|
|
159
|
+
TRequiredLayouts,
|
|
160
|
+
TRequiredState,
|
|
161
|
+
TAppContext,
|
|
162
|
+
TInheritedState,
|
|
163
|
+
QIn,
|
|
164
|
+
TParamsIn,
|
|
165
|
+
TBodyIn
|
|
166
|
+
>;
|
|
167
|
+
params<P, PIn = unknown>(
|
|
168
|
+
schema: Schema<P, PIn>,
|
|
169
|
+
): MiddlewareUnitBuilder<
|
|
170
|
+
TQuery,
|
|
171
|
+
P,
|
|
172
|
+
TBody,
|
|
173
|
+
TReturns,
|
|
174
|
+
TRequiredLayouts,
|
|
175
|
+
TRequiredState,
|
|
176
|
+
TAppContext,
|
|
177
|
+
TInheritedState,
|
|
178
|
+
TQueryIn,
|
|
179
|
+
PIn,
|
|
180
|
+
TBodyIn
|
|
181
|
+
>;
|
|
182
|
+
body<B, BIn = unknown>(
|
|
183
|
+
schema: Schema<B, BIn>,
|
|
184
|
+
): MiddlewareUnitBuilder<
|
|
185
|
+
TQuery,
|
|
186
|
+
TParams,
|
|
187
|
+
B,
|
|
188
|
+
TReturns,
|
|
189
|
+
TRequiredLayouts,
|
|
190
|
+
TRequiredState,
|
|
191
|
+
TAppContext,
|
|
192
|
+
TInheritedState,
|
|
193
|
+
TQueryIn,
|
|
194
|
+
TParamsIn,
|
|
195
|
+
BIn
|
|
196
|
+
>;
|
|
197
|
+
body<Mode extends "json" | "form" | "urlencoded", B, BIn = unknown>(
|
|
198
|
+
mode: Mode,
|
|
199
|
+
schema: Schema<B, BIn>,
|
|
200
|
+
): MiddlewareUnitBuilder<
|
|
201
|
+
TQuery,
|
|
202
|
+
TParams,
|
|
203
|
+
B,
|
|
204
|
+
TReturns,
|
|
205
|
+
TRequiredLayouts,
|
|
206
|
+
TRequiredState,
|
|
207
|
+
TAppContext,
|
|
208
|
+
TInheritedState,
|
|
209
|
+
TQueryIn,
|
|
210
|
+
TParamsIn,
|
|
211
|
+
BIn
|
|
212
|
+
>;
|
|
213
|
+
returns<const M extends ReturnsMap>(
|
|
214
|
+
map: M,
|
|
215
|
+
): MiddlewareUnitBuilder<
|
|
216
|
+
TQuery,
|
|
217
|
+
TParams,
|
|
218
|
+
TBody,
|
|
219
|
+
Omit<TReturns, keyof M> & M,
|
|
220
|
+
TRequiredLayouts,
|
|
221
|
+
TRequiredState,
|
|
222
|
+
TAppContext,
|
|
223
|
+
TInheritedState,
|
|
224
|
+
TQueryIn,
|
|
225
|
+
TParamsIn,
|
|
226
|
+
TBodyIn
|
|
227
|
+
>;
|
|
228
|
+
requires<Requires extends Record<string, unknown>>(): MiddlewareUnitBuilder<
|
|
229
|
+
TQuery,
|
|
230
|
+
TParams,
|
|
231
|
+
TBody,
|
|
232
|
+
TReturns,
|
|
233
|
+
TRequiredLayouts,
|
|
234
|
+
TRequiredState & Requires,
|
|
235
|
+
TAppContext,
|
|
236
|
+
TInheritedState,
|
|
237
|
+
TQueryIn,
|
|
238
|
+
TParamsIn,
|
|
239
|
+
TBodyIn
|
|
240
|
+
>;
|
|
241
|
+
handler<TState = unknown, R = unknown>(
|
|
242
|
+
fn: (
|
|
243
|
+
ctx: StandaloneMiddlewareContext<
|
|
244
|
+
TQuery,
|
|
245
|
+
TParams,
|
|
246
|
+
TBody,
|
|
247
|
+
TAppContext,
|
|
248
|
+
TInheritedState & TRequiredState
|
|
249
|
+
>,
|
|
250
|
+
next: NextFn<NoInfer<TState>>,
|
|
251
|
+
) => Awaitable<R>,
|
|
252
|
+
): DefineMiddlewareResult<
|
|
253
|
+
TQuery,
|
|
254
|
+
TParams,
|
|
255
|
+
TBody,
|
|
256
|
+
TState,
|
|
257
|
+
R,
|
|
258
|
+
TQueryIn,
|
|
259
|
+
TParamsIn,
|
|
260
|
+
TBodyIn,
|
|
261
|
+
TReturns,
|
|
262
|
+
TRequiredLayouts,
|
|
263
|
+
TRequiredState
|
|
264
|
+
>;
|
|
211
265
|
};
|
|
212
|
-
|
|
213
|
-
export function isHandlerUnit(
|
|
214
|
-
value: unknown,
|
|
215
|
-
): value is HandlerUnit<readonly unknown[], ValidatorParts> {
|
|
216
|
-
return (
|
|
217
|
-
typeof value === "object" &&
|
|
218
|
-
value !== null &&
|
|
219
|
-
"handler" in value &&
|
|
220
|
-
"middlewares" in value &&
|
|
221
|
-
Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)
|
|
222
|
-
);
|
|
223
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const require_validators = require("./validators.cjs");
|
|
2
|
-
let _taserjs_router_utils = require("@taserjs/router-utils");
|
|
3
|
-
//#region src/define/handler.ts
|
|
4
|
-
function createHandlerBuilder(validators, middlewares, returnsMap) {
|
|
5
|
-
const builder = {
|
|
6
|
-
returns(map) {
|
|
7
|
-
return createHandlerBuilder(validators, middlewares, {
|
|
8
|
-
...returnsMap,
|
|
9
|
-
...map
|
|
10
|
-
});
|
|
11
|
-
},
|
|
12
|
-
use(unitOrOptions) {
|
|
13
|
-
middlewares.push(unitOrOptions);
|
|
14
|
-
return builder;
|
|
15
|
-
},
|
|
16
|
-
handler(fn) {
|
|
17
|
-
const mergedReturns = {
|
|
18
|
-
...(0, _taserjs_router_utils.collectReturnsFromDefinitions)(middlewares),
|
|
19
|
-
...returnsMap
|
|
20
|
-
};
|
|
21
|
-
return {
|
|
22
|
-
$Infer: { Output: void 0 },
|
|
23
|
-
middlewares: [...middlewares],
|
|
24
|
-
handler: fn,
|
|
25
|
-
...require_validators.pickDefinedSchemas(validators),
|
|
26
|
-
...Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
return builder;
|
|
31
|
-
}
|
|
32
|
-
function defineHandler(options) {
|
|
33
|
-
return createHandlerBuilder(options ?? {}, [], {});
|
|
34
|
-
}
|
|
35
|
-
//#endregion
|
|
36
|
-
exports.defineHandler = defineHandler;
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=handler.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.cjs","names":[],"sources":["../../../src/define/handler.ts"],"sourcesContent":["import type { HandlerBuilder } from \"../types/index.js\";\nimport type {\n AppContext,\n HandlerUnit,\n MiddlewareDefinition,\n ReturnsMap,\n ValidatorParts,\n} from \"../types/units.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"./validators.js\";\nimport { collectReturnsFromDefinitions } from \"@taserjs/router-utils\";\n\nfunction createHandlerBuilder<TAppContext extends Record<string, unknown> = AppContext>(\n validators: SchemaValidators,\n middlewares: MiddlewareDefinition[],\n returnsMap: ReturnsMap,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n const builder = {\n returns(map: ReturnsMap) {\n return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map });\n },\n use(unitOrOptions: MiddlewareDefinition) {\n middlewares.push(unitOrOptions);\n return builder;\n },\n handler(fn: (ctx: unknown) => unknown) {\n const mwReturns = collectReturnsFromDefinitions(middlewares);\n const mergedReturns = { ...mwReturns, ...returnsMap };\n const unit = {\n $Infer: { Output: undefined as unknown as Response },\n middlewares: [...middlewares],\n handler: fn as HandlerUnit<readonly [], ValidatorParts>[\"handler\"],\n ...pickDefinedSchemas(validators),\n ...(Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}),\n } as HandlerUnit<readonly [], ValidatorParts>;\n return unit;\n },\n };\n\n return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>;\n}\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(options: {\n query?: Schema<TQuery>;\n params?: Schema<TParams>;\n body?: Schema<TBody>;\n}): HandlerBuilder<readonly [], { query: TQuery; params: TParams; body: TBody }, {}, TAppContext>;\n\nexport function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(\n options?: SchemaValidators,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n return createHandlerBuilder<TAppContext>(options ?? {}, [], {});\n}\n"],"mappings":";;;AAYA,SAAS,qBACP,YACA,aACA,YAC8D;CAC9D,MAAM,UAAU;EACd,QAAQ,KAAiB;GACvB,OAAO,qBAAkC,YAAY,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI,CAAC;EAC7F;EACA,IAAI,eAAqC;GACvC,YAAY,KAAK,aAAa;GAC9B,OAAO;EACT;EACA,QAAQ,IAA+B;GAErC,MAAM,gBAAgB;IAAE,IAAA,GAAA,sBAAA,8BAAA,CADwB,WACrB;IAAW,GAAG;GAAW;GAQpD,OAAO;IANL,QAAQ,EAAE,QAAQ,KAAA,EAAiC;IACnD,aAAa,CAAC,GAAG,WAAW;IAC5B,SAAS;IACT,GAAG,mBAAA,mBAAmB,UAAU;IAChC,GAAI,OAAO,KAAK,aAAa,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,cAAc,IAAI,CAAC;GAErE;EACT;CACF;CAEA,OAAO;AACT;AAiBA,SAAgB,cACd,SAC8D;CAC9D,OAAO,qBAAkC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { HandlerBuilder } from '../types/index.js';
|
|
2
|
-
import { AppContext } from '../types/units.js';
|
|
3
|
-
import { Schema } from '../types/schema.js';
|
|
4
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;
|
|
5
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
|
|
6
|
-
query?: Schema<TQuery>;
|
|
7
|
-
params?: Schema<TParams>;
|
|
8
|
-
body?: Schema<TBody>;
|
|
9
|
-
}): HandlerBuilder<readonly [], {
|
|
10
|
-
query: TQuery;
|
|
11
|
-
params: TParams;
|
|
12
|
-
body: TBody;
|
|
13
|
-
}, {}, TAppContext>;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
const require_middleware = require("../define/middleware.cjs");
|
|
2
|
-
let _taserjs_router_core = require("@taserjs/router-core");
|
|
3
|
-
//#region src/middleware/wrap-hono.ts
|
|
4
|
-
function wrapHonoMiddleware(honoFactory) {
|
|
5
|
-
return (...args) => require_middleware.defineMiddleware(honoFactory(...args));
|
|
6
|
-
}
|
|
7
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
8
|
-
function extractJwtPayload(honoMw) {
|
|
9
|
-
const taserHandler = (0, _taserjs_router_core.createTaserCompatHandler)(honoMw);
|
|
10
|
-
return (ctx, next) => taserHandler(ctx, async () => {
|
|
11
|
-
const payload = ctx.var.jwtPayload;
|
|
12
|
-
return next({ jwtPayload: payload });
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
exports.extractJwtPayload = extractJwtPayload;
|
|
17
|
-
exports.wrapHonoMiddleware = wrapHonoMiddleware;
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=wrap-hono.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-hono.cjs","names":[],"sources":["../../../src/middleware/wrap-hono.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from \"../types/units.js\";\n\nexport function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(\n honoFactory: F,\n): (\n ...args: Parameters<F>\n) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>> {\n return (...args) => defineMiddleware(honoFactory(...args));\n}\n\n/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */\nexport function extractJwtPayload<TPayload>(\n honoMw: MiddlewareHandler,\n): (ctx: unknown, next: (state: { jwtPayload: TPayload }) => unknown) => unknown {\n const taserHandler = createTaserCompatHandler(honoMw);\n return (ctx, next) =>\n taserHandler(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n });\n}\n"],"mappings":";;;AAMA,SAAgB,mBACd,aAG4E;CAC5E,QAAQ,GAAG,SAAS,mBAAA,iBAAiB,YAAY,GAAG,IAAI,CAAC;AAC3D;;AAGA,SAAgB,kBACd,QAC+E;CAC/E,MAAM,gBAAA,GAAA,qBAAA,yBAAA,CAAwC,MAAM;CACpD,QAAQ,KAAK,SACX,aAAa,KAAK,YAAY;EAC5B,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC;AACL"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MiddlewareHandler } from 'hono';
|
|
2
|
-
import { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js';
|
|
3
|
-
export declare function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(honoFactory: F): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
|
|
4
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
5
|
-
export declare function extractJwtPayload<TPayload>(honoMw: MiddlewareHandler): (ctx: unknown, next: (state: {
|
|
6
|
-
jwtPayload: TPayload;
|
|
7
|
-
}) => unknown) => unknown;
|
package/dist/cjs/types/units.cjs
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
//#region src/types/units.ts
|
|
2
|
-
function isHandlerUnit(value) {
|
|
3
|
-
return typeof value === "object" && value !== null && "handler" in value && "middlewares" in value && Array.isArray(value.middlewares);
|
|
4
|
-
}
|
|
5
|
-
//#endregion
|
|
6
|
-
exports.isHandlerUnit = isHandlerUnit;
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=units.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"units.cjs","names":[],"sources":["../../../src/types/units.ts"],"sourcesContent":["import type {\n Awaitable,\n MiddlewareDefinition as CoreMiddlewareDefinition,\n TaserCookieJar,\n TaserHeaders,\n} from \"@taserjs/router-core\";\n\nimport type {\n MergeMiddlewareField,\n MergePart,\n RequestShape,\n Simplify,\n UnitRuntimeContext,\n UnwrapPart,\n} from \"./type-utils.js\";\nimport type { ReturnsMap } from \"./returns.js\";\nimport type { Schema } from \"./schema.js\";\n\nexport type { HttpMethod, Method } from \"./type-utils.js\";\nexport type {\n EmptyReturns,\n MergeReturns,\n ReturnsMap,\n HandlerReply,\n HasReturns,\n StatusCode,\n ValidHandlerReply,\n EnforceHandlerReply,\n} from \"./returns.js\";\n\n/** Default empty app context for standalone units without a bound router instance. */\nexport type AppContext = Record<never, never>;\n\nexport type ValidatorParts = {\n query?: unknown;\n params?: unknown;\n body?: unknown;\n queryIn?: unknown;\n paramsIn?: unknown;\n bodyIn?: unknown;\n};\n\nexport declare const StateBrand: unique symbol;\n\nexport type NextResult<TState = unknown> = Response & {\n readonly [StateBrand]?: TState;\n};\n\nexport type ExtractState<T> = [Extract<Awaited<T>, { [StateBrand]?: unknown }>] extends [never]\n ? {}\n : Extract<Awaited<T>, { [StateBrand]?: unknown }> extends { [StateBrand]?: infer S }\n ? [S] extends [never]\n ? {}\n : S\n : {};\n\nexport type IsUnknown<T> = [unknown] extends [T] ? true : false;\n\nexport type NextFn<TExpectedState = unknown> =\n IsUnknown<TExpectedState> extends true\n ? <S extends Record<string, unknown> = {}>(state?: S) => Promise<NextResult<S>>\n : (state: TExpectedState) => Promise<NextResult<TExpectedState>>;\n\nexport type MiddlewareNext = NextFn;\n\nexport type MiddlewareDefinition = CoreMiddlewareDefinition<ReturnsMap>;\n\nexport type MiddlewareReturnFromParts<\n TQuery,\n TParams,\n TBody,\n TState,\n TQueryIn = TQuery,\n TParamsIn = TParams,\n TBodyIn = TBody,\n> = {\n query: Simplify<UnwrapPart<TQuery>>;\n params: Simplify<UnwrapPart<TParams>>;\n body: Simplify<UnwrapPart<TBody>>;\n state: Simplify<UnwrapPart<TState>>;\n /** Pre-parse shapes merged into route `$Infer.Input`. */\n input: {\n query: RequestShape<TQueryIn, TQuery>;\n params: RequestShape<TParamsIn, TParams>;\n body: RequestShape<TBodyIn, TBody>;\n };\n};\n\nexport type DefineMiddlewareResult<\n TQuery,\n TParams,\n TBody,\n TState,\n R,\n TQueryIn = TQuery,\n TParamsIn = TParams,\n TBodyIn = TBody,\n TReturns extends ReturnsMap = {},\n TLayout = null,\n TRequires = {},\n> = MiddlewareUnit<\n MiddlewareReturnFromParts<\n TQuery,\n TParams,\n TBody,\n IsUnknown<TState> extends true ? ExtractState<R> : TState,\n TQueryIn,\n TParamsIn,\n TBodyIn\n >,\n TReturns,\n TLayout,\n TRequires\n>;\n\nexport type StandaloneMiddlewareContext<\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n TState = {},\n> = Simplify<\n TAppContext &\n UnitRuntimeContext & {\n query: Simplify<UnwrapPart<TQuery>>;\n params: Simplify<UnwrapPart<TParams>>;\n body: Simplify<UnwrapPart<TBody>>;\n state: Simplify<UnwrapPart<TState>>;\n headers: TaserHeaders;\n cookies: TaserCookieJar;\n }\n>;\n\nexport type HandlerContext<\n Acc extends readonly unknown[],\n Validators extends ValidatorParts,\n TAppContext extends Record<string, unknown> = AppContext,\n> = Simplify<\n TAppContext &\n UnitRuntimeContext & {\n query: Simplify<\n MergePart<\n Validators extends { query?: infer Q } ? Q : unknown,\n MergeMiddlewareField<Acc, \"query\">\n >\n >;\n params: Simplify<\n MergePart<\n Validators extends { params?: infer P } ? P : unknown,\n MergeMiddlewareField<Acc, \"params\">\n >\n >;\n body: Simplify<\n MergePart<\n Validators extends { body?: infer B } ? B : unknown,\n MergeMiddlewareField<Acc, \"body\">\n >\n >;\n state: Simplify<MergeMiddlewareField<Acc, \"state\">>;\n headers: TaserHeaders;\n cookies: TaserCookieJar;\n }\n>;\n\nexport type MiddlewareUnit<\n TAcc = unknown,\n TReturns extends ReturnsMap = {},\n TRequiredLayouts = unknown,\n TRequiredState = unknown,\n> = MiddlewareDefinition & {\n readonly __middlewareAcc: TAcc;\n readonly __returns?: TReturns;\n readonly __requiredLayouts?: TRequiredLayouts;\n readonly __requiredState?: TRequiredState;\n};\n\nexport type HandlerUnit<\n _Acc extends readonly unknown[],\n _Validators extends ValidatorParts,\n TReturns extends ReturnsMap = {},\n TOutput = Response,\n> = {\n readonly __returns?: TReturns;\n readonly $Infer: {\n Output: TOutput;\n };\n middlewares: readonly MiddlewareDefinition[];\n handler: (ctx: unknown) => Awaitable<Response>;\n returns?: ReturnsMap;\n query?: Schema<unknown>;\n params?: Schema<unknown>;\n body?: Schema<unknown>;\n};\n\nexport type InlineMiddlewareOptions<\n Ctx = unknown,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (ctx: Ctx, next: NextFn) => Awaitable<R>;\n};\n\nexport function isHandlerUnit(\n value: unknown,\n): value is HandlerUnit<readonly unknown[], ValidatorParts> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"handler\" in value &&\n \"middlewares\" in value &&\n Array.isArray((value as HandlerUnit<readonly unknown[], ValidatorParts>).middlewares)\n );\n}\n"],"mappings":";AAoNA,SAAgB,cACd,OAC0D;CAC1D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,iBAAiB,SACjB,MAAM,QAAS,MAA0D,WAAW;AAExF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { HandlerBuilder } from '../types/index.js';
|
|
2
|
-
import { AppContext } from '../types/units.js';
|
|
3
|
-
import { Schema } from '../types/schema.js';
|
|
4
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;
|
|
5
|
-
export declare function defineHandler<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
|
|
6
|
-
query?: Schema<TQuery>;
|
|
7
|
-
params?: Schema<TParams>;
|
|
8
|
-
body?: Schema<TBody>;
|
|
9
|
-
}): HandlerBuilder<readonly [], {
|
|
10
|
-
query: TQuery;
|
|
11
|
-
params: TParams;
|
|
12
|
-
body: TBody;
|
|
13
|
-
}, {}, TAppContext>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { pickDefinedSchemas } from "./validators.js";
|
|
2
|
-
import { collectReturnsFromDefinitions } from "@taserjs/router-utils";
|
|
3
|
-
//#region src/define/handler.ts
|
|
4
|
-
function createHandlerBuilder(validators, middlewares, returnsMap) {
|
|
5
|
-
const builder = {
|
|
6
|
-
returns(map) {
|
|
7
|
-
return createHandlerBuilder(validators, middlewares, {
|
|
8
|
-
...returnsMap,
|
|
9
|
-
...map
|
|
10
|
-
});
|
|
11
|
-
},
|
|
12
|
-
use(unitOrOptions) {
|
|
13
|
-
middlewares.push(unitOrOptions);
|
|
14
|
-
return builder;
|
|
15
|
-
},
|
|
16
|
-
handler(fn) {
|
|
17
|
-
const mergedReturns = {
|
|
18
|
-
...collectReturnsFromDefinitions(middlewares),
|
|
19
|
-
...returnsMap
|
|
20
|
-
};
|
|
21
|
-
return {
|
|
22
|
-
$Infer: { Output: void 0 },
|
|
23
|
-
middlewares: [...middlewares],
|
|
24
|
-
handler: fn,
|
|
25
|
-
...pickDefinedSchemas(validators),
|
|
26
|
-
...Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
return builder;
|
|
31
|
-
}
|
|
32
|
-
function defineHandler(options) {
|
|
33
|
-
return createHandlerBuilder(options ?? {}, [], {});
|
|
34
|
-
}
|
|
35
|
-
//#endregion
|
|
36
|
-
export { defineHandler };
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","names":[],"sources":["../../../src/define/handler.ts"],"sourcesContent":["import type { HandlerBuilder } from \"../types/index.js\";\nimport type {\n AppContext,\n HandlerUnit,\n MiddlewareDefinition,\n ReturnsMap,\n ValidatorParts,\n} from \"../types/units.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"./validators.js\";\nimport { collectReturnsFromDefinitions } from \"@taserjs/router-utils\";\n\nfunction createHandlerBuilder<TAppContext extends Record<string, unknown> = AppContext>(\n validators: SchemaValidators,\n middlewares: MiddlewareDefinition[],\n returnsMap: ReturnsMap,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n const builder = {\n returns(map: ReturnsMap) {\n return createHandlerBuilder<TAppContext>(validators, middlewares, { ...returnsMap, ...map });\n },\n use(unitOrOptions: MiddlewareDefinition) {\n middlewares.push(unitOrOptions);\n return builder;\n },\n handler(fn: (ctx: unknown) => unknown) {\n const mwReturns = collectReturnsFromDefinitions(middlewares);\n const mergedReturns = { ...mwReturns, ...returnsMap };\n const unit = {\n $Infer: { Output: undefined as unknown as Response },\n middlewares: [...middlewares],\n handler: fn as HandlerUnit<readonly [], ValidatorParts>[\"handler\"],\n ...pickDefinedSchemas(validators),\n ...(Object.keys(mergedReturns).length > 0 ? { returns: mergedReturns } : {}),\n } as HandlerUnit<readonly [], ValidatorParts>;\n return unit;\n },\n };\n\n return builder as unknown as HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext>;\n}\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n>(): HandlerBuilder<readonly [], {}, {}, TAppContext>;\n\nexport function defineHandler<\n TAppContext extends Record<string, unknown> = AppContext,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n>(options: {\n query?: Schema<TQuery>;\n params?: Schema<TParams>;\n body?: Schema<TBody>;\n}): HandlerBuilder<readonly [], { query: TQuery; params: TParams; body: TBody }, {}, TAppContext>;\n\nexport function defineHandler<TAppContext extends Record<string, unknown> = AppContext>(\n options?: SchemaValidators,\n): HandlerBuilder<readonly [], ValidatorParts, {}, TAppContext> {\n return createHandlerBuilder<TAppContext>(options ?? {}, [], {});\n}\n"],"mappings":";;;AAYA,SAAS,qBACP,YACA,aACA,YAC8D;CAC9D,MAAM,UAAU;EACd,QAAQ,KAAiB;GACvB,OAAO,qBAAkC,YAAY,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI,CAAC;EAC7F;EACA,IAAI,eAAqC;GACvC,YAAY,KAAK,aAAa;GAC9B,OAAO;EACT;EACA,QAAQ,IAA+B;GAErC,MAAM,gBAAgB;IAAE,GADN,8BAA8B,WACrB;IAAW,GAAG;GAAW;GAQpD,OAAO;IANL,QAAQ,EAAE,QAAQ,KAAA,EAAiC;IACnD,aAAa,CAAC,GAAG,WAAW;IAC5B,SAAS;IACT,GAAG,mBAAmB,UAAU;IAChC,GAAI,OAAO,KAAK,aAAa,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,cAAc,IAAI,CAAC;GAErE;EACT;CACF;CAEA,OAAO;AACT;AAiBA,SAAgB,cACd,SAC8D;CAC9D,OAAO,qBAAkC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MiddlewareHandler } from 'hono';
|
|
2
|
-
import { MiddlewareReturnFromParts, MiddlewareUnit } from '../types/units.js';
|
|
3
|
-
export declare function wrapHonoMiddleware<F extends (...args: never[]) => MiddlewareHandler>(honoFactory: F): (...args: Parameters<F>) => MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>>;
|
|
4
|
-
/** Extracts the jwtPayload from Hono's variable bag and forwards it into Taser's state via next(). */
|
|
5
|
-
export declare function extractJwtPayload<TPayload>(honoMw: MiddlewareHandler): (ctx: unknown, next: (state: {
|
|
6
|
-
jwtPayload: TPayload;
|
|
7
|
-
}) => unknown) => unknown;
|