From 631f6297979e0b398d1353963ad7b4166e53f40c Mon Sep 17 00:00:00 2001 From: Jonas Thelemann Date: Tue, 30 Aug 2022 12:39:11 +0200 Subject: [PATCH] feat(package): update typescript to v4.8 (#1375) * feat(package): update typescript to v4.8 * ci: add ts 4.8 to build matrix * chore(jest): remove unused import * fix(ts): correct types * chore(deps): update type-fest to v2 --- .github/workflows/ci.yml | 2 +- package.json | 6 +++--- src/context/set.ts | 4 ++-- src/handlers/RequestHandler.ts | 2 +- src/response.ts | 23 ++++++++++++----------- src/sharedOptions.ts | 4 +++- test/jest.setup.ts | 1 - yarn.lock | 16 ++++++++-------- 8 files changed, 30 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6395743f6..2a732659b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: strategy: fail-fast: false matrix: - ts: ['4.2', '4.3', '4.4', '4.5', '4.6', '4.7'] + ts: ['4.2', '4.3', '4.4', '4.5', '4.6', '4.7', '4.8'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/package.json b/package.json index 3ff05d904..f5836e440 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "path-to-regexp": "^6.2.0", "statuses": "^2.0.0", "strict-event-emitter": "^0.2.0", - "type-fest": "^1.2.2", + "type-fest": "^2.19.0", "yargs": "^17.3.1" }, "devDependencies": { @@ -128,14 +128,14 @@ "ts-loader": "^9.2.6", "ts-node": "^10.1.0", "tsup": "^5.12.8", - "typescript": "^4.7.2", + "typescript": "^4.8.2", "url-loader": "^4.1.1", "webpack": "^5.68.0", "webpack-dev-server": "^3.11.2" }, "peerDependencies": { "graphql": "^15.0.0 || ^16.0.0", - "typescript": ">= 4.2.x <= 4.7.x" + "typescript": ">= 4.2.x <= 4.8.x" }, "peerDependenciesMeta": { "graphql": { diff --git a/src/context/set.ts b/src/context/set.ts index c17ae0795..71ca89c52 100644 --- a/src/context/set.ts +++ b/src/context/set.ts @@ -31,11 +31,11 @@ export type ForbiddenHeaderError = export function set( ...args: N extends string ? Lowercase extends ForbiddenHeaderNames - ? ForbiddenHeaderError + ? [ForbiddenHeaderError] : [N, string] : N extends HeadersObject ? Lowercase extends ForbiddenHeaderNames - ? ForbiddenHeaderError + ? [ForbiddenHeaderError] : [N] : [N] ): ResponseTransformer { diff --git a/src/handlers/RequestHandler.ts b/src/handlers/RequestHandler.ts index 2f28cfa6b..5057ec86d 100644 --- a/src/handlers/RequestHandler.ts +++ b/src/handlers/RequestHandler.ts @@ -73,7 +73,7 @@ export type AsyncResponseResolverReturnType = export type ResponseResolver< RequestType = MockedRequest, ContextType = typeof defaultContext, - BodyType = any, + BodyType extends DefaultBodyType = any, > = ( req: RequestType, res: ResponseComposition, diff --git a/src/response.ts b/src/response.ts index 46d181cd2..674ffbd42 100644 --- a/src/response.ts +++ b/src/response.ts @@ -20,23 +20,24 @@ export interface MockedResponse { export type ResponseTransformer< BodyType extends TransformerBodyType = any, - TransformerBodyType = any, + TransformerBodyType extends DefaultBodyType = any, > = ( res: MockedResponse, ) => MaybePromise> -export type ResponseFunction = ( +export type ResponseFunction = ( ...transformers: ResponseTransformer[] ) => MaybePromise> -export type ResponseComposition = ResponseFunction & { - /** - * Respond using a given mocked response to the first captured request. - * Does not affect any subsequent captured requests. - */ - once: ResponseFunction - networkError: (message: string) => void -} +export type ResponseComposition = + ResponseFunction & { + /** + * Respond using a given mocked response to the first captured request. + * Does not affect any subsequent captured requests. + */ + once: ResponseFunction + networkError: (message: string) => void + } export const defaultResponse: Omit = { status: 200, @@ -54,7 +55,7 @@ export type ResponseCompositionOptions = { export const defaultResponseTransformers: ResponseTransformer[] = [] -export function createResponseComposition( +export function createResponseComposition( responseOverrides?: Partial>, defaultTransformers: ResponseTransformer[] = defaultResponseTransformers, ): ResponseFunction { diff --git a/src/sharedOptions.ts b/src/sharedOptions.ts index 2c285d75e..f015ceb7c 100644 --- a/src/sharedOptions.ts +++ b/src/sharedOptions.ts @@ -24,7 +24,9 @@ export interface LifeCycleEventsMap { unhandledException: (error: Error, request: MockedRequest) => void } -export type LifeCycleEventEmitter = Pick< +export type LifeCycleEventEmitter< + ResponseType extends Record, +> = Pick< StrictEventEmitter, 'on' | 'removeListener' | 'removeAllListeners' > diff --git a/test/jest.setup.ts b/test/jest.setup.ts index f53f2cc1a..63c00f5e4 100644 --- a/test/jest.setup.ts +++ b/test/jest.setup.ts @@ -8,7 +8,6 @@ import { createWorkerConsoleServer, workerConsoleSpy, } from './support/workerConsole' -import { workers } from 'cluster' let browser: CreateBrowserApi let workerConsoleServer: ServerApi diff --git a/yarn.lock b/yarn.lock index 4c6b8980e..25fdaf88a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9639,10 +9639,10 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.2.2.tgz#1930bc36b2064f7ab4aa307a6d1b65965199c698" - integrity sha512-pfkPYCcuV0TJoo/jlsUeWNV8rk7uMU6ocnYNvca1Vu+pyKi8Rl8Zo2scPt9O72gCsXIm+dMxOOWuA3VFDSdzWA== +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" @@ -9664,10 +9664,10 @@ typescript@^4.4.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== -typescript@^4.7.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" - integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== +typescript@^4.8.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790" + integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw== unbox-primitive@^1.0.2: version "1.0.2"