From bfdb28bbd4270bf6f0edb00e3eed9b523493c48b Mon Sep 17 00:00:00 2001 From: Yusuke Wada Date: Wed, 29 Nov 2023 06:08:28 +0900 Subject: [PATCH] denoify --- deno_dist/helper/factory/index.ts | 298 +++++++++++++++++++++++++++++- deno_dist/types.ts | 2 +- src/helper/factory/index.test.ts | 2 +- 3 files changed, 296 insertions(+), 6 deletions(-) diff --git a/deno_dist/helper/factory/index.ts b/deno_dist/helper/factory/index.ts index 39d9f51304..307a8bec75 100644 --- a/deno_dist/helper/factory/index.ts +++ b/deno_dist/helper/factory/index.ts @@ -1,6 +1,296 @@ -import type { Env, Input, MiddlewareHandler } from '../../types.ts' +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { Env, Input, MiddlewareHandler, H, HandlerResponse } from '../../types.ts' + +/** + * @experimental + * `Factory` class is an experimental feature. + * The API might be changed. + */ +export class Factory { + createMiddleware = (middleware: MiddlewareHandler) => middleware + + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers(handler1: H): [H] + + // handler x2 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers = any>( + handler1: H, + handler2: H + ): [H, H] + + // handler x3 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H + ): [H, H, H] + + // handler x4 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + I4 extends Input = I & I2 & I3, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H, + handler4: H + ): [H, H, H, H] + + // handler x5 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + I4 extends Input = I & I2 & I3, + I5 extends Input = I & I2 & I3 & I4, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H, + handler4: H, + handler5: H + ): [H, H, H, H, H] + + // handler x6 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + I4 extends Input = I & I2 & I3, + I5 extends Input = I & I2 & I3 & I4, + I6 extends Input = I & I2 & I3 & I4 & I5, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H, + handler4: H, + handler5: H, + handler6: H + ): [H, H, H, H, H, H] + + // handler x7 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + I4 extends Input = I & I2 & I3, + I5 extends Input = I & I2 & I3 & I4, + I6 extends Input = I & I2 & I3 & I4 & I5, + I7 extends Input = I & I2 & I3 & I4 & I5 & I6, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H, + handler4: H, + handler5: H, + handler6: H, + handler7: H + ): [ + H, + H, + H, + H, + H, + H, + H + ] + + // handler x8 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + I4 extends Input = I & I2 & I3, + I5 extends Input = I & I2 & I3 & I4, + I6 extends Input = I & I2 & I3 & I4 & I5, + I7 extends Input = I & I2 & I3 & I4 & I5 & I6, + I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H, + handler4: H, + handler5: H, + handler6: H, + handler7: H, + handler8: H + ): [ + H, + H, + H, + H, + H, + H, + H, + H + ] + + // handler x9 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + I4 extends Input = I & I2 & I3, + I5 extends Input = I & I2 & I3 & I4, + I6 extends Input = I & I2 & I3 & I4 & I5, + I7 extends Input = I & I2 & I3 & I4 & I5 & I6, + I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, + I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H, + handler4: H, + handler5: H, + handler6: H, + handler7: H, + handler8: H, + handler9: H + ): [ + H, + H, + H, + H, + H, + H, + H, + H, + H + ] + + // handler x10 + /** + * @experimental + * `createHandlers` is an experimental feature. + * The API might be changed. + */ + createHandlers< + I extends Input = {}, + I2 extends Input = I, + I3 extends Input = I & I2, + I4 extends Input = I & I2 & I3, + I5 extends Input = I & I2 & I3 & I4, + I6 extends Input = I & I2 & I3 & I4 & I5, + I7 extends Input = I & I2 & I3 & I4 & I5 & I6, + I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, + I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8, + I10 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9, + R extends HandlerResponse = any + >( + handler1: H, + handler2: H, + handler3: H, + handler4: H, + handler5: H, + handler6: H, + handler7: H, + handler8: H, + handler9: H, + handler10: H + ): [ + H, + H, + H, + H, + H, + H, + H, + H, + H, + H + ] + + createHandlers( + handler1: H, + handler2?: H, + handler3?: H, + handler4?: H, + handler5?: H, + handler6?: H, + handler7?: H, + handler8?: H, + handler9?: H, + handler10?: H + ) { + return [ + handler1, + handler2, + handler3, + handler4, + handler5, + handler6, + handler7, + handler8, + handler9, + handler10, + ] + } +} + +/** + * @experimental + * `createFactory` is an experimental feature. + * The API might be changed. + */ +export const createFactory = () => new Factory() -// eslint-disable-next-line @typescript-eslint/no-explicit-any export const createMiddleware = ( - middleware: MiddlewareHandler -) => middleware + middleware: MiddlewareHandler +) => createFactory().createMiddleware(middleware) diff --git a/deno_dist/types.ts b/deno_dist/types.ts index b502aea76e..5e7e23e285 100644 --- a/deno_dist/types.ts +++ b/deno_dist/types.ts @@ -33,7 +33,7 @@ export type Input = { ////// ////// //////////////////////////////////////// -type HandlerResponse = Response | TypedResponse | Promise> +export type HandlerResponse = Response | TypedResponse | Promise> export type Handler< E extends Env = any, diff --git a/src/helper/factory/index.test.ts b/src/helper/factory/index.test.ts index 70d021a50d..4b90c9565a 100644 --- a/src/helper/factory/index.test.ts +++ b/src/helper/factory/index.test.ts @@ -37,7 +37,7 @@ describe('createMiddleware', () => { // A fake function for testing types. // eslint-disable-next-line @typescript-eslint/no-unused-vars function extractSchema(_: T): ExtractSchema { - return 0 as ExtractSchema + return true as ExtractSchema } describe('createHandler', () => {