Skip to content

Commit 8e76e3c

Browse files
refactor: apply review fixes — theme usage, remove yoctocolors, unify skip logic
1 parent b45b861 commit 8e76e3c

File tree

5 files changed

+30
-52
lines changed

5 files changed

+30
-52
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
packages/prompts/README.md
1+
packages/prompts/README.md

packages/inquirer/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,8 @@
7979
"@inquirer/prompts": "^7.9.0",
8080
"@inquirer/type": "^3.0.9",
8181
"mute-stream": "^2.0.0",
82-
"run-async": "^4.0.5",
83-
"rxjs": "^7.8.2",
84-
"yoctocolors-cjs": "^2.1.3"
82+
"run-async": "^4.0.6",
83+
"rxjs": "^7.8.2"
8584
},
8685
"devDependencies": {
8786
"@arethetypeswrong/cli": "^0.18.2",

packages/inquirer/src/ui/prompt.ts

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -232,29 +232,17 @@ export default class PromptsRunner<A extends Answers> {
232232
of(question).pipe(
233233
concatMap((question) =>
234234
from(this.shouldRun(question)).pipe(
235-
concatMap((result) => {
236-
let ask = true;
237-
let display = true;
238-
if (typeof result === 'object') {
239-
display = result.display;
240-
ask = result.ask;
241-
} else {
242-
ask = result;
235+
concatMap(({ display, ask }) => {
236+
if (ask) {
237+
return defer(() => from(this.fetchAnswer(question)));
243238
}
244-
if (ask || display) {
245-
return of({ question, ask });
239+
if (display) {
240+
this.displaySkippedQuestion(question);
246241
}
247242
return EMPTY;
248243
}),
249244
),
250245
),
251-
concatMap(({ question, ask }) => {
252-
if (ask) {
253-
return defer(() => from(this.fetchAnswer(question)));
254-
}
255-
this.displaySkippedQuestion(question);
256-
return EMPTY;
257-
}),
258246
),
259247
),
260248
);
@@ -420,14 +408,12 @@ export default class PromptsRunner<A extends Answers> {
420408
this.abortController.abort();
421409
};
422410

423-
private shouldRun = async (
424-
question: Question<A>,
425-
): Promise<boolean | CustomWhenResult> => {
411+
private shouldRun = async (question: Question<A>): Promise<CustomWhenResult> => {
426412
if (
427413
question.askAnswered !== true &&
428414
_.get(this.answers, question.name) !== undefined
429415
) {
430-
return false;
416+
return { display: false, ask: false };
431417
}
432418

433419
const { when } = question;
@@ -438,9 +424,11 @@ export default class PromptsRunner<A extends Answers> {
438424
const ask = shouldRun.ask;
439425
return { display, ask };
440426
}
441-
return Boolean(shouldRun);
427+
const ask = Boolean(shouldRun);
428+
return { display: ask, ask };
442429
}
443430

444-
return when !== false;
431+
const ask = when !== false;
432+
return { display: ask, ask };
445433
};
446434
}
Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import colors from 'yoctocolors-cjs';
21
import { Answers, Question } from '../types.ts';
2+
import { makeTheme } from '@inquirer/core';
33

44
type RendererFunction<A extends Answers = Answers> = (question: Question<A>) => string;
55

@@ -22,33 +22,29 @@ type SkippedRendererType<A extends Answers = Answers> = {
2222
password: RendererFunction<A>;
2323
default: RendererFunction<A>;
2424
};
25+
const theme = makeTheme();
26+
const prefix = typeof theme.prefix === 'string' ? theme.prefix : theme.prefix.idle;
2527

2628
const SkippedRenderer: SkippedRendererType = {
2729
confirm: (question: TypedQuestion) => {
2830
const defaultVal = question.default;
2931
const answerText = defaultVal === true ? 'Yes' : defaultVal === false ? 'No' : '';
30-
const prefix = '?';
31-
const line = `${prefix} ${question.message} ${answerText}`;
32-
return colors.dim(line);
32+
return renderLine(question.message.toString(), answerText);
3333
},
3434

3535
select: (question: TypedQuestion) => {
3636
const defaultVal = question.default;
37-
const prefix = '?';
3837
let answerText = String(defaultVal);
3938

4039
if (question.choices && defaultVal !== undefined) {
4140
const selectedChoice = question.choices.find((c) => c.value === defaultVal);
4241
answerText = selectedChoice ? selectedChoice.name : String(defaultVal);
4342
}
44-
45-
const line = `${prefix} ${question.message} ${answerText}`;
46-
return colors.dim(line);
43+
return renderLine(question.message.toString(), answerText);
4744
},
4845

4946
checkbox: (question: TypedQuestion) => {
5047
const defaultVal = question.default;
51-
const prefix = '?';
5248
let answerText = '';
5349

5450
if (Array.isArray(defaultVal) && question.choices) {
@@ -60,40 +56,36 @@ const SkippedRenderer: SkippedRendererType = {
6056
answerText = String(defaultVal);
6157
}
6258

63-
const line = `${prefix} ${question.message} ${answerText}`;
64-
return colors.dim(line);
59+
return renderLine(question.message.toString(), answerText);
6560
},
6661

6762
editor: (question: TypedQuestion) => {
68-
const prefix = '?';
6963
const answerText = question.default !== undefined ? '[Default Content]' : '';
70-
const line = `${prefix} ${question.message} ${answerText}`;
71-
return colors.dim(line);
64+
return renderLine(question.message.toString(), answerText);
7265
},
7366

7467
password: (question: TypedQuestion) => {
7568
const defaultVal = question.default;
76-
const prefix = '?';
7769
let answerText = '';
7870

7971
if (defaultVal !== undefined) {
8072
answerText = '[PASSWORD SET]';
8173
}
82-
83-
const line = `${prefix} ${question.message} ${answerText}`;
84-
return colors.dim(line);
74+
return renderLine(question.message.toString(), answerText);
8575
},
8676

8777
default: (question: TypedQuestion) => {
88-
const prefix = '?';
89-
const answer = question.default !== undefined ? String(question.default) : '';
90-
const line = `${prefix} ${question.message} ${answer}`;
91-
return colors.dim(line);
78+
const answerText = question.default !== undefined ? String(question.default) : '';
79+
return renderLine(question.message.toString(), answerText);
9280
},
9381
list: (question: TypedQuestion) => SkippedRenderer.select(question),
9482
rawlist: (question: TypedQuestion) => SkippedRenderer.select(question),
9583
input: (question: TypedQuestion) => SkippedRenderer.default(question),
9684
number: (question: TypedQuestion) => SkippedRenderer.default(question),
9785
};
9886

87+
function renderLine(message: string, answerText: string) {
88+
return theme.style.help(`${prefix} ${message} ${answerText}`);
89+
}
90+
9991
export default SkippedRenderer;

yarn.lock

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4719,8 +4719,7 @@ __metadata:
47194719
mute-stream: "npm:^2.0.0"
47204720
run-async: "npm:^4.0.5"
47214721
rxjs: "npm:^7.8.2"
4722-
tshy: "npm:^3.0.2"
4723-
yoctocolors-cjs: "npm:^2.1.3"
4722+
tshy: "npm:^3.0.3"
47244723
peerDependencies:
47254724
"@types/node": ">=18"
47264725
peerDependenciesMeta:
@@ -8664,7 +8663,7 @@ __metadata:
86648663
languageName: node
86658664
linkType: hard
86668665

8667-
"yoctocolors-cjs@npm:^2.1.2, yoctocolors-cjs@npm:^2.1.3":
8666+
"yoctocolors-cjs@npm:^2.1.3":
86688667
version: 2.1.3
86698668
resolution: "yoctocolors-cjs@npm:2.1.3"
86708669
checksum: 10/b2144b38807673a4254dae06fe1a212729550609e606289c305e45c585b36fab1dbba44fe6cde90db9b28be465ec63f4c2a50867aeec6672f6bc36b6c9a361a0

0 commit comments

Comments
 (0)