renderer.interface.d.ts 5.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { Subject } from 'rxjs';
  2. import { Task } from '../lib/task';
  3. import { DefaultRenderer } from '../renderer/default.renderer';
  4. import { SilentRenderer } from '../renderer/silent.renderer';
  5. import { SimpleRenderer } from '../renderer/simple.renderer';
  6. import { VerboseRenderer } from '../renderer/verbose.renderer';
  7. /** The default renderer value used in Listr2 applications */
  8. export declare type ListrDefaultRendererValue = 'default';
  9. /** Type of default renderer */
  10. export declare type ListrDefaultRenderer = typeof DefaultRenderer;
  11. /** Name of default fallback renderer */
  12. export declare type ListrFallbackRendererValue = 'verbose';
  13. /** Type of default fallback renderer */
  14. export declare type ListrFallbackRenderer = typeof VerboseRenderer;
  15. /** Silent rendere for internal usage */
  16. export declare type ListrSilentRendererValue = 'silent';
  17. /** Typeof silent renderer */
  18. export declare type ListrSilentRenderer = typeof SilentRenderer;
  19. /** Simple renderer that simplifies things */
  20. export declare type ListrSimpleRendererValue = 'simple';
  21. /** Typeof simple renderer */
  22. export declare type ListrSimpleRenderer = typeof SimpleRenderer;
  23. /**
  24. * Listr2 can process either the integrated renderers as string aliases,
  25. * or utilize a compatible style renderer that extends the ListrRenderer abstract class.
  26. */
  27. export declare type ListrRendererValue = ListrSilentRendererValue | ListrDefaultRendererValue | ListrSimpleRendererValue | ListrFallbackRendererValue | ListrRendererFactory;
  28. /**
  29. * Returns the class type from friendly names of the renderers.
  30. */
  31. export declare type ListrGetRendererClassFromValue<T extends ListrRendererValue> = T extends ListrDefaultRendererValue ? ListrDefaultRenderer : T extends ListrSimpleRendererValue ? ListrSimpleRenderer : T extends ListrFallbackRendererValue ? ListrFallbackRenderer : T extends ListrSilentRenderer ? ListrSilentRenderer : T extends ListrRendererFactory ? T : never;
  32. /**
  33. * Returns the friendly names from the type of renderer classes.
  34. */
  35. export declare type ListrGetRendererValueFromClass<T extends ListrRendererFactory> = T extends DefaultRenderer ? ListrDefaultRendererValue : T extends SimpleRenderer ? ListrSimpleRendererValue : T extends VerboseRenderer ? ListrFallbackRendererValue : T extends SilentRenderer ? ListrSilentRenderer : T extends ListrRendererFactory ? T : never;
  36. /**
  37. * Returns renderer global options depending on the renderer type.
  38. */
  39. export declare type ListrGetRendererOptions<T extends ListrRendererValue> = T extends ListrDefaultRendererValue ? ListrDefaultRenderer['rendererOptions'] : T extends ListrSimpleRendererValue ? ListrSimpleRenderer['rendererOptions'] : T extends ListrFallbackRendererValue ? ListrFallbackRenderer['rendererOptions'] : T extends ListrSilentRenderer ? ListrSilentRenderer['rendererOptions'] : T extends ListrRendererFactory ? T['rendererOptions'] : never;
  40. /**
  41. * Returns renderer per task options depending on the renderer type.
  42. */
  43. export declare type ListrGetRendererTaskOptions<T extends ListrRendererValue> = T extends ListrDefaultRendererValue ? ListrDefaultRenderer['rendererTaskOptions'] : T extends ListrSimpleRendererValue ? ListrSimpleRenderer : T extends ListrFallbackRendererValue ? ListrFallbackRenderer['rendererTaskOptions'] : T extends ListrSilentRenderer ? ListrSilentRenderer['rendererTaskOptions'] : T extends ListrRendererFactory ? T['rendererTaskOptions'] : never;
  44. /** Select renderer as default renderer */
  45. export interface ListrDefaultRendererOptions<T extends ListrRendererValue> {
  46. /** the default renderer */
  47. renderer?: T;
  48. /** Renderer options depending on the current renderer */
  49. rendererOptions?: ListrGetRendererOptions<T>;
  50. }
  51. /** Select a fallback renderer to fallback to in non-tty conditions */
  52. export interface ListrDefaultNonTTYRendererOptions<T extends ListrRendererValue> {
  53. /** the fallback renderer to fallback to on non-tty conditions */
  54. nonTTYRenderer?: T;
  55. /** Renderer options depending on the current renderer */
  56. nonTTYRendererOptions?: ListrGetRendererOptions<T>;
  57. }
  58. /** Renderer options for the base class, including setup for selecting default and fallback renderers. */
  59. export declare type ListrRendererOptions<Renderer extends ListrRendererValue, FallbackRenderer extends ListrRendererValue> = ListrDefaultRendererOptions<Renderer> & ListrDefaultNonTTYRendererOptions<FallbackRenderer>;
  60. /** The bones of a listr renderer. */
  61. export declare class ListrRenderer {
  62. /** designate renderer global options that is specific to the current renderer */
  63. static rendererOptions: Record<PropertyKey, any>;
  64. /** designate renderer per task options that is specific to the current renderer */
  65. static rendererTaskOptions: Record<PropertyKey, any>;
  66. /** designate whether this renderer can work in non-tty environments */
  67. static nonTTY: boolean;
  68. /** A function to what to do on render */
  69. render: () => void;
  70. /** A function to what to do on end of the render */
  71. end: (err?: Error) => void;
  72. /** create a new renderer */
  73. constructor(tasks: readonly Task<any, ListrRendererFactory>[], options: typeof ListrRenderer.rendererOptions, renderHook$?: Subject<void>);
  74. }
  75. /** Exported for javascript applications to extend the base renderer */
  76. export declare class ListrBaseRenderer implements ListrRenderer {
  77. static rendererOptions: Record<PropertyKey, any>;
  78. static rendererTaskOptions: Record<PropertyKey, any>;
  79. static nonTTY: boolean;
  80. tasks: Task<any, typeof ListrBaseRenderer>[];
  81. options: typeof ListrBaseRenderer.rendererOptions;
  82. render: () => void;
  83. end: (err?: Error) => void;
  84. constructor(tasks: Task<any, typeof ListrBaseRenderer>[], options: typeof ListrBaseRenderer.rendererOptions);
  85. }
  86. /** A renderer factory from the current type */
  87. export declare type ListrRendererFactory = typeof ListrRenderer;
  88. /** Supported type of renderers for each type in the listr. */
  89. export interface SupportedRenderer {
  90. renderer: ListrRendererFactory;
  91. nonTTY: boolean;
  92. }