@inquirer/rawlist 0.0.3-alpha.0 → 0.0.6-alpha.0

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.
@@ -0,0 +1,13 @@
1
+ import { AsyncPromptConfig } from '@inquirer/core';
2
+ declare type RawlistConfig = AsyncPromptConfig & {
3
+ choices: {
4
+ value: string;
5
+ name?: string;
6
+ key?: string;
7
+ }[];
8
+ };
9
+ declare const _default: (options: RawlistConfig, stdio?: {
10
+ input?: NodeJS.ReadableStream | undefined;
11
+ output?: NodeJS.WritableStream | undefined;
12
+ } | undefined) => Promise<string>;
13
+ export default _default;
package/dist/index.js ADDED
@@ -0,0 +1,61 @@
1
+ import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, } from '@inquirer/core';
2
+ import chalk from 'chalk';
3
+ const numberRegex = /[0-9]+/;
4
+ export default createPrompt((config, done) => {
5
+ const { choices } = config;
6
+ const [status, setStatus] = useState('pending');
7
+ const [value, setValue] = useState('');
8
+ const [errorMsg, setError] = useState(undefined);
9
+ const prefix = usePrefix();
10
+ useKeypress((key, rl) => {
11
+ if (isEnterKey(key)) {
12
+ let selectedChoice;
13
+ if (numberRegex.test(value)) {
14
+ const answer = parseInt(value, 10) - 1;
15
+ selectedChoice = choices[answer];
16
+ }
17
+ else {
18
+ const answer = value.toLowerCase();
19
+ selectedChoice = choices.find(({ key }) => key === answer);
20
+ }
21
+ if (selectedChoice) {
22
+ const finalValue = selectedChoice.value || selectedChoice.name;
23
+ setValue(finalValue);
24
+ setStatus('done');
25
+ done(finalValue);
26
+ }
27
+ else if (value === '') {
28
+ setError('Please input a value');
29
+ }
30
+ else {
31
+ setError(`"${chalk.red(value)}" isn't an available option`);
32
+ }
33
+ }
34
+ else {
35
+ setValue(rl.line);
36
+ setError(undefined);
37
+ }
38
+ });
39
+ const message = chalk.bold(config.message);
40
+ if (status === 'done') {
41
+ return `${prefix} ${message} ${chalk.cyan(value)}`;
42
+ }
43
+ const choicesStr = choices
44
+ .map((choice, index) => {
45
+ const humanIndex = index + 1;
46
+ const line = ` ${choice.key || humanIndex}) ${choice.name || choice.value}`;
47
+ if (choice.key === value.toLowerCase() || String(humanIndex) === value) {
48
+ return chalk.cyan(line);
49
+ }
50
+ return line;
51
+ })
52
+ .join('\n');
53
+ let error = '';
54
+ if (errorMsg) {
55
+ error = chalk.red(`> ${errorMsg}`);
56
+ }
57
+ return [
58
+ `${prefix} ${message} ${value}`,
59
+ [choicesStr, error].filter(Boolean).join('\n'),
60
+ ];
61
+ });
package/package.json CHANGED
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "name": "@inquirer/rawlist",
3
- "version": "0.0.3-alpha.0",
3
+ "type": "module",
4
+ "version": "0.0.6-alpha.0",
4
5
  "description": "Inquirer rawlist prompt",
5
- "main": "index.js",
6
+ "main": "dist/index.js",
7
+ "typings": "dist/index.d.ts",
8
+ "files": [
9
+ "dist/"
10
+ ],
6
11
  "repository": "SBoudrias/Inquirer.js",
7
12
  "keywords": [
8
13
  "cli",
@@ -18,11 +23,14 @@
18
23
  "license": "MIT",
19
24
  "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/master/packages/rawlist/README.md",
20
25
  "dependencies": {
21
- "@inquirer/core": "^0.0.20-alpha.0",
22
- "chalk": "^4.1.1"
26
+ "@inquirer/core": "^0.0.23-alpha.0",
27
+ "chalk": "^5.0.1"
28
+ },
29
+ "scripts": {
30
+ "tsc": "tsc"
23
31
  },
24
32
  "publishConfig": {
25
33
  "access": "public"
26
34
  },
27
- "gitHead": "83b807522ca6e10ab90a6921eac9d9655e2dac38"
35
+ "gitHead": "a95b68efa6f407cefff63300e7e50da34c6b6693"
28
36
  }
package/demo.js DELETED
@@ -1,55 +0,0 @@
1
- const rawlist = require('.');
2
-
3
- (async () => {
4
- let answer;
5
-
6
- answer = await rawlist({
7
- message: '(no keys) Conflict on `file.js`:',
8
- choices: [
9
- {
10
- name: 'Overwrite',
11
- value: 'overwrite',
12
- },
13
- {
14
- name: 'Overwrite this one and all next',
15
- value: 'overwrite_all',
16
- },
17
- {
18
- name: 'Show diff',
19
- value: 'diff',
20
- },
21
- {
22
- name: 'Abort',
23
- value: 'abort',
24
- },
25
- ],
26
- });
27
- console.log('Answer:', answer);
28
-
29
- answer = await rawlist({
30
- message: '(with keys) Conflict on `file.js`:',
31
- choices: [
32
- {
33
- key: 'y',
34
- name: 'Overwrite',
35
- value: 'overwrite',
36
- },
37
- {
38
- key: 'a',
39
- name: 'Overwrite this one and all next',
40
- value: 'overwrite_all',
41
- },
42
- {
43
- key: 'd',
44
- name: 'Show diff',
45
- value: 'diff',
46
- },
47
- {
48
- key: 'x',
49
- name: 'Abort',
50
- value: 'abort',
51
- },
52
- ],
53
- });
54
- console.log('Answer:', answer);
55
- })();
package/index.js DELETED
@@ -1,70 +0,0 @@
1
- const { createPrompt, useState, useKeypress } = require('@inquirer/core/hooks');
2
- const { usePrefix } = require('@inquirer/core/lib/prefix');
3
- const { isEnterKey } = require('@inquirer/core/lib/key');
4
- const chalk = require('chalk');
5
-
6
- const numberRegex = /[0-9]+/;
7
-
8
- module.exports = createPrompt((config, done) => {
9
- const { choices } = config;
10
- const [status, setStatus] = useState('pending');
11
- const [value, setValue] = useState('');
12
- const [errorMsg, setError] = useState();
13
- const prefix = usePrefix();
14
-
15
- useKeypress((key, rl) => {
16
- if (isEnterKey(key)) {
17
- let selectedChoice;
18
- if (numberRegex.test(value)) {
19
- const answer = parseInt(value, 10) - 1;
20
- selectedChoice = choices[answer];
21
- } else {
22
- const answer = value.toLowerCase();
23
- selectedChoice = choices.find(({ key }) => key === answer);
24
- }
25
-
26
- if (selectedChoice) {
27
- const finalValue = selectedChoice.value || selectedChoice.name;
28
- setValue(finalValue);
29
- setStatus('done');
30
- done(finalValue);
31
- } else if (value === '') {
32
- setError('Please input a value');
33
- } else {
34
- setError(`"${chalk.red(value)}" isn't an available option`);
35
- }
36
- } else {
37
- setValue(rl.line);
38
- setError(undefined);
39
- }
40
- });
41
-
42
- const message = chalk.bold(config.message);
43
-
44
- if (status === 'done') {
45
- return `${prefix} ${message} ${chalk.cyan(value)}`;
46
- }
47
-
48
- const choicesStr = choices
49
- .map((choice, index) => {
50
- const humanIndex = index + 1;
51
- const line = ` ${choice.key || humanIndex}) ${choice.name || choice.value}`;
52
-
53
- if (choice.key === value.toLowerCase() || String(humanIndex) === value) {
54
- return chalk.cyan(line);
55
- }
56
-
57
- return line;
58
- })
59
- .join('\n');
60
-
61
- let error = '';
62
- if (errorMsg) {
63
- error = chalk.red(`> ${errorMsg}`);
64
- }
65
-
66
- return [
67
- `${prefix} ${message} ${value}`,
68
- [choicesStr, error].filter(Boolean).join('\n'),
69
- ];
70
- });