chore: add TypeScript dead-code checks (#60)

* chore: add TypeScript dead-code checks

* chore: trim stale Knip ignores

* Fix CI smoke and artifact checks
This commit is contained in:
Andrey Avtomonov 2026-05-13 13:33:28 +02:00 committed by GitHub
parent 721f1a998f
commit bcb0d2f8f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
29 changed files with 818 additions and 220 deletions

View file

@ -151,10 +151,6 @@ export function publicNpmPackageJson(cliPackageJson, dependencies, version = PUB
}
function bundledWorkspacePackageJson(packageJson) {
const dependencies = Object.fromEntries(
Object.entries(packageJson.dependencies ?? {}).filter(([name]) => !isWorkspacePackageName(name)),
);
return {
name: packageJson.name,
version: packageJson.version ?? PUBLIC_NPM_PACKAGE_VERSION,
@ -164,7 +160,6 @@ function bundledWorkspacePackageJson(packageJson) {
types: packageJson.types,
exports: packageJson.exports,
files: packageJson.files,
dependencies: sortedObject(Object.entries(dependencies)),
license: packageJson.license ?? 'Apache-2.0',
};
}

View file

@ -250,7 +250,7 @@ describe('createPublicNpmPackageTree', () => {
await readFile(join(layout.packRoot, 'node_modules', '@ktx', 'context', 'package.json'), 'utf8'),
);
assert.equal(bundledContextJson.private, true);
assert.deepEqual(bundledContextJson.dependencies, { yaml: '^2.8.2' });
assert.equal(bundledContextJson.dependencies, undefined);
} finally {
await rm(root, { recursive: true, force: true });
}

View file

@ -22,10 +22,6 @@ function publicPackagePattern(text) {
return new RegExp(text.replaceAll('{package}', escapeRegExp(publicNpmPackageName())));
}
function runtimeWheelPackagePattern(text) {
return new RegExp(text.replaceAll('{package}', escapeRegExp(runtimeWheelPackageName())));
}
describe('standalone example docs', () => {
it('documents the local warehouse example from the examples index', async () => {
const examples = await readText('examples/README.md');

View file

@ -459,9 +459,6 @@ export function npmSmokePackageJson(layout) {
dependencies: {
'@kaelio/ktx': `file:${layout.cliTarball}`,
},
devDependencies: {
'better-sqlite3': '^12.6.2',
},
};
}
@ -485,11 +482,11 @@ if (typeof cli.runKtxCli !== 'function') {
export function npmRuntimeSmokeSource() {
return `
import assert from 'node:assert/strict';
import Database from 'better-sqlite3';
import { execFile } from 'node:child_process';
import { access, mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { DatabaseSync } from 'node:sqlite';
import { promisify } from 'node:util';
const execFileAsync = promisify(execFile);
@ -569,7 +566,7 @@ function getRunId(stdout) {
}
async function writeSqliteWarehouse(projectDir) {
const database = new Database(join(projectDir, 'warehouse.db'));
const database = new DatabaseSync(join(projectDir, 'warehouse.db'));
try {
database.exec(\`
DROP TABLE IF EXISTS orders;

View file

@ -27,8 +27,6 @@ import {
writeArtifactManifest,
} from './package-artifacts.mjs';
const STALE_METABASE_UNSUPPORTED = ['Standalone Metabase scheduled fetch', 'is intentionally unsupported'].join(' ');
async function writeJson(path, value) {
await writeFile(path, `${JSON.stringify(value, null, 2)}\n`);
}
@ -420,9 +418,7 @@ describe('verification snippets', () => {
assert.deepEqual(packageJson.dependencies, {
'@kaelio/ktx': `file:${layout.cliTarball}`,
});
assert.deepEqual(packageJson.devDependencies, {
'better-sqlite3': '^12.6.2',
});
assert.equal(packageJson.devDependencies, undefined);
assert.equal(
npmSmokePnpmWorkspaceYaml(),
['packages:', ' - "."', 'allowBuilds:', ' better-sqlite3: true', ''].join('\n'),
@ -465,7 +461,7 @@ describe('verification snippets', () => {
assert.match(source, /semantic-layer', 'warehouse', 'orders\.yaml'/);
assert.match(source, /run\('pnpm', \[\s*'exec',\s*'ktx',\s*'sl',\s*'list'/);
assert.match(source, /orders\.order_count/);
assert.match(source, /sqlite3/);
assert.match(source, /node:sqlite/);
assert.match(source, /driver: sqlite/);
assert.match(source, /path: warehouse\.db/);
assert.match(source, /live-database/);
@ -473,7 +469,7 @@ describe('verification snippets', () => {
assert.match(source, /"mode": "compile_only"/);
assert.match(source, /"mode": "executed"/);
assert.match(source, /ktx sl query sqlite execute/);
assert.match(source, /import Database from 'better-sqlite3'/);
assert.match(source, /import \{ DatabaseSync \} from 'node:sqlite'/);
assert.doesNotMatch(source, /run\('python'/);
assert.match(source, /KTX_RUNTIME_ROOT/);
assert.match(source, /managed-runtime/);

View file

@ -9,7 +9,6 @@ import { runWorkspaceKtx } from './run-ktx.mjs';
const scriptDir = dirname(fileURLToPath(import.meta.url));
const ktxRootDir = resolve(scriptDir, '..');
const repoRootDir = resolve(ktxRootDir, '..');
const defaultProjectDir = resolve(ktxRootDir, 'examples/orbit-relationship-verification');
const defaultReportPath = resolve(
ktxRootDir,