@maizzle/framework 6.0.0-rc.1 → 6.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/bin/maizzle.mjs +1 -1
  2. package/dist/build.mjs +2 -1
  3. package/dist/build.mjs.map +1 -1
  4. package/dist/config/index.mjs +7 -0
  5. package/dist/config/index.mjs.map +1 -1
  6. package/dist/plugin.d.mts.map +1 -1
  7. package/dist/plugin.mjs +13 -0
  8. package/dist/plugin.mjs.map +1 -1
  9. package/dist/render/createRenderer.d.mts +2 -0
  10. package/dist/render/createRenderer.d.mts.map +1 -1
  11. package/dist/render/createRenderer.mjs +11 -4
  12. package/dist/render/createRenderer.mjs.map +1 -1
  13. package/dist/render/index.mjs +2 -1
  14. package/dist/render/index.mjs.map +1 -1
  15. package/dist/serve.mjs +2 -1
  16. package/dist/serve.mjs.map +1 -1
  17. package/dist/types/config.d.mts +3 -0
  18. package/dist/types/config.d.mts.map +1 -1
  19. package/dist/utils/detect.d.mts +5 -0
  20. package/dist/utils/detect.d.mts.map +1 -0
  21. package/dist/utils/detect.mjs +11 -0
  22. package/dist/utils/detect.mjs.map +1 -0
  23. package/node_modules/@clack/core/CHANGELOG.md +87 -4
  24. package/node_modules/@clack/core/README.md +1 -1
  25. package/node_modules/@clack/core/dist/index.d.mts +186 -48
  26. package/node_modules/@clack/core/dist/index.mjs +10 -14
  27. package/node_modules/@clack/core/dist/index.mjs.map +1 -1
  28. package/node_modules/@clack/core/package.json +7 -9
  29. package/node_modules/@clack/prompts/CHANGELOG.md +171 -7
  30. package/node_modules/@clack/prompts/README.md +66 -3
  31. package/node_modules/@clack/prompts/dist/index.d.mts +302 -76
  32. package/node_modules/@clack/prompts/dist/index.mjs +134 -84
  33. package/node_modules/@clack/prompts/dist/index.mjs.map +1 -1
  34. package/node_modules/@clack/prompts/package.json +14 -10
  35. package/node_modules/citty/LICENSE +0 -15
  36. package/node_modules/citty/README.md +166 -69
  37. package/node_modules/citty/dist/index.d.mts +88 -56
  38. package/node_modules/citty/dist/index.mjs +399 -437
  39. package/node_modules/citty/package.json +28 -35
  40. package/node_modules/giget/README.md +59 -11
  41. package/node_modules/giget/dist/THIRD-PARTY-LICENSES.md +205 -0
  42. package/node_modules/giget/dist/_chunks/giget.mjs +508 -0
  43. package/node_modules/giget/dist/_chunks/libs/citty.mjs +269 -0
  44. package/node_modules/giget/dist/_chunks/libs/nypm.d.mts +1 -0
  45. package/node_modules/giget/dist/_chunks/libs/nypm.mjs +669 -0
  46. package/node_modules/giget/dist/_chunks/libs/tar.mjs +2931 -0
  47. package/node_modules/giget/dist/_chunks/rolldown-runtime.mjs +14 -0
  48. package/node_modules/giget/dist/cli.d.mts +1 -0
  49. package/node_modules/giget/dist/cli.mjs +89 -111
  50. package/node_modules/giget/dist/index.d.mts +46 -35
  51. package/node_modules/giget/dist/index.mjs +2 -22
  52. package/node_modules/giget/package.json +32 -45
  53. package/node_modules/maizzle/README.md +140 -0
  54. package/node_modules/maizzle/bin/maizzle.mjs +5 -0
  55. package/node_modules/maizzle/dist/commands/new.d.mts +7 -0
  56. package/node_modules/maizzle/dist/commands/new.mjs +278 -0
  57. package/node_modules/{@maizzle/cli → maizzle}/dist/index.d.mts +1 -1
  58. package/node_modules/maizzle/dist/index.mjs +44 -0
  59. package/node_modules/{commander → maizzle/node_modules/commander}/Readme.md +94 -67
  60. package/node_modules/{commander → maizzle/node_modules/commander}/lib/argument.js +5 -4
  61. package/node_modules/{commander → maizzle/node_modules/commander}/lib/command.js +154 -39
  62. package/node_modules/{commander → maizzle/node_modules/commander}/lib/help.js +77 -39
  63. package/node_modules/{commander → maizzle/node_modules/commander}/lib/option.js +16 -3
  64. package/node_modules/{commander → maizzle/node_modules/commander}/package-support.json +4 -1
  65. package/node_modules/{commander → maizzle/node_modules/commander}/package.json +8 -8
  66. package/node_modules/{commander → maizzle/node_modules/commander}/typings/index.d.ts +71 -3
  67. package/node_modules/{@maizzle/cli → maizzle}/package.json +13 -11
  68. package/node_modules/tinyexec/README.md +49 -3
  69. package/node_modules/tinyexec/dist/main.d.mts +25 -14
  70. package/node_modules/tinyexec/dist/main.mjs +148 -100
  71. package/node_modules/tinyexec/package.json +9 -8
  72. package/package.json +3 -3
  73. package/node_modules/@clack/core/dist/index.cjs +0 -15
  74. package/node_modules/@clack/core/dist/index.cjs.map +0 -1
  75. package/node_modules/@clack/core/dist/index.d.cts +0 -211
  76. package/node_modules/@clack/core/dist/index.d.ts +0 -211
  77. package/node_modules/@clack/prompts/dist/index.cjs +0 -87
  78. package/node_modules/@clack/prompts/dist/index.cjs.map +0 -1
  79. package/node_modules/@clack/prompts/dist/index.d.cts +0 -165
  80. package/node_modules/@clack/prompts/dist/index.d.ts +0 -165
  81. package/node_modules/@maizzle/cli/README.md +0 -58
  82. package/node_modules/@maizzle/cli/dist/index.mjs +0 -42
  83. package/node_modules/citty/dist/index.cjs +0 -475
  84. package/node_modules/citty/dist/index.d.cts +0 -80
  85. package/node_modules/citty/dist/index.d.ts +0 -80
  86. package/node_modules/consola/LICENSE +0 -47
  87. package/node_modules/consola/README.md +0 -352
  88. package/node_modules/consola/basic.d.ts +0 -1
  89. package/node_modules/consola/browser.d.ts +0 -1
  90. package/node_modules/consola/core.d.ts +0 -1
  91. package/node_modules/consola/dist/basic.cjs +0 -32
  92. package/node_modules/consola/dist/basic.d.cts +0 -23
  93. package/node_modules/consola/dist/basic.d.mts +0 -21
  94. package/node_modules/consola/dist/basic.d.ts +0 -23
  95. package/node_modules/consola/dist/basic.mjs +0 -24
  96. package/node_modules/consola/dist/browser.cjs +0 -84
  97. package/node_modules/consola/dist/browser.d.cts +0 -23
  98. package/node_modules/consola/dist/browser.d.mts +0 -21
  99. package/node_modules/consola/dist/browser.d.ts +0 -23
  100. package/node_modules/consola/dist/browser.mjs +0 -76
  101. package/node_modules/consola/dist/chunks/prompt.cjs +0 -288
  102. package/node_modules/consola/dist/chunks/prompt.mjs +0 -280
  103. package/node_modules/consola/dist/core.cjs +0 -517
  104. package/node_modules/consola/dist/core.d.cts +0 -459
  105. package/node_modules/consola/dist/core.d.mts +0 -459
  106. package/node_modules/consola/dist/core.d.ts +0 -459
  107. package/node_modules/consola/dist/core.mjs +0 -512
  108. package/node_modules/consola/dist/index.cjs +0 -663
  109. package/node_modules/consola/dist/index.d.cts +0 -24
  110. package/node_modules/consola/dist/index.d.mts +0 -22
  111. package/node_modules/consola/dist/index.d.ts +0 -24
  112. package/node_modules/consola/dist/index.mjs +0 -651
  113. package/node_modules/consola/dist/shared/consola.DCGIlDNP.cjs +0 -75
  114. package/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +0 -72
  115. package/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +0 -288
  116. package/node_modules/consola/dist/shared/consola.DwRq1yyg.cjs +0 -312
  117. package/node_modules/consola/dist/utils.cjs +0 -64
  118. package/node_modules/consola/dist/utils.d.cts +0 -286
  119. package/node_modules/consola/dist/utils.d.mts +0 -286
  120. package/node_modules/consola/dist/utils.d.ts +0 -286
  121. package/node_modules/consola/dist/utils.mjs +0 -54
  122. package/node_modules/consola/lib/index.cjs +0 -10
  123. package/node_modules/consola/package.json +0 -136
  124. package/node_modules/consola/utils.d.ts +0 -1
  125. package/node_modules/create-maizzle/README.md +0 -86
  126. package/node_modules/create-maizzle/bin/create-maizzle.mjs +0 -4
  127. package/node_modules/create-maizzle/node_modules/@clack/core/CHANGELOG.md +0 -340
  128. package/node_modules/create-maizzle/node_modules/@clack/core/LICENSE +0 -9
  129. package/node_modules/create-maizzle/node_modules/@clack/core/README.md +0 -22
  130. package/node_modules/create-maizzle/node_modules/@clack/core/dist/index.d.mts +0 -349
  131. package/node_modules/create-maizzle/node_modules/@clack/core/dist/index.mjs +0 -11
  132. package/node_modules/create-maizzle/node_modules/@clack/core/dist/index.mjs.map +0 -1
  133. package/node_modules/create-maizzle/node_modules/@clack/core/package.json +0 -60
  134. package/node_modules/create-maizzle/node_modules/@clack/prompts/CHANGELOG.md +0 -576
  135. package/node_modules/create-maizzle/node_modules/@clack/prompts/LICENSE +0 -9
  136. package/node_modules/create-maizzle/node_modules/@clack/prompts/README.md +0 -270
  137. package/node_modules/create-maizzle/node_modules/@clack/prompts/dist/index.d.mts +0 -391
  138. package/node_modules/create-maizzle/node_modules/@clack/prompts/dist/index.mjs +0 -137
  139. package/node_modules/create-maizzle/node_modules/@clack/prompts/dist/index.mjs.map +0 -1
  140. package/node_modules/create-maizzle/node_modules/@clack/prompts/package.json +0 -65
  141. package/node_modules/create-maizzle/package.json +0 -47
  142. package/node_modules/create-maizzle/src/index.js +0 -242
  143. package/node_modules/defu/LICENSE +0 -21
  144. package/node_modules/defu/README.md +0 -171
  145. package/node_modules/defu/dist/defu.cjs +0 -77
  146. package/node_modules/defu/dist/defu.d.cts +0 -31
  147. package/node_modules/defu/dist/defu.d.mts +0 -29
  148. package/node_modules/defu/dist/defu.d.ts +0 -31
  149. package/node_modules/defu/dist/defu.mjs +0 -69
  150. package/node_modules/defu/lib/defu.cjs +0 -10
  151. package/node_modules/defu/lib/defu.d.cts +0 -12
  152. package/node_modules/defu/package.json +0 -48
  153. package/node_modules/giget/dist/shared/giget.OCaTp9b-.mjs +0 -468
  154. package/node_modules/node-fetch-native/LICENSE +0 -114
  155. package/node_modules/node-fetch-native/README.md +0 -225
  156. package/node_modules/node-fetch-native/dist/chunks/multipart-parser.cjs +0 -2
  157. package/node_modules/node-fetch-native/dist/chunks/multipart-parser.mjs +0 -2
  158. package/node_modules/node-fetch-native/dist/index.cjs +0 -1
  159. package/node_modules/node-fetch-native/dist/index.mjs +0 -1
  160. package/node_modules/node-fetch-native/dist/native.cjs +0 -1
  161. package/node_modules/node-fetch-native/dist/native.mjs +0 -1
  162. package/node_modules/node-fetch-native/dist/node.cjs +0 -19
  163. package/node_modules/node-fetch-native/dist/node.mjs +0 -19
  164. package/node_modules/node-fetch-native/dist/polyfill.cjs +0 -1
  165. package/node_modules/node-fetch-native/dist/polyfill.mjs +0 -1
  166. package/node_modules/node-fetch-native/dist/proxy-stub.cjs +0 -1
  167. package/node_modules/node-fetch-native/dist/proxy-stub.mjs +0 -1
  168. package/node_modules/node-fetch-native/dist/proxy.cjs +0 -58
  169. package/node_modules/node-fetch-native/dist/shared/node-fetch-native.DfbY2q-x.mjs +0 -1
  170. package/node_modules/node-fetch-native/dist/shared/node-fetch-native.DhEqb06g.cjs +0 -1
  171. package/node_modules/node-fetch-native/index.d.ts +0 -1
  172. package/node_modules/node-fetch-native/lib/empty.cjs +0 -0
  173. package/node_modules/node-fetch-native/lib/empty.mjs +0 -0
  174. package/node_modules/node-fetch-native/lib/index.cjs +0 -11
  175. package/node_modules/node-fetch-native/lib/index.d.cts +0 -10
  176. package/node_modules/node-fetch-native/lib/index.d.mts +0 -10
  177. package/node_modules/node-fetch-native/lib/index.d.ts +0 -10
  178. package/node_modules/node-fetch-native/lib/native.cjs +0 -11
  179. package/node_modules/node-fetch-native/lib/polyfill.d.cts +0 -1
  180. package/node_modules/node-fetch-native/lib/polyfill.d.mts +0 -1
  181. package/node_modules/node-fetch-native/lib/polyfill.d.ts +0 -1
  182. package/node_modules/node-fetch-native/lib/proxy.d.ts +0 -32
  183. package/node_modules/node-fetch-native/node.d.ts +0 -1
  184. package/node_modules/node-fetch-native/package.json +0 -138
  185. package/node_modules/node-fetch-native/polyfill.d.ts +0 -1
  186. package/node_modules/node-fetch-native/proxy.d.ts +0 -1
  187. package/node_modules/nypm/node_modules/citty/LICENSE +0 -21
  188. package/node_modules/nypm/node_modules/citty/README.md +0 -231
  189. package/node_modules/nypm/node_modules/citty/dist/index.d.mts +0 -112
  190. package/node_modules/nypm/node_modules/citty/dist/index.mjs +0 -425
  191. package/node_modules/nypm/node_modules/citty/package.json +0 -42
  192. /package/node_modules/{nypm/node_modules/citty → citty}/dist/THIRD-PARTY-LICENSES.md +0 -0
  193. /package/node_modules/{nypm/node_modules/citty → citty}/dist/_chunks/libs/scule.mjs +0 -0
  194. /package/node_modules/{@maizzle/cli → maizzle}/LICENSE +0 -0
  195. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/component.d.mts +0 -0
  196. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/component.mjs +0 -0
  197. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/config.d.mts +0 -0
  198. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/config.mjs +0 -0
  199. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/layout.d.mts +0 -0
  200. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/layout.mjs +0 -0
  201. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/scaffold.d.mts +0 -0
  202. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/scaffold.mjs +0 -0
  203. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/stubs/component.vue +0 -0
  204. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/stubs/config.ts +0 -0
  205. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/stubs/layout.vue +0 -0
  206. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/stubs/template.vue +0 -0
  207. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/template.d.mts +0 -0
  208. /package/node_modules/{@maizzle/cli → maizzle}/dist/commands/make/template.mjs +0 -0
  209. /package/node_modules/{commander → maizzle/node_modules/commander}/LICENSE +0 -0
  210. /package/node_modules/{commander → maizzle/node_modules/commander}/esm.mjs +0 -0
  211. /package/node_modules/{commander → maizzle/node_modules/commander}/index.js +0 -0
  212. /package/node_modules/{commander → maizzle/node_modules/commander}/lib/error.js +0 -0
  213. /package/node_modules/{commander → maizzle/node_modules/commander}/lib/suggestSimilar.js +0 -0
  214. /package/node_modules/{commander → maizzle/node_modules/commander}/typings/esm.d.mts +0 -0
@@ -11,7 +11,7 @@ import { TextPrompt, isCancel } from '@clack/core';
11
11
 
12
12
  const p = new TextPrompt({
13
13
  render() {
14
- return `What's your name?\n${this.valueWithCursor}`;
14
+ return `What's your name?\n${this.userInputWithCursor}`;
15
15
  },
16
16
  });
17
17
 
@@ -1,7 +1,29 @@
1
+ import { Key } from 'node:readline';
1
2
  import { Readable, Writable } from 'node:stream';
2
3
 
3
4
  declare const actions: readonly ["up", "down", "left", "right", "space", "enter", "cancel"];
4
5
  type Action = (typeof actions)[number];
6
+ /** Global settings for Clack programs, stored in memory */
7
+ interface InternalClackSettings {
8
+ actions: Set<Action>;
9
+ aliases: Map<string, Action>;
10
+ messages: {
11
+ cancel: string;
12
+ error: string;
13
+ };
14
+ withGuide: boolean;
15
+ date: {
16
+ monthNames: string[];
17
+ messages: {
18
+ invalidMonth: string;
19
+ required: string;
20
+ invalidDay: (days: number, month: string) => string;
21
+ afterMin: (min: Date) => string;
22
+ beforeMax: (max: Date) => string;
23
+ };
24
+ };
25
+ }
26
+ declare const settings: InternalClackSettings;
5
27
  interface ClackSettings {
6
28
  /**
7
29
  * Set custom global aliases for the default actions.
@@ -10,7 +32,42 @@ interface ClackSettings {
10
32
  * @param aliases - An object that maps aliases to actions
11
33
  * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\x03': 'cancel', 'escape': 'cancel' }
12
34
  */
13
- aliases: Record<string, Action>;
35
+ aliases?: Record<string, Action>;
36
+ /**
37
+ * Custom messages for prompts
38
+ */
39
+ messages?: {
40
+ /**
41
+ * Custom message to display when a spinner is cancelled
42
+ * @default "Canceled"
43
+ */
44
+ cancel?: string;
45
+ /**
46
+ * Custom message to display when a spinner encounters an error
47
+ * @default "Something went wrong"
48
+ */
49
+ error?: string;
50
+ };
51
+ withGuide?: boolean;
52
+ /**
53
+ * Date prompt localization
54
+ */
55
+ date?: {
56
+ /** Month names for validation messages (January, February, ...) */
57
+ monthNames?: string[];
58
+ messages?: {
59
+ /** Shown when date is missing */
60
+ required?: string;
61
+ /** Shown when month > 12 */
62
+ invalidMonth?: string;
63
+ /** (days, monthName) => message for invalid day */
64
+ invalidDay?: (days: number, month: string) => string;
65
+ /** (min) => message when date is before minDate */
66
+ afterMin?: (min: Date) => string;
67
+ /** (max) => message when date is after maxDate */
68
+ beforeMax?: (max: Date) => string;
69
+ };
70
+ };
14
71
  }
15
72
  declare function updateSettings(updates: ClackSettings): void;
16
73
 
@@ -21,30 +78,32 @@ type ClackState = 'initial' | 'active' | 'cancel' | 'submit' | 'error';
21
78
  /**
22
79
  * Typed event emitter for clack
23
80
  */
24
- interface ClackEvents {
81
+ interface ClackEvents<TValue> {
25
82
  initial: (value?: any) => void;
26
83
  active: (value?: any) => void;
27
84
  cancel: (value?: any) => void;
28
85
  submit: (value?: any) => void;
29
86
  error: (value?: any) => void;
30
87
  cursor: (key?: Action) => void;
31
- key: (key?: string) => void;
32
- value: (value?: string) => void;
88
+ key: (key: string | undefined, info: Key) => void;
89
+ value: (value?: TValue) => void;
90
+ userInput: (value: string) => void;
33
91
  confirm: (value?: boolean) => void;
34
92
  finalize: () => void;
93
+ beforePrompt: () => void;
35
94
  }
36
95
 
37
- interface PromptOptions<Self extends Prompt> {
96
+ interface PromptOptions<TValue, Self extends Prompt<TValue>> {
38
97
  render(this: Omit<Self, 'prompt'>): string | undefined;
39
- placeholder?: string;
40
98
  initialValue?: any;
41
- validate?: ((value: any) => string | Error | undefined) | undefined;
99
+ initialUserInput?: string;
100
+ validate?: ((value: TValue | undefined) => string | Error | undefined) | undefined;
42
101
  input?: Readable;
43
102
  output?: Writable;
44
103
  debug?: boolean;
45
104
  signal?: AbortSignal;
46
105
  }
47
- declare class Prompt {
106
+ declare class Prompt<TValue> {
48
107
  protected input: Readable;
49
108
  protected output: Writable;
50
109
  private _abortSignal?;
@@ -57,8 +116,9 @@ declare class Prompt {
57
116
  protected _cursor: number;
58
117
  state: ClackState;
59
118
  error: string;
60
- value: any;
61
- constructor(options: PromptOptions<Prompt>, trackValue?: boolean);
119
+ value: TValue | undefined;
120
+ userInput: string;
121
+ constructor(options: PromptOptions<TValue, Prompt<TValue>>, trackValue?: boolean);
62
122
  /**
63
123
  * Unsubscribe all listeners
64
124
  */
@@ -73,40 +133,111 @@ declare class Prompt {
73
133
  * @param event - The event name
74
134
  * @param cb - The callback
75
135
  */
76
- on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]): void;
136
+ on<T extends keyof ClackEvents<TValue>>(event: T, cb: ClackEvents<TValue>[T]): void;
77
137
  /**
78
138
  * Subscribe to an event once
79
139
  * @param event - The event name
80
140
  * @param cb - The callback
81
141
  */
82
- once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]): void;
142
+ once<T extends keyof ClackEvents<TValue>>(event: T, cb: ClackEvents<TValue>[T]): void;
83
143
  /**
84
144
  * Emit an event with data
85
145
  * @param event - The event name
86
146
  * @param data - The data to pass to the callback
87
147
  */
88
- emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>): void;
89
- prompt(): Promise<string | symbol>;
148
+ emit<T extends keyof ClackEvents<TValue>>(event: T, ...data: Parameters<ClackEvents<TValue>[T]>): void;
149
+ prompt(): Promise<symbol | TValue | undefined>;
150
+ protected _isActionKey(char: string | undefined, _key: Key): boolean;
151
+ protected _setValue(value: TValue | undefined): void;
152
+ protected _setUserInput(value: string | undefined, write?: boolean): void;
153
+ protected _clearUserInput(): void;
90
154
  private onKeypress;
91
155
  protected close(): void;
92
156
  private restoreCursor;
93
157
  private render;
94
158
  }
95
159
 
96
- interface ConfirmOptions extends PromptOptions<ConfirmPrompt> {
160
+ interface OptionLike$1 {
161
+ value: unknown;
162
+ label?: string;
163
+ disabled?: boolean;
164
+ }
165
+ type FilterFunction<T extends OptionLike$1> = (search: string, opt: T) => boolean;
166
+ interface AutocompleteOptions<T extends OptionLike$1> extends PromptOptions<T['value'] | T['value'][], AutocompletePrompt<T>> {
167
+ options: T[] | ((this: AutocompletePrompt<T>) => T[]);
168
+ filter?: FilterFunction<T>;
169
+ multiple?: boolean;
170
+ /**
171
+ * When set (non-empty), pressing Tab with no input fills the field with this value
172
+ * and runs the normal filter/selection logic so the user can confirm with Enter.
173
+ * Tab only fills the input when the placeholder matches at least one option under
174
+ * the prompt's filter (so the value remains selectable).
175
+ */
176
+ placeholder?: string;
177
+ }
178
+ declare class AutocompletePrompt<T extends OptionLike$1> extends Prompt<T['value'] | T['value'][]> {
179
+ #private;
180
+ filteredOptions: T[];
181
+ multiple: boolean;
182
+ isNavigating: boolean;
183
+ selectedValues: Array<T['value']>;
184
+ focusedValue: T['value'] | undefined;
185
+ get cursor(): number;
186
+ get userInputWithCursor(): string;
187
+ get options(): T[];
188
+ constructor(opts: AutocompleteOptions<T>);
189
+ protected _isActionKey(char: string | undefined, key: Key): boolean;
190
+ deselectAll(): void;
191
+ toggleSelected(value: T['value']): void;
192
+ }
193
+
194
+ interface ConfirmOptions extends PromptOptions<boolean, ConfirmPrompt> {
97
195
  active: string;
98
196
  inactive: string;
99
197
  initialValue?: boolean;
100
198
  }
101
- declare class ConfirmPrompt extends Prompt {
199
+ declare class ConfirmPrompt extends Prompt<boolean> {
102
200
  get cursor(): 0 | 1;
103
201
  private get _value();
104
202
  constructor(opts: ConfirmOptions);
105
203
  }
106
204
 
205
+ interface SegmentConfig {
206
+ type: 'year' | 'month' | 'day';
207
+ len: number;
208
+ }
209
+ interface DateParts {
210
+ year: string;
211
+ month: string;
212
+ day: string;
213
+ }
214
+ type DateFormat = 'YMD' | 'MDY' | 'DMY';
215
+ interface DateOptions extends PromptOptions<Date, DatePrompt> {
216
+ format?: DateFormat;
217
+ locale?: string;
218
+ separator?: string;
219
+ defaultValue?: Date;
220
+ initialValue?: Date;
221
+ minDate?: Date;
222
+ maxDate?: Date;
223
+ }
224
+ declare class DatePrompt extends Prompt<Date> {
225
+ #private;
226
+ inlineError: string;
227
+ get segmentCursor(): {
228
+ segmentIndex: number;
229
+ positionInSegment: number;
230
+ };
231
+ get segmentValues(): DateParts;
232
+ get segments(): readonly SegmentConfig[];
233
+ get separator(): string;
234
+ get formattedValue(): string;
235
+ constructor(opts: DateOptions);
236
+ }
237
+
107
238
  interface GroupMultiSelectOptions<T extends {
108
239
  value: any;
109
- }> extends PromptOptions<GroupMultiSelectPrompt<T>> {
240
+ }> extends PromptOptions<T['value'][], GroupMultiSelectPrompt<T>> {
110
241
  options: Record<string, T[]>;
111
242
  initialValues?: T['value'][];
112
243
  required?: boolean;
@@ -115,7 +246,7 @@ interface GroupMultiSelectOptions<T extends {
115
246
  }
116
247
  declare class GroupMultiSelectPrompt<T extends {
117
248
  value: any;
118
- }> extends Prompt {
249
+ }> extends Prompt<T['value'][]> {
119
250
  #private;
120
251
  options: (T & {
121
252
  group: string | boolean;
@@ -127,85 +258,92 @@ declare class GroupMultiSelectPrompt<T extends {
127
258
  constructor(opts: GroupMultiSelectOptions<T>);
128
259
  }
129
260
 
130
- interface MultiSelectOptions<T extends {
261
+ interface OptionLike {
131
262
  value: any;
132
- }> extends PromptOptions<MultiSelectPrompt<T>> {
263
+ disabled?: boolean;
264
+ }
265
+ interface MultiSelectOptions<T extends OptionLike> extends PromptOptions<T['value'][], MultiSelectPrompt<T>> {
133
266
  options: T[];
134
267
  initialValues?: T['value'][];
135
268
  required?: boolean;
136
269
  cursorAt?: T['value'];
137
270
  }
138
- declare class MultiSelectPrompt<T extends {
139
- value: any;
140
- }> extends Prompt {
271
+ declare class MultiSelectPrompt<T extends OptionLike> extends Prompt<T['value'][]> {
141
272
  options: T[];
142
273
  cursor: number;
143
274
  private get _value();
275
+ private get _enabledOptions();
144
276
  private toggleAll;
277
+ private toggleInvert;
145
278
  private toggleValue;
146
279
  constructor(opts: MultiSelectOptions<T>);
147
280
  }
148
281
 
149
- interface PasswordOptions extends PromptOptions<PasswordPrompt> {
282
+ interface PasswordOptions extends PromptOptions<string, PasswordPrompt> {
150
283
  mask?: string;
151
284
  }
152
- declare class PasswordPrompt extends Prompt {
153
- valueWithCursor: string;
285
+ declare class PasswordPrompt extends Prompt<string> {
154
286
  private _mask;
155
287
  get cursor(): number;
156
- get masked(): any;
288
+ get masked(): string;
289
+ get userInputWithCursor(): string;
290
+ clear(): void;
157
291
  constructor({ mask, ...opts }: PasswordOptions);
158
292
  }
159
293
 
160
294
  interface SelectOptions<T extends {
161
295
  value: any;
162
- }> extends PromptOptions<SelectPrompt<T>> {
296
+ disabled?: boolean;
297
+ }> extends PromptOptions<T['value'], SelectPrompt<T>> {
163
298
  options: T[];
164
299
  initialValue?: T['value'];
165
300
  }
166
301
  declare class SelectPrompt<T extends {
167
302
  value: any;
168
- }> extends Prompt {
303
+ disabled?: boolean;
304
+ }> extends Prompt<T['value']> {
169
305
  options: T[];
170
306
  cursor: number;
171
- private get _value();
307
+ private get _selectedValue();
172
308
  private changeValue;
173
309
  constructor(opts: SelectOptions<T>);
174
310
  }
175
311
 
176
312
  interface SelectKeyOptions<T extends {
177
- value: any;
178
- }> extends PromptOptions<SelectKeyPrompt<T>> {
313
+ value: string;
314
+ }> extends PromptOptions<T['value'], SelectKeyPrompt<T>> {
179
315
  options: T[];
316
+ caseSensitive?: boolean;
180
317
  }
181
318
  declare class SelectKeyPrompt<T extends {
182
- value: any;
183
- }> extends Prompt {
319
+ value: string;
320
+ }> extends Prompt<T['value']> {
184
321
  options: T[];
185
322
  cursor: number;
186
323
  constructor(opts: SelectKeyOptions<T>);
187
324
  }
188
325
 
189
- interface TextOptions extends PromptOptions<TextPrompt> {
326
+ interface TextOptions extends PromptOptions<string, TextPrompt> {
190
327
  placeholder?: string;
191
328
  defaultValue?: string;
192
329
  }
193
- declare class TextPrompt extends Prompt {
194
- get valueWithCursor(): any;
330
+ declare class TextPrompt extends Prompt<string> {
331
+ get userInputWithCursor(): string;
195
332
  get cursor(): number;
196
333
  constructor(opts: TextOptions);
197
334
  }
198
335
 
199
336
  declare function isCancel(value: unknown): value is symbol;
200
- declare function block({ input, output, overwrite, hideCursor, }?: {
201
- input?: (NodeJS.ReadStream & {
202
- fd: 0;
203
- }) | undefined;
204
- output?: (NodeJS.WriteStream & {
205
- fd: 1;
206
- }) | undefined;
207
- overwrite?: boolean | undefined;
208
- hideCursor?: boolean | undefined;
209
- }): () => void;
337
+ interface BlockOptions {
338
+ input?: Readable;
339
+ output?: Writable;
340
+ overwrite?: boolean;
341
+ hideCursor?: boolean;
342
+ }
343
+ declare function block({ input, output, overwrite, hideCursor, }?: BlockOptions): () => void;
344
+ declare const getColumns: (output: Writable) => number;
345
+ declare const getRows: (output: Writable) => number;
346
+ declare function wrapTextWithPrefix(output: Writable | undefined, text: string, prefix: string, startPrefix?: string): string;
210
347
 
211
- export { type ClackSettings, ConfirmPrompt, GroupMultiSelectPrompt, MultiSelectPrompt, PasswordPrompt, Prompt, SelectKeyPrompt, SelectPrompt, type ClackState as State, TextPrompt, block, isCancel, updateSettings };
348
+ export { AutocompletePrompt, ConfirmPrompt, DatePrompt, GroupMultiSelectPrompt, MultiSelectPrompt, PasswordPrompt, Prompt, SelectKeyPrompt, SelectPrompt, TextPrompt, block, getColumns, getRows, isCancel, settings, updateSettings, wrapTextWithPrefix };
349
+ export type { AutocompleteOptions, ClackSettings, ConfirmOptions, DateFormat, DateOptions, DateParts, GroupMultiSelectOptions, MultiSelectOptions, PasswordOptions, PromptOptions, SelectKeyOptions, SelectOptions, ClackState as State, TextOptions };
@@ -1,15 +1,11 @@
1
- import{cursor as l,erase as b}from"sisteransi";import{stdin as j,stdout as M}from"node:process";import*as g from"node:readline";import O from"node:readline";import{Writable as X}from"node:stream";import v from"picocolors";function DD({onlyFirst:e=!1}={}){const t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}const uD=DD();function P(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(uD,"")}function L(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var W={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(F){var s=F.charCodeAt(0),i=F.length==2?F.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,D=s<<10|i,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(F){var s=this.eastAsianWidth(F);return s=="F"||s=="W"||s=="A"?2:1};function t(F){return F.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(F){for(var s=t(F),i=0,D=0;D<s.length;D++)i=i+this.characterLength(s[D]);return i},u.slice=function(F,s,i){textLen=u.length(F),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var D="",r=0,n=t(F),E=0;E<n.length;E++){var a=n[E],o=u.length(a);if(r>=s-(o==2?1:0))if(r+o<=i)D+=a;else break;r+=o}return D}})(W);var tD=W.exports;const eD=L(tD);var FD=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};const sD=L(FD);function p(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:!0,...u},e=P(e),e.length===0))return 0;e=e.replace(sD()," ");const t=u.ambiguousIsNarrow?1:2;let F=0;for(const s of e){const i=s.codePointAt(0);if(i<=31||i>=127&&i<=159||i>=768&&i<=879)continue;switch(eD.eastAsianWidth(s)){case"F":case"W":F+=2;break;case"A":F+=t;break;default:F+=1}}return F}const w=10,N=(e=0)=>u=>`\x1B[${u+e}m`,I=(e=0)=>u=>`\x1B[${38+e};5;${u}m`,R=(e=0)=>(u,t,F)=>`\x1B[${38+e};2;${u};${t};${F}m`,C={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(C.modifier);const iD=Object.keys(C.color),rD=Object.keys(C.bgColor);[...iD,...rD];function CD(){const e=new Map;for(const[u,t]of Object.entries(C)){for(const[F,s]of Object.entries(t))C[F]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},t[F]=C[F],e.set(s[0],s[1]);Object.defineProperty(C,u,{value:t,enumerable:!1})}return Object.defineProperty(C,"codes",{value:e,enumerable:!1}),C.color.close="\x1B[39m",C.bgColor.close="\x1B[49m",C.color.ansi=N(),C.color.ansi256=I(),C.color.ansi16m=R(),C.bgColor.ansi=N(w),C.bgColor.ansi256=I(w),C.bgColor.ansi16m=R(w),Object.defineProperties(C,{rgbToAnsi256:{value:(u,t,F)=>u===t&&t===F?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(t/255*5)+Math.round(F/255*5),enumerable:!1},hexToRgb:{value:u=>{const t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!t)return[0,0,0];let[F]=t;F.length===3&&(F=[...F].map(i=>i+i).join(""));const s=Number.parseInt(F,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:u=>C.rgbToAnsi256(...C.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let t,F,s;if(u>=232)t=((u-232)*10+8)/255,F=t,s=t;else{u-=16;const r=u%36;t=Math.floor(u/36)/5,F=Math.floor(r/6)/5,s=r%6/5}const i=Math.max(t,F,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(F)<<1|Math.round(t));return i===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,t,F)=>C.ansi256ToAnsi(C.rgbToAnsi256(u,t,F)),enumerable:!1},hexToAnsi:{value:u=>C.ansi256ToAnsi(C.hexToAnsi256(u)),enumerable:!1}}),C}const ED=CD(),d=new Set(["\x1B","\x9B"]),oD=39,y="\x07",V="[",nD="]",G="m",_=`${nD}8;;`,z=e=>`${d.values().next().value}${V}${e}${G}`,K=e=>`${d.values().next().value}${_}${e}${y}`,aD=e=>e.split(" ").map(u=>p(u)),k=(e,u,t)=>{const F=[...u];let s=!1,i=!1,D=p(P(e[e.length-1]));for(const[r,n]of F.entries()){const E=p(n);if(D+E<=t?e[e.length-1]+=n:(e.push(n),D=0),d.has(n)&&(s=!0,i=F.slice(r+1).join("").startsWith(_)),s){i?n===y&&(s=!1,i=!1):n===G&&(s=!1);continue}D+=E,D===t&&r<F.length-1&&(e.push(""),D=0)}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},hD=e=>{const u=e.split(" ");let t=u.length;for(;t>0&&!(p(u[t-1])>0);)t--;return t===u.length?e:u.slice(0,t).join(" ")+u.slice(t).join("")},lD=(e,u,t={})=>{if(t.trim!==!1&&e.trim()==="")return"";let F="",s,i;const D=aD(e);let r=[""];for(const[E,a]of e.split(" ").entries()){t.trim!==!1&&(r[r.length-1]=r[r.length-1].trimStart());let o=p(r[r.length-1]);if(E!==0&&(o>=u&&(t.wordWrap===!1||t.trim===!1)&&(r.push(""),o=0),(o>0||t.trim===!1)&&(r[r.length-1]+=" ",o++)),t.hard&&D[E]>u){const c=u-o,f=1+Math.floor((D[E]-c-1)/u);Math.floor((D[E]-1)/u)<f&&r.push(""),k(r,a,u);continue}if(o+D[E]>u&&o>0&&D[E]>0){if(t.wordWrap===!1&&o<u){k(r,a,u);continue}r.push("")}if(o+D[E]>u&&t.wordWrap===!1){k(r,a,u);continue}r[r.length-1]+=a}t.trim!==!1&&(r=r.map(E=>hD(E)));const n=[...r.join(`
2
- `)];for(const[E,a]of n.entries()){if(F+=a,d.has(a)){const{groups:c}=new RegExp(`(?:\\${V}(?<code>\\d+)m|\\${_}(?<uri>.*)${y})`).exec(n.slice(E).join(""))||{groups:{}};if(c.code!==void 0){const f=Number.parseFloat(c.code);s=f===oD?void 0:f}else c.uri!==void 0&&(i=c.uri.length===0?void 0:c.uri)}const o=ED.codes.get(Number(s));n[E+1]===`
3
- `?(i&&(F+=K("")),s&&o&&(F+=z(o))):a===`
4
- `&&(s&&o&&(F+=z(s)),i&&(F+=K(i)))}return F};function Y(e,u,t){return String(e).normalize().replace(/\r\n/g,`
5
- `).split(`
6
- `).map(F=>lD(F,u,t)).join(`
7
- `)}const xD=["up","down","left","right","space","enter","cancel"],B={actions:new Set(xD),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]])};function cD(e){for(const u in e){const t=u;if(!Object.hasOwn(e,t))continue;const F=e[t];switch(t){case"aliases":{for(const s in F)Object.hasOwn(F,s)&&(B.aliases.has(s)||B.aliases.set(s,F[s]));break}}}}function $(e,u){if(typeof e=="string")return B.aliases.get(e)===u;for(const t of e)if(t!==void 0&&$(t,u))return!0;return!1}function BD(e,u){if(e===u)return;const t=e.split(`
8
- `),F=u.split(`
9
- `),s=[];for(let i=0;i<Math.max(t.length,F.length);i++)t[i]!==F[i]&&s.push(i);return s}const AD=globalThis.process.platform.startsWith("win"),S=Symbol("clack:cancel");function pD(e){return e===S}function m(e,u){const t=e;t.isTTY&&t.setRawMode(u)}function fD({input:e=j,output:u=M,overwrite:t=!0,hideCursor:F=!0}={}){const s=g.createInterface({input:e,output:u,prompt:"",tabSize:1});g.emitKeypressEvents(e,s),e.isTTY&&e.setRawMode(!0);const i=(D,{name:r,sequence:n})=>{const E=String(D);if($([E,r,n],"cancel")){F&&u.write(l.show),process.exit(0);return}if(!t)return;const a=r==="return"?0:-1,o=r==="return"?-1:0;g.moveCursor(u,a,o,()=>{g.clearLine(u,1,()=>{e.once("keypress",i)})})};return F&&u.write(l.hide),e.once("keypress",i),()=>{e.off("keypress",i),F&&u.write(l.show),e.isTTY&&!AD&&e.setRawMode(!1),s.terminal=!1,s.close()}}var gD=Object.defineProperty,vD=(e,u,t)=>u in e?gD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,h=(e,u,t)=>(vD(e,typeof u!="symbol"?u+"":u,t),t);class x{constructor(u,t=!0){h(this,"input"),h(this,"output"),h(this,"_abortSignal"),h(this,"rl"),h(this,"opts"),h(this,"_render"),h(this,"_track",!1),h(this,"_prevFrame",""),h(this,"_subscribers",new Map),h(this,"_cursor",0),h(this,"state","initial"),h(this,"error",""),h(this,"value");const{input:F=j,output:s=M,render:i,signal:D,...r}=u;this.opts=r,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=D,this.input=F,this.output=s}unsubscribe(){this._subscribers.clear()}setSubscriber(u,t){const F=this._subscribers.get(u)??[];F.push(t),this._subscribers.set(u,F)}on(u,t){this.setSubscriber(u,{cb:t})}once(u,t){this.setSubscriber(u,{cb:t,once:!0})}emit(u,...t){const F=this._subscribers.get(u)??[],s=[];for(const i of F)i.cb(...t),i.once&&s.push(()=>F.splice(F.indexOf(i),1));for(const i of s)i()}prompt(){return new Promise((u,t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),u(S);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}const F=new X;F._write=(s,i,D)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),D()},this.input.pipe(F),this.rl=O.createInterface({input:this.input,output:F,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),O.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),m(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(l.show),this.output.off("resize",this.render),m(this.input,!1),u(this.value)}),this.once("cancel",()=>{this.output.write(l.show),this.output.off("resize",this.render),m(this.input,!1),u(S)})})}onKeypress(u,t){if(this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&B.aliases.has(t.name)&&this.emit("cursor",B.aliases.get(t.name)),B.actions.has(t.name)&&this.emit("cursor",t.name)),u&&(u.toLowerCase()==="y"||u.toLowerCase()==="n")&&this.emit("confirm",u.toLowerCase()==="y"),u===" "&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),u&&this.emit("key",u.toLowerCase()),t?.name==="return"){if(!this.value&&this.opts.placeholder&&(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder)),this.opts.validate){const F=this.opts.validate(this.value);F&&(this.error=F instanceof Error?F.message:F,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}$([u,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
10
- `),m(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const u=Y(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
11
- `).length-1;this.output.write(l.move(-999,u*-1))}render(){const u=Y(this._render(this)??"",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state==="initial")this.output.write(l.hide);else{const t=BD(this._prevFrame,u);if(this.restoreCursor(),t&&t?.length===1){const F=t[0];this.output.write(l.move(0,F)),this.output.write(b.lines(1));const s=u.split(`
12
- `);this.output.write(s[F]),this._prevFrame=u,this.output.write(l.move(0,s.length-F-1));return}if(t&&t?.length>1){const F=t[0];this.output.write(l.move(0,F)),this.output.write(b.down());const s=u.split(`
13
- `).slice(F);this.output.write(s.join(`
14
- `)),this._prevFrame=u;return}this.output.write(b.down())}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u}}}class dD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",t=>{this.output.write(l.move(0,-1)),this.value=t,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var mD=Object.defineProperty,bD=(e,u,t)=>u in e?mD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,Z=(e,u,t)=>(bD(e,typeof u!="symbol"?u+"":u,t),t),q=(e,u,t)=>{if(!u.has(e))throw TypeError("Cannot "+t)},T=(e,u,t)=>(q(e,u,"read from private field"),t?t.call(e):u.get(e)),wD=(e,u,t)=>{if(u.has(e))throw TypeError("Cannot add the same private member more than once");u instanceof WeakSet?u.add(e):u.set(e,t)},yD=(e,u,t,F)=>(q(e,u,"write to private field"),F?F.call(e,t):u.set(e,t),t),A;let _D=class extends x{constructor(u){super(u,!1),Z(this,"options"),Z(this,"cursor",0),wD(this,A,void 0);const{options:t}=u;yD(this,A,u.selectableGroups!==!1),this.options=Object.entries(t).flatMap(([F,s])=>[{value:F,group:!0,label:F},...s.map(i=>({...i,group:F}))]),this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),T(this,A)?0:1),this.on("cursor",F=>{switch(F){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;const s=this.options[this.cursor]?.group===!0;!T(this,A)&&s&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;const s=this.options[this.cursor]?.group===!0;!T(this,A)&&s&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}getGroupItems(u){return this.options.filter(t=>t.group===u)}isGroupSelected(u){return this.getGroupItems(u).every(t=>this.value.includes(t.value))}toggleValue(){const u=this.options[this.cursor];if(u.group===!0){const t=u.value,F=this.getGroupItems(t);this.isGroupSelected(t)?this.value=this.value.filter(s=>F.findIndex(i=>i.value===s)===-1):this.value=[...this.value,...F.map(s=>s.value)],this.value=Array.from(new Set(this.value))}else{const t=this.value.includes(u.value);this.value=t?this.value.filter(F=>F!==u.value):[...this.value,u.value]}}};A=new WeakMap;var kD=Object.defineProperty,$D=(e,u,t)=>u in e?kD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,H=(e,u,t)=>($D(e,typeof u!="symbol"?u+"":u,t),t);let SD=class extends x{constructor(u){super(u,!1),H(this,"options"),H(this,"cursor",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===u.cursorAt),0),this.on("key",t=>{t==="a"&&this.toggleAll()}),this.on("cursor",t=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(t=>t.value)}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(t=>t!==this._value):[...this.value,this._value]}};var TD=Object.defineProperty,jD=(e,u,t)=>u in e?TD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,U=(e,u,t)=>(jD(e,typeof u!="symbol"?u+"":u,t),t);class MD extends x{constructor({mask:u,...t}){super(t),U(this,"valueWithCursor",""),U(this,"_mask","\u2022"),this._mask=u??"\u2022",this.on("finalize",()=>{this.valueWithCursor=this.masked}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${v.inverse(v.hidden("_"))}`;else{const F=this.masked.slice(0,this.cursor),s=this.masked.slice(this.cursor);this.valueWithCursor=`${F}${v.inverse(s[0])}${s.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}var OD=Object.defineProperty,PD=(e,u,t)=>u in e?OD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,J=(e,u,t)=>(PD(e,typeof u!="symbol"?u+"":u,t),t);class LD extends x{constructor(u){super(u,!1),J(this,"options"),J(this,"cursor",0),this.options=u.options,this.cursor=this.options.findIndex(({value:t})=>t===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",t=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}var WD=Object.defineProperty,ND=(e,u,t)=>u in e?WD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,Q=(e,u,t)=>(ND(e,typeof u!="symbol"?u+"":u,t),t);class ID extends x{constructor(u){super(u,!1),Q(this,"options"),Q(this,"cursor",0),this.options=u.options;const t=this.options.map(({value:[F]})=>F?.toLowerCase());this.cursor=Math.max(t.indexOf(u.initialValue),0),this.on("key",F=>{if(!t.includes(F))return;const s=this.options.find(({value:[i]})=>i?.toLowerCase()===F);s&&(this.value=s.value,this.state="submit",this.emit("submit"))})}}class RD extends x{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}\u2588`;const u=this.value.slice(0,this.cursor),[t,...F]=this.value.slice(this.cursor);return`${u}${v.inverse(t)}${F.join("")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on("finalize",()=>{this.value||(this.value=u.defaultValue)})}}export{dD as ConfirmPrompt,_D as GroupMultiSelectPrompt,SD as MultiSelectPrompt,MD as PasswordPrompt,x as Prompt,ID as SelectKeyPrompt,LD as SelectPrompt,RD as TextPrompt,fD as block,pD as isCancel,cD as updateSettings};
1
+ import{styleText as y}from"node:util";import{stdout as S,stdin as $}from"node:process";import*as _ from"node:readline";import P from"node:readline";import{wrapAnsi as x}from"fast-wrap-ansi";import{cursor as c,erase as M}from"sisteransi";import{ReadStream as D}from"node:tty";function d(r,t,e){if(!e.some(o=>!o.disabled))return r;const s=r+t,i=Math.max(e.length-1,0),n=s<0?i:s>i?0:s;return e[n].disabled?d(n,t<0?-1:1,e):n}const E=["up","down","left","right","space","enter","cancel"],G=["January","February","March","April","May","June","July","August","September","October","November","December"],u={actions:new Set(E),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...G],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(r,t)=>`There are only ${r} days in ${t}`,afterMin:r=>`Date must be on or after ${r.toISOString().slice(0,10)}`,beforeMax:r=>`Date must be on or before ${r.toISOString().slice(0,10)}`}}};function K(r){if(r.aliases!==void 0){const t=r.aliases;for(const e in t){if(!Object.hasOwn(t,e))continue;const s=t[e];u.actions.has(s)&&(u.aliases.has(e)||u.aliases.set(e,s))}}if(r.messages!==void 0){const t=r.messages;t.cancel!==void 0&&(u.messages.cancel=t.cancel),t.error!==void 0&&(u.messages.error=t.error)}if(r.withGuide!==void 0&&(u.withGuide=r.withGuide!==!1),r.date!==void 0){const t=r.date;t.monthNames!==void 0&&(u.date.monthNames=[...t.monthNames]),t.messages!==void 0&&(t.messages.required!==void 0&&(u.date.messages.required=t.messages.required),t.messages.invalidMonth!==void 0&&(u.date.messages.invalidMonth=t.messages.invalidMonth),t.messages.invalidDay!==void 0&&(u.date.messages.invalidDay=t.messages.invalidDay),t.messages.afterMin!==void 0&&(u.date.messages.afterMin=t.messages.afterMin),t.messages.beforeMax!==void 0&&(u.date.messages.beforeMax=t.messages.beforeMax))}}function V(r,t){if(typeof r=="string")return u.aliases.get(r)===t;for(const e of r)if(e!==void 0&&V(e,t))return!0;return!1}function j(r,t){if(r===t)return;const e=r.split(`
2
+ `),s=t.split(`
3
+ `),i=Math.max(e.length,s.length),n=[];for(let o=0;o<i;o++)e[o]!==s[o]&&n.push(o);return{lines:n,numLinesBefore:e.length,numLinesAfter:s.length,numLines:i}}const Y=globalThis.process.platform.startsWith("win"),C=Symbol("clack:cancel");function q(r){return r===C}function w(r,t){const e=r;e.isTTY&&e.setRawMode(t)}function z({input:r=$,output:t=S,overwrite:e=!0,hideCursor:s=!0}={}){const i=_.createInterface({input:r,output:t,prompt:"",tabSize:1});_.emitKeypressEvents(r,i),r instanceof D&&r.isTTY&&r.setRawMode(!0);const n=(o,{name:a,sequence:h})=>{const l=String(o);if(V([l,a,h],"cancel")){s&&t.write(c.show),process.exit(0);return}if(!e)return;const f=a==="return"?0:-1,v=a==="return"?-1:0;_.moveCursor(t,f,v,()=>{_.clearLine(t,1,()=>{r.once("keypress",n)})})};return s&&t.write(c.hide),r.once("keypress",n),()=>{r.off("keypress",n),s&&t.write(c.show),r instanceof D&&r.isTTY&&!Y&&r.setRawMode(!1),i.terminal=!1,i.close()}}const O=r=>"columns"in r&&typeof r.columns=="number"?r.columns:80,A=r=>"rows"in r&&typeof r.rows=="number"?r.rows:20;function R(r,t,e,s=e){const i=O(r??S);return x(t,i-e.length,{hard:!0,trim:!1}).split(`
4
+ `).map((n,o)=>`${o===0?s:e}${n}`).join(`
5
+ `)}let p=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(t,e=!0){const{input:s=$,output:i=S,render:n,signal:o,...a}=t;this.opts=a,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=n.bind(this),this._track=e,this._abortSignal=o,this.input=s,this.output=i}unsubscribe(){this._subscribers.clear()}setSubscriber(t,e){const s=this._subscribers.get(t)??[];s.push(e),this._subscribers.set(t,s)}on(t,e){this.setSubscriber(t,{cb:e})}once(t,e){this.setSubscriber(t,{cb:e,once:!0})}emit(t,...e){const s=this._subscribers.get(t)??[],i=[];for(const n of s)n.cb(...e),n.once&&i.push(()=>s.splice(s.indexOf(n),1));for(const n of i)n()}prompt(){return new Promise(t=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(C);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=P.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),w(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(c.show),this.output.off("resize",this.render),w(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(c.show),this.output.off("resize",this.render),w(this.input,!1),t(C)})})}_isActionKey(t,e){return t===" "}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,e){this.userInput=t??"",this.emit("userInput",this.userInput),e&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(t,e){if(this._track&&e.name!=="return"&&(e.name&&this._isActionKey(t,e)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),e?.name&&(!this._track&&u.aliases.has(e.name)&&this.emit("cursor",u.aliases.get(e.name)),u.actions.has(e.name)&&this.emit("cursor",e.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t?.toLowerCase(),e),e?.name==="return"){if(this.opts.validate){const s=this.opts.validate(this.value);s&&(this.error=s instanceof Error?s.message:s,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}V([t,e?.name,e?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
6
+ `),w(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const t=x(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
7
+ `).length-1;this.output.write(c.move(-999,t*-1))}render(){const t=x(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(c.hide);else{const e=j(this._prevFrame,t),s=A(this.output);if(this.restoreCursor(),e){const i=Math.max(0,e.numLinesAfter-s),n=Math.max(0,e.numLinesBefore-s);let o=e.lines.find(a=>a>=i);if(o===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(c.move(0,o-n)),this.output.write(M.lines(1));const a=t.split(`
8
+ `);this.output.write(a[o]),this._prevFrame=t,this.output.write(c.move(0,a.length-o-1));return}else if(e.lines.length>1){if(i<n)o=i;else{const h=o-n;h>0&&this.output.write(c.move(0,h))}this.output.write(M.down());const a=t.split(`
9
+ `).slice(o);this.output.write(a.join(`
10
+ `)),this._prevFrame=t;return}}this.output.write(M.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}};function W(r,t){if(r===void 0||t.length===0)return 0;const e=t.findIndex(s=>s.value===r);return e!==-1?e:0}function B(r,t){return(t.label??String(t.value)).toLowerCase().includes(r.toLowerCase())}function J(r,t){if(t)return r?t:t[0]}let H=class extends p{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#o="";#t;#n;#a;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return y(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}\u2588`;const t=this.userInput.slice(0,this._cursor),[e,...s]=this.userInput.slice(this._cursor);return`${t}${y("inverse",e)}${s.join("")}`}get options(){return typeof this.#n=="function"?this.#n():this.#n}constructor(t){super(t),this.#n=t.options,this.#a=t.placeholder;const e=this.options;this.filteredOptions=[...e],this.multiple=t.multiple===!0,this.#t=typeof t.options=="function"?t.filter:t.filter??B;let s;if(t.initialValue&&Array.isArray(t.initialValue)?this.multiple?s=t.initialValue:s=t.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(s=[this.options[0].value]),s)for(const i of s){const n=e.findIndex(o=>o.value===i);n!==-1&&(this.toggleSelected(i),this.#e=n)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,n)=>this.#s(i,n)),this.on("userInput",i=>this.#i(i))}_isActionKey(t,e){return t===" "||this.multiple&&this.isNavigating&&e.name==="space"&&t!==void 0&&t!==""}#s(t,e){const s=e.name==="up",i=e.name==="down",n=e.name==="return",o=this.userInput===""||this.userInput===" ",a=this.#a,h=this.options,l=a!==void 0&&a!==""&&h.some(f=>!f.disabled&&(this.#t?this.#t(a,f):!0));if(e.name==="tab"&&o&&l){this.userInput===" "&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}s||i?(this.#e=d(this.#e,s?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):n?this.value=J(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(e.name==="tab"||this.isNavigating&&e.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(t){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(t)?this.selectedValues=this.selectedValues.filter(e=>e!==t):this.selectedValues=[...this.selectedValues,t]:this.selectedValues=[t])}#i(t){if(t!==this.#o){this.#o=t;const e=this.options;t&&this.#t?this.filteredOptions=e.filter(n=>this.#t?.(t,n)):this.filteredOptions=[...e];const s=W(this.focusedValue,this.filteredOptions);this.#e=d(s,0,this.filteredOptions);const i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class Q extends p{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",e=>{this.output.write(c.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}const X={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function L(r){return[...r].map(t=>X[t])}function Z(r){const t=new Intl.DateTimeFormat(r,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2e3,0,15)),e=[];let s="/";for(const i of t)i.type==="literal"?s=i.value.trim()||i.value:(i.type==="year"||i.type==="month"||i.type==="day")&&e.push({type:i.type,len:i.type==="year"?4:2});return{segments:e,separator:s}}function k(r){return Number.parseInt((r||"0").replace(/_/g,"0"),10)||0}function I(r){return{year:k(r.year),month:k(r.month),day:k(r.day)}}function T(r,t){return new Date(r||2001,t||1,0).getDate()}function F(r){const{year:t,month:e,day:s}=I(r);if(!t||t<0||t>9999||!e||e<1||e>12||!s||s<1)return;const i=new Date(Date.UTC(t,e-1,s));if(!(i.getUTCFullYear()!==t||i.getUTCMonth()!==e-1||i.getUTCDate()!==s))return{year:t,month:e,day:s}}function N(r){const t=F(r);return t?new Date(Date.UTC(t.year,t.month-1,t.day)):void 0}function tt(r,t,e,s){const i=e?{year:e.getUTCFullYear(),month:e.getUTCMonth()+1,day:e.getUTCDate()}:null,n=s?{year:s.getUTCFullYear(),month:s.getUTCMonth()+1,day:s.getUTCDate()}:null;return r==="year"?{min:i?.year??1,max:n?.year??9999}:r==="month"?{min:i&&t.year===i.year?i.month:1,max:n&&t.year===n.year?n.month:12}:{min:i&&t.year===i.year&&t.month===i.month?i.day:1,max:n&&t.year===n.year&&t.month===n.month?n.day:T(t.year,t.month)}}class et extends p{#e;#o;#t;#n;#a;#s={segmentIndex:0,positionInSegment:0};#i=!0;#r=null;inlineError="";get segmentCursor(){return{...this.#s}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#o}get formattedValue(){return this.#c(this.#t)}#c(t){return this.#e.map(e=>t[e.type]).join(this.#o)}#h(){this._setUserInput(this.#c(this.#t)),this._setValue(N(this.#t)??void 0)}constructor(t){const e=t.format?{segments:L(t.format),separator:t.separator??"/"}:Z(t.locale),s=t.separator??e.separator,i=t.format?L(t.format):e.segments,n=t.initialValue??t.defaultValue,o=n?{year:String(n.getUTCFullYear()).padStart(4,"0"),month:String(n.getUTCMonth()+1).padStart(2,"0"),day:String(n.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},a=i.map(h=>o[h.type]).join(s);super({...t,initialUserInput:a},!1),this.#e=i,this.#o=s,this.#t=o,this.#n=t.minDate,this.#a=t.maxDate,this.#h(),this.on("cursor",h=>this.#d(h)),this.on("key",(h,l)=>this.#f(h,l)),this.on("finalize",()=>this.#g(t))}#u(){const t=Math.max(0,Math.min(this.#s.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#s.positionInSegment=Math.max(0,Math.min(this.#s.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#r=null;const e=this.#u();e&&(this.#s.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#s.positionInSegment=0,this.#i=!0)}#p(t){const e=this.#u();if(!e)return;const{segment:s}=e,i=this.#t[s.type],n=!i||i.replace(/_/g,"")==="",o=Number.parseInt((i||"0").replace(/_/g,"0"),10)||0,a=tt(s.type,I(this.#t),this.#n,this.#a);let h;n?h=t===1?a.min:a.max:h=Math.max(Math.min(a.max,o+t),a.min),this.#t={...this.#t,[s.type]:h.toString().padStart(s.len,"0")},this.#i=!0,this.#r=null,this.#h()}#d(t){if(t)switch(t){case"right":return this.#l(1);case"left":return this.#l(-1);case"up":return this.#p(1);case"down":return this.#p(-1)}}#f(t,e){if(e?.name==="backspace"||e?.sequence==="\x7F"||e?.sequence==="\b"||t==="\x7F"||t==="\b"){this.inlineError="";const s=this.#u();if(!s)return;if(!this.#t[s.segment.type].replace(/_/g,"")){this.#l(-1);return}this.#t[s.segment.type]="_".repeat(s.segment.len),this.#i=!0,this.#s.positionInSegment=0,this.#h();return}if(e?.name==="tab"){this.inlineError="";const s=this.#u();if(!s)return;const i=e.shift?-1:1,n=s.index+i;n>=0&&n<this.#e.length&&(this.#s.segmentIndex=n,this.#s.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){const s=this.#u();if(!s)return;const{segment:i}=s,n=!this.#t[i.type].replace(/_/g,"");if(this.#i&&this.#r!==null&&!n){const m=this.#r+t,g={...this.#t,[i.type]:m},b=this.#m(g,i);if(b){this.inlineError=b,this.#r=null,this.#i=!1;return}this.inlineError="",this.#t[i.type]=m,this.#r=null,this.#i=!1,this.#h(),s.index<this.#e.length-1&&(this.#s.segmentIndex=s.index+1,this.#s.positionInSegment=0,this.#i=!0);return}this.#i&&!n&&(this.#t[i.type]="_".repeat(i.len),this.#s.positionInSegment=0),this.#i=!1,this.#r=null;const o=this.#t[i.type],a=o.indexOf("_"),h=a>=0?a:Math.min(this.#s.positionInSegment,i.len-1);if(h<0||h>=i.len)return;let l=o.slice(0,h)+t+o.slice(h+1),f=!1;if(h===0&&o==="__"&&(i.type==="month"||i.type==="day")){const m=Number.parseInt(t,10);l=`0${t}`,f=m<=(i.type==="month"?1:2)}if(i.type==="year"&&(l=(o.replace(/_/g,"")+t).padStart(i.len,"_")),!l.includes("_")){const m={...this.#t,[i.type]:l},g=this.#m(m,i);if(g){this.inlineError=g;return}}this.inlineError="",this.#t[i.type]=l;const v=l.includes("_")?void 0:F(this.#t);if(v){const{year:m,month:g}=v,b=T(m,g);this.#t={year:String(Math.max(0,Math.min(9999,m))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,g))).padStart(2,"0"),day:String(Math.max(1,Math.min(b,v.day))).padStart(2,"0")}}this.#h();const U=l.indexOf("_");f?(this.#i=!0,this.#r=t):U>=0?this.#s.positionInSegment=U:a>=0&&s.index<this.#e.length-1?(this.#s.segmentIndex=s.index+1,this.#s.positionInSegment=0,this.#i=!0):this.#s.positionInSegment=Math.min(h+1,i.len-1)}}#m(t,e){const{month:s,day:i}=I(t);if(e.type==="month"&&(s<0||s>12))return u.date.messages.invalidMonth;if(e.type==="day"&&(i<0||i>31))return u.date.messages.invalidDay(31,"any month")}#g(t){const{year:e,month:s,day:i}=I(this.#t);if(e&&s&&i){const n=T(e,s);this.#t={...this.#t,day:String(Math.min(i,n)).padStart(2,"0")}}this.value=N(this.#t)??t.defaultValue??void 0}}class st extends p{options;cursor=0;#e;getGroupItems(t){return this.options.filter(e=>e.group===t)}isGroupSelected(t){const e=this.getGroupItems(t),s=this.value;return s===void 0?!1:e.every(i=>s.includes(i.value))}toggleValue(){const t=this.options[this.cursor];if(this.value===void 0&&(this.value=[]),t.group===!0){const e=t.value,s=this.getGroupItems(e);this.isGroupSelected(e)?this.value=this.value.filter(i=>s.findIndex(n=>n.value===i)===-1):this.value=[...this.value,...s.map(i=>i.value)],this.value=Array.from(new Set(this.value))}else{const e=this.value.includes(t.value);this.value=e?this.value.filter(s=>s!==t.value):[...this.value,t.value]}}constructor(t){super(t,!1);const{options:e}=t;this.#e=t.selectableGroups!==!1,this.options=Object.entries(e).flatMap(([s,i])=>[{value:s,group:!0,label:s},...i.map(n=>({...n,group:s}))]),this.value=[...t.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:s})=>s===t.cursorAt),this.#e?0:1),this.on("cursor",s=>{switch(s){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;const i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;const i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}}let it=class extends p{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(t=>t.disabled!==!0)}toggleAll(){const t=this._enabledOptions,e=this.value!==void 0&&this.value.length===t.length;this.value=e?[]:t.map(s=>s.value)}toggleInvert(){const t=this.value;if(!t)return;const e=this._enabledOptions.filter(s=>!t.includes(s.value));this.value=e.map(s=>s.value)}toggleValue(){this.value===void 0&&(this.value=[]);const t=this.value.includes(this._value);this.value=t?this.value.filter(e=>e!==this._value):[...this.value,this._value]}constructor(t){super(t,!1),this.options=t.options,this.value=[...t.initialValues??[]];const e=Math.max(this.options.findIndex(({value:s})=>s===t.cursorAt),0);this.cursor=this.options[e].disabled?d(e,1,this.options):e,this.on("key",s=>{s==="a"&&this.toggleAll(),s==="i"&&this.toggleInvert()}),this.on("cursor",s=>{switch(s){case"left":case"up":this.cursor=d(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=d(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}};class rt extends p{_mask="\u2022";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state==="submit"||this.state==="cancel")return this.masked;const t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${y(["inverse","hidden"],"_")}`;const e=this.masked,s=e.slice(0,this.cursor),i=e.slice(this.cursor);return`${s}${y("inverse",i[0])}${i.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...e}){super(e),this._mask=t??"\u2022",this.on("userInput",s=>{this._setValue(s)})}}class nt extends p{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;const e=this.options.findIndex(({value:i})=>i===t.initialValue),s=e===-1?0:e;this.cursor=this.options[s].disabled?d(s,1,this.options):s,this.changeValue(),this.on("cursor",i=>{switch(i){case"left":case"up":this.cursor=d(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=d(this.cursor,1,this.options);break}this.changeValue()})}}class ot extends p{options;cursor=0;constructor(t){super(t,!1),this.options=t.options;const e=t.caseSensitive===!0,s=this.options.map(({value:[i]})=>e?i:i?.toLowerCase());this.cursor=Math.max(s.indexOf(t.initialValue),0),this.on("key",(i,n)=>{if(!i)return;const o=e&&n.shift?i.toUpperCase():i;if(!s.includes(o))return;const a=this.options.find(({value:[h]})=>e?h===o:h?.toLowerCase()===i);a&&(this.value=a.value,this.state="submit",this.emit("submit"))})}}class at extends p{get userInputWithCursor(){if(this.state==="submit")return this.userInput;const t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;const e=t.slice(0,this.cursor),[s,...i]=t.slice(this.cursor);return`${e}${y("inverse",s)}${i.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",e=>{this._setValue(e)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}export{H as AutocompletePrompt,Q as ConfirmPrompt,et as DatePrompt,st as GroupMultiSelectPrompt,it as MultiSelectPrompt,rt as PasswordPrompt,p as Prompt,ot as SelectKeyPrompt,nt as SelectPrompt,at as TextPrompt,z as block,O as getColumns,A as getRows,q as isCancel,u as settings,K as updateSettings,R as wrapTextWithPrefix};
15
11
  //# sourceMappingURL=index.mjs.map