@taserjs/router 0.0.2 → 0.0.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 +2 -0
- package/dist/cjs/constants.cjs.map +1 -1
- package/dist/cjs/create-context.cjs.map +1 -1
- package/dist/cjs/define/handler.cjs.map +1 -1
- package/dist/cjs/define/middleware.cjs +18 -27
- package/dist/cjs/define/middleware.cjs.map +1 -1
- package/dist/cjs/define/middleware.d.cts +27 -79
- package/dist/cjs/define/validators.cjs.map +1 -1
- package/dist/cjs/factories.cjs.map +1 -1
- package/dist/cjs/factories.d.cts +2 -2
- package/dist/cjs/index.cjs +1 -2
- package/dist/cjs/index.d.cts +1 -1
- package/dist/cjs/middleware/body-limit.cjs +2 -2
- package/dist/cjs/middleware/body-limit.cjs.map +1 -1
- package/dist/cjs/middleware/compress.cjs +2 -2
- package/dist/cjs/middleware/compress.cjs.map +1 -1
- package/dist/cjs/middleware/cors.cjs +2 -2
- package/dist/cjs/middleware/cors.cjs.map +1 -1
- package/dist/cjs/middleware/csrf.cjs +2 -2
- package/dist/cjs/middleware/csrf.cjs.map +1 -1
- package/dist/cjs/middleware/etag.cjs +2 -2
- package/dist/cjs/middleware/etag.cjs.map +1 -1
- package/dist/cjs/middleware/jwk.cjs +11 -4
- package/dist/cjs/middleware/jwk.cjs.map +1 -1
- package/dist/cjs/middleware/jwk.d.cts +4 -5
- package/dist/cjs/middleware/jwt.cjs +11 -5
- package/dist/cjs/middleware/jwt.cjs.map +1 -1
- package/dist/cjs/middleware/jwt.d.cts +7 -5
- package/dist/cjs/middleware/secure-headers.cjs +2 -2
- package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
- package/dist/cjs/middleware/timing.cjs +2 -2
- package/dist/cjs/middleware/timing.cjs.map +1 -1
- package/dist/cjs/middleware/wrap-hono.cjs +9 -0
- package/dist/cjs/middleware/wrap-hono.cjs.map +1 -0
- package/dist/cjs/middleware/wrap-hono.d.cts +3 -0
- package/dist/cjs/middleware.cjs.map +1 -1
- package/dist/cjs/reply.d.cts +1 -1
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +1 -1
- package/dist/cjs/stream.d.cts +1 -1
- package/dist/cjs/taser-app.cjs +0 -6
- package/dist/cjs/taser-app.cjs.map +1 -1
- package/dist/cjs/taser-app.d.cts +0 -3
- package/dist/cjs/taser-router.cjs +9 -10
- package/dist/cjs/taser-router.cjs.map +1 -1
- package/dist/cjs/taser-router.d.cts +9 -11
- package/dist/cjs/types/app.d.cts +3 -2
- package/dist/cjs/types/index.d.cts +94 -143
- package/dist/cjs/types/type-utils.d.cts +8 -10
- package/dist/cjs/types/units.cjs.map +1 -1
- package/dist/cjs/types/units.d.cts +32 -27
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/create-context.js.map +1 -1
- package/dist/esm/define/handler.js.map +1 -1
- package/dist/esm/define/middleware.d.ts +27 -79
- package/dist/esm/define/middleware.js +18 -27
- package/dist/esm/define/middleware.js.map +1 -1
- package/dist/esm/define/validators.js.map +1 -1
- package/dist/esm/factories.d.ts +2 -2
- package/dist/esm/factories.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/middleware/body-limit.js +1 -1
- package/dist/esm/middleware/body-limit.js.map +1 -1
- package/dist/esm/middleware/compress.js +1 -1
- package/dist/esm/middleware/compress.js.map +1 -1
- package/dist/esm/middleware/cors.js +1 -1
- package/dist/esm/middleware/cors.js.map +1 -1
- package/dist/esm/middleware/csrf.js +1 -1
- package/dist/esm/middleware/csrf.js.map +1 -1
- package/dist/esm/middleware/etag.js +1 -1
- package/dist/esm/middleware/etag.js.map +1 -1
- package/dist/esm/middleware/jwk.d.ts +4 -5
- package/dist/esm/middleware/jwk.js +11 -4
- package/dist/esm/middleware/jwk.js.map +1 -1
- package/dist/esm/middleware/jwt.d.ts +7 -5
- package/dist/esm/middleware/jwt.js +11 -5
- package/dist/esm/middleware/jwt.js.map +1 -1
- package/dist/esm/middleware/secure-headers.js +1 -1
- package/dist/esm/middleware/secure-headers.js.map +1 -1
- package/dist/esm/middleware/timing.js +1 -1
- package/dist/esm/middleware/timing.js.map +1 -1
- package/dist/esm/middleware/wrap-hono.d.ts +3 -0
- package/dist/esm/middleware/wrap-hono.js +9 -0
- package/dist/esm/middleware/wrap-hono.js.map +1 -0
- package/dist/esm/middleware.js.map +1 -1
- package/dist/esm/reply.d.ts +1 -1
- package/dist/esm/route.d.ts +1 -1
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/stream.d.ts +1 -1
- package/dist/esm/taser-app.d.ts +0 -3
- package/dist/esm/taser-app.js +1 -6
- package/dist/esm/taser-app.js.map +1 -1
- package/dist/esm/taser-router.d.ts +9 -11
- package/dist/esm/taser-router.js +7 -8
- package/dist/esm/taser-router.js.map +1 -1
- package/dist/esm/types/app.d.ts +3 -2
- package/dist/esm/types/index.d.ts +94 -143
- package/dist/esm/types/type-utils.d.ts +8 -10
- package/dist/esm/types/units.d.ts +32 -27
- package/dist/esm/types/units.js.map +1 -1
- package/package.json +17 -17
- package/src/constants.ts +6 -6
- package/src/create-context.ts +8 -8
- package/src/define/handler.ts +24 -34
- package/src/define/middleware.ts +222 -222
- package/src/define/validators.ts +10 -10
- package/src/factories.ts +63 -61
- package/src/index.ts +12 -12
- package/src/middleware/body-limit.ts +5 -5
- package/src/middleware/compress.ts +5 -5
- package/src/middleware/cors.ts +5 -5
- package/src/middleware/csrf.ts +5 -5
- package/src/middleware/etag.ts +5 -5
- package/src/middleware/jwk.ts +33 -26
- package/src/middleware/jwt.ts +26 -10
- package/src/middleware/secure-headers.ts +5 -5
- package/src/middleware/timing.ts +5 -5
- package/src/middleware/wrap-hono.ts +12 -0
- package/src/middleware.ts +7 -7
- package/src/reply.ts +2 -6
- package/src/route.ts +45 -48
- package/src/stream.ts +1 -7
- package/src/taser-app.ts +13 -18
- package/src/taser-router.ts +103 -98
- package/src/types/app.ts +33 -35
- package/src/types/index.ts +403 -731
- package/src/types/returns.ts +92 -97
- package/src/types/schema.ts +8 -9
- package/src/types/type-utils.ts +42 -45
- package/src/types/units.ts +140 -104
- package/dist/cjs/middleware/auth.cjs +0 -34
- package/dist/cjs/middleware/auth.cjs.map +0 -1
- package/dist/cjs/middleware/auth.d.cts +0 -9
- package/dist/esm/middleware/auth.d.ts +0 -9
- package/dist/esm/middleware/auth.js +0 -33
- package/dist/esm/middleware/auth.js.map +0 -1
- package/src/middleware/auth.ts +0 -51
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","names":[],"sources":["../../src/constants.ts"],"sourcesContent":["/** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */\nexport const SCHEMA_KEYS = [
|
|
1
|
+
{"version":3,"file":"constants.cjs","names":[],"sources":["../../src/constants.ts"],"sourcesContent":["/** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */\nexport const SCHEMA_KEYS = [\"query\", \"params\", \"body\"] as const;\n\nexport type SchemaKey = (typeof SCHEMA_KEYS)[number];\n\nexport const HANDLER_SCHEMA_KEY_MAP = {\n query: \"handlerQuery\",\n params: \"handlerParams\",\n body: \"handlerBody\",\n} as const satisfies Record<SchemaKey, string>;\n"],"mappings":";;AACA,IAAa,cAAc;CAAC;CAAS;CAAU;AAAM;AAIrD,IAAa,yBAAyB;CACpC,OAAO;CACP,QAAQ;CACR,MAAM;AACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-context.cjs","names":[],"sources":["../../src/create-context.ts"],"sourcesContent":["import type { ReservedContextKey } from
|
|
1
|
+
{"version":3,"file":"create-context.cjs","names":[],"sources":["../../src/create-context.ts"],"sourcesContent":["import type { ReservedContextKey } from \"@taserjs/router-core\";\n\nimport type { ContextDefinition } from \"./types/app.js\";\n\ntype NoReservedKeysConstraint<\n TBoot extends Record<string, unknown>,\n TReq extends Record<string, unknown>,\n> = Extract<keyof TBoot | keyof TReq, ReservedContextKey> extends never ? unknown : never;\n\nexport function createContext<\n TBoot extends Record<string, unknown> = Record<string, never>,\n TReq extends Record<string, unknown> = Record<string, never>,\n>(\n definition: ContextDefinition<TBoot, TReq> & NoReservedKeysConstraint<TBoot, TReq>,\n): ContextDefinition<TBoot, TReq> {\n return definition;\n}\n\nexport type { ContextDefinition, InferAppContext } from \"./types/app.js\";\n"],"mappings":";AASA,SAAgB,cAId,YACgC;CAChC,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.cjs","names":[],"sources":["../../../src/define/handler.ts"],"sourcesContent":["import type { HandlerBuilder } from
|
|
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,34 +1,25 @@
|
|
|
1
1
|
let _taserjs_router_core = require("@taserjs/router-core");
|
|
2
2
|
//#region src/define/middleware.ts
|
|
3
|
-
function
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
...state,
|
|
17
|
-
handler: fn,
|
|
18
|
-
__middlewareAcc: void 0,
|
|
19
|
-
...state.returns ? { __returns: state.returns } : {}
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
function defineMiddleware(options) {
|
|
25
|
-
if (typeof options === "function") {
|
|
26
|
-
const honoMiddleware = options;
|
|
3
|
+
function defineMiddleware(first, second) {
|
|
4
|
+
if (typeof first === "string" || Array.isArray(first)) {
|
|
5
|
+
const options = second;
|
|
6
|
+
return {
|
|
7
|
+
...options,
|
|
8
|
+
__middlewareAcc: void 0,
|
|
9
|
+
...options?.returns ? { __returns: options.returns } : {},
|
|
10
|
+
__requiredLayouts: first
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
if (typeof first === "function") {
|
|
14
|
+
const honoMiddleware = first;
|
|
27
15
|
return defineMiddleware({ handler: (ctx, next) => (0, _taserjs_router_core.createTaserCompatHandler)(honoMiddleware)(ctx, next) });
|
|
28
16
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
17
|
+
const options = first;
|
|
18
|
+
return {
|
|
19
|
+
...options,
|
|
20
|
+
__middlewareAcc: void 0,
|
|
21
|
+
...options.returns ? { __returns: options.returns } : {}
|
|
22
|
+
};
|
|
32
23
|
}
|
|
33
24
|
//#endregion
|
|
34
25
|
exports.defineMiddleware = defineMiddleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"middleware.cjs","names":[],"sources":["../../../src/define/middleware.ts"],"sourcesContent":["import { createTaserCompatHandler, type Awaitable } from \"@taserjs/router-core\";\n\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type {\n AppContext,\n ExtractState,\n IsUnknown,\n MiddlewareReturnFromParts,\n MiddlewareUnit,\n NextFn,\n StandaloneMiddlewareContext,\n} from \"../types/units.js\";\nimport type {\n LayoutId,\n ResolveLayoutMiddlewaresState,\n ResolveLayoutsState,\n} from \"../types/index.js\";\nimport type { Schema } from \"../types/schema.js\";\n\ntype HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0];\n\ntype HonoMiddlewareUnit = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, {}>,\n {},\n null,\n {}\n>;\n\nexport type DefineMiddlewareOptions<\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (\n ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, TRequires>,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>;\n};\n\nexport type ScopedMiddlewareOptions<\n Layout extends LayoutId,\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (\n ctx: StandaloneMiddlewareContext<\n TQuery,\n TParams,\n TBody,\n TAppContext,\n ResolveLayoutMiddlewaresState<Layout> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>;\n};\n\nexport type MultiScopedMiddlewareOptions<\n Layouts extends readonly LayoutId[],\n TState = unknown,\n TRequires = {},\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TReturns extends ReturnsMap = {},\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n TAppContext extends Record<string, unknown> = AppContext,\n R = unknown,\n> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n body?: Schema<TBody, TBodyIn>;\n returns?: TReturns;\n handler: (\n ctx: StandaloneMiddlewareContext<\n TQuery,\n TParams,\n TBody,\n TAppContext,\n ResolveLayoutsState<Layouts> & TRequires\n >,\n next: NextFn<NoInfer<TState>>,\n ) => Awaitable<R>;\n};\n\nexport function defineMiddleware(middleware: HonoMiddlewareHandler): HonoMiddlewareUnit;\n\nexport function defineMiddleware<\n const Layout extends LayoutId,\n TState = unknown,\n TRequires = {},\n TAppContext extends Record<string, unknown> = AppContext,\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 layout: Layout,\n options: ScopedMiddlewareOptions<\n Layout,\n TState,\n TRequires,\n TQuery,\n TParams,\n TBody,\n TReturns,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TAppContext,\n R\n >,\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 Layout,\n TRequires\n>;\n\nexport function defineMiddleware<\n const Layouts extends readonly [LayoutId, ...LayoutId[]],\n TState = unknown,\n TRequires = {},\n TAppContext extends Record<string, unknown> = AppContext,\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 layouts: Layouts,\n options: MultiScopedMiddlewareOptions<\n Layouts,\n TState,\n TRequires,\n TQuery,\n TParams,\n TBody,\n TReturns,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TAppContext,\n R\n >,\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 Layouts,\n TRequires\n>;\n\nexport function defineMiddleware<\n TState = unknown,\n TRequires = {},\n TAppContext extends Record<string, unknown> = AppContext,\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 options: DefineMiddlewareOptions<\n TState,\n TRequires,\n TQuery,\n TParams,\n TBody,\n TReturns,\n TQueryIn,\n TParamsIn,\n TBodyIn,\n TAppContext,\n R\n >,\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 null,\n TRequires\n>;\n\nexport function defineMiddleware(\n first:\n | string\n | readonly string[]\n | HonoMiddlewareHandler\n | DefineMiddlewareOptions<any, any, any, any, any, any, any, any, any, any, any>,\n second?: DefineMiddlewareOptions<any, any, any, any, any, any, any, any, any, any, any>,\n): unknown {\n if (typeof first === \"string\" || Array.isArray(first)) {\n const options = second!;\n const unit = {\n ...options,\n __middlewareAcc: undefined as unknown,\n ...(options?.returns ? { __returns: options.returns } : {}),\n __requiredLayouts: first,\n };\n return unit;\n }\n\n if (typeof first === \"function\") {\n const honoMiddleware = first as HonoMiddlewareHandler;\n return defineMiddleware({\n handler: (ctx, next) => createTaserCompatHandler(honoMiddleware)(ctx, next),\n });\n }\n\n const options = first as DefineMiddlewareOptions<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >;\n const unit = {\n ...options,\n __middlewareAcc: undefined as unknown,\n ...(options.returns ? { __returns: options.returns } : {}),\n };\n\n return unit;\n}\n"],"mappings":";;AAkPA,SAAgB,iBACd,OAKA,QACS;CACT,IAAI,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;EACrD,MAAM,UAAU;EAOhB,OAAO;GALL,GAAG;GACH,iBAAiB,KAAA;GACjB,GAAI,SAAS,UAAU,EAAE,WAAW,QAAQ,QAAQ,IAAI,CAAC;GACzD,mBAAmB;EAEd;CACT;CAEA,IAAI,OAAO,UAAU,YAAY;EAC/B,MAAM,iBAAiB;EACvB,OAAO,iBAAiB,EACtB,UAAU,KAAK,UAAA,GAAA,qBAAA,yBAAA,CAAkC,cAAc,CAAC,CAAC,KAAK,IAAI,EAC5E,CAAC;CACH;CAEA,MAAM,UAAU;CAmBhB,OAAO;EALL,GAAG;EACH,iBAAiB,KAAA;EACjB,GAAI,QAAQ,UAAU,EAAE,WAAW,QAAQ,QAAQ,IAAI,CAAC;CAGnD;AACT"}
|
|
@@ -1,85 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { createTaserCompatHandler, Awaitable } from '@taserjs/router-core';
|
|
2
|
+
import { ReturnsMap } from '../types/returns.js';
|
|
3
|
+
import { AppContext, ExtractState, IsUnknown, MiddlewareReturnFromParts, MiddlewareUnit, NextFn, StandaloneMiddlewareContext } from '../types/units.js';
|
|
4
|
+
import { LayoutId, ResolveLayoutMiddlewaresState, ResolveLayoutsState } from '../types/index.js';
|
|
5
5
|
import { Schema } from '../types/schema.js';
|
|
6
6
|
type HonoMiddlewareHandler = Parameters<typeof createTaserCompatHandler>[0];
|
|
7
|
-
type HonoMiddlewareUnit = MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}
|
|
8
|
-
type
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}) => Promise<ReplyResult> : (args: {
|
|
13
|
-
state: TState;
|
|
14
|
-
ctx: TCtx;
|
|
15
|
-
}) => Promise<ReplyResult>;
|
|
16
|
-
type FluentMiddlewareBuilder<TQuery = unknown, TParams = unknown, TBody = unknown, TState = undefined, TCtx = undefined, TReturns extends ReturnsMap = {}, TAppContext extends Record<string, unknown> = AppContext> = {
|
|
17
|
-
returns<const M extends ReturnsMap>(map: M): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, TCtx, Omit<TReturns, keyof M> & M, TAppContext>;
|
|
18
|
-
handler(fn: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next: FluentNext<TState, TCtx>) => Awaitable<ReplyResult | Response | unknown>): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, TState extends undefined ? {} : TState, TCtx extends undefined ? {} : TCtx>, TReturns>;
|
|
19
|
-
};
|
|
20
|
-
export declare function defineMiddleware(middleware: HonoMiddlewareHandler): HonoMiddlewareUnit;
|
|
21
|
-
export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TState = unknown, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}>(options: {
|
|
22
|
-
state: Schema<TState>;
|
|
23
|
-
ctx: Schema<TCtx>;
|
|
24
|
-
query?: Schema<TQuery>;
|
|
25
|
-
params?: Schema<TParams>;
|
|
26
|
-
body?: Schema<TBody>;
|
|
7
|
+
type HonoMiddlewareUnit = MiddlewareUnit<MiddlewareReturnFromParts<unknown, unknown, unknown, {}>, {}, null, {}>;
|
|
8
|
+
export type DefineMiddlewareOptions<TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, TAppContext extends Record<string, unknown> = AppContext, R = unknown> = {
|
|
9
|
+
query?: Schema<TQuery, TQueryIn>;
|
|
10
|
+
params?: Schema<TParams, TParamsIn>;
|
|
11
|
+
body?: Schema<TBody, TBodyIn>;
|
|
27
12
|
returns?: TReturns;
|
|
28
|
-
handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
state: Schema<TState>;
|
|
35
|
-
query?: Schema<TQuery>;
|
|
36
|
-
params?: Schema<TParams>;
|
|
37
|
-
body?: Schema<TBody>;
|
|
38
|
-
returns?: TReturns;
|
|
39
|
-
handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next: (args: {
|
|
40
|
-
state: TState;
|
|
41
|
-
}) => Promise<ReplyResult>) => Awaitable<ReplyResult | Response | unknown>;
|
|
42
|
-
}): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, TState>, TReturns>;
|
|
43
|
-
export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}>(options: {
|
|
44
|
-
ctx: Schema<TCtx>;
|
|
45
|
-
query?: Schema<TQuery>;
|
|
46
|
-
params?: Schema<TParams>;
|
|
47
|
-
body?: Schema<TBody>;
|
|
13
|
+
handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>;
|
|
14
|
+
};
|
|
15
|
+
export type ScopedMiddlewareOptions<Layout extends LayoutId, TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, TAppContext extends Record<string, unknown> = AppContext, R = unknown> = {
|
|
16
|
+
query?: Schema<TQuery, TQueryIn>;
|
|
17
|
+
params?: Schema<TParams, TParamsIn>;
|
|
18
|
+
body?: Schema<TBody, TBodyIn>;
|
|
48
19
|
returns?: TReturns;
|
|
49
|
-
handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
params?: Schema<TParams>;
|
|
56
|
-
body?: Schema<TBody>;
|
|
20
|
+
handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, ResolveLayoutMiddlewaresState<Layout> & TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>;
|
|
21
|
+
};
|
|
22
|
+
export type MultiScopedMiddlewareOptions<Layouts extends readonly LayoutId[], TState = unknown, TRequires = {}, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, TAppContext extends Record<string, unknown> = AppContext, R = unknown> = {
|
|
23
|
+
query?: Schema<TQuery, TQueryIn>;
|
|
24
|
+
params?: Schema<TParams, TParamsIn>;
|
|
25
|
+
body?: Schema<TBody, TBodyIn>;
|
|
57
26
|
returns?: TReturns;
|
|
58
|
-
handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext>, next:
|
|
59
|
-
}
|
|
60
|
-
export declare function defineMiddleware
|
|
61
|
-
export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown>(options:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
body?: Schema<TBody>;
|
|
65
|
-
}): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, undefined, {}, TAppContext>;
|
|
66
|
-
export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TState = unknown, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
|
|
67
|
-
state: Schema<TState>;
|
|
68
|
-
query?: Schema<TQuery>;
|
|
69
|
-
params?: Schema<TParams>;
|
|
70
|
-
body?: Schema<TBody>;
|
|
71
|
-
}): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, undefined, {}, TAppContext>;
|
|
72
|
-
export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
|
|
73
|
-
ctx: Schema<TCtx>;
|
|
74
|
-
query?: Schema<TQuery>;
|
|
75
|
-
params?: Schema<TParams>;
|
|
76
|
-
body?: Schema<TBody>;
|
|
77
|
-
}): FluentMiddlewareBuilder<TQuery, TParams, TBody, undefined, TCtx, {}, TAppContext>;
|
|
78
|
-
export declare function defineMiddleware<TAppContext extends Record<string, unknown> = AppContext, TState = unknown, TCtx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown>(options: {
|
|
79
|
-
state: Schema<TState>;
|
|
80
|
-
ctx: Schema<TCtx>;
|
|
81
|
-
query?: Schema<TQuery>;
|
|
82
|
-
params?: Schema<TParams>;
|
|
83
|
-
body?: Schema<TBody>;
|
|
84
|
-
}): FluentMiddlewareBuilder<TQuery, TParams, TBody, TState, TCtx, {}, TAppContext>;
|
|
27
|
+
handler: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, ResolveLayoutsState<Layouts> & TRequires>, next: NextFn<NoInfer<TState>>) => Awaitable<R>;
|
|
28
|
+
};
|
|
29
|
+
export declare function defineMiddleware(middleware: HonoMiddlewareHandler): HonoMiddlewareUnit;
|
|
30
|
+
export declare function defineMiddleware<const Layout extends LayoutId, TState = unknown, TRequires = {}, TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown>(layout: Layout, options: ScopedMiddlewareOptions<Layout, TState, TRequires, TQuery, TParams, TBody, TReturns, TQueryIn, TParamsIn, TBodyIn, TAppContext, R>): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, IsUnknown<TState> extends true ? ExtractState<R> : TState, TQueryIn, TParamsIn, TBodyIn>, TReturns, Layout, TRequires>;
|
|
31
|
+
export declare function defineMiddleware<const Layouts extends readonly [LayoutId, ...LayoutId[]], TState = unknown, TRequires = {}, TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown>(layouts: Layouts, options: MultiScopedMiddlewareOptions<Layouts, TState, TRequires, TQuery, TParams, TBody, TReturns, TQueryIn, TParamsIn, TBodyIn, TAppContext, R>): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, IsUnknown<TState> extends true ? ExtractState<R> : TState, TQueryIn, TParamsIn, TBodyIn>, TReturns, Layouts, TRequires>;
|
|
32
|
+
export declare function defineMiddleware<TState = unknown, TRequires = {}, TAppContext extends Record<string, unknown> = AppContext, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown>(options: DefineMiddlewareOptions<TState, TRequires, TQuery, TParams, TBody, TReturns, TQueryIn, TParamsIn, TBodyIn, TAppContext, R>): MiddlewareUnit<MiddlewareReturnFromParts<TQuery, TParams, TBody, IsUnknown<TState> extends true ? ExtractState<R> : TState, TQueryIn, TParamsIn, TBodyIn>, TReturns, null, TRequires>;
|
|
85
33
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.cjs","names":[],"sources":["../../../src/define/validators.ts"],"sourcesContent":["import type { Schema } from
|
|
1
|
+
{"version":3,"file":"validators.cjs","names":[],"sources":["../../../src/define/validators.ts"],"sourcesContent":["import type { Schema } from \"../types/schema.js\";\nimport { SCHEMA_KEYS, type SchemaKey } from \"../constants.js\";\n\nexport type SchemaValidators = {\n query?: Schema<unknown>;\n params?: Schema<unknown>;\n body?: Schema<unknown>;\n};\n\nexport function pickDefinedSchemas(\n source: SchemaValidators,\n keyMap?: Partial<Record<SchemaKey, string>>,\n): Record<string, Schema<unknown>> {\n const result: Record<string, Schema<unknown>> = {};\n for (const key of SCHEMA_KEYS) {\n const value = source[key];\n if (value !== undefined) {\n result[keyMap?.[key] ?? key] = value;\n }\n }\n return result;\n}\n"],"mappings":";;AASA,SAAgB,mBACd,QACA,QACiC;CACjC,MAAM,SAA0C,CAAC;CACjD,KAAK,MAAM,OAAO,kBAAA,aAAa;EAC7B,MAAM,QAAQ,OAAO;EACrB,IAAI,UAAU,KAAA,GACZ,OAAO,SAAS,QAAQ,OAAO;CAEnC;CACA,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.cjs","names":[],"sources":["../../src/factories.ts"],"sourcesContent":["import { createRouteBuilder } from
|
|
1
|
+
{"version":3,"file":"factories.cjs","names":[],"sources":["../../src/factories.ts"],"sourcesContent":["import { createRouteBuilder } from \"./route.js\";\nimport type { RouteBuilder, RoutePath, Schema } from \"./types/index.js\";\nimport type { AppContext, HttpMethod } from \"./types/units.js\";\n\ntype WithoutBodyOptions<TQuery, TParams, TQueryIn = unknown, TParamsIn = unknown> = {\n query?: Schema<TQuery, TQueryIn>;\n params?: Schema<TParams, TParamsIn>;\n};\n\ntype WithBodyOptions<\n TQuery,\n TParams,\n TBody,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n> = WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn> & {\n body?: Schema<TBody, TBodyIn>;\n};\n\nexport type CreateWithoutBodyRoute<\n M extends \"GET\" | \"DELETE\" | \"OPTIONS\" | \"HEAD\",\n TAppContext extends Record<string, unknown> = AppContext,\n> = {\n <const Path extends RoutePath>(\n path: Path,\n ): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;\n <\n const Path extends RoutePath,\n TQuery = unknown,\n TParams = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n >(\n path: Path,\n options: WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn>,\n ): RouteBuilder<\n Path,\n M,\n readonly [],\n {\n query: TQuery;\n params: TParams;\n queryIn: TQueryIn;\n paramsIn: TParamsIn;\n },\n {},\n TAppContext\n >;\n};\n\nexport type CreateWithBodyRoute<\n M extends \"POST\" | \"PUT\" | \"PATCH\",\n TAppContext extends Record<string, unknown> = AppContext,\n> = {\n <const Path extends RoutePath>(\n path: Path,\n ): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;\n <\n const Path extends RoutePath,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n >(\n path: Path,\n options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>,\n ): RouteBuilder<\n Path,\n M,\n readonly [],\n {\n query: TQuery;\n params: TParams;\n body: TBody;\n queryIn: TQueryIn;\n paramsIn: TParamsIn;\n bodyIn: TBodyIn;\n },\n {},\n TAppContext\n >;\n};\n\nexport type CreateAnyRoute<TAppContext extends Record<string, unknown> = AppContext> = {\n <const Path extends RoutePath, const Methods extends readonly HttpMethod[]>(\n path: Path,\n methods: Methods,\n ): RouteBuilder<Path, Methods[number], readonly [], {}, {}, TAppContext>;\n <\n const Path extends RoutePath,\n const Methods extends readonly HttpMethod[],\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n >(\n path: Path,\n methods: Methods,\n options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>,\n ): RouteBuilder<\n Path,\n Methods[number],\n readonly [],\n {\n query: TQuery;\n params: TParams;\n body: TBody;\n queryIn: TQueryIn;\n paramsIn: TParamsIn;\n bodyIn: TBodyIn;\n },\n {},\n TAppContext\n >;\n};\n\nexport type CreateAllRoute<TAppContext extends Record<string, unknown> = AppContext> = {\n <const Path extends RoutePath>(\n path: Path,\n ): RouteBuilder<Path, HttpMethod, readonly [], {}, {}, TAppContext>;\n <\n const Path extends RoutePath,\n TQuery = unknown,\n TParams = unknown,\n TBody = unknown,\n TQueryIn = unknown,\n TParamsIn = unknown,\n TBodyIn = unknown,\n >(\n path: Path,\n options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>,\n ): RouteBuilder<\n Path,\n HttpMethod,\n readonly [],\n {\n query: TQuery;\n params: TParams;\n body: TBody;\n queryIn: TQueryIn;\n paramsIn: TParamsIn;\n bodyIn: TBodyIn;\n },\n {},\n TAppContext\n >;\n};\n\nfunction createWithoutBodyRoute<M extends \"GET\" | \"DELETE\" | \"OPTIONS\" | \"HEAD\">(\n method: M,\n): CreateWithoutBodyRoute<M> {\n return ((path: string, options?: WithoutBodyOptions<unknown, unknown>) =>\n createRouteBuilder(path, method, options)) as unknown as CreateWithoutBodyRoute<M>;\n}\n\nfunction createWithBodyRoute<M extends \"POST\" | \"PUT\" | \"PATCH\">(\n method: M,\n): CreateWithBodyRoute<M> {\n return ((path: string, options?: WithBodyOptions<unknown, unknown, unknown>) =>\n createRouteBuilder(path, method, options)) as unknown as CreateWithBodyRoute<M>;\n}\n\nexport const createGetRoute = createWithoutBodyRoute(\"GET\");\nexport const createDeleteRoute = createWithoutBodyRoute(\"DELETE\");\nexport const createOptionsRoute = createWithoutBodyRoute(\"OPTIONS\");\nexport const createHeadRoute = createWithoutBodyRoute(\"HEAD\");\nexport const createPostRoute = createWithBodyRoute(\"POST\");\nexport const createPutRoute = createWithBodyRoute(\"PUT\");\nexport const createPatchRoute = createWithBodyRoute(\"PATCH\");\n\nexport const createAnyRoute: CreateAnyRoute = ((\n path: string,\n methods: readonly HttpMethod[],\n options?: WithBodyOptions<unknown, unknown, unknown>,\n) => createRouteBuilder(path, \"ANY\", options, methods)) as unknown as CreateAnyRoute;\n\nexport const createAllRoute: CreateAllRoute = ((\n path: string,\n options?: WithBodyOptions<unknown, unknown, unknown>,\n) => createRouteBuilder(path, \"ALL\", options)) as unknown as CreateAllRoute;\n"],"mappings":";;AAyJA,SAAS,uBACP,QAC2B;CAC3B,SAAS,MAAc,YACrB,cAAA,mBAAmB,MAAM,QAAQ,OAAO;AAC5C;AAEA,SAAS,oBACP,QACwB;CACxB,SAAS,MAAc,YACrB,cAAA,mBAAmB,MAAM,QAAQ,OAAO;AAC5C;AAEA,IAAa,iBAAiB,uBAAuB,KAAK;AAC1D,IAAa,oBAAoB,uBAAuB,QAAQ;AAChE,IAAa,qBAAqB,uBAAuB,SAAS;AAClE,IAAa,kBAAkB,uBAAuB,MAAM;AAC5D,IAAa,kBAAkB,oBAAoB,MAAM;AACzD,IAAa,iBAAiB,oBAAoB,KAAK;AACvD,IAAa,mBAAmB,oBAAoB,OAAO;AAE3D,IAAa,mBACX,MACA,SACA,YACG,cAAA,mBAAmB,MAAM,OAAO,SAAS,OAAO;AAErD,IAAa,mBACX,MACA,YACG,cAAA,mBAAmB,MAAM,OAAO,OAAO"}
|
package/dist/cjs/factories.d.cts
CHANGED
|
@@ -7,7 +7,7 @@ type WithoutBodyOptions<TQuery, TParams, TQueryIn = unknown, TParamsIn = unknown
|
|
|
7
7
|
type WithBodyOptions<TQuery, TParams, TBody, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown> = WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn> & {
|
|
8
8
|
body?: Schema<TBody, TBodyIn>;
|
|
9
9
|
};
|
|
10
|
-
export type CreateWithoutBodyRoute<M extends
|
|
10
|
+
export type CreateWithoutBodyRoute<M extends "GET" | "DELETE" | "OPTIONS" | "HEAD", TAppContext extends Record<string, unknown> = AppContext> = {
|
|
11
11
|
<const Path extends RoutePath>(path: Path): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
|
|
12
12
|
<const Path extends RoutePath, TQuery = unknown, TParams = unknown, TQueryIn = unknown, TParamsIn = unknown>(path: Path, options: WithoutBodyOptions<TQuery, TParams, TQueryIn, TParamsIn>): RouteBuilder<Path, M, readonly [], {
|
|
13
13
|
query: TQuery;
|
|
@@ -16,7 +16,7 @@ export type CreateWithoutBodyRoute<M extends 'GET' | 'DELETE' | 'OPTIONS' | 'HEA
|
|
|
16
16
|
paramsIn: TParamsIn;
|
|
17
17
|
}, {}, TAppContext>;
|
|
18
18
|
};
|
|
19
|
-
export type CreateWithBodyRoute<M extends
|
|
19
|
+
export type CreateWithBodyRoute<M extends "POST" | "PUT" | "PATCH", TAppContext extends Record<string, unknown> = AppContext> = {
|
|
20
20
|
<const Path extends RoutePath>(path: Path): RouteBuilder<Path, M, readonly [], {}, {}, TAppContext>;
|
|
21
21
|
<const Path extends RoutePath, TQuery = unknown, TParams = unknown, TBody = unknown, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown>(path: Path, options: WithBodyOptions<TQuery, TParams, TBody, TQueryIn, TParamsIn, TBodyIn>): RouteBuilder<Path, M, readonly [], {
|
|
22
22
|
query: TQuery;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_factories = require("./factories.cjs");
|
|
3
3
|
const require_handler = require("./define/handler.cjs");
|
|
4
|
-
const require_middleware = require("./define/middleware.cjs");
|
|
5
4
|
const require_taser_app = require("./taser-app.cjs");
|
|
6
5
|
const require_taser_router = require("./taser-router.cjs");
|
|
7
6
|
const require_create_context = require("./create-context.cjs");
|
|
7
|
+
const require_middleware = require("./define/middleware.cjs");
|
|
8
8
|
let _taserjs_router_utils = require("@taserjs/router-utils");
|
|
9
9
|
exports.TaserApp = require_taser_app.TaserApp;
|
|
10
|
-
exports.TaserMountedApp = require_taser_app.TaserMountedApp;
|
|
11
10
|
exports.TaserNativeBound = require_taser_app.TaserNativeBound;
|
|
12
11
|
exports.TaserRouter = require_taser_router.TaserRouter;
|
|
13
12
|
Object.defineProperty(exports, "ValidationError", {
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -5,7 +5,7 @@ export { isReplyResult, reply, stream, ValidationError, validationErrorSchema, }
|
|
|
5
5
|
export type { ReplyBodyKind, ReplyOf, ResponseValidationFailureHandler, SuccessReplyData, SuccessStatusCode, } from '@taserjs/router-utils';
|
|
6
6
|
export { createAnyRoute, createAllRoute } from './factories.js';
|
|
7
7
|
export { createTaserApp, TaserRouter } from './taser-router.js';
|
|
8
|
-
export { TaserApp,
|
|
8
|
+
export { TaserApp, TaserNativeBound } from './taser-app.js';
|
|
9
9
|
export { createContext } from './create-context.js';
|
|
10
10
|
export { defineHandler } from './define/handler.js';
|
|
11
11
|
export { defineMiddleware } from './define/middleware.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_wrap_hono = require("./wrap-hono.cjs");
|
|
3
3
|
let hono_body_limit = require("hono/body-limit");
|
|
4
4
|
//#region src/middleware/body-limit.ts
|
|
5
|
-
var honoBodyLimitMiddleware =
|
|
5
|
+
var honoBodyLimitMiddleware = require_wrap_hono.wrapHonoMiddleware(hono_body_limit.bodyLimit);
|
|
6
6
|
function bodyLimit(...args) {
|
|
7
7
|
return honoBodyLimitMiddleware(...args);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body-limit.cjs","names":[],"sources":["../../../src/middleware/body-limit.ts"],"sourcesContent":["import { bodyLimit as honoBodyLimit } from
|
|
1
|
+
{"version":3,"file":"body-limit.cjs","names":[],"sources":["../../../src/middleware/body-limit.ts"],"sourcesContent":["import { bodyLimit as honoBodyLimit } from \"hono/body-limit\";\n\nimport { wrapHonoMiddleware } from \"./wrap-hono.js\";\n\nconst honoBodyLimitMiddleware = wrapHonoMiddleware(honoBodyLimit);\n\nexport function bodyLimit(...args: Parameters<typeof honoBodyLimit>) {\n return honoBodyLimitMiddleware(...args);\n}\n\nexport type BodyLimitOptions = Parameters<typeof honoBodyLimit>[0];\n"],"mappings":";;;;AAIA,IAAM,0BAA0B,kBAAA,mBAAmB,gBAAA,SAAa;AAEhE,SAAgB,UAAU,GAAG,MAAwC;CACnE,OAAO,wBAAwB,GAAG,IAAI;AACxC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_wrap_hono = require("./wrap-hono.cjs");
|
|
3
3
|
let hono_compress = require("hono/compress");
|
|
4
4
|
//#region src/middleware/compress.ts
|
|
5
|
-
var honoCompressMiddleware =
|
|
5
|
+
var honoCompressMiddleware = require_wrap_hono.wrapHonoMiddleware(hono_compress.compress);
|
|
6
6
|
function compress(...args) {
|
|
7
7
|
return honoCompressMiddleware(...args);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.cjs","names":[],"sources":["../../../src/middleware/compress.ts"],"sourcesContent":["import { compress as honoCompress } from
|
|
1
|
+
{"version":3,"file":"compress.cjs","names":[],"sources":["../../../src/middleware/compress.ts"],"sourcesContent":["import { compress as honoCompress } from \"hono/compress\";\n\nimport { wrapHonoMiddleware } from \"./wrap-hono.js\";\n\nconst honoCompressMiddleware = wrapHonoMiddleware(honoCompress);\n\nexport function compress(...args: Parameters<typeof honoCompress>) {\n return honoCompressMiddleware(...args);\n}\n\nexport type CompressOptions = NonNullable<Parameters<typeof honoCompress>[0]>;\n"],"mappings":";;;;AAIA,IAAM,yBAAyB,kBAAA,mBAAmB,cAAA,QAAY;AAE9D,SAAgB,SAAS,GAAG,MAAuC;CACjE,OAAO,uBAAuB,GAAG,IAAI;AACvC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_wrap_hono = require("./wrap-hono.cjs");
|
|
3
3
|
let hono_cors = require("hono/cors");
|
|
4
4
|
//#region src/middleware/cors.ts
|
|
5
|
-
var honoCorsMiddleware =
|
|
5
|
+
var honoCorsMiddleware = require_wrap_hono.wrapHonoMiddleware(hono_cors.cors);
|
|
6
6
|
function cors(...args) {
|
|
7
7
|
return honoCorsMiddleware(...args);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.cjs","names":[],"sources":["../../../src/middleware/cors.ts"],"sourcesContent":["import { cors as honoCors } from
|
|
1
|
+
{"version":3,"file":"cors.cjs","names":[],"sources":["../../../src/middleware/cors.ts"],"sourcesContent":["import { cors as honoCors } from \"hono/cors\";\n\nimport { wrapHonoMiddleware } from \"./wrap-hono.js\";\n\nconst honoCorsMiddleware = wrapHonoMiddleware(honoCors);\n\nexport function cors(...args: Parameters<typeof honoCors>) {\n return honoCorsMiddleware(...args);\n}\n\nexport type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>;\n"],"mappings":";;;;AAIA,IAAM,qBAAqB,kBAAA,mBAAmB,UAAA,IAAQ;AAEtD,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAmB,GAAG,IAAI;AACnC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_wrap_hono = require("./wrap-hono.cjs");
|
|
3
3
|
let hono_csrf = require("hono/csrf");
|
|
4
4
|
//#region src/middleware/csrf.ts
|
|
5
|
-
var honoCsrfMiddleware =
|
|
5
|
+
var honoCsrfMiddleware = require_wrap_hono.wrapHonoMiddleware(hono_csrf.csrf);
|
|
6
6
|
function csrf(...args) {
|
|
7
7
|
return honoCsrfMiddleware(...args);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csrf.cjs","names":[],"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import { csrf as honoCsrf } from
|
|
1
|
+
{"version":3,"file":"csrf.cjs","names":[],"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import { csrf as honoCsrf } from \"hono/csrf\";\n\nimport { wrapHonoMiddleware } from \"./wrap-hono.js\";\n\nconst honoCsrfMiddleware = wrapHonoMiddleware(honoCsrf);\n\nexport function csrf(...args: Parameters<typeof honoCsrf>) {\n return honoCsrfMiddleware(...args);\n}\n\nexport type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>;\n"],"mappings":";;;;AAIA,IAAM,qBAAqB,kBAAA,mBAAmB,UAAA,IAAQ;AAEtD,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAmB,GAAG,IAAI;AACnC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_wrap_hono = require("./wrap-hono.cjs");
|
|
3
3
|
let hono_etag = require("hono/etag");
|
|
4
4
|
//#region src/middleware/etag.ts
|
|
5
|
-
var honoEtagMiddleware =
|
|
5
|
+
var honoEtagMiddleware = require_wrap_hono.wrapHonoMiddleware(hono_etag.etag);
|
|
6
6
|
function etag(...args) {
|
|
7
7
|
return honoEtagMiddleware(...args);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"etag.cjs","names":[],"sources":["../../../src/middleware/etag.ts"],"sourcesContent":["import { etag as honoEtag } from
|
|
1
|
+
{"version":3,"file":"etag.cjs","names":[],"sources":["../../../src/middleware/etag.ts"],"sourcesContent":["import { etag as honoEtag } from \"hono/etag\";\n\nimport { wrapHonoMiddleware } from \"./wrap-hono.js\";\n\nconst honoEtagMiddleware = wrapHonoMiddleware(honoEtag);\n\nexport function etag(...args: Parameters<typeof honoEtag>) {\n return honoEtagMiddleware(...args);\n}\n\nexport type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>;\n"],"mappings":";;;;AAIA,IAAM,qBAAqB,kBAAA,mBAAmB,UAAA,IAAQ;AAEtD,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAmB,GAAG,IAAI;AACnC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
+
let _taserjs_router_core = require("@taserjs/router-core");
|
|
3
4
|
let hono_jwk = require("hono/jwk");
|
|
4
5
|
//#region src/middleware/jwk.ts
|
|
5
6
|
function assertJwksScheme(jwksUri, allowInsecure) {
|
|
@@ -10,14 +11,20 @@ function assertJwksScheme(jwksUri, allowInsecure) {
|
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* JWK auth middleware. Invalid or missing tokens return **401** (Hono).
|
|
13
|
-
*
|
|
14
|
+
* Successfully decoded payload is placed in `ctx.state.jwtPayload`.
|
|
14
15
|
* Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.
|
|
15
16
|
*/
|
|
16
|
-
function jwk(
|
|
17
|
+
function jwk(options, init) {
|
|
17
18
|
const jwksUri = options.jwks_uri;
|
|
18
19
|
if (typeof jwksUri === "string") assertJwksScheme(jwksUri, options.allowInsecure ?? false);
|
|
19
20
|
const { allowInsecure: _allowInsecure, ...honoOptions } = options;
|
|
20
|
-
|
|
21
|
+
const honoMw = (0, hono_jwk.jwk)(honoOptions, init?.headers !== void 0 ? { headers: init.headers } : void 0);
|
|
22
|
+
return require_middleware.defineMiddleware({ handler: (ctx, next) => {
|
|
23
|
+
return (0, _taserjs_router_core.createTaserCompatHandler)(honoMw)(ctx, async () => {
|
|
24
|
+
const payload = ctx.var.jwtPayload;
|
|
25
|
+
return next({ jwtPayload: payload });
|
|
26
|
+
});
|
|
27
|
+
} });
|
|
21
28
|
}
|
|
22
29
|
//#endregion
|
|
23
30
|
exports.jwk = jwk;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwk.cjs","names":[],"sources":["../../../src/middleware/jwk.ts"],"sourcesContent":["import { jwk as honoJwk } from
|
|
1
|
+
{"version":3,"file":"jwk.cjs","names":[],"sources":["../../../src/middleware/jwk.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\nimport { jwk as honoJwk } from \"hono/jwk\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport type { JwtMiddlewareUnit, JwtPayloadState } from \"./jwt.js\";\n\nexport type JwkOptions = Parameters<typeof honoJwk>[0];\n\nexport type JwkRequestInit = Pick<RequestInit, \"headers\">;\n\nexport type JwkMiddlewareOptions = JwkOptions & {\n /** Allow `http://` JWKS URLs (local dev). Default false — requires `https://`. */\n allowInsecure?: boolean;\n};\n\nfunction assertJwksScheme(jwksUri: string, allowInsecure: boolean): void {\n const scheme = new URL(jwksUri).protocol.replace(\":\", \"\");\n if (scheme === \"https\") {\n return;\n }\n if (scheme === \"http\" && allowInsecure) {\n return;\n }\n throw new Error(`JWKS URL must use https:// (or http:// with allowInsecure: true): \"${jwksUri}\"`);\n}\n\n/**\n * JWK auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n * Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.\n */\nexport function jwk<TPayload = Record<string, unknown>>(\n options: JwkMiddlewareOptions,\n init?: JwkRequestInit,\n): JwtMiddlewareUnit<TPayload> {\n const jwksUri = options.jwks_uri;\n if (typeof jwksUri === \"string\") {\n assertJwksScheme(jwksUri, options.allowInsecure ?? false);\n }\n\n const { allowInsecure: _allowInsecure, ...honoOptions } = options;\n const safeInit = init?.headers !== undefined ? { headers: init.headers } : undefined;\n const honoMw: MiddlewareHandler = honoJwk(honoOptions, safeInit);\n\n return defineMiddleware<JwtPayloadState<TPayload>>({\n handler: (ctx, next) => {\n return createTaserCompatHandler(honoMw)(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n });\n },\n });\n}\n"],"mappings":";;;;;AAgBA,SAAS,iBAAiB,SAAiB,eAA8B;CACvE,MAAM,SAAS,IAAI,IAAI,OAAO,CAAC,CAAC,SAAS,QAAQ,KAAK,EAAE;CACxD,IAAI,WAAW,SACb;CAEF,IAAI,WAAW,UAAU,eACvB;CAEF,MAAM,IAAI,MAAM,sEAAsE,QAAQ,EAAE;AAClG;;;;;;AAOA,SAAgB,IACd,SACA,MAC6B;CAC7B,MAAM,UAAU,QAAQ;CACxB,IAAI,OAAO,YAAY,UACrB,iBAAiB,SAAS,QAAQ,iBAAiB,KAAK;CAG1D,MAAM,EAAE,eAAe,gBAAgB,GAAG,gBAAgB;CAE1D,MAAM,UAAA,GAAA,SAAA,IAAA,CAAoC,aADzB,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAA,CACZ;CAE/D,OAAO,mBAAA,iBAA4C,EACjD,UAAU,KAAK,SAAS;EACtB,QAAA,GAAA,qBAAA,yBAAA,CAAgC,MAAM,CAAC,CAAC,KAAK,YAAY;GACvD,MAAM,UAAW,IAAqD,IAAI;GAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;EACjD,CAAC;CACH,EACF,CAAC;AACH"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { jwk as honoJwk } from 'hono/jwk';
|
|
2
|
-
import {
|
|
3
|
-
import { InferOutput, Schema } from '../types/schema.js';
|
|
2
|
+
import { JwtMiddlewareUnit } from './jwt.js';
|
|
4
3
|
export type JwkOptions = Parameters<typeof honoJwk>[0];
|
|
5
|
-
export type JwkRequestInit = Pick<RequestInit,
|
|
4
|
+
export type JwkRequestInit = Pick<RequestInit, "headers">;
|
|
6
5
|
export type JwkMiddlewareOptions = JwkOptions & {
|
|
7
6
|
/** Allow `http://` JWKS URLs (local dev). Default false — requires `https://`. */
|
|
8
7
|
allowInsecure?: boolean;
|
|
9
8
|
};
|
|
10
9
|
/**
|
|
11
10
|
* JWK auth middleware. Invalid or missing tokens return **401** (Hono).
|
|
12
|
-
*
|
|
11
|
+
* Successfully decoded payload is placed in `ctx.state.jwtPayload`.
|
|
13
12
|
* Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.
|
|
14
13
|
*/
|
|
15
|
-
export declare function jwk<TPayload
|
|
14
|
+
export declare function jwk<TPayload = Record<string, unknown>>(options: JwkMiddlewareOptions, init?: JwkRequestInit): JwtMiddlewareUnit<TPayload>;
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
+
let _taserjs_router_core = require("@taserjs/router-core");
|
|
3
4
|
let hono_jwt = require("hono/jwt");
|
|
4
5
|
//#region src/middleware/jwt.ts
|
|
5
6
|
/**
|
|
6
7
|
* JWT auth middleware. Invalid or missing tokens return **401** (Hono).
|
|
7
|
-
*
|
|
8
|
-
* Use optional schema fields for intentionally optional claims.
|
|
8
|
+
* Successfully decoded payload is placed in `ctx.state.jwtPayload`.
|
|
9
9
|
*/
|
|
10
|
-
function jwt(
|
|
11
|
-
|
|
10
|
+
function jwt(options) {
|
|
11
|
+
const honoMw = (0, hono_jwt.jwt)(options);
|
|
12
|
+
return require_middleware.defineMiddleware({ handler: (ctx, next) => {
|
|
13
|
+
return (0, _taserjs_router_core.createTaserCompatHandler)(honoMw)(ctx, async () => {
|
|
14
|
+
const payload = ctx.var.jwtPayload;
|
|
15
|
+
return next({ jwtPayload: payload });
|
|
16
|
+
});
|
|
17
|
+
} });
|
|
12
18
|
}
|
|
13
19
|
//#endregion
|
|
14
20
|
exports.jwt = jwt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.cjs","names":[],"sources":["../../../src/middleware/jwt.ts"],"sourcesContent":["import { jwt as honoJwt } from
|
|
1
|
+
{"version":3,"file":"jwt.cjs","names":[],"sources":["../../../src/middleware/jwt.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\nimport { jwt as honoJwt } from \"hono/jwt\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from \"../types/units.js\";\n\nexport type JwtPayloadState<TPayload> = {\n jwtPayload: TPayload;\n};\n\nexport type JwtMiddlewareUnit<TPayload> = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>\n>;\n\nexport type JwtOptions = Parameters<typeof honoJwt>[0];\n\n/**\n * JWT auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n */\nexport function jwt<TPayload = Record<string, unknown>>(\n options: JwtOptions,\n): JwtMiddlewareUnit<TPayload> {\n const honoMw: MiddlewareHandler = honoJwt(options);\n return defineMiddleware<JwtPayloadState<TPayload>>({\n handler: (ctx, next) => {\n return createTaserCompatHandler(honoMw)(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n });\n },\n });\n}\n"],"mappings":";;;;;;;;;AAqBA,SAAgB,IACd,SAC6B;CAC7B,MAAM,UAAA,GAAA,SAAA,IAAA,CAAoC,OAAO;CACjD,OAAO,mBAAA,iBAA4C,EACjD,UAAU,KAAK,SAAS;EACtB,QAAA,GAAA,qBAAA,yBAAA,CAAgC,MAAM,CAAC,CAAC,KAAK,YAAY;GACvD,MAAM,UAAW,IAAqD,IAAI;GAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;EACjD,CAAC;CACH,EACF,CAAC;AACH"}
|