i18next-parser
Version:
Command Line tool for i18next
133 lines (121 loc) • 3.72 kB
TypeScript
import EventEmitter from 'events'
export type SupportedLexer =
| 'HandlebarsLexer'
| 'HTMLLexer'
| 'JavascriptLexer'
| 'JsxLexer'
// BaseLexer is not importable therefore this is the best if done simple
export class CustomLexerClass extends EventEmitter {}
export type CustomLexer = typeof CustomLexerClass
export interface CustomLexerConfig extends Record<string, unknown> {
lexer: CustomLexer
}
export interface HandlebarsLexerConfig {
lexer: 'HandlebarsLexer'
functions?: string[]
}
export interface HTMLLexerConfig {
lexer: 'HTMLLexer'
functions?: string[]
attr?: string
optionAttr?: string
}
export interface JavascriptLexerConfig {
lexer: 'JavascriptLexer'
functions?: string[]
namespaceFunctions?: string[]
attr?: string
parseGenerics?: false
typeMap?: Record<string, unknown>
}
export interface JavascriptWithTypesLexerConfig {
lexer: 'JavascriptLexer'
functions?: string[]
namespaceFunctions?: string[]
attr?: string
parseGenerics: true
typeMap: Record<string, unknown>
}
export interface JsxLexerConfig {
lexer: 'JsxLexer'
functions?: string[]
namespaceFunctions?: string[]
componentFunctions?: string[]
attr?: string
transSupportBasicHtmlNodes?: boolean
transKeepBasicHtmlNodesFor?: string[]
parseGenerics?: false
typeMap?: Record<string, unknown>
}
export interface JsxWithTypesLexerConfig {
lexer: 'JsxLexer'
functions?: string[]
namespaceFunctions?: string[]
componentFunctions?: string[]
attr?: string
transSupportBasicHtmlNodes?: boolean
transKeepBasicHtmlNodesFor?: string[]
parseGenerics: true
typeMap: Record<string, unknown>
/**
* Identity functions within trans that should be parsed for their
* first arguments. Used for making typecheckers happy in a safe way: e.g., if in your code, you use:
*
* ```
* <Trans>Hello {castToString({ name })}</Trans>
* ```
*
* you'd want to pass in `transIdentityFunctionsToIgnore: ['castToString']`
*/
transIdentityFunctionsToIgnore?: string[]
}
export type LexerConfig =
| HandlebarsLexerConfig
| HTMLLexerConfig
| JavascriptLexerConfig
| JavascriptWithTypesLexerConfig
| JsxLexerConfig
| JsxWithTypesLexerConfig
| CustomLexerConfig
export interface UserConfig {
contextSeparator?: string
createOldCatalogs?: boolean
defaultNamespace?: string
defaultValue?:
| string
| ((
locale?: string,
namespace?: string,
key?: string,
value?: string
) => string)
indentation?: number
keepRemoved?: boolean | readonly RegExp[]
keySeparator?: string | false
lexers?: {
hbs?: (SupportedLexer | CustomLexer | LexerConfig)[]
handlebars?: (SupportedLexer | CustomLexer | LexerConfig)[]
htm?: (SupportedLexer | CustomLexer | LexerConfig)[]
html?: (SupportedLexer | CustomLexer | LexerConfig)[]
mjs?: (SupportedLexer | CustomLexer | LexerConfig)[]
js?: (SupportedLexer | CustomLexer | LexerConfig)[]
ts?: (SupportedLexer | CustomLexer | LexerConfig)[]
jsx?: (SupportedLexer | CustomLexer | LexerConfig)[]
tsx?: (SupportedLexer | CustomLexer | LexerConfig)[]
default?: (SupportedLexer | CustomLexer | LexerConfig)[]
}
lineEnding?: 'auto' | 'crlf' | '\r\n' | 'cr' | '\r' | 'lf' | '\n'
locales?: string[]
namespaceSeparator?: string | false
output?: string
pluralSeparator?: string
input?: string | string[]
sort?: boolean | ((a: string, b: string) => -1 | 0 | 1)
verbose?: boolean
failOnWarnings?: boolean
failOnUpdate?: boolean
customValueTemplate?: Record<string, string> | null
resetDefaultValueLocale?: string | null
i18nextOptions?: Record<string, unknown> | null
yamlOptions?: Record<string, unknown> | null
}