diff --git a/tools/.vscode/extensions.json b/tools/.vscode/extensions.json new file mode 100644 index 000000000..74baffcc4 --- /dev/null +++ b/tools/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["denoland.vscode-deno"] +} diff --git a/tools/.vscode/settings.json b/tools/.vscode/settings.json index 626c7277f..de3730860 100644 --- a/tools/.vscode/settings.json +++ b/tools/.vscode/settings.json @@ -4,7 +4,5 @@ "inspector/promises", "inspector" ], - "files.watcherExclude": { - "**/node_modules/**": true, - }, + "deno.enable": true } diff --git a/tools/deno.json b/tools/deno.json new file mode 100644 index 000000000..e55d7d0a1 --- /dev/null +++ b/tools/deno.json @@ -0,0 +1,30 @@ +{ + "workspace": [ + "./packages/bench", + "./packages/mini-parse", + "./packages/wesl", + "./packages/wesl-link", + "./packages/wesl-packager", + "./packages/wesl-plugin", + "./packages/wesl-reflect", + "./packages/wesl-tooling" + ], + "exclude": [ + "./examples", + "./scripts", + "packages/plugin-test", + "packages/random_wgsl", + "packages/test_pkg", + "**/dist/**" + ], + "compilerOptions": { + "strict": true, + "lib": ["deno.ns", "dom", "dom.iterable"], + "types": ["@webgpu/types"] + }, + "lint": { + "rules": { + "exclude": ["no-explicit-any"] + } + } +} diff --git a/tools/packages/bench/bin/bench.ts b/tools/packages/bench/bin/bench.ts index f9abe02f9..075415aba 100644 --- a/tools/packages/bench/bin/bench.ts +++ b/tools/packages/bench/bin/bench.ts @@ -1,4 +1,5 @@ import path from "node:path"; +import process from "node:process"; import { link } from "wesl"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; diff --git a/tools/packages/bench/bin/choose_baseline.mts b/tools/packages/bench/bin/choose_baseline.mts index 3e6922824..7372cc8bb 100755 --- a/tools/packages/bench/bin/choose_baseline.mts +++ b/tools/packages/bench/bin/choose_baseline.mts @@ -3,6 +3,7 @@ import { execSync } from "node:child_process"; import { existsSync, mkdirSync, rmSync } from "node:fs"; import path from "node:path"; +import process from "node:process"; /** * a node script get an earlier copy of the repo as a baseline for benchmark comparisons diff --git a/tools/packages/bench/deno.json b/tools/packages/bench/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tools/packages/bench/deno.json @@ -0,0 +1 @@ +{} diff --git a/tools/packages/bench/src/LoadSimpleTest.ts b/tools/packages/bench/src/LoadSimpleTest.ts index f9dc3826a..53ee09e92 100644 --- a/tools/packages/bench/src/LoadSimpleTest.ts +++ b/tools/packages/bench/src/LoadSimpleTest.ts @@ -1,3 +1,4 @@ +import { exit } from "node:process"; import * as simpleTests from "../src/experiments/SimpleTests.ts"; import { loadBenchmarkFiles } from "../src/LoadBenchmarks.ts"; @@ -9,7 +10,7 @@ export interface SimpleTest { export function loadSimpleTest(simpleSelect: string | undefined): SimpleTest { if (!simpleSelect) { console.error("No test name prefix provided for --simple"); - process.exit(1); + exit(1); } const testEntry = Object.entries(simpleTests).find(([name]) => @@ -21,7 +22,7 @@ export function loadSimpleTest(simpleSelect: string | undefined): SimpleTest { `No test found with prefix '${simpleSelect}' in SimpleTests.ts`, ); console.error(`Available tests: ${Object.keys(simpleTests).join(", ")}`); - process.exit(1); + exit(1); } const [name, fn] = testEntry; return { name, fn }; diff --git a/tools/packages/bench/src/experiments/BenchManually.ts b/tools/packages/bench/src/experiments/BenchManually.ts index ac310b5b8..bc1306d0a 100644 --- a/tools/packages/bench/src/experiments/BenchManually.ts +++ b/tools/packages/bench/src/experiments/BenchManually.ts @@ -1,3 +1,4 @@ +import * as process from "node:process"; import { _linkSync, type link } from "wesl"; import type { BenchTest } from "../../bin/bench.ts"; import { diffPercent } from "../table-util/Formatters.ts"; @@ -7,8 +8,8 @@ export function benchManually( tests: BenchTest[], baselineLink: typeof link, ): void { - const gc = globalThis.gc || (() => {}); - console.log("gc is", globalThis.gc ? "enabled" : "disabled"); + const gc = (globalThis as any).gc || (() => {}); + console.log("gc is", (globalThis as any).gc ? "enabled" : "disabled"); for (const test of tests) { const weslSrc = Object.fromEntries(test.files.entries()); const rootModuleName = test.mainFile; diff --git a/tools/packages/bench/src/mitata-util/MitataBench.ts b/tools/packages/bench/src/mitata-util/MitataBench.ts index 2f4a120cd..2d26262d4 100644 --- a/tools/packages/bench/src/mitata-util/MitataBench.ts +++ b/tools/packages/bench/src/mitata-util/MitataBench.ts @@ -1,4 +1,5 @@ import { type PerformanceEntry, PerformanceObserver } from "node:perf_hooks"; +import * as process from "node:process"; import type * as mitataCountersType from "@mitata/counters"; import { measure } from "mitata"; import { @@ -156,7 +157,7 @@ async function getHeapFn(): Promise<() => number> { /** fetch the runtime's function to call gc() manually */ function gcFunction(): () => void { - const gc = globalThis.gc || (globalThis as any).__gc; + const gc = (globalThis as any).gc || (globalThis as any).__gc; if (gc) return gc; console.warn( "MitataBench: gc() not available, run node/bun with --expose-gc", @@ -188,6 +189,6 @@ function analyzeGCEntries( return { inRun, before, after, total, collects }; } -async function wait(msec = 0): Promise { +function wait(msec = 0): Promise { return new Promise(resolve => setTimeout(resolve, msec)); } diff --git a/tools/packages/bench/src/mitata-util/MitataStats.ts b/tools/packages/bench/src/mitata-util/MitataStats.ts index 66f119dfd..d2f83413e 100644 --- a/tools/packages/bench/src/mitata-util/MitataStats.ts +++ b/tools/packages/bench/src/mitata-util/MitataStats.ts @@ -1,3 +1,4 @@ +// @ts-types="./Mitata.d.ts" import type { CpuCounts } from "@mitata/counters"; import type { MeasureResult } from "./MitataBench.ts"; import { mapValues } from "./Util.ts"; diff --git a/tools/packages/mini-parse/deno.json b/tools/packages/mini-parse/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tools/packages/mini-parse/deno.json @@ -0,0 +1 @@ +{} diff --git a/tools/packages/mini-parse/src/stream/CachingStream.ts b/tools/packages/mini-parse/src/stream/CachingStream.ts index 36dc9005c..b0641ff30 100644 --- a/tools/packages/mini-parse/src/stream/CachingStream.ts +++ b/tools/packages/mini-parse/src/stream/CachingStream.ts @@ -38,7 +38,7 @@ class Cache extends Map { this.max = max; } - set(k: K, v: V): this { + override set(k: K, v: V): this { if (this.size > this.max) { const first = this.keys().next().value; if (first) this.delete(first); diff --git a/tools/packages/mini-parse/src/test/RegexMatchers.test.ts b/tools/packages/mini-parse/src/test/RegexMatchers.test.ts index 1b4a34626..58622883a 100644 --- a/tools/packages/mini-parse/src/test/RegexMatchers.test.ts +++ b/tools/packages/mini-parse/src/test/RegexMatchers.test.ts @@ -1,5 +1,5 @@ import { expect, test } from "vitest"; -import { RegexMatchers } from "../stream/MatchersStream"; +import { RegexMatchers } from "../stream/MatchersStream.ts"; test("token matcher", () => { const m = new RegexMatchers({ diff --git a/tools/packages/mini-parse/test-util.vite.config.ts b/tools/packages/mini-parse/test-util.vite.config.ts index f0fcd026e..88c0dfd34 100644 --- a/tools/packages/mini-parse/test-util.vite.config.ts +++ b/tools/packages/mini-parse/test-util.vite.config.ts @@ -1,5 +1,4 @@ import { resolve } from "node:path"; -/// import { defineConfig, type LibraryOptions } from "vite"; import { baseViteConfig } from "./base.vite.config.ts"; diff --git a/tools/packages/mini-parse/vite.config.ts b/tools/packages/mini-parse/vite.config.ts index 0642feed5..c68173203 100644 --- a/tools/packages/mini-parse/vite.config.ts +++ b/tools/packages/mini-parse/vite.config.ts @@ -1,4 +1,3 @@ -/// import { defineConfig, type LibraryOptions } from "vite"; import { baseViteConfig } from "./base.vite.config.ts"; diff --git a/tools/packages/mini-parse/vitest-util.vite.config.ts b/tools/packages/mini-parse/vitest-util.vite.config.ts index 65cccfd76..037ab2a9c 100644 --- a/tools/packages/mini-parse/vitest-util.vite.config.ts +++ b/tools/packages/mini-parse/vitest-util.vite.config.ts @@ -1,5 +1,4 @@ import { resolve } from "node:path"; -/// import { defineConfig, type LibraryOptions } from "vite"; import { baseViteConfig } from "./base.vite.config.ts"; diff --git a/tools/packages/plugin-test/vite.config.ts b/tools/packages/plugin-test/vite.config.ts index d30eec443..c02828182 100644 --- a/tools/packages/plugin-test/vite.config.ts +++ b/tools/packages/plugin-test/vite.config.ts @@ -1,4 +1,3 @@ -/// import path from "node:path"; import { fileURLToPath } from "node:url"; import type { Plugin, UserConfig } from "vite"; diff --git a/tools/packages/wesl-link/deno.json b/tools/packages/wesl-link/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tools/packages/wesl-link/deno.json @@ -0,0 +1 @@ +{} diff --git a/tools/packages/wesl-link/src/cli.ts b/tools/packages/wesl-link/src/cli.ts index d9d4bfccd..b9cdcf56d 100644 --- a/tools/packages/wesl-link/src/cli.ts +++ b/tools/packages/wesl-link/src/cli.ts @@ -1,4 +1,5 @@ import path from "node:path"; +import { cwd } from "node:process"; import { pathToFileURL } from "node:url"; import { enableTracing, log } from "mini-parse"; import { astToString, link, scopeToString } from "wesl"; @@ -70,7 +71,7 @@ async function parseArgs(args: string[]) { async function linkNormally(argv: CliArgs): Promise { const { baseDir, projectDir, rootModule: rootModuleName } = argv; - const weslRoot = baseDir || process.cwd(); + const weslRoot = baseDir || cwd(); const weslSrc = await loadModules(projectDir, weslRoot, argv.src); const projectDirAbs = path.resolve(projectDir, "src.js"); const projectDirUrl = pathToFileURL(projectDirAbs); diff --git a/tools/packages/wesl-link/src/main.ts b/tools/packages/wesl-link/src/main.ts index c9aa79836..365e38489 100644 --- a/tools/packages/wesl-link/src/main.ts +++ b/tools/packages/wesl-link/src/main.ts @@ -1,7 +1,8 @@ #!/usr/bin/env node +import { argv } from "node:process"; import { hideBin } from "yargs/helpers"; import { cli } from "./cli.ts"; -const rawArgs = hideBin(process.argv); +const rawArgs = hideBin(argv); cli(rawArgs); diff --git a/tools/packages/wesl-packager/deno.json b/tools/packages/wesl-packager/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tools/packages/wesl-packager/deno.json @@ -0,0 +1 @@ +{} diff --git a/tools/packages/wesl-packager/src/PackageWesl.ts b/tools/packages/wesl-packager/src/PackageWesl.ts index afb8990bc..a46431a50 100644 --- a/tools/packages/wesl-packager/src/PackageWesl.ts +++ b/tools/packages/wesl-packager/src/PackageWesl.ts @@ -4,6 +4,8 @@ import path from "node:path"; import { Biome, Distribution } from "@biomejs/js-api"; import { noSuffix, type WeslBundle } from "wesl"; import { loadModules, parseDependencies, zip } from "wesl-tooling"; +// Ideally this would use an import attribute instead of this Vite+Deno bodge +// @ts-types="vite/client" import weslBundleDecl from "../../wesl/src/WeslBundle.ts?raw"; import type { CliArgs } from "./PackagerCli.ts"; diff --git a/tools/packages/wesl-plugin/deno.json b/tools/packages/wesl-plugin/deno.json new file mode 100644 index 000000000..3300b6e15 --- /dev/null +++ b/tools/packages/wesl-plugin/deno.json @@ -0,0 +1,3 @@ +{ + "exclude": ["test/**"] +} diff --git a/tools/packages/wesl-plugin/src/plugins/farm.ts b/tools/packages/wesl-plugin/src/plugins/farm.ts index 32c33a9f3..d8ebad08e 100644 --- a/tools/packages/wesl-plugin/src/plugins/farm.ts +++ b/tools/packages/wesl-plugin/src/plugins/farm.ts @@ -1,4 +1,4 @@ import { createFarmPlugin } from "unplugin"; -import { weslPlugin } from "../WeslPlugin"; +import { weslPlugin } from "../WeslPlugin.ts"; export default createFarmPlugin(weslPlugin); diff --git a/tools/packages/wesl-plugin/src/plugins/nuxt.ts b/tools/packages/wesl-plugin/src/plugins/nuxt.ts index da190ac4b..809f3878f 100644 --- a/tools/packages/wesl-plugin/src/plugins/nuxt.ts +++ b/tools/packages/wesl-plugin/src/plugins/nuxt.ts @@ -1,7 +1,7 @@ import { addVitePlugin, addWebpackPlugin, defineNuxtModule } from "@nuxt/kit"; -import type { WeslPluginOptions } from "../WeslPluginOptions"; -import vite from "./vite"; -import webpack from "./webpack"; +import type { WeslPluginOptions } from "../WeslPluginOptions.ts"; +import vite from "./vite.ts"; +import webpack from "./webpack.ts"; import "@nuxt/schema"; type ModuleOptions = WeslPluginOptions; diff --git a/tools/packages/wesl-reflect/deno.json b/tools/packages/wesl-reflect/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tools/packages/wesl-reflect/deno.json @@ -0,0 +1 @@ +{} diff --git a/tools/packages/wesl-reflect/src/types.d.ts b/tools/packages/wesl-reflect/src/types.d.ts index 7eb8741db..1f4ccbf5a 100644 --- a/tools/packages/wesl-reflect/src/types.d.ts +++ b/tools/packages/wesl-reflect/src/types.d.ts @@ -1,4 +1,8 @@ /** @hidden */ declare module "*?simple_reflect" { - export const structs: WeslStruct[]; + /** + * Need to put the import here for it to augment the global scope + * https://stackoverflow.com/a/51114250/3492994 + */ + export const structs: import("./SimpleReflectExtension.ts").WeslStruct[]; } diff --git a/tools/packages/wesl-reflect/vitest.config.ts b/tools/packages/wesl-reflect/vitest.config.ts index 3e65d3ab4..8c1b3b5a0 100644 --- a/tools/packages/wesl-reflect/vitest.config.ts +++ b/tools/packages/wesl-reflect/vitest.config.ts @@ -1,8 +1,7 @@ -/// import path from "node:path"; import { fileURLToPath } from "node:url"; import type { UserConfig } from "vite"; -import viteWesl from "../wesl-plugin/src/plugins/vite"; +import viteWesl from "../wesl-plugin/src/plugins/vite.ts"; import { simpleReflect } from "./src/SimpleReflectExtension.ts"; const thisPath = fileURLToPath(import.meta.url); diff --git a/tools/packages/wesl-tooling/deno.json b/tools/packages/wesl-tooling/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tools/packages/wesl-tooling/deno.json @@ -0,0 +1 @@ +{} diff --git a/tools/packages/wesl-tooling/test/ParseDependencies.test.ts b/tools/packages/wesl-tooling/test/ParseDependencies.test.ts index 2cf364e7b..79dd69cd8 100644 --- a/tools/packages/wesl-tooling/test/ParseDependencies.test.ts +++ b/tools/packages/wesl-tooling/test/ParseDependencies.test.ts @@ -1,7 +1,7 @@ import { expect, test } from "vitest"; import { parseDependencies } from "../src/ParseDependencies.ts"; -const thisDir = import.meta.dirname; +const thisDir = import.meta.dirname!; test("parseDepenencies finds non-root dependency", () => { const srcs = { diff --git a/tools/packages/wesl/base.vite.config.ts b/tools/packages/wesl/base.vite.config.ts index 89849e77d..f54c9ad82 100644 --- a/tools/packages/wesl/base.vite.config.ts +++ b/tools/packages/wesl/base.vite.config.ts @@ -1,4 +1,3 @@ -/// import { resolve } from "node:path"; import type { UserConfig } from "vite"; import dts from "vite-plugin-dts"; diff --git a/tools/packages/wesl/deno.json b/tools/packages/wesl/deno.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/tools/packages/wesl/deno.json @@ -0,0 +1 @@ +{} diff --git a/tools/packages/wesl/sizetest.vite.config.ts b/tools/packages/wesl/sizetest.vite.config.ts index a15f46887..4f1ebafb8 100644 --- a/tools/packages/wesl/sizetest.vite.config.ts +++ b/tools/packages/wesl/sizetest.vite.config.ts @@ -1,5 +1,4 @@ import { resolve } from "node:path"; -/// import { defineConfig, type LibraryOptions } from "vite"; import { baseViteConfig } from "./base.vite.config.ts"; diff --git a/tools/packages/wesl/src/ClickableError.ts b/tools/packages/wesl/src/ClickableError.ts index 02a481c06..aa1dc12ed 100644 --- a/tools/packages/wesl/src/ClickableError.ts +++ b/tools/packages/wesl/src/ClickableError.ts @@ -75,7 +75,7 @@ export function throwClickableError(params: ClickableErrorParams): void { let oldLimit = 0; // Supported on Chrome https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/stackTraceLimit if ("stackTraceLimit" in Error) { - oldLimit = Error.stackTraceLimit; + oldLimit = Error.stackTraceLimit as any as number; Error.stackTraceLimit = 1; } diff --git a/tools/packages/wesl/src/LinkedWesl.ts b/tools/packages/wesl/src/LinkedWesl.ts index cbefa692a..6c99471e1 100644 --- a/tools/packages/wesl/src/LinkedWesl.ts +++ b/tools/packages/wesl/src/LinkedWesl.ts @@ -1,7 +1,7 @@ import type { SrcMap } from "mini-parse"; import { assertThatDebug } from "./Assertions.ts"; import { errorHighlight, offsetToLineNumber } from "./Util.ts"; -import type { WeslDevice } from "./WeslDevice"; +import type { WeslDevice } from "./WeslDevice.ts"; /** Results of shader compilation. Has {@link WeslGPUCompilationMessage} * which are aware of the WESL module that an error was thrown from. */ @@ -109,7 +109,7 @@ export class LinkedWesl { compilationInfo: GPUCompilationInfo, ): WeslGPUCompilationInfo { return { - __brand: compilationInfo.__brand, + __brand: "GPUCompilationInfo", messages: compilationInfo.messages.map(v => this.mapGPUCompilationMessage(v), ), @@ -134,7 +134,7 @@ export class LinkedWesl { ); return { - __brand: message.__brand, + __brand: "GPUCompilationMessage", type: message.type, message: message.message, offset: srcPosition.position, diff --git a/tools/packages/wesl/src/WeslDevice.ts b/tools/packages/wesl/src/WeslDevice.ts index b31408207..b56af53de 100644 --- a/tools/packages/wesl/src/WeslDevice.ts +++ b/tools/packages/wesl/src/WeslDevice.ts @@ -1,5 +1,5 @@ import { throwClickableError } from "./ClickableError.ts"; -import type { ExtendedGPUValidationError } from "./LinkedWesl"; +import type { ExtendedGPUValidationError } from "./LinkedWesl.ts"; /** * We want the WebGPU compilation errors to point at WESL code. diff --git a/tools/packages/wesl/src/parse/WeslBaseGrammar.ts b/tools/packages/wesl/src/parse/WeslBaseGrammar.ts index 15a6e2832..ecf7ef7ba 100644 --- a/tools/packages/wesl/src/parse/WeslBaseGrammar.ts +++ b/tools/packages/wesl/src/parse/WeslBaseGrammar.ts @@ -1,5 +1,5 @@ import { kind, or, withSepPlus } from "mini-parse"; -import type { WeslTokenKind } from "./WeslStream"; +import type { WeslTokenKind } from "./WeslStream.ts"; export const word = kind("word"); export const keyword = kind("keyword"); diff --git a/tools/packages/wesl/src/test/Tokenizer.test.ts b/tools/packages/wesl/src/test/Tokenizer.test.ts index 5b3e1fcf4..9cc97e431 100644 --- a/tools/packages/wesl/src/test/Tokenizer.test.ts +++ b/tools/packages/wesl/src/test/Tokenizer.test.ts @@ -1,5 +1,5 @@ import { expect, test } from "vitest"; -import { WeslStream, type WeslToken } from "../parse/WeslStream"; +import { WeslStream, type WeslToken } from "../parse/WeslStream.ts"; test("tokenize empty string", () => { const tokenizer = new WeslStream(""); diff --git a/tools/packages/wesl/src/test/WeslDevice.test.ts b/tools/packages/wesl/src/test/WeslDevice.test.ts index 8386ca62a..baa82e572 100644 --- a/tools/packages/wesl/src/test/WeslDevice.test.ts +++ b/tools/packages/wesl/src/test/WeslDevice.test.ts @@ -1,8 +1,7 @@ -import { setTimeout } from "node:timers"; import { SrcMap } from "mini-parse"; import { expect, test, vi } from "vitest"; -import { LinkedWesl } from "../LinkedWesl"; -import { makeWeslDevice } from "../WeslDevice"; +import { LinkedWesl } from "../LinkedWesl.ts"; +import { makeWeslDevice } from "../WeslDevice.ts"; test("WeslDevice doesn't conflict with uncapturederror", async () => { const GPUDeviceMock = vi.fn(function (this: GPUDevice) { diff --git a/tools/packages/wesl/vite.config.ts b/tools/packages/wesl/vite.config.ts index a44bd7381..932cf3101 100644 --- a/tools/packages/wesl/vite.config.ts +++ b/tools/packages/wesl/vite.config.ts @@ -1,4 +1,3 @@ -/// import { defineConfig } from "vite"; import { baseViteConfig } from "./base.vite.config.ts"; diff --git a/tools/packages/wesl/vitest.config.ts b/tools/packages/wesl/vitest.config.ts index 784db15c6..a3f1f0e36 100644 --- a/tools/packages/wesl/vitest.config.ts +++ b/tools/packages/wesl/vitest.config.ts @@ -1,4 +1,3 @@ -/// import { mergeConfig } from "vite"; import { baseViteConfig } from "./base.vite.config.ts"; diff --git a/tools/tsconfig.base.json b/tools/tsconfig.base.json index 04cfbd728..83d228061 100644 --- a/tools/tsconfig.base.json +++ b/tools/tsconfig.base.json @@ -1,7 +1,8 @@ { "compilerOptions": { "target": "ES2024", // we can expect a modern version with WebGPU (but we want stablility, so not "esnext") - "lib": ["ES2024"], + /* We're running in both in Node.js and browsers, but we have to pick one of them for type checking */ + "lib": ["ES2024", "DOM"], "noEmit": true, // we don't transpile with tsgo, we just typecheck @@ -23,8 +24,10 @@ /* strictness in TypeScript */ "strict": true, "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true + "noUncheckedSideEffectImports": true, // "noUncheckedIndexedAccess": true // maybe later, some lint to fix first + "types": [] }, + "include": [], "exclude": ["**/node_modules", "**/dist"] } diff --git a/tools/tsconfig.node.json b/tools/tsconfig.node.json index 3c43c9c69..cef9a065e 100644 --- a/tools/tsconfig.node.json +++ b/tools/tsconfig.node.json @@ -1,8 +1,9 @@ { "extends": "./tsconfig.base.json", "compilerOptions": { - "types": ["node", "@webgpu/types"], - "target": "ESNext", // we presume that dev machines are up to date - "lib": ["ESNext"] - } + "lib": ["ESNext"], + "types": ["@types/node", "@webgpu/types"], + "target": "ESNext" // we presume that dev machines are up to date + }, + "include": [] }