import { type ExtractSummary } from "./extract"; export declare const PLUGIN_NAME = "yakudoc-ts-plugin"; interface PluginEntry { name?: string; } /** * tsconfig.json(JSONC)のテキストに compilerOptions.plugins エントリを追加する。 * コメントや既存のフォーマットは保持する。登録済みなら何もしない。 * * effectivePlugins には extends 解決後の実効 plugins を渡す。tsconfig が * extends 先から plugins を継承している場合、ローカルに plugins を新設すると * TypeScript のマージ規則(キー単位の置換)で継承分が丸ごと消えるため、 * 実効 plugins を種にしてローカル配列を組み立てる。 * * 注意: この実装は packages/yakudoc-vscode/src/tsconfigRegistration.ts の * addYakudocPlugin と対で保守する(拡張側は typescript 非依存のため共有していない)。 */ export declare function addPluginToTsconfig(tsconfigText: string, pluginName?: string, effectivePlugins?: PluginEntry[]): { text: string; changed: boolean; }; /** * extends を解決した後の実効 compilerOptions.plugins を返す。 * 解決できない場合(tsconfig が壊れている等)は undefined。 */ export declare function effectivePluginsOf(configPath: string): PluginEntry[] | undefined; export interface InitOptions { /** プロジェクトルート。tsconfig 探索と出力パスの基準 */ projectDir: string; /** tsconfig.json のパス(既定: projectDir から探索) */ tsconfigPath?: string; /** translations.json の出力先(既定: .yakudoc/translations.json) */ outPath?: string; /** 翻訳先の言語コード。指定すると .yakudoc/config.json に保存される */ targetLang?: string; } export interface InitSummary { /** 登録対象になった tsconfig.json の絶対パス */ tsconfigPath: string; /** 今回プラグインを追記したか(既に登録済みなら false) */ pluginRegistered: boolean; /** 初回 extract の結果 */ extract: ExtractSummary; /** 有効な翻訳先言語コード(--lang > config.json > 既定 ja) */ targetLang: string; /** config.json の絶対パス(表示用) */ configPath: string; /** 今回 config.json に翻訳先言語を保存したか */ configWritten: boolean; /** * yakudoc-ts-plugin が projectDir から解決できるか。 * tsserver は解決できないプラグインを黙って無視するため、false のまま * 使い始めると「登録したのに表示が変わらない」状態になる(CLI が警告する)。 */ pluginInstalled: boolean; } /** * yakudoc の導入を一括で行う。 * * 1. tsconfig.json に yakudoc-ts-plugin を登録する(登録済みなら何もしない) * 2. extract を実行して .yakudoc/translations.json を生成する * 3. targetLang 指定時は .yakudoc/config.json に翻訳先言語を保存する * * いずれの手順も冪等で、既存の訳文や tsconfig のコメントは保持される。 */ export declare function initProject(options: InitOptions): InitSummary; export {};