test-progress-tracker 2.0.2 → 2.0.6

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 (58) hide show
  1. package/README.md +10 -0
  2. package/{dist → cjs}/append.d.ts +0 -0
  3. package/{dist → cjs}/append.js +9 -7
  4. package/cjs/append.js.map +1 -0
  5. package/{dist → cjs}/compress.d.ts +0 -0
  6. package/{dist → cjs}/compress.js +1 -3
  7. package/cjs/compress.js.map +1 -0
  8. package/{dist → cjs}/constants.d.ts +0 -0
  9. package/{dist → cjs}/constants.js +1 -0
  10. package/cjs/constants.js.map +1 -0
  11. package/{dist → cjs}/index.d.ts +0 -0
  12. package/cjs/index.js +18 -0
  13. package/cjs/index.js.map +1 -0
  14. package/{dist → cjs}/init.d.ts +0 -0
  15. package/{dist → cjs}/init.js +2 -1
  16. package/cjs/init.js.map +1 -0
  17. package/{dist → cjs}/interface.d.ts +0 -0
  18. package/{dist → cjs}/interface.js +0 -0
  19. package/{dist → cjs}/interface.js.map +1 -1
  20. package/{dist → cjs}/load.d.ts +0 -0
  21. package/{dist → cjs}/load.js +9 -7
  22. package/cjs/load.js.map +1 -0
  23. package/{dist → cjs}/minify.d.ts +0 -0
  24. package/{dist → cjs}/minify.js +1 -0
  25. package/{dist → cjs}/minify.js.map +1 -1
  26. package/{dist → cjs}/monitor.d.ts +2 -2
  27. package/{dist → cjs}/monitor.js +7 -8
  28. package/cjs/monitor.js.map +1 -0
  29. package/{dist → cjs}/store.d.ts +0 -0
  30. package/cjs/store.js +11 -0
  31. package/cjs/store.js.map +1 -0
  32. package/package.json +54 -42
  33. package/ts/append.spec.ts +36 -0
  34. package/ts/append.ts +28 -0
  35. package/ts/compress.ts +9 -0
  36. package/ts/constants.ts +2 -0
  37. package/ts/index.ts +5 -0
  38. package/ts/init.spec.ts +30 -0
  39. package/ts/init.ts +13 -0
  40. package/ts/interface.ts +36 -0
  41. package/ts/load.spec.ts +9 -0
  42. package/ts/load.ts +38 -0
  43. package/ts/minify.spec.ts +44 -0
  44. package/ts/minify.ts +94 -0
  45. package/ts/monitor.spec.ts +171 -0
  46. package/ts/monitor.ts +73 -0
  47. package/ts/store.ts +11 -0
  48. package/ts/testResultsExamples.ts +108 -0
  49. package/dist/append.js.map +0 -1
  50. package/dist/compress.js.map +0 -1
  51. package/dist/constants.js.map +0 -1
  52. package/dist/index.js +0 -10
  53. package/dist/index.js.map +0 -1
  54. package/dist/init.js.map +0 -1
  55. package/dist/load.js.map +0 -1
  56. package/dist/monitor.js.map +0 -1
  57. package/dist/store.js +0 -5
  58. package/dist/store.js.map +0 -1
package/README.md CHANGED
@@ -2,8 +2,12 @@
2
2
 
3
3
  [![NPM version][npm-image]][npm-url]
4
4
  [![NPM downloads][downloads-image]][downloads-url]
5
+
5
6
  [![Circle CI][circleci-image]][circleci-url]
7
+ [![Travis CI][travis-image]][travis-url]
6
8
  [![Codecov][codecov-image]][codecov-url]
9
+ [![Coveralls Status][coveralls-image]][coveralls-url]
10
+ [![Codacy Badge][codacy-image]][codacy-url]
7
11
 
8
12
  [![Greenkeeper badge][green-keeper-image]][green-keeper-url]
9
13
  [![semantic-release][semantic-release-image]][semantic-release-url]
@@ -15,8 +19,12 @@ Test Progress Tracker.
15
19
 
16
20
  [circleci-image]: https://circleci.com/gh/unional/test-progress-tracker/tree/master.svg?style=shield
17
21
  [circleci-url]: https://circleci.com/gh/unional/test-progress-tracker/tree/master
22
+ [codacy-image]: https://api.codacy.com/project/badge/Grade/b2b1880f3ecd4f2caaeb169a3121e6e9
23
+ [codacy-url]: https://www.codacy.com/app/homawong/test-progress-tracker?utm_source=github.com&utm_medium=referral&utm_content=unional/test-progress-tracker&utm_campaign=Badge_Grade
18
24
  [codecov-image]: https://codecov.io/gh/unional/test-progress-tracker/branch/master/graph/badge.svg
19
25
  [codecov-url]: https://codecov.io/gh/unional/test-progress-tracker
26
+ [coveralls-image]: https://coveralls.io/repos/github/unional/test-progress-tracker/badge.svg
27
+ [coveralls-url]: https://coveralls.io/github/unional/test-progress-tracker
20
28
  [downloads-image]: https://img.shields.io/npm/dm/test-progress-tracker.svg?style=flat
21
29
  [downloads-url]: https://npmjs.org/package/test-progress-tracker
22
30
  [green-keeper-image]: https://badges.greenkeeper.io/unional/test-progress-tracker.svg
@@ -25,6 +33,8 @@ Test Progress Tracker.
25
33
  [npm-url]: https://npmjs.org/package/test-progress-tracker
26
34
  [semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
27
35
  [semantic-release-url]:https://github.com/semantic-release/semantic-release
36
+ [travis-image]: https://img.shields.io/travis/unional/test-progress-tracker/master.svg?style=flat
37
+ [travis-url]: https://travis-ci.org/unional/test-progress-tracker?branch=master
28
38
  [vscode-image]: https://img.shields.io/badge/vscode-ready-green.svg
29
39
  [vscode-url]: https://code.visualstudio.com/
30
40
  [wallaby-image]: https://img.shields.io/badge/wallaby.js-configured-green.svg
File without changes
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
@@ -11,6 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
12
13
  };
13
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.append = void 0;
14
16
  const fs_1 = __importDefault(require("fs"));
15
17
  const path_1 = __importDefault(require("path"));
16
18
  const unpartial_1 = require("unpartial");
@@ -20,19 +22,19 @@ const constants_1 = require("./constants");
20
22
  const minify_1 = require("./minify");
21
23
  const store_1 = require("./store");
22
24
  let appendFile = fs_1.default.appendFile;
23
- let promisifedAppendFile = util_1.promisify(fs_1.default.appendFile);
25
+ let promisifiedAppendFile = (0, util_1.promisify)(fs_1.default.appendFile);
24
26
  function append(context, results) {
25
27
  return __awaiter(this, void 0, void 0, function* () {
26
- const c = unpartial_1.unpartial({ fs: fs_1.default, rootDir: store_1.store.get().rootDir }, context);
28
+ const c = (0, unpartial_1.unpartial)({ fs: fs_1.default, rootDir: store_1.store.value.rootDir }, context);
27
29
  const filepath = path_1.default.join(c.rootDir, constants_1.PROGRESS_FOLDER, constants_1.TEST_RESULT_FILENAME);
28
- const minified = minify_1.minify(results);
29
- const compressed = compress_1.compress(minified);
30
+ const minified = (0, minify_1.minify)(results);
31
+ const compressed = (0, compress_1.compress)(minified);
30
32
  // istanbul ignore next
31
33
  if (c.fs.appendFile !== appendFile) {
32
34
  appendFile = c.fs.appendFile;
33
- promisifedAppendFile = util_1.promisify(appendFile);
35
+ promisifiedAppendFile = (0, util_1.promisify)(appendFile);
34
36
  }
35
- yield promisifedAppendFile(filepath, compressed + '\n');
37
+ yield promisifiedAppendFile(filepath, compressed + '\n');
36
38
  });
37
39
  }
38
40
  exports.append = append;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"append.js","sourceRoot":"","sources":["../ts/append.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,yCAAsC;AACtC,+BAAiC;AACjC,yCAAsC;AACtC,2CAAoE;AAEpE,qCAAkC;AAClC,mCAAgC;AAEhC,IAAI,UAAU,GAAG,YAAE,CAAC,UAAU,CAAA;AAC9B,IAAI,qBAAqB,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,UAAU,CAAC,CAAA;AAEpD,SAAsB,MAAM,CAAC,OAAqD,EAAE,OAAoB;;QACtG,MAAM,CAAC,GAAG,IAAA,qBAAS,EAA0B,EAAE,EAAE,EAAF,YAAE,EAAE,OAAO,EAAE,aAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAA;QAE3F,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,2BAAe,EAAE,gCAAoB,CAAC,CAAA;QAC5E,MAAM,QAAQ,GAAG,IAAA,eAAM,EAAC,OAAO,CAAC,CAAA;QAChC,MAAM,UAAU,GAAG,IAAA,mBAAQ,EAAC,QAAQ,CAAC,CAAA;QAErC,uBAAuB;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE;YAClC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAA;YAC5B,qBAAqB,GAAG,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAA;SAC9C;QAED,MAAM,qBAAqB,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC,CAAA;IAC1D,CAAC;CAAA;AAdD,wBAcC"}
File without changes
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decompress = exports.compress = void 0;
3
4
  function compress(obj) {
4
5
  return JSON.stringify(obj);
5
- // return lz.compress(JSON.stringify(obj))
6
6
  }
7
7
  exports.compress = compress;
8
8
  function decompress(str) {
9
9
  return JSON.parse(str);
10
- // const json = lz.decompress(str)
11
- // return JSON.parse(json) as MinifiedTestResult
12
10
  }
13
11
  exports.decompress = decompress;
14
12
  //# sourceMappingURL=compress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress.js","sourceRoot":"","sources":["../ts/compress.ts"],"names":[],"mappings":";;;AAEA,SAAgB,QAAQ,CAAC,GAAuB;IAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAFD,4BAEC;AAED,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAA;AAC9C,CAAC;AAFD,gCAEC"}
File without changes
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEST_RESULT_FILENAME = exports.PROGRESS_FOLDER = void 0;
3
4
  exports.PROGRESS_FOLDER = '.progress';
4
5
  exports.TEST_RESULT_FILENAME = 'test.results';
5
6
  //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../ts/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,WAAW,CAAA;AAC7B,QAAA,oBAAoB,GAAG,cAAc,CAAA"}
File without changes
package/cjs/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./append"), exports);
14
+ __exportStar(require("./init"), exports);
15
+ __exportStar(require("./interface"), exports);
16
+ __exportStar(require("./load"), exports);
17
+ __exportStar(require("./monitor"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAwB;AACxB,yCAAsB;AACtB,8CAA2B;AAC3B,yCAAsB;AACtB,4CAAyB"}
File without changes
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.init = void 0;
6
7
  const path_1 = __importDefault(require("path"));
7
8
  const mkdirp_1 = __importDefault(require("mkdirp"));
8
9
  const constants_1 = require("./constants");
@@ -13,7 +14,7 @@ const store_1 = require("./store");
13
14
  */
14
15
  function init(options = { rootDir: '.' }) {
15
16
  mkdirp_1.default.sync(path_1.default.join(options.rootDir, constants_1.PROGRESS_FOLDER));
16
- store_1.store.set({ rootDir: options.rootDir });
17
+ store_1.store.value.rootDir = options.rootDir;
17
18
  }
18
19
  exports.init = init;
19
20
  //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../ts/init.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,oDAA4B;AAC5B,2CAA8C;AAC9C,mCAAgC;AAEhC;;;GAGG;AACH,SAAgB,IAAI,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IAC7C,gBAAM,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,2BAAe,CAAC,CAAC,CAAA;IACxD,aAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AACvC,CAAC;AAHD,oBAGC"}
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../ts/interface.ts"],"names":[],"mappings":""}
File without changes
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
@@ -11,24 +12,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
12
13
  };
13
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.load = void 0;
14
16
  const fs_1 = __importDefault(require("fs"));
15
17
  const path_1 = __importDefault(require("path"));
16
18
  const unpartial_1 = require("unpartial");
19
+ const util_1 = require("util");
17
20
  const compress_1 = require("./compress");
18
21
  const constants_1 = require("./constants");
19
22
  const minify_1 = require("./minify");
20
23
  const store_1 = require("./store");
21
- const util_1 = require("util");
22
24
  let readFile = fs_1.default.readFile;
23
- let promisifiedReadFile = util_1.promisify(fs_1.default.readFile);
25
+ let promisifiedReadFile = (0, util_1.promisify)(fs_1.default.readFile);
24
26
  function load(context) {
25
27
  return __awaiter(this, void 0, void 0, function* () {
26
- const c = unpartial_1.unpartial({ fs: fs_1.default, rootDir: store_1.store.get().rootDir }, context);
28
+ const c = (0, unpartial_1.unpartial)({ fs: fs_1.default, rootDir: store_1.store.value.rootDir }, context);
27
29
  const filepath = path_1.default.join(c.rootDir, constants_1.PROGRESS_FOLDER, constants_1.TEST_RESULT_FILENAME);
28
30
  // istanbul ignore next
29
31
  if (c.fs.readFile !== readFile) {
30
32
  readFile = c.fs.readFile;
31
- promisifiedReadFile = util_1.promisify(readFile);
33
+ promisifiedReadFile = (0, util_1.promisify)(readFile);
32
34
  }
33
35
  try {
34
36
  const content = yield promisifiedReadFile(filepath, 'utf-8');
@@ -36,8 +38,8 @@ function load(context) {
36
38
  return entries.reduce((r, e) => {
37
39
  if (!e)
38
40
  return r;
39
- const minified = compress_1.decompress(e);
40
- r.push(minify_1.unminify(minified));
41
+ const minified = (0, compress_1.decompress)(e);
42
+ r.push((0, minify_1.unminify)(minified));
41
43
  return r;
42
44
  }, []);
43
45
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../ts/load.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,yCAAsC;AACtC,+BAAiC;AACjC,yCAAwC;AACxC,2CAAoE;AAEpE,qCAAoC;AACpC,mCAAgC;AAEhC,IAAI,QAAQ,GAAG,YAAE,CAAC,QAAQ,CAAA;AAC1B,IAAI,mBAAmB,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,QAAQ,CAAC,CAAA;AAEhD,SAAsB,IAAI,CAAC,OAAwC;;QACjE,MAAM,CAAC,GAAG,IAAA,qBAAS,EAAwB,EAAE,EAAE,EAAF,YAAE,EAAE,OAAO,EAAE,aAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAA;QAEzF,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,2BAAe,EAAE,gCAAoB,CAAC,CAAA;QAE5E,uBAAuB;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC9B,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAA;YACxB,mBAAmB,GAAG,IAAA,gBAAS,EAAC,QAAQ,CAAC,CAAA;SAC1C;QAED,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACnC,OAAO,OAAO,CAAC,MAAM,CAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC,CAAC;oBAAE,OAAO,CAAC,CAAA;gBAChB,MAAM,QAAQ,GAAG,IAAA,qBAAU,EAAC,CAAC,CAAC,CAAA;gBAC9B,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAQ,EAAC,QAAQ,CAAC,CAAC,CAAA;gBAC1B,OAAO,CAAC,CAAA;YACV,CAAC,EAAE,EAAE,CAAC,CAAA;SACP;QACD,WAAM;YACJ,OAAO,EAAE,CAAA;SACV;IACH,CAAC;CAAA;AAxBD,oBAwBC"}
File without changes
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unminify = exports.minify = void 0;
3
4
  function minify(testResults) {
4
5
  const { duration, filtered, numFailedTests, numFailedTestSuites, numPassedTests, numPassedTestSuites, numTotalTests, numTotalTestSuites, startTime, coverage } = testResults;
5
6
  const result = {
@@ -1 +1 @@
1
- {"version":3,"file":"minify.js","sourceRoot":"","sources":["../src/minify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minify.js","sourceRoot":"","sources":["../ts/minify.ts"],"names":[],"mappings":"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"}
@@ -18,9 +18,9 @@ export interface AwaitWriteFinishOptions {
18
18
  pollInterval?: number;
19
19
  }
20
20
  export interface MonitorSubscription {
21
- close(): void;
21
+ close(): Promise<void>;
22
22
  }
23
- export declare function monitor(context: Partial<MonitorContext & GetLastLineContext> | undefined, callback: (err: any, testResults: TestResults) => void): MonitorSubscription;
23
+ export declare function monitor(context: Partial<MonitorContext & GetLastLineContext> | undefined, callback: (err: any, testResults?: TestResults) => void): MonitorSubscription;
24
24
  export interface GetLastLineContext {
25
25
  fs: Pick<typeof fs, 'createReadStream' | 'WriteStream'>;
26
26
  readline: Pick<typeof readline, 'createInterface'>;
@@ -3,40 +3,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.monitor = void 0;
6
7
  const chokidar_1 = __importDefault(require("chokidar"));
7
8
  const fs_1 = __importDefault(require("fs"));
8
9
  const path_1 = __importDefault(require("path"));
9
10
  const readline_1 = __importDefault(require("readline"));
10
- const stream_1 = require("stream");
11
11
  const unpartial_1 = require("unpartial");
12
12
  const compress_1 = require("./compress");
13
13
  const constants_1 = require("./constants");
14
14
  const minify_1 = require("./minify");
15
15
  const store_1 = require("./store");
16
16
  function monitor(context, callback) {
17
- const c = unpartial_1.unpartial({
17
+ const c = (0, unpartial_1.unpartial)({
18
18
  fs: fs_1.default,
19
19
  readline: readline_1.default,
20
- rootDir: store_1.store.get().rootDir,
20
+ rootDir: store_1.store.value.rootDir,
21
21
  awaitWriteFinish: true
22
22
  }, context);
23
23
  const filepath = path_1.default.join(c.rootDir, constants_1.PROGRESS_FOLDER, constants_1.TEST_RESULT_FILENAME);
24
24
  const w = chokidar_1.default.watch(filepath, { awaitWriteFinish: c.awaitWriteFinish });
25
25
  w.on('add', path => invokeCallback(c, path, callback));
26
26
  w.on('change', path => invokeCallback(c, path, callback));
27
- return { close: w.close.bind(w) };
27
+ return { close: () => w.close() };
28
28
  }
29
29
  exports.monitor = monitor;
30
30
  function invokeCallback(context, filename, callback) {
31
31
  getLastLine(context, filename).then(line => {
32
- callback(undefined, minify_1.unminify(compress_1.decompress(line)));
33
- }).catch(callback);
32
+ callback(undefined, (0, minify_1.unminify)((0, compress_1.decompress)(line)));
33
+ }).catch((e) => callback(e));
34
34
  }
35
35
  function getLastLine({ fs, readline }, filename) {
36
36
  const inStream = fs.createReadStream(filename);
37
- const outStream = new stream_1.Stream();
38
37
  return new Promise((a, r) => {
39
- const rl = readline.createInterface(inStream, outStream);
38
+ const rl = readline.createInterface(inStream);
40
39
  let lastline = '';
41
40
  rl.on('line', (line) => {
42
41
  if (line.length) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../ts/monitor.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA+B;AAC/B,4CAAmB;AACnB,gDAAuB;AACvB,wDAA+B;AAC/B,yCAAqC;AACrC,yCAAuC;AACvC,2CAAmE;AAEnE,qCAAmC;AACnC,mCAA+B;AAwB/B,SAAgB,OAAO,CAAC,OAAiE,EAAE,QAAuD;IAChJ,MAAM,CAAC,GAAG,IAAA,qBAAS,EAAsC;QACvD,EAAE,EAAF,YAAE;QACF,QAAQ,EAAR,kBAAQ;QACR,OAAO,EAAE,aAAK,CAAC,KAAK,CAAC,OAAO;QAC5B,gBAAgB,EAAE,IAAI;KACvB,EAAE,OAAO,CAAC,CAAA;IACX,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,2BAAe,EAAE,gCAAoB,CAAC,CAAA;IAE5E,MAAM,CAAC,GAAG,kBAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC5E,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IACzD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAA;AACnC,CAAC;AAbD,0BAaC;AAED,SAAS,cAAc,CAAC,OAA2B,EAAE,QAAgB,EAAE,QAAuD;IAC5H,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzC,QAAQ,CAAC,SAAS,EAAE,IAAA,iBAAQ,EAAC,IAAA,qBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAOD,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAsB,EAAE,QAAgB;IACzE,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC9C,OAAO,IAAI,OAAO,CAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC7C,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,QAAQ,GAAG,IAAI,CAAA;aAChB;QACH,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACjB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC"}
File without changes
package/cjs/store.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.store = void 0;
4
+ const global_store_1 = require("global-store");
5
+ exports.store = (0, global_store_1.createStore)({
6
+ moduleName: 'test-progress-tracker',
7
+ version: '1.0.0',
8
+ key: 'eb969cee-8646-5b9c-9084-9093804d4121',
9
+ initializer: (current) => (Object.assign({ rootDir: '.' }, current))
10
+ });
11
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../ts/store.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAE7B,QAAA,KAAK,GAAG,IAAA,0BAAW,EAAsB;IACpD,UAAU,EAAE,uBAAuB;IACnC,OAAO,EAAE,OAAO;IAChB,GAAG,EAAE,sCAAsC;IAC3C,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,iBACxB,OAAO,EAAE,GAAG,IACT,OAAO,EACV;CACH,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "test-progress-tracker",
3
- "version": "2.0.2",
3
+ "version": "2.0.6",
4
4
  "description": "Keep track of test progress over time",
5
5
  "homepage": "https://github.com/unional/test-progress-tracker",
6
6
  "bugs": {
@@ -11,55 +11,67 @@
11
11
  "url": "https://github.com/unional/test-progress-tracker.git"
12
12
  },
13
13
  "license": "MIT",
14
+ "main": "cjs/index.js",
15
+ "typings": "cjs/index.d.ts",
14
16
  "files": [
15
- "dist"
17
+ "cjs",
18
+ "ts"
16
19
  ],
17
- "main": "dist/index.js",
18
- "typings": "dist/index.d.ts",
19
20
  "scripts": {
20
- "build": "npm run clean && tsc -p tsconfig.base.json",
21
- "clean": "rimraf dist",
21
+ "build": "tsc -p tsconfig.cjs.json",
22
+ "clean": "rimraf cjs",
22
23
  "coverage": "jest --coverage",
23
- "dependency-check": "dependency-check . --unused --no-dev && dependency-check . --missing --no-dev",
24
- "lint": "tslint -p tsconfig.json",
25
- "test": "tsc && jest",
26
- "verify": "npm run lint && npm run build && npm run coverage && npm run dependency-check",
27
- "verify-ci": "npm run lint && npm run build && jest --coverage --config jest.config.ci.json && npm run dependency-check",
24
+ "dependency-check": "run-p dependency-check:unused dependency-check:missing",
25
+ "dependency-check:missing": "dependency-check . --missing --no-dev",
26
+ "dependency-check:unused": "dependency-check . --unused --no-dev",
27
+ "lint": "eslint --ext=ts,js .",
28
+ "size-limit": "echo no size-limit",
29
+ "test": "jest",
30
+ "release": "npx semantic-release",
31
+ "verify": "run-p verify:build lint coverage",
32
+ "verify:build": "run-s build dependency-check size-limit",
28
33
  "watch": "jest --watch"
29
34
  },
35
+ "husky": {
36
+ "hooks": {
37
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
38
+ }
39
+ },
30
40
  "dependencies": {
31
- "chokidar": "^2.0.4",
32
- "global-store": "^0.7.3",
33
- "mkdirp": "^0.5.1",
34
- "unpartial": "^0.4.1"
41
+ "chokidar": "^3.5.2",
42
+ "global-store": "^1.0.0-beta.19",
43
+ "mkdirp": "^1.0.4",
44
+ "unpartial": "^0.6.4"
35
45
  },
36
46
  "devDependencies": {
37
- "@types/chokidar": "^1.7.5",
38
- "@types/jest": "^23.3.7",
39
- "@types/lz-string": "^1.3.32",
40
- "@types/mkdirp": "^0.5.2",
41
- "@types/node": "^10.12.0",
42
- "@types/rimraf": "^2.0.2",
43
- "@unional/jest-progress-reporter": "^2.0.0",
44
- "assertron": "^5.2.0",
45
- "codecov": "^3.1.0",
46
- "delay": "^4.1.0",
47
- "dependency-check": "^3.2.1",
48
- "eslint": "^5.7.0",
49
- "eslint-plugin-unional": "^1.0.0",
50
- "greenkeeper-lockfile": "^1.15.1",
51
- "jest": "^23.6.0",
52
- "jest-audio-reporter": "^2.2.0",
53
- "jest-junit": "^5.2.0",
54
- "jest-watch-repeat": "^1.0.0",
55
- "jest-watch-suspend": "^1.1.0",
56
- "jest-watch-toggle-config": "^1.0.2",
57
- "rimraf": "^2.6.2",
58
- "semantic-release": "^15.10.5",
59
- "ts-jest": "^23.10.4",
60
- "tslint": "^5.11.0",
61
- "tslint-config-unional": "^0.10.0",
62
- "tslint-language-service": "^0.9.9",
63
- "typescript": "^3.1.3"
47
+ "@babel/core": "^7.16.0",
48
+ "@babel/plugin-proposal-class-properties": "^7.16.0",
49
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0",
50
+ "@babel/plugin-proposal-optional-chaining": "^7.16.0",
51
+ "@babel/preset-env": "^7.16.4",
52
+ "@babel/preset-typescript": "^7.16.0",
53
+ "@commitlint/cli": "^16.0.0",
54
+ "@commitlint/config-conventional": "^16.0.0",
55
+ "@types/jest": "^27.0.3",
56
+ "@types/mkdirp": "^1.0.2",
57
+ "@types/node": "^16.11.11",
58
+ "@types/rimraf": "^3.0.2",
59
+ "assertron": "^9.0.0",
60
+ "delay": "^5.0.0",
61
+ "dependency-check": "^4.1.0",
62
+ "eslint": "^8.4.0",
63
+ "eslint-plugin-harmony": "^6.0.0",
64
+ "husky": "^7.0.4",
65
+ "is-ci": "^3.0.1",
66
+ "jest": "^27.4.3",
67
+ "jest-junit": "^13.0.0",
68
+ "jest-progress-tracker": "^3.0.0",
69
+ "jest-validate": "^27.4.2",
70
+ "jest-watch-suspend": "^1.1.2",
71
+ "jest-watch-toggle-config": "^2.0.1",
72
+ "jest-watch-typeahead": "^1.0.0",
73
+ "npm-run-all": "^4.1.5",
74
+ "rimraf": "^3.0.0",
75
+ "typescript": "^4.5.2"
64
76
  }
65
77
  }
@@ -0,0 +1,36 @@
1
+ import rimraf from 'rimraf'
2
+ import { append, init, load } from '.'
3
+ import { noCoverage } from './testResultsExamples'
4
+
5
+ test('create new file', async () => {
6
+ const rootDir = 'fixtures/new_file'
7
+
8
+ try {
9
+ init({ rootDir })
10
+ await append(undefined, noCoverage)
11
+
12
+ const entries = await load(undefined)
13
+ expect(entries.length).toBe(1)
14
+ }
15
+ finally {
16
+ init()
17
+ rimraf.sync(rootDir)
18
+ }
19
+ })
20
+
21
+ test('append to file', async () => {
22
+ const rootDir = 'fixtures/append_file'
23
+
24
+ try {
25
+ init({ rootDir })
26
+ await append(undefined, noCoverage)
27
+ await append(undefined, noCoverage)
28
+
29
+ const entries = await load(undefined)
30
+ expect(entries.length).toBe(2)
31
+ }
32
+ finally {
33
+ init()
34
+ rimraf.sync(rootDir)
35
+ }
36
+ })
package/ts/append.ts ADDED
@@ -0,0 +1,28 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { unpartial } from 'unpartial';
4
+ import { promisify } from 'util';
5
+ import { compress } from './compress';
6
+ import { PROGRESS_FOLDER, TEST_RESULT_FILENAME } from './constants';
7
+ import { FSContext, TestResults } from './interface';
8
+ import { minify } from './minify';
9
+ import { store } from './store';
10
+
11
+ let appendFile = fs.appendFile
12
+ let promisifiedAppendFile = promisify(fs.appendFile)
13
+
14
+ export async function append(context: Partial<FSContext<'appendFile'>> | undefined, results: TestResults) {
15
+ const c = unpartial<FSContext<'appendFile'>>({ fs, rootDir: store.value.rootDir }, context)
16
+
17
+ const filepath = path.join(c.rootDir, PROGRESS_FOLDER, TEST_RESULT_FILENAME)
18
+ const minified = minify(results)
19
+ const compressed = compress(minified)
20
+
21
+ // istanbul ignore next
22
+ if (c.fs.appendFile !== appendFile) {
23
+ appendFile = c.fs.appendFile
24
+ promisifiedAppendFile = promisify(appendFile)
25
+ }
26
+
27
+ await promisifiedAppendFile(filepath, compressed + '\n')
28
+ }
package/ts/compress.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { MinifiedTestResult } from './minify';
2
+
3
+ export function compress(obj: MinifiedTestResult) {
4
+ return JSON.stringify(obj)
5
+ }
6
+
7
+ export function decompress(str: string): MinifiedTestResult {
8
+ return JSON.parse(str) as MinifiedTestResult
9
+ }
@@ -0,0 +1,2 @@
1
+ export const PROGRESS_FOLDER = '.progress'
2
+ export const TEST_RESULT_FILENAME = 'test.results'
package/ts/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './append'
2
+ export * from './init'
3
+ export * from './interface'
4
+ export * from './load'
5
+ export * from './monitor'
@@ -0,0 +1,30 @@
1
+ import t from 'assert'
2
+ import fs from 'fs'
3
+ import rimraf from 'rimraf'
4
+ import { init } from '.'
5
+ import { PROGRESS_FOLDER } from './constants'
6
+
7
+ test('create folder if not exist', () => {
8
+ try {
9
+ t.strictEqual(fs.existsSync('fixtures/init/create-if-not-exist'), false)
10
+ init({ rootDir: 'fixtures/init/create-if-not-exist' })
11
+ }
12
+ finally {
13
+ rimraf.sync('fixtures/init/create-if-not-exist')
14
+ }
15
+ })
16
+
17
+ test('ok if folder already existed', () => {
18
+ try {
19
+ fs.mkdirSync('fixtures/init/exist')
20
+ init({ rootDir: 'fixtures/init/exist' })
21
+ }
22
+ finally {
23
+ rimraf.sync('fixtures/init/exist')
24
+ }
25
+ })
26
+
27
+ test('by default init will create .progress', () => {
28
+ init()
29
+ t.strictEqual(fs.existsSync(PROGRESS_FOLDER), true)
30
+ })
package/ts/init.ts ADDED
@@ -0,0 +1,13 @@
1
+ import path from 'path'
2
+ import mkdirp from 'mkdirp';
3
+ import { PROGRESS_FOLDER } from './constants';
4
+ import { store } from './store';
5
+
6
+ /**
7
+ * Initialize environment.
8
+ * @param options optional options. Mostly for testing purpose.
9
+ */
10
+ export function init(options = { rootDir: '.' }) {
11
+ mkdirp.sync(path.join(options.rootDir, PROGRESS_FOLDER))
12
+ store.value.rootDir = options.rootDir
13
+ }