Transpile separately in both build and test steps

This means we avoid doing a type checking pass twice
This commit is contained in:
Henry Mercer
2025-08-22 12:30:55 +01:00
parent 4da503e0f5
commit 8a3bfe665b
18 changed files with 96 additions and 112 deletions

2
.gitignore vendored
View File

@@ -1,7 +1,7 @@
# Dependency directories
node_modules/
# Build output for tests
lib-test/
build/
# Java build files
.gradle/
*.class

View File

@@ -5,8 +5,8 @@
"**/.DS_Store": true,
// transpiled JavaScript
"build": true,
"lib": true,
"lib-test": true,
},
// Installing a new Node package often triggers VS Code's git limit warnings as there is typically
// an intermediate stage where many files are modified. This setting suppresses these warnings.

View File

@@ -5,7 +5,6 @@ import { fileURLToPath } from "node:url";
import * as esbuild from "esbuild";
import { globSync } from "glob";
import { copy } from "esbuild-plugin-copy";
import { typecheckPlugin } from "@jgoz/esbuild-plugin-typecheck";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
@@ -39,7 +38,7 @@ const context = await esbuild.context({
format: "cjs",
outdir: OUT_DIR,
platform: "node",
plugins: [typecheckPlugin(), copyDefaults, onEndPlugin],
plugins: [copyDefaults, onEndPlugin],
});
await context.rebuild();

View File

@@ -26,8 +26,8 @@ export default [
{
ignores: [
"**/webpack.config.js",
"build/**/*",
"lib/**/*",
"lib-test/**/*",
"src/testdata/**/*",
"tests/**/*",
"build.mjs",

View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

15
lib/analyze-action.js generated
View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

15
lib/init-action.js generated
View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -54902,18 +54902,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -54959,7 +54961,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -36374,18 +36374,20 @@ var require_package = __commonJS({
private: true,
description: "CodeQL action",
scripts: {
build: "node build.mjs",
test: "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
_build_comment: "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
build: "npm run transpile && node build.mjs",
lint: "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
removeNPMAbsolutePaths: "removeNPMAbsolutePaths . --force",
test: "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
transpile: "tsc --build --verbose"
},
ava: {
typescript: {
rewritePaths: {
"src/": "lib-test/"
"src/": "build/"
},
compile: false
}
@@ -36431,7 +36433,6 @@ var require_package = __commonJS({
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

18
package-lock.json generated
View File

@@ -48,7 +48,6 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",
@@ -1517,23 +1516,6 @@
"node": ">=18.0.0"
}
},
"node_modules/@jgoz/esbuild-plugin-typecheck": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/@jgoz/esbuild-plugin-typecheck/-/esbuild-plugin-typecheck-4.0.3.tgz",
"integrity": "sha512-tJzjV3pALNuEQ3+w18jt58Y5MogN+Hm2vmEUR2EcLr9+5PR/X0JLAAg0+6AOw168GRZgKzWKK4zdzY9uMT708Q==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"@jgoz/esbuild-plugin-livereload": ">=2.1.3",
"esbuild": "0.17.x || 0.18.x || 0.19.x || 0.20.x || 0.21.x || 0.22.x || 0.23.x || 0.24.x || 0.25.x",
"typescript": ">= 3.5"
},
"peerDependenciesMeta": {
"@jgoz/esbuild-plugin-livereload": {
"optional": true
}
}
},
"node_modules/@mapbox/node-pre-gyp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.0.tgz",

View File

@@ -4,18 +4,20 @@
"private": true,
"description": "CodeQL action",
"scripts": {
"build": "node build.mjs",
"test": "tsc --project tsconfig.test.json && ava src/**.test.ts --serial --verbose",
"test-debug": "ava src/**.test.ts --serial --verbose --timeout=20m",
"_build_comment": "echo 'Run the full build so we typecheck the project and can reuse the transpiled files in npm test'",
"build": "npm run transpile && node build.mjs",
"lint": "eslint --report-unused-disable-directives --max-warnings=0 .",
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"lint-ci": "SARIF_ESLINT_IGNORE_SUPPRESSED=true eslint --report-unused-disable-directives --max-warnings=0 . --format @microsoft/eslint-formatter-sarif --output-file=eslint.sarif",
"removeNPMAbsolutePaths": "removeNPMAbsolutePaths . --force"
"lint-fix": "eslint --report-unused-disable-directives --max-warnings=0 . --fix",
"removeNPMAbsolutePaths": "removeNPMAbsolutePaths . --force",
"test": "npm run transpile && ava src/**.test.ts --serial --verbose",
"test-debug": "npm run test -- --timeout=20m",
"transpile": "tsc --build --verbose"
},
"ava": {
"typescript": {
"rewritePaths": {
"src/": "lib-test/"
"src/": "build/"
},
"compile": false
}
@@ -61,7 +63,6 @@
"@eslint/compat": "^1.3.2",
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.33.0",
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
"@microsoft/eslint-formatter-sarif": "^3.1.0",
"@types/archiver": "^6.0.3",
"@types/console-log-level": "^1.4.5",

View File

@@ -3,9 +3,10 @@
/* Basic Options */
"lib": ["ES2021"],
"target": "ES2021",
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"noEmit": true, /* Do not emit outputs. */
"sourceMap": true, /* Generates corresponding '.map' file. */
"module": "commonjs",
"outDir": "./build",
"rootDir": "./src",
"sourceMap": true,
/* Strict Type-Checking Options */
"strict": true, /* Enable all strict type-checking options. */

View File

@@ -1,9 +0,0 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "./tsconfig.json",
"compilerOptions": {
"noEmit": false,
"outDir": "./lib-test",
"rootDir": "./src",
},
}