From 3f1150899527a4b888061eaa0cb76ca95a4c366c Mon Sep 17 00:00:00 2001 From: David Tai Date: Mon, 13 Jun 2022 05:12:03 +0800 Subject: [PATCH] chore: type check errors running `tsc` (#269) Co-authored-by: Daniel Roe Co-authored-by: Pooya Parsa --- .github/workflows/ci.yml | 1 + examples/tsconfig.json | 4 ++++ package.json | 3 ++- src/presets/aws-lambda.ts | 3 +-- src/presets/azure-functions.ts | 1 - src/presets/azure.ts | 1 - src/presets/firebase.ts | 1 - src/presets/node.ts | 3 +-- src/presets/stormkit.ts | 1 - src/rollup/config.ts | 2 +- src/runtime/app.ts | 2 +- src/runtime/client.ts | 3 ++- src/runtime/entries/netlify-edge.ts | 3 ++- src/runtime/entries/service-worker.ts | 4 +++- src/runtime/virtual/server-handlers.d.ts | 9 ++++++--- src/runtime/virtual/storage.d.ts | 2 +- tsconfig.json | 7 +++++-- 17 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 examples/tsconfig.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index db7e84d5f4..edb9c8e547 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,6 +21,7 @@ jobs: cache: pnpm - run: pnpm install - run: pnpm lint + - run: pnpm test:types - run: pnpm build - run: pnpm vitest --coverage - uses: codecov/codecov-action@v3 diff --git a/examples/tsconfig.json b/examples/tsconfig.json new file mode 100644 index 0000000000..3ae2a24af8 --- /dev/null +++ b/examples/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.json", + "include": ["."] +} diff --git a/package.json b/package.json index c15ab4fec4..f65d88bd82 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "prepack": "pnpm build", "release": "pnpm test && pnpm build && standard-version && pnpm publish && git push --follow-tags", "stub": "unbuild --stub", - "test": "pnpm lint && vitest run --silent" + "test": "pnpm lint && vitest run --silent", + "test:types": "tsc --noEmit" }, "resolutions": { "nitropack": "link:." diff --git a/src/presets/aws-lambda.ts b/src/presets/aws-lambda.ts index c28b1c8e47..d17049c87f 100644 --- a/src/presets/aws-lambda.ts +++ b/src/presets/aws-lambda.ts @@ -1,6 +1,5 @@ import { defineNitroPreset } from '../preset' export const awsLambda = defineNitroPreset({ - entry: '#internal/nitro/entries/aws-lambda', - externals: true + entry: '#internal/nitro/entries/aws-lambda' }) diff --git a/src/presets/azure-functions.ts b/src/presets/azure-functions.ts index 002b55714a..ea514e3019 100644 --- a/src/presets/azure-functions.ts +++ b/src/presets/azure-functions.ts @@ -9,7 +9,6 @@ import type { Nitro } from '../types' export const azureFunctions = defineNitroPreset({ serveStatic: true, entry: '#internal/nitro/entries/azure-functions', - externals: true, commands: { deploy: 'az functionapp deployment source config-zip -g -n --src {{ output.dir }}/deploy.zip' }, diff --git a/src/presets/azure.ts b/src/presets/azure.ts index b663e65790..6ea9ece167 100644 --- a/src/presets/azure.ts +++ b/src/presets/azure.ts @@ -7,7 +7,6 @@ import type { Nitro } from '../types' export const azure = defineNitroPreset({ entry: '#internal/nitro/entries/azure', - externals: true, output: { serverDir: '{{ output.dir }}/server/functions' }, diff --git a/src/presets/firebase.ts b/src/presets/firebase.ts index 4484bc1a74..982df34fe2 100644 --- a/src/presets/firebase.ts +++ b/src/presets/firebase.ts @@ -9,7 +9,6 @@ import type { Nitro } from '../types' export const firebase = defineNitroPreset({ entry: '#internal/nitro/entries/firebase', - externals: true, commands: { deploy: 'npx firebase deploy' }, diff --git a/src/presets/node.ts b/src/presets/node.ts index 4fd3016bb4..2ab4e772d4 100644 --- a/src/presets/node.ts +++ b/src/presets/node.ts @@ -1,6 +1,5 @@ import { defineNitroPreset } from '../preset' export const node = defineNitroPreset({ - entry: '#internal/nitro/entries/node', - externals: true + entry: '#internal/nitro/entries/node' }) diff --git a/src/presets/stormkit.ts b/src/presets/stormkit.ts index af271511f0..7922b71e21 100644 --- a/src/presets/stormkit.ts +++ b/src/presets/stormkit.ts @@ -2,7 +2,6 @@ import { defineNitroPreset } from '../preset' export const stormkit = defineNitroPreset({ entry: '#internal/nitro/entries/stormkit', - externals: true, output: { dir: '{{ rootDir }}/.stormkit' } diff --git a/src/rollup/config.ts b/src/rollup/config.ts index 4a197d9522..67d11db566 100644 --- a/src/rollup/config.ts +++ b/src/rollup/config.ts @@ -231,7 +231,7 @@ export const plugins = [ // Externals Plugin if (!nitro.options.noExternals) { - rollupConfig.plugins.push(externals(defu(nitro.options.externals as any, { + rollupConfig.plugins.push(externals(defu(nitro.options.externals, { outDir: nitro.options.output.serverDir, moduleDirectories: nitro.options.nodeModulesDirs, external: [ diff --git a/src/runtime/app.ts b/src/runtime/app.ts index de1c5fceb3..3b00423b16 100644 --- a/src/runtime/app.ts +++ b/src/runtime/app.ts @@ -35,7 +35,7 @@ function createNitroApp (): NitroApp { const routerOptions = createMatcher({ routes: config.nitro.routes }) for (const h of handlers) { - let handler = h.lazy ? lazyEventHandler(h.handler as any) : h.handler + let handler = h.lazy ? lazyEventHandler(h.handler) : h.handler const referenceRoute = h.route.replace(/:\w+|\*\*/g, '_') const routeOptions = routerOptions.lookup(referenceRoute) || {} diff --git a/src/runtime/client.ts b/src/runtime/client.ts index 6d5007f855..f3e516f79a 100644 --- a/src/runtime/client.ts +++ b/src/runtime/client.ts @@ -1,6 +1,7 @@ // Client polyfill import { $fetch } from 'ohmyfetch' +import { $Fetch, NitroFetchRequest } from '../types' if (!globalThis.$fetch) { - globalThis.$fetch = $fetch + globalThis.$fetch = $fetch as $Fetch } diff --git a/src/runtime/entries/netlify-edge.ts b/src/runtime/entries/netlify-edge.ts index d4a79a14d5..fdc8547138 100644 --- a/src/runtime/entries/netlify-edge.ts +++ b/src/runtime/entries/netlify-edge.ts @@ -13,6 +13,7 @@ export default async function (request: Request, _context) { url: url.pathname + url.search, host: url.hostname, protocol: url.protocol, + // @ts-ignore TODO headers: request.headers, method: request.method, redirect: request.redirect, @@ -20,7 +21,7 @@ export default async function (request: Request, _context) { }) return new Response(r.body, { - headers: r.headers, + headers: r.headers as HeadersInit, status: r.status, statusText: r.statusText }) diff --git a/src/runtime/entries/service-worker.ts b/src/runtime/entries/service-worker.ts index e217a0b990..5ece718c4f 100644 --- a/src/runtime/entries/service-worker.ts +++ b/src/runtime/entries/service-worker.ts @@ -30,12 +30,14 @@ async function handleEvent (url, event) { }) return new Response(r.body, { - headers: r.headers, + headers: r.headers as HeadersInit, status: r.status, statusText: r.statusText }) } +declare const self: ServiceWorkerGlobalScope + self.addEventListener('install', () => { self.skipWaiting() }) diff --git a/src/runtime/virtual/server-handlers.d.ts b/src/runtime/virtual/server-handlers.d.ts index b50ff51234..f706a5712a 100644 --- a/src/runtime/virtual/server-handlers.d.ts +++ b/src/runtime/virtual/server-handlers.d.ts @@ -1,11 +1,14 @@ -import type { CompatibilityEventHandler, RouterMethod } from 'h3' +import type { CompatibilityEventHandler, LazyEventHandler, RouterMethod } from 'h3' -interface HandlerDefinition { +type HandlerDefinition = { route: string lazy?: boolean middleware?: boolean - handler: CompatibilityEventHandler | (() => Promise) + handler: CompatibilityEventHandler method?: RouterMethod +} & { + lazy: true + handler: LazyEventHandler } export const handlers: HandlerDefinition[] diff --git a/src/runtime/virtual/storage.d.ts b/src/runtime/virtual/storage.d.ts index 64856a534c..bd07ae0a6f 100644 --- a/src/runtime/virtual/storage.d.ts +++ b/src/runtime/virtual/storage.d.ts @@ -1,3 +1,3 @@ import type { Storage } from 'unstorage' -export const useStorage = () => Storage +export declare const useStorage: () => Storage diff --git a/tsconfig.json b/tsconfig.json index 43cd383ac9..57f84d021d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,8 @@ "allowSyntheticDefaultImports": true, "skipLibCheck": true, "lib": [ - "WebWorker" + "WebWorker", + "DOM.Iterable" ], "target": "ESNext", "module": "ESNext", @@ -27,6 +28,8 @@ "include": [ "src", "test", - "examples" + ], + "exclude": [ + "test/fixture" ] }