comptime.ts
Version:
<div align="center"> <img src="https://raw.githubusercontent.com/feathers-studio/comptime.ts/master/docs/comptime.ts.svg" alt="Hyperactive"> </div>
50 lines (49 loc) • 2.02 kB
TypeScript
import * as ts from "typescript";
import { type ModuleResolver } from "./resolve.ts";
export interface Replacement {
start: number;
end: number;
replacement: string;
}
export type Replacements = Record<string, Replacement[]>;
export declare function assertNoSyntaxErrors(tsCode: string): void;
export declare function eraseTypes(tsCode: string): string;
export declare function query<R extends ts.Node>(root: ts.Node, query: ts.SyntaxKind, filter?: (node: R) => boolean): R[];
export declare function getEnclosingImportDeclaration(node: ts.Node): ts.ImportDeclaration;
export declare function getEnclosingStatement(node: ts.Node): ts.Statement;
type ImportNode = ts.ImportSpecifier | ts.ImportClause | ts.NamespaceImport;
export declare const isImportNode: (node: ts.Node) => node is ImportNode;
export declare function isNodeModules(filePath: string): boolean;
interface BaseConfig {
resolver?: ModuleResolver;
}
interface ConfigByConfig extends BaseConfig {
rootDir: string;
tsconfig: ts.CompilerOptions;
tsConfigPath?: never;
}
interface ConfigByPath extends BaseConfig {
rootDir?: never;
tsconfig?: never;
tsconfigPath: string;
}
interface ConfigByImplicitConfig extends BaseConfig {
rootDir?: never;
tsconfig?: never;
tsconfigPath?: never;
}
export type Filterable<T> = T & {
filter?: (id: string) => boolean;
};
export type GetComptimeReplacementsOpts = ConfigByConfig | ConfigByPath | ConfigByImplicitConfig;
export declare function getTsConfig(opts?: GetComptimeReplacementsOpts): {
configDir: string;
tsConfig: ts.CompilerOptions;
};
export declare function getComptimeReplacements(opts?: Filterable<GetComptimeReplacementsOpts>): Promise<Replacements>;
export type ApplyComptimeReplacementsOpts = GetComptimeReplacementsOpts & {
/** Default: `$configDir/out` */
outdir?: string;
};
export declare function applyComptimeReplacements(opts: Filterable<ApplyComptimeReplacementsOpts>, replacements: Replacements): Promise<void>;
export {};