message-compiler.d.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. import { RawSourceMap } from 'source-map';
  2. export declare function baseCompile(source: string, options?: CompileOptions): CodeGenResult;
  3. export declare interface CodeGenOptions {
  4. mode?: 'normal' | 'arrow';
  5. breakLineCode?: '\n' | ';';
  6. needIndent?: boolean;
  7. onError?: CompileErrorHandler;
  8. sourceMap?: boolean;
  9. filename?: string;
  10. }
  11. declare interface CodeGenResult {
  12. code: string;
  13. ast: ResourceNode;
  14. map?: RawSourceMap;
  15. }
  16. export declare type CompileCacheKeyHandler = (source: string) => string;
  17. export declare type CompileDomain = 'tokenizer' | 'parser' | 'generator' | 'transformer' | 'compiler';
  18. export declare interface CompileError extends SyntaxError {
  19. code: number;
  20. domain?: CompileDomain;
  21. location?: SourceLocation;
  22. }
  23. export declare const enum CompileErrorCodes {
  24. EXPECTED_TOKEN = 0,
  25. INVALID_TOKEN_IN_PLACEHOLDER = 1,
  26. UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER = 2,
  27. UNKNOWN_ESCAPE_SEQUENCE = 3,
  28. INVALID_UNICODE_ESCAPE_SEQUENCE = 4,
  29. UNBALANCED_CLOSING_BRACE = 5,
  30. UNTERMINATED_CLOSING_BRACE = 6,
  31. EMPTY_PLACEHOLDER = 7,
  32. NOT_ALLOW_NEST_PLACEHOLDER = 8,
  33. INVALID_LINKED_FORMAT = 9,
  34. MUST_HAVE_MESSAGES_IN_PLURAL = 10,
  35. UNEXPECTED_EMPTY_LINKED_MODIFIER = 11,
  36. UNEXPECTED_EMPTY_LINKED_KEY = 12,
  37. UNEXPECTED_LEXICAL_ANALYSIS = 13,
  38. __EXTEND_POINT__ = 14
  39. }
  40. export declare type CompileErrorHandler = (error: CompileError) => void;
  41. export declare type CompileOptions = {
  42. warnHtmlMessage?: boolean;
  43. onCacheKey?: CompileCacheKeyHandler;
  44. } & TransformOptions & CodeGenOptions & ParserOptions & TokenizeOptions;
  45. export declare function createCompileError<T extends number>(code: T, loc: SourceLocation | null, options?: CreateCompileErrorOptions): CompileError;
  46. export declare interface CreateCompileErrorOptions {
  47. domain?: CompileDomain;
  48. messages?: {
  49. [code: number]: string;
  50. };
  51. args?: unknown[];
  52. }
  53. export declare function createLocation(start: Position, end: Position, source?: string): SourceLocation;
  54. export declare function createParser(options?: ParserOptions): Parser;
  55. export declare function createPosition(line: number, column: number, offset: number): Position;
  56. /* Excluded from this release type: defaultOnError */
  57. export declare const ERROR_DOMAIN = "parser";
  58. /* Excluded from this release type: errorMessages */
  59. export declare const enum HelperNameMap {
  60. LIST = "list",
  61. NAMED = "named",
  62. PLURAL = "plural",
  63. LINKED = "linked",
  64. MESSAGE = "message",
  65. TYPE = "type",
  66. INTERPOLATE = "interpolate",
  67. NORMALIZE = "normalize"
  68. }
  69. export declare type Identifier = string;
  70. export declare interface LinkedKeyNode extends Node_2 {
  71. type: NodeTypes.LinkedKey;
  72. value: string;
  73. }
  74. export declare interface LinkedModifierNode extends Node_2 {
  75. type: NodeTypes.LinkedModifier;
  76. value: Identifier;
  77. }
  78. export declare interface LinkedNode extends Node_2 {
  79. type: NodeTypes.Linked;
  80. modifier?: LinkedModifierNode;
  81. key: LinkedKeyNode | NamedNode | ListNode | LiteralNode;
  82. }
  83. export declare interface ListNode extends Node_2 {
  84. type: NodeTypes.List;
  85. index: number;
  86. }
  87. export declare interface LiteralNode extends Node_2 {
  88. type: NodeTypes.Literal;
  89. value: string;
  90. }
  91. export declare const LocationStub: SourceLocation;
  92. declare type MessageElementNode = TextNode | NamedNode | ListNode | LiteralNode | LinkedNode;
  93. export declare interface MessageNode extends Node_2 {
  94. type: NodeTypes.Message;
  95. items: MessageElementNode[];
  96. }
  97. export declare interface NamedNode extends Node_2 {
  98. type: NodeTypes.Named;
  99. key: Identifier;
  100. }
  101. declare interface Node_2 {
  102. type: NodeTypes;
  103. start: number;
  104. end: number;
  105. loc?: SourceLocation;
  106. }
  107. export { Node_2 as Node }
  108. export declare const enum NodeTypes {
  109. Resource = 0,
  110. Plural = 1,
  111. Message = 2,
  112. Text = 3,
  113. Named = 4,
  114. List = 5,
  115. Linked = 6,
  116. LinkedKey = 7,
  117. LinkedModifier = 8,
  118. Literal = 9
  119. }
  120. export declare interface Parser {
  121. parse(source: string): ResourceNode;
  122. }
  123. export declare interface ParserOptions {
  124. location?: boolean;
  125. onError?: CompileErrorHandler;
  126. }
  127. export declare interface PluralNode extends Node_2 {
  128. type: NodeTypes.Plural;
  129. cases: MessageNode[];
  130. }
  131. export declare interface Position {
  132. offset: number;
  133. line: number;
  134. column: number;
  135. }
  136. export declare interface ResourceNode extends Node_2 {
  137. type: NodeTypes.Resource;
  138. body: MessageNode | PluralNode;
  139. helpers?: string[];
  140. }
  141. export declare interface SourceLocation {
  142. start: Position;
  143. end: Position;
  144. source?: string;
  145. }
  146. export declare interface TextNode extends Node_2 {
  147. type: NodeTypes.Text;
  148. value: string;
  149. }
  150. export declare interface TokenizeOptions {
  151. location?: boolean;
  152. onError?: CompileErrorHandler;
  153. }
  154. export declare interface TransformOptions {
  155. onError?: CompileErrorHandler;
  156. }
  157. export { }