jest-watch-typeahead 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,7 +50,7 @@ class FileNamePatternPrompt extends _jestWatcher.PatternPrompt {
50
50
 
51
51
  const prefix = ` ${_chalk2.default.dim('\u203A')} `;
52
52
  const padding = (0, _stringLength2.default)(prefix) + 2;
53
- const width = (0, _utils.getTerminalWidth)(pipe);
53
+ const width = (0, _utils.getTerminalWidth)();
54
54
 
55
55
  var _scroll = (0, _scroll3.default)(total, options);
56
56
 
@@ -1,15 +1,12 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- var _jestWatcher = require('jest-watcher');
3
+ var _jestWatcher = require("jest-watcher");
4
4
 
5
- var _prompt = require('./prompt');
6
-
7
- var _prompt2 = _interopRequireDefault(_prompt);
5
+ var _prompt = _interopRequireDefault(require("./prompt"));
8
6
 
9
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
8
 
11
9
  class FileNamePlugin {
12
-
13
10
  constructor({
14
11
  stdin,
15
12
  stdout,
@@ -26,7 +23,9 @@ class FileNamePlugin {
26
23
  }
27
24
 
28
25
  apply(jestHooks) {
29
- jestHooks.onFileChange(({ projects }) => {
26
+ jestHooks.onFileChange(({
27
+ projects
28
+ }) => {
30
29
  this._projects = projects;
31
30
  });
32
31
  }
@@ -36,11 +35,14 @@ class FileNamePlugin {
36
35
  }
37
36
 
38
37
  run(globalConfig, updateConfigAndRun) {
39
- const p = new _prompt2.default(this._stdout, this._prompt);
38
+ const p = new _prompt.default(this._stdout, this._prompt);
40
39
  p.updateSearchSources(this._projects);
41
40
  return new Promise((res, rej) => {
42
41
  p.run(value => {
43
- updateConfigAndRun({ mode: 'watch', testPathPattern: value });
42
+ updateConfigAndRun({
43
+ mode: 'watch',
44
+ testPathPattern: value
45
+ });
44
46
  res();
45
47
  }, rej);
46
48
  });
@@ -49,6 +51,7 @@ class FileNamePlugin {
49
51
  getUsageInfo() {
50
52
  return this._usageInfo;
51
53
  }
54
+
52
55
  }
53
56
 
54
57
  module.exports = FileNamePlugin;
@@ -1,31 +1,27 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _chalk = require('chalk');
8
+ var _chalk = _interopRequireDefault(require("chalk"));
8
9
 
9
- var _chalk2 = _interopRequireDefault(_chalk);
10
+ var _ansiEscapes = _interopRequireDefault(require("ansi-escapes"));
10
11
 
11
- var _stringLength = require('string-length');
12
+ var _stringLength = _interopRequireDefault(require("string-length"));
12
13
 
13
- var _stringLength2 = _interopRequireDefault(_stringLength);
14
+ var _jestWatcher = require("jest-watcher");
14
15
 
15
- var _jestWatcher = require('jest-watcher');
16
+ var _utils = require("../lib/utils");
16
17
 
17
- var _utils = require('../lib/utils');
18
+ var _pattern_mode_helpers = require("../lib/pattern_mode_helpers");
18
19
 
19
- var _pattern_mode_helpers = require('../lib/pattern_mode_helpers');
20
-
21
- var _scroll2 = require('../lib/scroll');
22
-
23
- var _scroll3 = _interopRequireDefault(_scroll2);
20
+ var _scroll2 = _interopRequireDefault(require("../lib/scroll"));
24
21
 
25
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
23
 
27
24
  class FileNamePatternPrompt extends _jestWatcher.PatternPrompt {
28
-
29
25
  constructor(pipe, prompt) {
30
26
  super(pipe, prompt);
31
27
  this._entityName = 'filenames';
@@ -34,34 +30,35 @@ class FileNamePatternPrompt extends _jestWatcher.PatternPrompt {
34
30
 
35
31
  _onChange(pattern, options) {
36
32
  super._onChange(pattern, options);
33
+
37
34
  this._printTypeahead(pattern, options);
38
35
  }
39
36
 
40
37
  _printTypeahead(pattern, options) {
41
38
  const matchedTests = this._getMatchedTests(pattern);
39
+
42
40
  const total = matchedTests.length;
43
41
  const pipe = this._pipe;
44
42
  const prompt = this._prompt;
45
-
46
43
  (0, _jestWatcher.printPatternCaret)(pattern, pipe);
44
+ pipe.write(_ansiEscapes.default.cursorLeft);
47
45
 
48
46
  if (pattern) {
49
47
  (0, _pattern_mode_helpers.printPatternMatches)(total, 'file', pipe);
50
-
51
- const prefix = ` ${_chalk2.default.dim('\u203A')} `;
52
- const padding = (0, _stringLength2.default)(prefix) + 2;
48
+ const prefix = ` ${_chalk.default.dim('\u203A')} `;
49
+ const padding = (0, _stringLength.default)(prefix) + 2;
53
50
  const width = (0, _utils.getTerminalWidth)(pipe);
54
51
 
55
- var _scroll = (0, _scroll3.default)(total, options);
56
-
57
- const start = _scroll.start,
52
+ const _scroll = (0, _scroll2.default)(total, options),
53
+ start = _scroll.start,
58
54
  end = _scroll.end,
59
55
  index = _scroll.index;
60
56
 
61
-
62
57
  prompt.setPromptLength(total);
63
-
64
- matchedTests.slice(start, end).map(({ path, context }) => {
58
+ matchedTests.slice(start, end).map(({
59
+ path,
60
+ context
61
+ }) => {
65
62
  const filePath = (0, _utils.trimAndFormatPath)(padding, context.config, path, width);
66
63
  return (0, _utils.highlight)(path, filePath, pattern, context.config.rootDir);
67
64
  }).map((item, i) => (0, _pattern_mode_helpers.formatTypeaheadSelection)(item, i, index, prompt)).forEach(item => (0, _pattern_mode_helpers.printTypeaheadItem)(item, pipe));
@@ -85,10 +82,15 @@ class FileNamePatternPrompt extends _jestWatcher.PatternPrompt {
85
82
  return [];
86
83
  }
87
84
 
88
- return this._searchSources.reduce((tests, { testPaths, config }) => {
85
+ return this._searchSources.reduce((tests, {
86
+ testPaths,
87
+ config
88
+ }) => {
89
89
  return tests.concat(testPaths.filter(testPath => regex.test(testPath)).map(path => ({
90
90
  path,
91
- context: { config }
91
+ context: {
92
+ config
93
+ }
92
94
  })));
93
95
  }, []);
94
96
  }
@@ -96,5 +98,7 @@ class FileNamePatternPrompt extends _jestWatcher.PatternPrompt {
96
98
  updateSearchSources(searchSources) {
97
99
  this._searchSources = searchSources;
98
100
  }
101
+
99
102
  }
103
+
100
104
  exports.default = FileNamePatternPrompt;
@@ -12,17 +12,12 @@ class FileNamePlugin {
12
12
 
13
13
  constructor({
14
14
  stdin,
15
- stdout,
16
- config = {}
15
+ stdout
17
16
  }) {
18
17
  this._stdin = stdin;
19
18
  this._stdout = stdout;
20
19
  this._prompt = new _jestWatcher.Prompt();
21
20
  this._projects = [];
22
- this._usageInfo = {
23
- key: config.key || 'p',
24
- prompt: config.prompt || 'filter by a filename regex pattern'
25
- };
26
21
  }
27
22
 
28
23
  apply(jestHooks) {
@@ -46,8 +41,12 @@ class FileNamePlugin {
46
41
  });
47
42
  }
48
43
 
44
+ // eslint-disable-next-line class-methods-use-this
49
45
  getUsageInfo() {
50
- return this._usageInfo;
46
+ return {
47
+ key: 'p',
48
+ prompt: 'filter by a filename regex pattern'
49
+ };
51
50
  }
52
51
  }
53
52
 
@@ -1,45 +1,51 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.formatTypeaheadSelection = exports.printTypeaheadItem = exports.printMore = exports.printStartTyping = exports.printPatternMatches = undefined;
6
+ exports.formatTypeaheadSelection = exports.printTypeaheadItem = exports.printMore = exports.printStartTyping = exports.printPatternMatches = void 0;
7
7
 
8
- var _chalk = require('chalk');
8
+ var _chalk = _interopRequireDefault(require("chalk"));
9
9
 
10
- var _chalk2 = _interopRequireDefault(_chalk);
10
+ var _stripAnsi = _interopRequireDefault(require("strip-ansi"));
11
11
 
12
- var _stripAnsi = require('strip-ansi');
13
-
14
- var _stripAnsi2 = _interopRequireDefault(_stripAnsi);
15
-
16
- var _jestWatcher = require('jest-watcher');
12
+ var _jestWatcher = require("jest-watcher");
17
13
 
18
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
15
 
20
16
  const pluralize = (count, text) => count === 1 ? text : `${text}s`;
21
17
 
22
- const printPatternMatches = exports.printPatternMatches = (count, entity, pipe, extraText = '') => {
18
+ const printPatternMatches = (count, entity, pipe, extraText = '') => {
23
19
  const pluralized = pluralize(count, entity);
24
20
  const result = count ? `\n\n Pattern matches ${count} ${pluralized}` : `\n\n Pattern matches no ${pluralized}`;
25
-
26
21
  pipe.write(result + extraText);
27
22
  };
28
23
 
29
- const printStartTyping = exports.printStartTyping = (entity, pipe) => {
30
- pipe.write(`\n\n ${_chalk2.default.italic.yellow(`Start typing to filter by a ${entity} regex pattern.`)}`);
24
+ exports.printPatternMatches = printPatternMatches;
25
+
26
+ const printStartTyping = (entity, pipe) => {
27
+ pipe.write(`\n\n ${_chalk.default.italic.yellow(`Start typing to filter by a ${entity} regex pattern.`)}`);
31
28
  };
32
29
 
33
- const printMore = exports.printMore = (entity, pipe, more) => {
34
- pipe.write(`\n ${_chalk2.default.dim(`...and ${more} more ${pluralize(more, entity)}`)}`);
30
+ exports.printStartTyping = printStartTyping;
31
+
32
+ const printMore = (entity, pipe, more) => {
33
+ pipe.write(`\n ${_chalk.default.dim(`...and ${more} more ${pluralize(more, entity)}`)}`);
35
34
  };
36
35
 
37
- const printTypeaheadItem = exports.printTypeaheadItem = (item, pipe) => pipe.write(`\n ${_chalk2.default.dim('\u203A')} ${item}`);
36
+ exports.printMore = printMore;
38
37
 
39
- const formatTypeaheadSelection = exports.formatTypeaheadSelection = (item, index, activeIndex, prompt) => {
38
+ const printTypeaheadItem = (item, pipe) => pipe.write(`\n ${_chalk.default.dim('\u203A')} ${item}`);
39
+
40
+ exports.printTypeaheadItem = printTypeaheadItem;
41
+
42
+ const formatTypeaheadSelection = (item, index, activeIndex, prompt) => {
40
43
  if (index === activeIndex) {
41
- prompt.setPromptSelection((0, _stripAnsi2.default)(item));
42
- return _chalk2.default.black.bgYellow((0, _stripAnsi2.default)(item));
44
+ prompt.setPromptSelection((0, _stripAnsi.default)(item));
45
+ return _chalk.default.black.bgYellow((0, _stripAnsi.default)(item));
43
46
  }
47
+
44
48
  return item;
45
- };
49
+ };
50
+
51
+ exports.formatTypeaheadSelection = formatTypeaheadSelection;
@@ -3,12 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
-
8
- const scroll = (size, { offset, max }) => {
8
+ const scroll = (size, {
9
+ offset,
10
+ max
11
+ }) => {
9
12
  let start = 0;
10
13
  let index = Math.min(offset, size);
11
-
12
14
  const halfScreen = max / 2;
13
15
 
14
16
  if (index <= halfScreen) {
@@ -17,6 +19,7 @@ const scroll = (size, { offset, max }) => {
17
19
  if (size >= max) {
18
20
  start = Math.min(index - halfScreen - 1, size - max);
19
21
  }
22
+
20
23
  index = Math.min(index - start, size);
21
24
  }
22
25
 
@@ -27,4 +30,5 @@ const scroll = (size, { offset, max }) => {
27
30
  };
28
31
  };
29
32
 
30
- exports.default = scroll;
33
+ var _default = scroll;
34
+ exports.default = _default;
@@ -1,86 +1,86 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.formatTestNameByPattern = exports.highlight = exports.getTerminalWidth = exports.trimAndFormatPath = undefined;
6
+ exports.formatTestNameByPattern = exports.highlight = exports.getTerminalWidth = exports.trimAndFormatPath = void 0;
7
7
 
8
- var _path = require('path');
8
+ var _path = _interopRequireDefault(require("path"));
9
9
 
10
- var _path2 = _interopRequireDefault(_path);
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
11
 
12
- var _chalk = require('chalk');
12
+ var _slash = _interopRequireDefault(require("slash"));
13
13
 
14
- var _chalk2 = _interopRequireDefault(_chalk);
15
-
16
- var _slash = require('slash');
17
-
18
- var _slash2 = _interopRequireDefault(_slash);
19
-
20
- var _stripAnsi = require('strip-ansi');
21
-
22
- var _stripAnsi2 = _interopRequireDefault(_stripAnsi);
14
+ var _stripAnsi = _interopRequireDefault(require("strip-ansi"));
23
15
 
24
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
17
 
26
18
  /* eslint-disable no-param-reassign */
27
19
  const relativePath = (config, testPath) => {
28
- testPath = _path2.default.relative(config.cwd || config.rootDir, testPath);
29
- const dirname = _path2.default.dirname(testPath);
30
- const basename = _path2.default.basename(testPath);
31
- return { basename, dirname };
20
+ testPath = _path.default.relative(config.cwd || config.rootDir, testPath);
21
+
22
+ const dirname = _path.default.dirname(testPath);
23
+
24
+ const basename = _path.default.basename(testPath);
25
+
26
+ return {
27
+ basename,
28
+ dirname
29
+ };
32
30
  };
33
31
 
34
- const colorize = (str, start, end) => _chalk2.default.dim(str.slice(0, start)) + _chalk2.default.reset(str.slice(start, end)) + _chalk2.default.dim(str.slice(end));
32
+ const colorize = (str, start, end) => _chalk.default.dim(str.slice(0, start)) + _chalk.default.reset(str.slice(start, end)) + _chalk.default.dim(str.slice(end));
35
33
 
36
- const trimAndFormatPath = exports.trimAndFormatPath = (pad, config, testPath, columns) => {
34
+ const trimAndFormatPath = (pad, config, testPath, columns) => {
37
35
  const maxLength = columns - pad;
38
36
  const relative = relativePath(config, testPath);
39
37
  const basename = relative.basename;
40
- let dirname = relative.dirname;
38
+ let dirname = relative.dirname; // length is ok
41
39
 
42
- // length is ok
40
+ if ((dirname + _path.default.sep + basename).length <= maxLength) {
41
+ return (0, _slash.default)(_chalk.default.dim(dirname + _path.default.sep) + _chalk.default.bold(basename));
42
+ } // we can fit trimmed dirname and full basename
43
43
 
44
- if ((dirname + _path2.default.sep + basename).length <= maxLength) {
45
- return (0, _slash2.default)(_chalk2.default.dim(dirname + _path2.default.sep) + _chalk2.default.bold(basename));
46
- }
47
44
 
48
- // we can fit trimmed dirname and full basename
49
45
  const basenameLength = basename.length;
46
+
50
47
  if (basenameLength + 4 < maxLength) {
51
48
  const dirnameLength = maxLength - 4 - basenameLength;
52
49
  dirname = `...${dirname.slice(dirname.length - dirnameLength, dirname.length)}`;
53
- return (0, _slash2.default)(_chalk2.default.dim(dirname + _path2.default.sep) + _chalk2.default.bold(basename));
50
+ return (0, _slash.default)(_chalk.default.dim(dirname + _path.default.sep) + _chalk.default.bold(basename));
54
51
  }
55
52
 
56
53
  if (basenameLength + 4 === maxLength) {
57
- return (0, _slash2.default)(_chalk2.default.dim(`...${_path2.default.sep}`) + _chalk2.default.bold(basename));
58
- }
54
+ return (0, _slash.default)(_chalk.default.dim(`...${_path.default.sep}`) + _chalk.default.bold(basename));
55
+ } // can't fit dirname, but can fit trimmed basename
59
56
 
60
- // can't fit dirname, but can fit trimmed basename
61
- return (0, _slash2.default)(_chalk2.default.bold(`...${basename.slice(basename.length - maxLength - 4, basename.length)}`));
57
+
58
+ return (0, _slash.default)(_chalk.default.bold(`...${basename.slice(basename.length - maxLength - 4, basename.length)}`));
62
59
  };
63
60
 
64
- const getTerminalWidth = exports.getTerminalWidth = (pipe = process.stdout) => pipe.columns;
61
+ exports.trimAndFormatPath = trimAndFormatPath;
62
+
63
+ const getTerminalWidth = (pipe = process.stdout) => pipe.columns;
64
+
65
+ exports.getTerminalWidth = getTerminalWidth;
65
66
 
66
- const highlight = exports.highlight = (rawPath, filePath, pattern, rootDir) => {
67
+ const highlight = (rawPath, filePath, pattern, rootDir) => {
67
68
  const trim = '...';
68
69
  const relativePathHead = './';
69
-
70
70
  let regexp;
71
71
 
72
72
  try {
73
73
  regexp = new RegExp(pattern, 'i');
74
74
  } catch (e) {
75
- return _chalk2.default.dim(filePath);
75
+ return _chalk.default.dim(filePath);
76
76
  }
77
77
 
78
- rawPath = (0, _stripAnsi2.default)(rawPath);
79
- filePath = (0, _stripAnsi2.default)(filePath);
78
+ rawPath = (0, _stripAnsi.default)(rawPath);
79
+ filePath = (0, _stripAnsi.default)(filePath);
80
80
  const match = rawPath.match(regexp);
81
81
 
82
82
  if (!match) {
83
- return _chalk2.default.dim(filePath);
83
+ return _chalk.default.dim(filePath);
84
84
  }
85
85
 
86
86
  let offset;
@@ -93,7 +93,7 @@ const highlight = exports.highlight = (rawPath, filePath, pattern, rootDir) => {
93
93
  offset = rawPath.length - filePath.length;
94
94
  trimLength = relativePathHead.length;
95
95
  } else {
96
- offset = rootDir.length + _path2.default.sep.length;
96
+ offset = rootDir.length + _path.default.sep.length;
97
97
  trimLength = 0;
98
98
  }
99
99
 
@@ -102,27 +102,27 @@ const highlight = exports.highlight = (rawPath, filePath, pattern, rootDir) => {
102
102
  return colorize(filePath, Math.max(start, 0), Math.max(end, trimLength));
103
103
  };
104
104
 
105
+ exports.highlight = highlight;
105
106
  const DOTS = '...';
106
107
  const ENTER = '⏎';
107
108
 
108
- const formatTestNameByPattern = exports.formatTestNameByPattern = (testName, pattern, width) => {
109
+ const formatTestNameByPattern = (testName, pattern, width) => {
109
110
  const inlineTestName = testName.replace(/(\r\n|\n|\r)/gm, ENTER);
110
-
111
111
  let regexp;
112
112
 
113
113
  try {
114
114
  regexp = new RegExp(pattern, 'i');
115
115
  } catch (e) {
116
- return _chalk2.default.dim(inlineTestName);
116
+ return _chalk.default.dim(inlineTestName);
117
117
  }
118
118
 
119
119
  const match = inlineTestName.match(regexp);
120
120
 
121
121
  if (!match) {
122
- return _chalk2.default.dim(inlineTestName);
123
- }
122
+ return _chalk.default.dim(inlineTestName);
123
+ } // $FlowFixMe
124
+
124
125
 
125
- // $FlowFixMe
126
126
  const startPatternIndex = Math.max(match.index, 0);
127
127
  const endPatternIndex = startPatternIndex + match[0].length;
128
128
 
@@ -136,8 +136,11 @@ const formatTestNameByPattern = exports.formatTestNameByPattern = (testName, pat
136
136
  if (endPatternIndex > slicedTestName.length) {
137
137
  return colorize(slicedTestName + DOTS, startPatternIndex, slicedTestName.length + DOTS.length);
138
138
  }
139
+
139
140
  return colorize(slicedTestName + DOTS, Math.min(startPatternIndex, slicedTestName.length), endPatternIndex);
140
141
  }
141
142
 
142
- return `${_chalk2.default.dim(slicedTestName)}${_chalk2.default.reset(DOTS)}`;
143
- };
143
+ return `${_chalk.default.dim(slicedTestName)}${_chalk.default.reset(DOTS)}`;
144
+ };
145
+
146
+ exports.formatTestNameByPattern = formatTestNameByPattern;
@@ -40,7 +40,7 @@ class TestNamePatternPrompt extends _jestWatcher.PatternPrompt {
40
40
  if (pattern) {
41
41
  (0, _pattern_mode_helpers.printPatternMatches)(total, 'test', pipe, ` from ${_chalk2.default.yellow('cached')} test suites`);
42
42
 
43
- const width = (0, _utils.getTerminalWidth)(pipe);
43
+ const width = (0, _utils.getTerminalWidth)();
44
44
 
45
45
  var _scroll = (0, _scroll3.default)(total, options);
46
46
 
@@ -1,15 +1,12 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- var _jestWatcher = require('jest-watcher');
3
+ var _jestWatcher = require("jest-watcher");
4
4
 
5
- var _prompt = require('./prompt');
6
-
7
- var _prompt2 = _interopRequireDefault(_prompt);
5
+ var _prompt = _interopRequireDefault(require("./prompt"));
8
6
 
9
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
8
 
11
9
  class TestNamePlugin {
12
-
13
10
  constructor({
14
11
  stdin,
15
12
  stdout,
@@ -26,7 +23,9 @@ class TestNamePlugin {
26
23
  }
27
24
 
28
25
  apply(jestHooks) {
29
- jestHooks.onTestRunComplete(({ testResults }) => {
26
+ jestHooks.onTestRunComplete(({
27
+ testResults
28
+ }) => {
30
29
  this._testResults = testResults;
31
30
  });
32
31
  }
@@ -36,11 +35,14 @@ class TestNamePlugin {
36
35
  }
37
36
 
38
37
  run(globalConfig, updateConfigAndRun) {
39
- const p = new _prompt2.default(this._stdout, this._prompt);
38
+ const p = new _prompt.default(this._stdout, this._prompt);
40
39
  p.updateCachedTestResults(this._testResults);
41
40
  return new Promise((res, rej) => {
42
41
  p.run(value => {
43
- updateConfigAndRun({ mode: 'watch', testNamePattern: value });
42
+ updateConfigAndRun({
43
+ mode: 'watch',
44
+ testNamePattern: value
45
+ });
44
46
  res();
45
47
  }, rej);
46
48
  });
@@ -49,6 +51,7 @@ class TestNamePlugin {
49
51
  getUsageInfo() {
50
52
  return this._usageInfo;
51
53
  }
54
+
52
55
  }
53
56
 
54
57
  module.exports = TestNamePlugin;
@@ -1,23 +1,20 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- var _chalk = require('chalk');
3
+ var _chalk = _interopRequireDefault(require("chalk"));
4
4
 
5
- var _chalk2 = _interopRequireDefault(_chalk);
5
+ var _ansiEscapes = _interopRequireDefault(require("ansi-escapes"));
6
6
 
7
- var _jestWatcher = require('jest-watcher');
7
+ var _jestWatcher = require("jest-watcher");
8
8
 
9
- var _scroll2 = require('../lib/scroll');
9
+ var _scroll2 = _interopRequireDefault(require("../lib/scroll"));
10
10
 
11
- var _scroll3 = _interopRequireDefault(_scroll2);
11
+ var _utils = require("../lib/utils");
12
12
 
13
- var _utils = require('../lib/utils');
14
-
15
- var _pattern_mode_helpers = require('../lib/pattern_mode_helpers');
13
+ var _pattern_mode_helpers = require("../lib/pattern_mode_helpers");
16
14
 
17
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
16
 
19
17
  class TestNamePatternPrompt extends _jestWatcher.PatternPrompt {
20
-
21
18
  constructor(pipe, prompt) {
22
19
  super(pipe, prompt);
23
20
  this._entityName = 'tests';
@@ -26,31 +23,29 @@ class TestNamePatternPrompt extends _jestWatcher.PatternPrompt {
26
23
 
27
24
  _onChange(pattern, options) {
28
25
  super._onChange(pattern, options);
26
+
29
27
  this._printTypeahead(pattern, options);
30
28
  }
31
29
 
32
30
  _printTypeahead(pattern, options) {
33
31
  const matchedTests = this._getMatchedTests(pattern);
32
+
34
33
  const total = matchedTests.length;
35
34
  const pipe = this._pipe;
36
35
  const prompt = this._prompt;
37
-
38
36
  (0, _jestWatcher.printPatternCaret)(pattern, pipe);
37
+ pipe.write(_ansiEscapes.default.cursorLeft);
39
38
 
40
39
  if (pattern) {
41
- (0, _pattern_mode_helpers.printPatternMatches)(total, 'test', pipe, ` from ${_chalk2.default.yellow('cached')} test suites`);
42
-
40
+ (0, _pattern_mode_helpers.printPatternMatches)(total, 'test', pipe, ` from ${_chalk.default.yellow('cached')} test suites`);
43
41
  const width = (0, _utils.getTerminalWidth)(pipe);
44
42
 
45
- var _scroll = (0, _scroll3.default)(total, options);
46
-
47
- const start = _scroll.start,
43
+ const _scroll = (0, _scroll2.default)(total, options),
44
+ start = _scroll.start,
48
45
  end = _scroll.end,
49
46
  index = _scroll.index;
50
47
 
51
-
52
48
  prompt.setPromptLength(total);
53
-
54
49
  matchedTests.slice(start, end).map(name => (0, _utils.formatTestNameByPattern)(name, pattern, width - 4)).map((item, i) => (0, _pattern_mode_helpers.formatTypeaheadSelection)(item, i, index, prompt)).forEach(item => (0, _pattern_mode_helpers.printTypeaheadItem)(item, pipe));
55
50
 
56
51
  if (total > end) {
@@ -72,14 +67,21 @@ class TestNamePatternPrompt extends _jestWatcher.PatternPrompt {
72
67
  return [];
73
68
  }
74
69
 
75
- return this._cachedTestResults.reduce((matchedTests, { testResults }) => {
76
- return matchedTests.concat(testResults.filter(({ title }) => regex.test(title)).map(({ title }) => title));
70
+ return this._cachedTestResults.reduce((matchedTests, {
71
+ testResults
72
+ }) => {
73
+ return matchedTests.concat(testResults.filter(({
74
+ title
75
+ }) => regex.test(title)).map(({
76
+ title
77
+ }) => title));
77
78
  }, []);
78
79
  }
79
80
 
80
81
  updateCachedTestResults(testResults = []) {
81
82
  this._cachedTestResults = testResults;
82
83
  }
84
+
83
85
  }
84
86
 
85
87
  module.exports = TestNamePatternPrompt;
@@ -12,17 +12,12 @@ class TestNamePlugin {
12
12
 
13
13
  constructor({
14
14
  stdin,
15
- stdout,
16
- config = {}
15
+ stdout
17
16
  }) {
18
17
  this._stdin = stdin;
19
18
  this._stdout = stdout;
20
19
  this._prompt = new _jestWatcher.Prompt();
21
20
  this._testResults = [];
22
- this._usageInfo = {
23
- key: config.key || 't',
24
- prompt: config.prompt || 'filter by a test name regex pattern'
25
- };
26
21
  }
27
22
 
28
23
  apply(jestHooks) {
@@ -46,8 +41,12 @@ class TestNamePlugin {
46
41
  });
47
42
  }
48
43
 
44
+ // eslint-disable-next-line class-methods-use-this
49
45
  getUsageInfo() {
50
- return this._usageInfo;
46
+ return {
47
+ key: 't',
48
+ prompt: 'filter by a test name regex pattern'
49
+ };
51
50
  }
52
51
  }
53
52
 
@@ -1,25 +1,24 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _jestWatcher = require('jest-watcher');
8
+ var _jestWatcher = require("jest-watcher");
8
9
 
9
- var _stripAnsi = require('strip-ansi');
10
-
11
- var _stripAnsi2 = _interopRequireDefault(_stripAnsi);
10
+ var _stripAnsi = _interopRequireDefault(require("strip-ansi"));
12
11
 
13
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
13
 
15
14
  expect.addSnapshotSerializer({
16
15
  test: val => typeof val === 'string',
17
- print: val => (0, _stripAnsi2.default)(val)
16
+ print: val => (0, _stripAnsi.default)(val)
18
17
  });
19
-
20
18
  jest.mock('ansi-escapes', () => ({
21
19
  clearScreen: '[MOCK - clearScreen]',
22
20
  cursorDown: (count = 1) => `[MOCK - cursorDown(${count})]`,
21
+ cursorLeft: '[MOCK - cursorLeft]',
23
22
  cursorHide: '[MOCK - cursorHide]',
24
23
  cursorRestorePosition: '[MOCK - cursorRestorePosition]',
25
24
  cursorSavePosition: '[MOCK - cursorSavePosition]',
@@ -28,9 +27,15 @@ jest.mock('ansi-escapes', () => ({
28
27
  }));
29
28
 
30
29
  const pluginTester = (Plugin, config = {}) => {
31
- const stdout = { columns: 80, write: jest.fn() };
30
+ const stdout = {
31
+ columns: 80,
32
+ write: jest.fn()
33
+ };
32
34
  const jestHooks = new _jestWatcher.JestHook();
33
- const plugin = new Plugin({ stdout, config });
35
+ const plugin = new Plugin({
36
+ stdout,
37
+ config
38
+ });
34
39
  plugin.apply(jestHooks.getSubscriber());
35
40
 
36
41
  const type = (...keys) => keys.forEach(key => plugin.onKey(key));
@@ -44,4 +49,5 @@ const pluginTester = (Plugin, config = {}) => {
44
49
  };
45
50
  };
46
51
 
47
- exports.default = pluginTester;
52
+ var _default = pluginTester;
53
+ exports.default = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jest-watch-typeahead",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "main": "build/index.js",
5
5
  "author": "Rogelio Guzman <rogelioguzmanh@gmail.com>",
6
6
  "description": "Jest plugin for filtering by filename or test name",
@@ -24,27 +24,31 @@
24
24
  "format": "prettier --single-quote --trailing-comma all --write \"!(build)/**/*.js\""
25
25
  },
26
26
  "dependencies": {
27
+ "ansi-escapes": "^3.0.0",
27
28
  "chalk": "^2.4.1",
28
29
  "jest-watcher": "^23.1.0",
29
- "slash": "^1.0.0",
30
+ "slash": "^2.0.0",
30
31
  "string-length": "^2.0.0",
31
- "strip-ansi": "^4.0.0"
32
+ "strip-ansi": "^5.0.0"
32
33
  },
33
34
  "devDependencies": {
34
- "babel-cli": "6.26.0",
35
- "babel-eslint": "^8.2.2",
36
- "babel-preset-env": "1.6.1",
37
- "babel-preset-flow": "^6.23.0",
38
- "eslint": "4.18.1",
39
- "eslint-config-airbnb-base": "12.1.0",
40
- "eslint-config-prettier": "2.9.0",
41
- "eslint-plugin-flowtype": "^2.46.1",
42
- "eslint-plugin-import": "2.9.0",
43
- "eslint-plugin-jest": "21.12.2",
44
- "eslint-plugin-prettier": "2.6.0",
45
- "flow-bin": "^0.66.0",
46
- "jest": "23.2.0",
47
- "prettier": "1.13.7"
35
+ "@babel/cli": "^7.0.0",
36
+ "@babel/core": "^7.0.0",
37
+ "@babel/preset-env": "^7.0.0",
38
+ "@babel/preset-flow": "^7.0.0",
39
+ "babel-core": "^7.0.0-bridge.0",
40
+ "babel-eslint": "^10.0.1",
41
+ "babel-jest": "^23.4.2",
42
+ "eslint": "^5.12.1",
43
+ "eslint-config-airbnb-base": "^13.1.0",
44
+ "eslint-config-prettier": "^3.6.0",
45
+ "eslint-plugin-flowtype": "^3.2.1",
46
+ "eslint-plugin-import": "^2.9.0",
47
+ "eslint-plugin-jest": "^22.1.3",
48
+ "eslint-plugin-prettier": "^3.0.1",
49
+ "flow-bin": "^0.91.0",
50
+ "jest": "^23.2.0",
51
+ "prettier": "^1.13.7"
48
52
  },
49
53
  "jest": {
50
54
  "watchPlugins": [
@@ -1,47 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _jestWatcher = require('jest-watcher');
8
-
9
- var _stripAnsi = require('strip-ansi');
10
-
11
- var _stripAnsi2 = _interopRequireDefault(_stripAnsi);
12
-
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
-
15
- expect.addSnapshotSerializer({
16
- test: val => typeof val === 'string',
17
- print: val => (0, _stripAnsi2.default)(val)
18
- });
19
-
20
- jest.mock('ansi-escapes', () => ({
21
- clearScreen: '[MOCK - clearScreen]',
22
- cursorDown: (count = 1) => `[MOCK - cursorDown(${count})]`,
23
- cursorHide: '[MOCK - cursorHide]',
24
- cursorRestorePosition: '[MOCK - cursorRestorePosition]',
25
- cursorSavePosition: '[MOCK - cursorSavePosition]',
26
- cursorShow: '[MOCK - cursorShow]',
27
- cursorTo: (x, y) => `[MOCK - cursorTo(${x}, ${y})]`
28
- }));
29
-
30
- const pluginTester = (Plugin, config = {}) => {
31
- const stdout = { columns: 80, write: jest.fn() };
32
- const jestHooks = new _jestWatcher.JestHook();
33
- const plugin = new Plugin({ stdout, config });
34
- plugin.apply(jestHooks.getSubscriber());
35
-
36
- const type = (...keys) => keys.forEach(key => plugin.onKey(key));
37
-
38
- return {
39
- stdout,
40
- hookEmitter: jestHooks.getEmitter(),
41
- updateConfigAndRun: jest.fn(),
42
- plugin,
43
- type
44
- };
45
- };
46
-
47
- exports.default = pluginTester;