File size: 3,735 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
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;
}
|