版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

83 строки
2.3 KiB

  1. import { CompileError, ResourceNode } from '@intlify/message-compiler';
  2. import { SourceMapGenerator } from 'source-map';
  3. import type { RawSourceMap } from 'source-map';
  4. /**
  5. * Compilation dev environments
  6. *
  7. * @public
  8. */
  9. export type DevEnv = 'development' | 'production';
  10. export interface Position {
  11. line: number;
  12. column: number;
  13. offset?: number;
  14. }
  15. export interface SourceLocationable {
  16. start?: number;
  17. loc?: {
  18. start: Position;
  19. end: Position;
  20. } | null;
  21. }
  22. /**
  23. * @internal
  24. */
  25. export interface CodeGenOptions {
  26. type?: 'plain' | 'sfc' | 'bare';
  27. legacy?: boolean;
  28. bridge?: boolean;
  29. exportESM?: boolean;
  30. source?: string;
  31. sourceMap?: boolean;
  32. filename?: string;
  33. inSourceMap?: RawSourceMap;
  34. isGlobal?: boolean;
  35. locale?: string;
  36. env?: DevEnv;
  37. forceStringify?: boolean;
  38. useClassComponent?: boolean;
  39. allowDynamic?: boolean;
  40. strictMessage?: boolean;
  41. escapeHtml?: boolean;
  42. onWarn?: (msg: string) => void;
  43. onError?: (msg: string, extra?: {
  44. source: string;
  45. path: string;
  46. code?: CompileError['code'];
  47. domain?: CompileError['domain'];
  48. location?: CompileError['location'];
  49. }) => void;
  50. }
  51. export interface CodeGenContext {
  52. source?: string;
  53. code: string;
  54. indentLevel: number;
  55. filename: string;
  56. line: number;
  57. column: number;
  58. offset: number;
  59. env: DevEnv;
  60. forceStringify: boolean;
  61. map?: SourceMapGenerator;
  62. }
  63. export interface CodeGenerator {
  64. context(): CodeGenContext;
  65. push<Node extends SourceLocationable>(code: string, node?: Node, name?: string): void;
  66. indent(withNewLine?: boolean): void;
  67. deindent(withNewLine?: boolean): void;
  68. newline(): void;
  69. pushline<Node extends SourceLocationable>(code: string, node?: Node, name?: string): void;
  70. }
  71. /**
  72. * @internal
  73. */
  74. export interface CodeGenResult<ASTNode, CodeGenError extends Error = Error> {
  75. code: string;
  76. ast: ASTNode;
  77. errors?: CodeGenError[];
  78. map?: RawSourceMap;
  79. }
  80. export declare function createCodeGenerator(options?: CodeGenOptions): CodeGenerator;
  81. export declare function generateMessageFunction(msg: string, options: CodeGenOptions, path?: string[]): CodeGenResult<ResourceNode>;
  82. export declare function mapLinesColumns(resMap: RawSourceMap, codeMaps: Map<string, RawSourceMap>, inSourceMap?: RawSourceMap): RawSourceMap | null;