prompt.interface.d.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /// <reference types="node" />
  2. import Enquirer from 'enquirer';
  3. import { WriteStream } from 'fs';
  4. import { Writable } from 'stream';
  5. import { PromptError } from '../interfaces/listr.interface';
  6. export declare type PromptOptions<T extends boolean = false> = Unionize<{
  7. [K in PromptTypes]-?: T extends true ? {
  8. type: K;
  9. } & PromptOptionsType<K> & {
  10. name: string | (() => string);
  11. } : {
  12. type: K;
  13. } & PromptOptionsType<K>;
  14. }> | ({
  15. type: string;
  16. } & T extends true ? PromptOptionsType<string> & {
  17. name: string | (() => string);
  18. } : PromptOptionsType<string>);
  19. export declare type Unionize<T extends Record<string, unknown>> = {
  20. [P in keyof T]: T[P];
  21. }[keyof T];
  22. interface BasePromptOptions {
  23. message: string | (() => string) | (() => Promise<string>);
  24. initial?: boolean | number | number[] | string | (() => string) | (() => Promise<string>);
  25. required?: boolean;
  26. stdin?: NodeJS.ReadStream;
  27. stdout?: NodeJS.WriteStream;
  28. header?: string;
  29. footer?: string;
  30. skip?(value: any): boolean | Promise<boolean>;
  31. format?(value: any): any | Promise<any>;
  32. result?(value: any): any | Promise<any>;
  33. validate?(value: any, state: any): boolean | Promise<boolean> | string | Promise<string> | Promise<string | boolean>;
  34. onSubmit?(name: any, value: any, prompt: Enquirer.Prompt): boolean | Promise<boolean>;
  35. onCancel?(name: any, value: any, prompt: Enquirer.Prompt): boolean | Promise<boolean>;
  36. }
  37. interface BasePromptOptionsWithName extends BasePromptOptions {
  38. name: string | (() => string);
  39. }
  40. interface ArrayPromptOptions extends BasePromptOptions {
  41. choices: string[] | BasePromptOptionsWithName[];
  42. maxChoices?: number;
  43. multiple?: boolean;
  44. initial?: number | number[];
  45. delay?: number;
  46. separator?: boolean;
  47. sort?: boolean;
  48. linebreak?: boolean;
  49. edgeLength?: number;
  50. align?: 'left' | 'right';
  51. scroll?: boolean;
  52. }
  53. interface BooleanPromptOptions extends BasePromptOptions {
  54. initial?: boolean | (() => string) | (() => Promise<string>);
  55. }
  56. interface StringPromptOptions extends BasePromptOptions {
  57. initial?: string;
  58. multiline?: boolean;
  59. }
  60. interface ScalePromptOptions extends ArrayPromptOptions {
  61. scale: StringPromptOptions[];
  62. margin?: [number, number, number, number];
  63. }
  64. interface NumberPromptOptions extends BasePromptOptions {
  65. min?: number;
  66. max?: number;
  67. delay?: number;
  68. float?: boolean;
  69. round?: boolean;
  70. major?: number;
  71. minor?: number;
  72. initial?: number;
  73. }
  74. interface SnippetPromptOptions extends BasePromptOptions {
  75. newline?: string;
  76. fields: Partial<BasePromptOptionsWithName>[];
  77. template: string;
  78. }
  79. interface SortPromptOptions extends BasePromptOptions {
  80. hint?: string;
  81. drag?: boolean;
  82. numbered?: boolean;
  83. }
  84. interface SurveyPromptOptions extends ArrayPromptOptions {
  85. scale: BasePromptOptionsWithName[];
  86. margin: [number, number, number, number];
  87. }
  88. interface QuizPromptOptions extends ArrayPromptOptions {
  89. correctChoice: number;
  90. }
  91. interface TogglePromptOptions extends BasePromptOptions {
  92. enabled?: string;
  93. disabled?: string;
  94. }
  95. export declare type PromptTypes = 'AutoComplete' | 'BasicAuth' | 'Confirm' | 'Editable' | 'Form' | 'Input' | 'Invisible' | 'List' | 'MultiSelect' | 'Numeral' | 'Password' | 'Quiz' | 'Scale' | 'Select' | 'Snippet' | 'Sort' | 'Survey' | 'Text' | 'Toggle';
  96. export declare type PromptOptionsType<T> = T extends 'AutoComplete' ? ArrayPromptOptions : T extends 'BasicAuth' ? StringPromptOptions : T extends 'Confirm' ? BooleanPromptOptions : T extends 'Editable' ? ArrayPromptOptions : T extends 'Form' ? ArrayPromptOptions : T extends 'Input' ? StringPromptOptions : T extends 'Invisible' ? StringPromptOptions : T extends 'List' ? ArrayPromptOptions : T extends 'MultiSelect' ? ArrayPromptOptions : T extends 'Numeral' ? NumberPromptOptions : T extends 'Password' ? StringPromptOptions : T extends 'Quiz' ? QuizPromptOptions : T extends 'Scale' ? ScalePromptOptions : T extends 'Select' ? ArrayPromptOptions : T extends 'Snippet' ? SnippetPromptOptions : T extends 'Sort' ? SortPromptOptions : T extends 'Survey' ? SurveyPromptOptions : T extends 'Text' ? StringPromptOptions : T extends 'Toggle' ? TogglePromptOptions : T extends string ? BasePromptOptions & Record<string, unknown> : any;
  97. export interface PromptSettings {
  98. error?: boolean;
  99. cancelCallback?: (settings?: PromptSettings) => string | Error | PromptError | void;
  100. stdout?: WriteStream | Writable;
  101. enquirer?: Enquirer;
  102. }
  103. export {};