index.d.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Vue, { VNode, VNodeDirective } from 'vue'
  2. import { Readable } from 'stream'
  3. export declare function createRenderer(options?: RendererOptions): Renderer
  4. export declare function createBundleRenderer(
  5. bundle: string | object,
  6. options?: BundleRendererOptions
  7. ): BundleRenderer
  8. type RenderCallback = (err: Error | null, html: string) => void
  9. interface Renderer {
  10. renderToString(vm: Vue, callback: RenderCallback): void
  11. renderToString(vm: Vue, context: object, callback: RenderCallback): void
  12. renderToString(vm: Vue): Promise<string>
  13. renderToString(vm: Vue, context: object): Promise<string>
  14. renderToStream(vm: Vue, context?: object): Readable
  15. }
  16. interface BundleRenderer {
  17. renderToString(callback: RenderCallback): void
  18. renderToString(context: object, callback: RenderCallback): void
  19. renderToString(): Promise<string>
  20. renderToString(context: object): Promise<string>
  21. renderToStream(context?: object): Readable
  22. }
  23. interface RendererOptions {
  24. template?: string
  25. inject?: boolean
  26. shouldPreload?: (file: string, type: string) => boolean
  27. shouldPrefetch?: (file: string, type: string) => boolean
  28. cache?: RenderCache
  29. directives?: {
  30. [key: string]: (vnode: VNode, dir: VNodeDirective) => void
  31. }
  32. }
  33. interface BundleRendererOptions extends RendererOptions {
  34. clientManifest?: object
  35. serializer?: (state: object) => string
  36. runInNewContext?: boolean | 'once'
  37. basedir?: string
  38. }
  39. interface RenderCache {
  40. get: (key: string, cb?: (res: string) => void) => string | void
  41. set: (key: string, val: string) => void
  42. has?: (key: string, cb?: (hit: boolean) => void) => boolean | void
  43. }