sb-mig
Version:
CLI to rule the world. (and handle stuff related to Storyblok CMS)
70 lines (69 loc) • 2.24 kB
TypeScript
/**
* Options for precompiling TypeScript schema files
*/
export interface PrecompileOptions {
/** Directory to store compiled files (defaults to .sb-mig-cache) */
cacheDir?: string;
/** Whether to clear cache before compiling (defaults to true) */
flushCache?: boolean;
/** Project directory (defaults to process.cwd()) */
projectDir?: string;
}
/**
* Result of precompiling files
*/
export interface PrecompileResult {
/** Successfully compiled files with their output paths */
compiled: Array<{
input: string;
outputCjs: string;
outputEsm: string;
}>;
/** Files that failed to compile */
errors: Array<{
input: string;
error: string;
}>;
}
/**
* Extract the component name from a file path.
* Handles both POSIX (`/`) and Windows (`\`) separators because glob v11
* and node's `fs` APIs return native paths on Windows.
*
* e.g., "/path/to/my-component.sb.ts" -> "my-component.sb"
* "C:\\path\\to\\my-component.sb.ts" -> "my-component.sb"
*/
export declare const extractComponentName: (filePath: string) => string;
/**
* Precompile TypeScript schema files to JavaScript
*
* This uses Rollup with SWC for fast transpilation, producing
* both CommonJS (.cjs) and ESM (.js) outputs.
*
* @param files - Array of TypeScript file paths to compile
* @param options - Precompile options
* @returns Result with compiled files and any errors
*
* @example
* ```ts
* const result = await precompile([
* '/path/to/hero.sb.ts',
* '/path/to/card.sb.ts',
* ], { cacheDir: '.cache/sb-mig' });
*
* // Use compiled CJS files
* for (const compiled of result.compiled) {
* const content = require(compiled.outputCjs);
* }
* ```
*/
export declare function precompile(files: string[], options?: PrecompileOptions): Promise<PrecompileResult>;
/**
* Get the compiled file path for a TypeScript source file
*
* @param tsFilePath - Original .ts file path
* @param options - Options with cacheDir and projectDir
* @param format - Output format ('cjs' or 'esm')
* @returns Path to the compiled file
*/
export declare function getCompiledPath(tsFilePath: string, options?: PrecompileOptions, format?: "cjs" | "esm"): string;