vite-plugin-vue-i18n-typescript
Version:
Type-safe Vue i18n translations. Auto-generates TypeScript types from JSON locale files. Catch translation errors at compile time with full IDE autocomplete.
91 lines (85 loc) • 3.48 kB
text/typescript
import { V as VirtualKeysDtsOptions, C as CustomLogger, G as GenerationOptions, J as JSONObject, c as GenerateTypesOptions, d as GenerateTypesResult } from './types-D-t7iqK-.cjs';
export { e as createColoredLogger, f as createConsoleLogger } from './types-D-t7iqK-.cjs';
import { ResolvedConfig } from 'vite';
import './vite-env-override-components.cjs';
import 'vue-i18n';
/**
* Normalize and validate plugin configuration
*/
declare function normalizeConfig(userOptions: VirtualKeysDtsOptions | undefined, logger: CustomLogger, cfg?: {
root?: string;
} | ResolvedConfig): GenerationOptions;
/** String enum keeps runtime minimal and DX straightforward */
declare enum SymbolEnum {
imports = "_imports",
messages = "messages",
hrmHotUpdate = "_hrmHotUpdate",
useI18nApp = "useI18nApp",
availableLocales = "availableLocales",
fallbackLocales = "fallbackLocales",
translationWrapper = "translationWrapper",
createI18nInstance = "createI18nInstance",
createI18nInstancePlugin = "createI18nInstancePlugin",
useI18nTypeSafe = "useI18nTypeSafe"
}
/** Typed, compact class with ergonomic helpers */
declare class RuntimeMethods {
private readonly _data;
private readonly _config;
constructor(messagesCombined: CombinedMessages);
/** Deterministic full-file content (all sections in HelperMethodsOrder) */
toFileContent(defaultExport?: string): string;
parseSymbolEnumKey(key: string | SymbolEnum): string | undefined;
getFileContentFor(target: string | SymbolEnum, separator?: string): string;
}
declare class CombinedMessages<TLanguages extends string = string, TMessages extends JSONObject = JSONObject> {
messages: Record<TLanguages | string, TMessages>;
config: GenerationOptions;
readonly messagesJsonString: string;
readonly keys: string[];
readonly baseLocaleMessages: TMessages;
readonly languages: TLanguages[];
readonly contentId: string;
readonly keysId: string;
readonly fallbackLocales: Record<string, string[]>;
constructor(messages: Record<TLanguages | string, TMessages>, config: GenerationOptions);
get typesOutpath(): string;
get virtualOutPath(): string | undefined;
languagesTuple(): string;
languagesUnion(): string;
writeTypesFile(): Promise<void>;
writeVirtualFile(): Promise<void>;
static getFallBackLocales(langs: string[]): Record<string, string[]>;
getRuntimeContent(): string;
private _runtimeMethodsCache;
getRuntimeMethods(): RuntimeMethods;
loadVirtualModuleCode(moduleToResolve: string | SymbolEnum): string;
writeFiles(): Promise<void>;
getTypesContent(): string;
/**
* Validate messages and log conflicts
*/
validateMessages(): void;
}
/**
* Generate TypeScript definitions from Vue i18n locale files
*
* @param options - Configuration options for generation
* @returns Promise with generation result
*
* @example
* ```typescript
* import { generateI18nTypes } from 'unplugin- i18n-typescript-generation/api'
*
* const result = await generateI18nTypes({
* baseLocale: 'en',
* include: ['src/locales/*.json'],
* typesPath: 'src/i18n/i18n.gen.d.ts',
* verbose: true
* })
*
* console.log(`Generated ${result.filesWritten} files for ${result.locales.length} locales`)
* ```
*/
declare function generateI18nTypes(options?: GenerateTypesOptions): Promise<GenerateTypesResult>;
export { CombinedMessages, generateI18nTypes, normalizeConfig };