Skip to content

Commit

Permalink
Refactor tsHarness
Browse files Browse the repository at this point in the history
  • Loading branch information
kitten committed Nov 24, 2023
1 parent 5a0a6a0 commit 68eb5cc
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 62 deletions.
28 changes: 0 additions & 28 deletions src/__tests__/tsHarness/compilerOptions.ts

This file was deleted.

4 changes: 2 additions & 2 deletions src/__tests__/tsHarness/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ export type { TypeHost } from './typeCheckerHost';

export { createTypeChecker } from '@0no-co/typescript.js';
export { createTypeHost } from './typeCheckerHost';
export { createVirtualHost } from './virtualHost';
export { readFileFromRoot, readVirtualModule } from './virtualModules';

export { createVirtualHost, readFileFromRoot, readVirtualModule } from './virtualHost';

export function runDiagnostics(host: TypeHost) {
const checker = createTypeChecker(host);
Expand Down
2 changes: 1 addition & 1 deletion src/__tests__/tsHarness/typeCheckerHost.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
createTypeChecker,
} from '@0no-co/typescript.js';

import { compilerOptions } from './compilerOptions';
import { compilerOptions } from './virtualHost';

import {
findSourceFile,
Expand Down
54 changes: 52 additions & 2 deletions src/__tests__/tsHarness/virtualHost.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,40 @@
import {
ModuleResolutionKind,
CompilerOptions,
ResolvedModule,
CompilerHost,
ScriptTarget,
SourceFile,
JsxEmit,
createModuleResolutionCache,
resolveModuleName,
createSourceFile,
} from '@0no-co/typescript.js';

import fs from 'node:fs';
import path from 'node:path/posix';
import { compilerOptions } from './compilerOptions';
import { readVirtualModule } from './virtualModules';

export const compilerOptions: CompilerOptions = {
rootDir: '/',
moduleResolution: ModuleResolutionKind.Bundler,
skipLibCheck: true,
skipDefaultLibCheck: true,
allowImportingTsExtensions: true,
allowSyntheticDefaultImports: true,
resolvePackageJsonExports: true,
resolvePackageJsonImports: true,
resolveJsonModule: true,
esModuleInterop: true,
jsx: 1 satisfies JsxEmit.Preserve,
target: 99 satisfies ScriptTarget.Latest,
checkJs: false,
allowJs: true,
strict: false,
noEmit: true,
noLib: false,
disableSizeLimit: true,
disableSolutionSearching: true,
};

export type FileData = Uint8Array | string;
export type Files = Record<string, FileData>;
Expand Down Expand Up @@ -65,6 +89,32 @@ class Directory {
}
}

const virtualRoot = path.resolve(__dirname, '../../../');

export function readFileFromRoot(name: string): FileData {
return fs.readFileSync(path.join(virtualRoot, name));
}

export function readVirtualModule(moduleName: string): Files {
const files: Files = {};

function walk(directory: string) {
for (const entry of fs.readdirSync(path.resolve(virtualRoot, directory))) {
const file = path.join(directory, entry);
const target = path.resolve(virtualRoot, file);
const stat = fs.statSync(target);
if (stat.isDirectory()) {
walk(file);
} else {
files[file] = fs.readFileSync(target).toString();
}
}
}

walk(path.join('node_modules', moduleName));
return files;
}

export type VirtualHost = ReturnType<typeof createVirtualHost> extends infer U
? U extends CompilerHost
? U
Expand Down
29 changes: 0 additions & 29 deletions src/__tests__/tsHarness/virtualModules.ts

This file was deleted.

0 comments on commit 68eb5cc

Please sign in to comment.