vue-ninja 0.2.0 → 0.4.0-beta.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.
package/dist/coverage.js CHANGED
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var logger_1 = __importDefault(require("./logger"));
3
+ var logger_1 = require("./logger");
7
4
  var utils_1 = require("./utils");
8
5
  var RESULT_FILE = 'coverage/coverage-summary.json';
9
6
  function computeScore(coverageResults) {
@@ -19,24 +16,24 @@ function handleCoverageResults(data, resolve) {
19
16
  var coverageResults = { covered: results.total.lines.covered, total: results.total.lines.total };
20
17
  var score = computeScore(coverageResults);
21
18
  if (score !== 100) {
22
- logger_1.default.warn('Code coverage score: ' + score + '%');
23
- logger_1.default.warn("Looks like you don't have a perfect code coverage.");
24
- logger_1.default.warn('Maybe you skipped/deleted some unit tests?');
25
- logger_1.default.warn('Or maybe you added some code to try something, and this is not covered by a unit test?');
26
- logger_1.default.warn('To have more info open `coverage/index.html`');
27
- logger_1.default.warn('You should see which file has a problem.');
19
+ logger_1.logger.warn('Code coverage score: ' + score + '%');
20
+ logger_1.logger.warn("Looks like you don't have a perfect code coverage.");
21
+ logger_1.logger.warn('Maybe you skipped/deleted some unit tests?');
22
+ logger_1.logger.warn('Or maybe you added some code to try something, and this is not covered by a unit test?');
23
+ logger_1.logger.warn('To have more info open `coverage/index.html`');
24
+ logger_1.logger.warn('You should see which file has a problem.');
28
25
  }
29
26
  else {
30
- logger_1.default.success('Code coverage score: 100%');
27
+ logger_1.logger.success('Code coverage score: 100%');
31
28
  }
32
29
  resolve(coverageResults);
33
30
  }
34
31
  var coverage = function (options) {
35
32
  return new Promise(function (resolve, reject) {
36
- logger_1.default.log('Starting code coverage...');
33
+ logger_1.logger.log('Starting code coverage...');
37
34
  return (0, utils_1.readFile)(RESULT_FILE).then(function (data) { return handleCoverageResults(data, resolve); }, function (error) {
38
- logger_1.default.error('Error while reading the code coverage results. Try to run `npm run test:unit`.');
39
- logger_1.default.debug(options, 'Error while reading the code coverage results was: ', error);
35
+ logger_1.logger.error('Error while reading the code coverage results. Try to run `npm run test:unit`.');
36
+ logger_1.logger.debug(options, 'Error while reading the code coverage results was: ', error);
40
37
  reject();
41
38
  });
42
39
  });
package/dist/e2e.js CHANGED
@@ -1,15 +1,12 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var logger_1 = __importDefault(require("./logger"));
3
+ var logger_1 = require("./logger");
7
4
  var utils_1 = require("./utils");
8
5
  var RESULT_FILE = 'results/cypress-results.json';
9
6
  function warnUserOnFailure() {
10
- logger_1.default.error('Error while running end-to-end tests.');
11
- logger_1.default.error('Check if your app is running with no error in the browser console,');
12
- logger_1.default.error('and try to launch the tests using `npm run test:e2e`.');
7
+ logger_1.logger.error('Error while running end-to-end tests.');
8
+ logger_1.logger.error('Check if your app is running with no error in the browser console,');
9
+ logger_1.logger.error('and try to launch the tests using `npm run test:e2e`.');
13
10
  }
14
11
  function handleCypressResults(data) {
15
12
  var results = JSON.parse(data);
@@ -17,12 +14,12 @@ function handleCypressResults(data) {
17
14
  var success = results.stats.passes;
18
15
  var cypressResults = { success: success, failed: failed };
19
16
  if (failed) {
20
- logger_1.default.warn('Looks like you have ' + failed + ' e2e tests failing.');
21
- logger_1.default.warn('Try to launch the tests using `npm run test:e2e`.');
22
- logger_1.default.warn("E2e tests score: ".concat(Math.round((success * 100) / (success + failed)), "%"));
17
+ logger_1.logger.warn('Looks like you have ' + failed + ' e2e tests failing.');
18
+ logger_1.logger.warn('Try to launch the tests using `npm run test:e2e`.');
19
+ logger_1.logger.warn("E2e tests score: ".concat(Math.round((success * 100) / (success + failed)), "%"));
23
20
  }
24
21
  else {
25
- logger_1.default.success('E2e tests score: 100%');
22
+ logger_1.logger.success('E2e tests score: 100%');
26
23
  }
27
24
  return cypressResults;
28
25
  }
@@ -31,7 +28,7 @@ function mergeReports() {
31
28
  }
32
29
  var e2e = function (options) {
33
30
  return new Promise(function (resolve, reject) {
34
- logger_1.default.log('Starting end to end tests...');
31
+ logger_1.logger.log('Starting end to end tests...');
35
32
  // cypress exit code is 1 if a test fail
36
33
  // so we'll go into the error handler even if the execution went well
37
34
  // and we try to read the results in both cases
@@ -40,13 +37,13 @@ var e2e = function (options) {
40
37
  .then(
41
38
  // each spec produces a report, so we need to merge them
42
39
  function () { return mergeReports(); }, function (error) {
43
- logger_1.default.debug(options, 'Error while running e2e was: ', error);
40
+ logger_1.logger.debug(options, 'Error while running e2e was: ', error);
44
41
  return mergeReports();
45
42
  })
46
43
  .then(function () { return (0, utils_1.readFile)(RESULT_FILE); }, function () { return (0, utils_1.readFile)(RESULT_FILE); })
47
44
  .then(function (data) { return handleCypressResults(data); })
48
45
  .then(function (results) { return resolve(results); }, function (error) {
49
- logger_1.default.debug(options, 'Error while reading e2e results: ', error);
46
+ logger_1.logger.debug(options, 'Error while reading e2e results: ', error);
50
47
  warnUserOnFailure();
51
48
  return reject();
52
49
  });
@@ -1,22 +1,18 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var hash_files_1 = __importDefault(require("hash-files"));
7
3
  var utils_1 = require("./utils");
8
- var logger_1 = __importDefault(require("./logger"));
4
+ var logger_1 = require("./logger");
9
5
  function findSpecIfItExists(hashes, spec) {
10
6
  return hashes.find(function (hash) {
11
7
  return hash.name.indexOf(spec) !== -1;
12
8
  });
13
9
  }
14
10
  function listSpecs() {
15
- return (0, utils_1.listFiles)('./{cypress,tests}/**/*.@(e2e-spec|spec).@(ts|js)');
11
+ return (0, utils_1.listFiles)('./{cypress,src}/**/*.@(cy|spec).ts');
16
12
  }
17
13
  function computeHash(specs) {
18
14
  return specs.map(function (name) {
19
- return { name: name, hash: hash_files_1.default.sync({ files: [name] }) };
15
+ return { name: name, hash: (0, utils_1.hashFile)(name) };
20
16
  });
21
17
  }
22
18
  function computeHashesOfSpecs() {
@@ -24,18 +20,18 @@ function computeHashesOfSpecs() {
24
20
  }
25
21
  var hashChecker = function (options) {
26
22
  return new Promise(function (resolve, reject) {
27
- logger_1.default.log('Checking submission...');
23
+ logger_1.logger.log('Checking submission...');
28
24
  (0, utils_1.readFile)('./exercise.json')
29
25
  .then(function (exerciseData) {
30
26
  var exercise = JSON.parse(exerciseData);
31
- logger_1.default.success('Pack V' + exercise.pack + ' - Exercise ' + exercise.id + ' - ' + exercise.title);
27
+ logger_1.logger.success('Pack V' + exercise.pack + ' - Exercise ' + exercise.id + ' - ' + exercise.title);
32
28
  if (options['skip-check']) {
33
29
  return resolve(exercise);
34
30
  }
35
31
  return exercise;
36
32
  }, function (error) {
37
- logger_1.default.error('Looks like you have no exercise.json file.');
38
- logger_1.default.debug(options, 'An error occurred while reading exercise.json: ', error);
33
+ logger_1.logger.error('Looks like you have no exercise.json file.');
34
+ logger_1.logger.debug(options, 'An error occurred while reading exercise.json: ', error);
39
35
  return Promise.reject();
40
36
  })
41
37
  // then compute the hash of every spec
@@ -43,8 +39,8 @@ var hashChecker = function (options) {
43
39
  // then decide if the submission is correct or not
44
40
  .then(function (_a) {
45
41
  var exercise = _a[0], hashes = _a[1];
46
- logger_1.default.debug(options, 'Exercise :', JSON.stringify(exercise));
47
- logger_1.default.debug(options, 'Hashes :', JSON.stringify(hashes));
42
+ logger_1.logger.debug(options, 'Exercise :', JSON.stringify(exercise));
43
+ logger_1.logger.debug(options, 'Hashes :', JSON.stringify(hashes));
48
44
  var specsInError = [];
49
45
  var specsNotFound = [];
50
46
  exercise.specs.forEach(function (file) {
@@ -60,20 +56,20 @@ var hashChecker = function (options) {
60
56
  });
61
57
  if (specsInError.length !== 0 || specsNotFound.length !== 0) {
62
58
  if (specsInError.length !== 0) {
63
- logger_1.default.error('It looks like you forgot to update these spec files');
64
- logger_1.default.error('or that you modified them manually:');
65
- specsInError.forEach(function (spec) { return logger_1.default.error(' - ' + spec); });
59
+ logger_1.logger.error('It looks like you forgot to update these spec files');
60
+ logger_1.logger.error('or that you modified them manually:');
61
+ specsInError.forEach(function (spec) { return logger_1.logger.error(' - ' + spec); });
66
62
  }
67
63
  if (specsNotFound.length !== 0) {
68
- logger_1.default.error('It looks like you forgot to add these spec files:');
69
- specsNotFound.forEach(function (spec) { return logger_1.default.error(' - ' + spec); });
64
+ logger_1.logger.error('It looks like you forgot to add these spec files:');
65
+ specsNotFound.forEach(function (spec) { return logger_1.logger.error(' - ' + spec); });
70
66
  }
71
- logger_1.default.error('Copy the new specs and try again.');
67
+ logger_1.logger.error('Copy the new specs and try again.');
72
68
  return Promise.reject();
73
69
  }
74
70
  return exercise;
75
71
  }, function (error) {
76
- logger_1.default.debug(options, 'Error while computing the hash of the spec files. ', error);
72
+ logger_1.logger.debug(options, 'Error while computing the hash of the spec files. ', error);
77
73
  return Promise.reject(error);
78
74
  })
79
75
  .then(function (exercise) { return resolve(exercise); }, function (error) { return reject(error); });
package/dist/lint.js CHANGED
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var logger_1 = __importDefault(require("./logger"));
3
+ var logger_1 = require("./logger");
7
4
  var utils_1 = require("./utils");
8
5
  var RESULT_FILE = 'results/lint-results.json';
9
6
  var lint = function (options) {
10
7
  return new Promise(function (resolve, reject) {
11
- logger_1.default.log('Starting code analysis...');
8
+ logger_1.logger.log('Starting code analysis...');
12
9
  return (0, utils_1.exec)("npm run lint -- --no-fix --format=json --output-file=".concat(RESULT_FILE))
13
10
  .then(function () { return (0, utils_1.readFile)(RESULT_FILE); },
14
11
  // eslint will error if there is a warning
@@ -19,9 +16,9 @@ var lint = function (options) {
19
16
  }
20
17
  return Promise.reject();
21
18
  }, function (error) {
22
- logger_1.default.error('Error while running `npm run lint`.');
23
- logger_1.default.error('Try to run `npm run lint`.');
24
- logger_1.default.debug(options, 'Error while running lint was: ', error);
19
+ logger_1.logger.error('Error while running `npm run lint`.');
20
+ logger_1.logger.error('Try to run `npm run lint`.');
21
+ logger_1.logger.debug(options, 'Error while running lint was: ', error);
25
22
  reject();
26
23
  })
27
24
  .then(function (results) {
@@ -32,18 +29,18 @@ var lint = function (options) {
32
29
  lintResults.errors = results.map(function (file) { return file.errorCount + file.warningCount; }).reduce(function (a, b) { return a + b; }, 0);
33
30
  if (lintResults.errors !== 0) {
34
31
  var score = Math.max(0, 100 - lintResults.errors);
35
- logger_1.default.warn('Code quality score: ' + score + '%');
36
- logger_1.default.warn('Looks like you have some issues in your code.');
37
- logger_1.default.warn('Try to run `npm run lint` to see what you can fix.');
32
+ logger_1.logger.warn('Code quality score: ' + score + '%');
33
+ logger_1.logger.warn('Looks like you have some issues in your code.');
34
+ logger_1.logger.warn('Try to run `npm run lint` to see what you can fix.');
38
35
  }
39
36
  else {
40
- logger_1.default.success('Code quality score: 100%');
37
+ logger_1.logger.success('Code quality score: 100%');
41
38
  }
42
39
  resolve(lintResults);
43
40
  }, function (error) {
44
- logger_1.default.error('Error while reading lint results.');
45
- logger_1.default.error('Try to run `npm run lint`.');
46
- logger_1.default.debug(options, 'Error while reading lint errors was: ', error);
41
+ logger_1.logger.error('Error while reading lint results.');
42
+ logger_1.logger.error('Try to run `npm run lint`.');
43
+ logger_1.logger.debug(options, 'Error while reading lint errors was: ', error);
47
44
  reject();
48
45
  });
49
46
  });
package/dist/logger.js CHANGED
@@ -3,8 +3,9 @@ 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.logger = void 0;
6
7
  var chalk_1 = __importDefault(require("chalk"));
7
- var logger = {
8
+ exports.logger = {
8
9
  log: console.log,
9
10
  error: function (value) { return console.log(chalk_1.default.red(value)); },
10
11
  warn: function (value) { return console.log(chalk_1.default.yellow(value)); },
@@ -20,4 +21,3 @@ var logger = {
20
21
  }
21
22
  }
22
23
  };
23
- exports.default = logger;
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var logger_1 = __importDefault(require("./logger"));
3
+ var logger_1 = require("./logger");
7
4
  var utils_1 = require("./utils");
8
5
  var BASE_PATH = 'https://vue-exercises.ninja-squad.com';
9
6
  var LOCALHOST = 'http://localhost:8080';
10
7
  function storeCredentials(metadata, token) {
11
- logger_1.default.success('Authentication success');
8
+ logger_1.logger.success('Authentication success');
12
9
  metadata.token = token;
13
10
  return metadata;
14
11
  }
@@ -16,7 +13,7 @@ function login(options, loginAttempts, metadata) {
16
13
  // eslint-disable-next-line no-param-reassign
17
14
  loginAttempts = loginAttempts + 1;
18
15
  if (loginAttempts > 3) {
19
- logger_1.default.error('Aborting authentication after 3 failures');
16
+ logger_1.logger.error('Aborting authentication after 3 failures');
20
17
  return Promise.reject();
21
18
  }
22
19
  var schema = {
@@ -35,15 +32,15 @@ function login(options, loginAttempts, metadata) {
35
32
  .then(function (_a) {
36
33
  var response = _a.response, body = _a.body;
37
34
  if (response.statusCode !== 201) {
38
- logger_1.default.error('Authentication failed, try again.');
39
- logger_1.default.debug(options, 'Authentication request returned with status: ', JSON.stringify(response.statusCode));
35
+ logger_1.logger.error('Authentication failed, try again.');
36
+ logger_1.logger.debug(options, 'Authentication request returned with status: ', JSON.stringify(response.statusCode));
40
37
  return login(options, loginAttempts, metadata);
41
38
  }
42
- logger_1.default.debug(options, 'Authentication succeeded and we can store credentials');
39
+ logger_1.logger.debug(options, 'Authentication succeeded and we can store credentials');
43
40
  return storeCredentials(metadata, body.token);
44
41
  }, function (error) {
45
- logger_1.default.error('Authentication failed, try again.');
46
- logger_1.default.debug(options, 'An error occurred during authentication: ', error);
42
+ logger_1.logger.error('Authentication failed, try again.');
43
+ logger_1.logger.debug(options, 'An error occurred during authentication: ', error);
47
44
  return login(options, loginAttempts, metadata);
48
45
  });
49
46
  }
@@ -55,16 +52,16 @@ function computeScore(metadata, results, options) {
55
52
  if (options.local) {
56
53
  // if we are running locally we want to return a failure
57
54
  if (score !== 100) {
58
- logger_1.default.error('Score is not perfect! ' + score + '%');
55
+ logger_1.logger.error('Score is not perfect! ' + score + '%');
59
56
  (0, utils_1.exitProcessWithError)(1);
60
57
  }
61
- logger_1.default.success('Exercise score: ' + score + '%');
58
+ logger_1.logger.success('Exercise score: ' + score + '%');
62
59
  }
63
60
  else if (score !== 100) {
64
- logger_1.default.warn('Score is not perfect yet: ' + score + '%');
61
+ logger_1.logger.warn('Score is not perfect yet: ' + score + '%');
65
62
  }
66
63
  else {
67
- logger_1.default.success('Perfect score, congrats! ' + score + '%');
64
+ logger_1.logger.success('Perfect score, congrats! ' + score + '%');
68
65
  }
69
66
  return { metadata: metadata, score: score };
70
67
  }
@@ -76,40 +73,40 @@ function postScore(options, metadata) {
76
73
  var response = _a.response, body = _a.body;
77
74
  // if authentication error
78
75
  if (response.statusCode === 401) {
79
- logger_1.default.error('Authentication failed. Please enter your credentials again.');
76
+ logger_1.logger.error('Authentication failed. Please enter your credentials again.');
80
77
  var loginAttempts = 0;
81
78
  // we try to reconnect 3 times
82
79
  // then submit or fail
83
80
  return login(options, loginAttempts, metadata).then(function (updatedMetadata) { return postScore(options, updatedMetadata); }, function (error) {
84
- logger_1.default.error('Error while authenticating to submit results.');
85
- logger_1.default.debug(options, 'Error was: ', error);
81
+ logger_1.logger.error('Error while authenticating to submit results.');
82
+ logger_1.logger.debug(options, 'Error was: ', error);
86
83
  return Promise.reject();
87
84
  });
88
85
  }
89
86
  else if (response.statusCode !== 201) {
90
- logger_1.default.error('Error while sending the results.');
91
- logger_1.default.debug(options, JSON.stringify(response.statusCode), JSON.stringify(body));
87
+ logger_1.logger.error('Error while sending the results.');
88
+ logger_1.logger.debug(options, JSON.stringify(response.statusCode), JSON.stringify(body));
92
89
  return Promise.reject();
93
90
  }
94
- logger_1.default.log('Score submitted.');
91
+ logger_1.logger.log('Score submitted.');
95
92
  return Promise.resolve(metadata);
96
93
  }, function (error) {
97
- logger_1.default.error('Error while sending the results.');
98
- logger_1.default.error('Maybe check your connection?');
99
- logger_1.default.debug(options, 'Error while sending the result was: ', error);
94
+ logger_1.logger.error('Error while sending the results.');
95
+ logger_1.logger.error('Maybe check your connection?');
96
+ logger_1.logger.debug(options, 'Error while sending the result was: ', error);
100
97
  return Promise.reject();
101
98
  });
102
99
  }
103
100
  var submitResults = function (results, options) {
104
101
  return (0, utils_1.readFile)('./exercise.json')
105
102
  .then(function (data) { return JSON.parse(data); }, function (error) {
106
- logger_1.default.error('Looks like you have no exercise.json file.');
107
- logger_1.default.debug(options, 'An error occurred while reading exercise.json: ', error);
103
+ logger_1.logger.error('Looks like you have no exercise.json file.');
104
+ logger_1.logger.debug(options, 'An error occurred while reading exercise.json: ', error);
108
105
  return Promise.reject();
109
106
  })
110
107
  .then(function (metadata) { return computeScore(metadata, results, options); }, function (error) {
111
- logger_1.default.error('Looks like you have an incorrect JSON in the exercise.json file.');
112
- logger_1.default.debug(options, 'An error occurred while parsing exercise.json: ', error);
108
+ logger_1.logger.error('Looks like you have an incorrect JSON in the exercise.json file.');
109
+ logger_1.logger.debug(options, 'An error occurred while parsing exercise.json: ', error);
113
110
  return Promise.reject();
114
111
  })
115
112
  .then(function (_a) {
package/dist/utils.js CHANGED
@@ -3,14 +3,15 @@ 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.exitProcessWithError = exports.listFiles = exports.post = exports.prompt = exports.exec = exports.readFile = void 0;
6
+ exports.hashFile = exports.exitProcessWithError = exports.listFiles = exports.post = exports.prompt = exports.exec = exports.readFile = void 0;
7
7
  var fs_1 = __importDefault(require("fs"));
8
+ var crypto_1 = __importDefault(require("crypto"));
8
9
  var child_process_1 = __importDefault(require("child_process"));
9
10
  var request_1 = __importDefault(require("request"));
10
11
  var prompt_1 = __importDefault(require("prompt"));
11
12
  var util_1 = __importDefault(require("util"));
12
13
  var glob_1 = __importDefault(require("glob"));
13
- var logger_1 = __importDefault(require("./logger"));
14
+ var logger_1 = require("./logger");
14
15
  var execAsync = util_1.default.promisify(child_process_1.default.exec);
15
16
  var readFileAsync = util_1.default.promisify(fs_1.default.readFile);
16
17
  var readFile = function (file) { return readFileAsync(file, 'utf8'); };
@@ -46,9 +47,9 @@ var post = function (url, json, headers) {
46
47
  exports.post = post;
47
48
  var listFiles = function (pattern) {
48
49
  return new Promise(function (resolve, reject) {
49
- (0, glob_1.default)(pattern, function (err, files) {
50
+ (0, glob_1.default)(pattern, { nodir: true }, function (err, files) {
50
51
  if (err) {
51
- logger_1.default.error('Could not find the spec files.');
52
+ logger_1.logger.error('Could not find the spec files.');
52
53
  reject(err);
53
54
  }
54
55
  else {
@@ -62,3 +63,10 @@ var exitProcessWithError = function (code) {
62
63
  process.exit(code);
63
64
  };
64
65
  exports.exitProcessWithError = exitProcessWithError;
66
+ var hashFile = function (name) {
67
+ var fileBuffer = fs_1.default.readFileSync(name);
68
+ var hashSum = crypto_1.default.createHash('sha256');
69
+ hashSum.update(fileBuffer);
70
+ return hashSum.digest('hex');
71
+ };
72
+ exports.hashFile = hashFile;
package/dist/vitest.js CHANGED
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  var utils_1 = require("./utils");
7
- var logger_1 = __importDefault(require("./logger"));
4
+ var logger_1 = require("./logger");
8
5
  var RESULT_FILE = 'results/vitest-results.json';
9
6
  function computeScore(vitestResults) {
10
7
  // eslint-disable-next-line no-undefined
@@ -16,21 +13,21 @@ function computeScore(vitestResults) {
16
13
  }
17
14
  function warnUserThatSomeTestsFailed(vitestResults) {
18
15
  var score = computeScore(vitestResults);
19
- logger_1.default.warn('Unit tests score: ' + score + '%');
20
- logger_1.default.warn('Looks like you have ' + (vitestResults.failed ? vitestResults.failed : 'a few') + ' unit test(s) failing.');
21
- logger_1.default.warn('Launch `npm run test:unit` and try to fix them.');
16
+ logger_1.logger.warn('Unit tests score: ' + score + '%');
17
+ logger_1.logger.warn('Looks like you have ' + (vitestResults.failed ? vitestResults.failed : 'a few') + ' unit test(s) failing.');
18
+ logger_1.logger.warn('Launch `npm run test:unit` and try to fix them.');
22
19
  }
23
20
  function warnUserThatVitestFailed(reject) {
24
- logger_1.default.error('Error while running unit tests.');
25
- logger_1.default.error("Maybe your code doesn't compile?");
26
- logger_1.default.error('Launch `npm run test:unit` to see more.');
21
+ logger_1.logger.error('Error while running unit tests.');
22
+ logger_1.logger.error("Maybe your code doesn't compile?");
23
+ logger_1.logger.error('Launch `npm run test:unit` to see more.');
27
24
  return reject();
28
25
  }
29
26
  function handleVitestResults(data, options, resolve, reject) {
30
27
  var results = JSON.parse(data);
31
28
  if (!results) {
32
- logger_1.default.error('An error occurred during the unit tests.');
33
- logger_1.default.error('Run `npm run test:unit` to see the problem.');
29
+ logger_1.logger.error('An error occurred during the unit tests.');
30
+ logger_1.logger.error('Run `npm run test:unit` to see the problem.');
34
31
  return reject();
35
32
  }
36
33
  var failed = results.numFailedTests ? results.numFailedTests : results.numFailedTestSuites;
@@ -42,25 +39,25 @@ function handleVitestResults(data, options, resolve, reject) {
42
39
  warnUserThatSomeTestsFailed(vitestResults);
43
40
  }
44
41
  else {
45
- logger_1.default.success('Unit tests score: 100%');
42
+ logger_1.logger.success('Unit tests score: 100%');
46
43
  }
47
44
  return resolve(vitestResults);
48
45
  }
49
46
  var vitest = function (options) {
50
47
  return new Promise(function (resolve, reject) {
51
- logger_1.default.log('Starting unit tests...');
48
+ logger_1.logger.log('Starting unit tests...');
52
49
  // vitest exit code is 1 if a test fails
53
50
  // so we'll go into the error handler even if the execution went well
54
51
  // and we try to read the results in both cases
55
52
  return ((0, utils_1.exec)("npm run test:unit:ci")
56
53
  .then(function () { return (0, utils_1.readFile)(RESULT_FILE); }, function (error) {
57
- logger_1.default.debug(options, 'Vitest test failed', error);
54
+ logger_1.logger.debug(options, 'Vitest test failed', error);
58
55
  return (0, utils_1.readFile)(RESULT_FILE);
59
56
  })
60
57
  // if results, great we handle them
61
58
  // if not we warn the user
62
59
  .then(function (data) { return handleVitestResults(data, options, resolve, reject); }, function (error) {
63
- logger_1.default.debug(options, 'An error occurred while reading vitest results: ', error);
60
+ logger_1.logger.debug(options, 'An error occurred while reading vitest results: ', error);
64
61
  return warnUserThatVitestFailed(reject);
65
62
  }));
66
63
  });
package/dist/vue-ninja.js CHANGED
@@ -12,7 +12,7 @@ var coverage_1 = __importDefault(require("./coverage"));
12
12
  var lint_1 = __importDefault(require("./lint"));
13
13
  var e2e_1 = __importDefault(require("./e2e"));
14
14
  var submit_results_1 = __importDefault(require("./submit-results"));
15
- var logger_1 = __importDefault(require("./logger"));
15
+ var logger_1 = require("./logger");
16
16
  // parse cli options
17
17
  var options = (0, command_line_args_1.default)([
18
18
  { name: 'local', type: Boolean },
@@ -37,27 +37,27 @@ var results = {
37
37
  };
38
38
  (0, hash_checker_1.default)(options)
39
39
  .then(function (exercise) { return (results.exercise = exercise); })
40
- .then(function () { return logger_1.default.debug(options, 'Exercise: ', results.exercise.title); })
40
+ .then(function () { return logger_1.logger.debug(options, 'Exercise: ', results.exercise.title); })
41
41
  .then(function () { return (0, vitest_1.default)(options); })
42
42
  .then(function (vitestResults) { return (results.vitest = vitestResults); })
43
- .then(function () { return logger_1.default.debug(options, 'Vitest results: ', JSON.stringify(results.vitest)); })
43
+ .then(function () { return logger_1.logger.debug(options, 'Vitest results: ', JSON.stringify(results.vitest)); })
44
44
  .then(function () { return (0, coverage_1.default)(options); })
45
45
  .then(function (coverageResults) { return (results.coverage = coverageResults); })
46
- .then(function () { return logger_1.default.debug(options, 'Coverage results: ', JSON.stringify(results.coverage)); })
46
+ .then(function () { return logger_1.logger.debug(options, 'Coverage results: ', JSON.stringify(results.coverage)); })
47
47
  .then(function () { return (0, lint_1.default)(options); })
48
48
  .then(function (tslintResults) { return (results.tslint = tslintResults); })
49
- .then(function () { return logger_1.default.debug(options, 'Linter results: ', JSON.stringify(results.tslint)); })
49
+ .then(function () { return logger_1.logger.debug(options, 'Linter results: ', JSON.stringify(results.tslint)); })
50
50
  .then(function () { return (0, e2e_1.default)(options); })
51
51
  .then(function (e2eResults) { return (results.e2e = e2eResults); })
52
- .then(function () { return logger_1.default.debug(options, 'E2e results: ', JSON.stringify(results.e2e)); })
52
+ .then(function () { return logger_1.logger.debug(options, 'E2e results: ', JSON.stringify(results.e2e)); })
53
53
  .then(function () { return (0, submit_results_1.default)(results, options); })
54
54
  .catch(function (error) {
55
- logger_1.default.error('Try to fix it and retry!');
55
+ logger_1.logger.error('Try to fix it and retry!');
56
56
  if (options.verbose) {
57
- logger_1.default.error(error);
57
+ logger_1.logger.error(error);
58
58
  }
59
59
  if (options.local) {
60
- logger_1.default.error('Running locally, we exit');
60
+ logger_1.logger.error('Running locally, we exit');
61
61
  process.exit(1);
62
62
  }
63
63
  });
package/package.json CHANGED
@@ -1,42 +1,39 @@
1
1
  {
2
2
  "name": "vue-ninja",
3
- "version": "0.2.0",
3
+ "version": "0.4.0-beta.0",
4
4
  "description": "CLI for the exercises of \"Become a ninja with Vue\"",
5
5
  "main": "dist/vue-ninja.js",
6
6
  "scripts": {
7
7
  "build": "tsc",
8
- "test": "jest",
8
+ "test": "vitest",
9
9
  "prepublish": "npm run build",
10
- "lint": "eslint . --ext .ts"
10
+ "lint": "eslint {src,tests}/**/* --ext .ts"
11
11
  },
12
12
  "author": "",
13
13
  "license": "ISC",
14
14
  "dependencies": {
15
15
  "chalk": "4.1.2",
16
16
  "command-line-args": "5.2.1",
17
- "glob": "7.2.0",
18
- "hash-files": "1.1.1",
19
- "prompt": "1.2.1",
17
+ "glob": "8.0.3",
18
+ "prompt": "1.3.0",
20
19
  "request": "2.88.2",
21
20
  "rimraf": "3.0.2"
22
21
  },
23
22
  "devDependencies": {
24
- "@typescript-eslint/eslint-plugin": "5.10.2",
25
- "@typescript-eslint/parser": "5.10.2",
23
+ "@typescript-eslint/eslint-plugin": "5.35.1",
24
+ "@typescript-eslint/parser": "5.35.1",
26
25
  "@types/command-line-args": "5.2.0",
27
26
  "@types/glob": "7.2.0",
28
- "@types/jest": "27.4.0",
29
- "@types/node": "16.11.21",
27
+ "@types/node": "16.11.56",
30
28
  "@types/request": "2.48.8",
31
29
  "@types/rimraf": "3.0.2",
32
- "create-vue": "3.1.2",
33
- "eslint": "8.8.0",
34
- "eslint-config-prettier": "8.3.0",
35
- "eslint-plugin-prettier": "4.0.0",
36
- "jest": "27.4.7",
37
- "prettier": "2.5.1",
38
- "ts-jest": "27.1.3",
39
- "typescript": "4.5.5"
30
+ "create-vue": "3.3.2",
31
+ "eslint": "8.22.0",
32
+ "eslint-config-prettier": "8.5.0",
33
+ "eslint-plugin-prettier": "4.2.1",
34
+ "prettier": "2.7.1",
35
+ "typescript": "4.7.4",
36
+ "vitest": "0.22.1"
40
37
  },
41
38
  "bin": {
42
39
  "vue-ninja": "dist/vue-ninja.js"
@@ -0,0 +1,11 @@
1
+ import { defineConfig, configDefaults } from 'vitest/config'
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ clearMocks: true,
6
+ sequence: {
7
+ shuffle: true
8
+ },
9
+ exclude: [...configDefaults.exclude, 'vue-integration/**']
10
+ },
11
+ })
package/dist/jest.js DELETED
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var utils_1 = require("./utils");
7
- var logger_1 = __importDefault(require("./logger"));
8
- var RESULT_FILE = 'results/jest-results.json';
9
- function computeScore(jestResults) {
10
- // eslint-disable-next-line no-undefined
11
- if (jestResults.failed === undefined) {
12
- return 0;
13
- }
14
- var score = 100 - jestResults.failed * 5;
15
- return score >= 0 ? score : 0;
16
- }
17
- function warnUserThatSomeTestsFailed(jestResults) {
18
- var score = computeScore(jestResults);
19
- logger_1.default.warn('Unit tests score: ' + score + '%');
20
- logger_1.default.warn('Looks like you have ' + (jestResults.failed ? jestResults.failed : 'a few') + ' unit test(s) failing.');
21
- logger_1.default.warn('Launch `npm run test:unit` and try to fix them.');
22
- }
23
- function warnUserThatJestFailed(reject) {
24
- logger_1.default.error('Error while running unit tests.');
25
- logger_1.default.error("Maybe you code doesn't compile?");
26
- logger_1.default.error('Launch `npm run test:unit` to see more.');
27
- return reject();
28
- }
29
- function handleJestResults(data, options, resolve, reject) {
30
- var results = JSON.parse(data);
31
- if (!results) {
32
- logger_1.default.error('An error occurred during the unit tests.');
33
- logger_1.default.error('Run `npm run test:unit` to see the problem.');
34
- return reject();
35
- }
36
- var failed = results.numRuntimeErrorTestSuites
37
- ? // we have failed test suites because of compilation errors
38
- results.numFailedTests + results.numRuntimeErrorTestSuites
39
- : // we just have failed tests
40
- results.numFailedTests;
41
- var jestResults = {
42
- failed: failed,
43
- success: results.numPassedTests
44
- };
45
- if (jestResults.failed !== 0) {
46
- warnUserThatSomeTestsFailed(jestResults);
47
- }
48
- else {
49
- logger_1.default.success('Unit tests score: 100%');
50
- }
51
- return resolve(jestResults);
52
- }
53
- var jest = function (options) {
54
- return new Promise(function (resolve, reject) {
55
- logger_1.default.log('Starting unit tests...');
56
- // jest exit code is 1 if a test fails
57
- // so we'll go into the error handler even if the execution went well
58
- // and we try to read the results in both cases
59
- return ((0, utils_1.exec)('npm run test:unit -- --no-cache --run-in-band --collect-coverage --reporters=default --reporters=jest-stare')
60
- .then(function () { return (0, utils_1.readFile)(RESULT_FILE); }, function (error) {
61
- logger_1.default.debug(options, 'Jest test failed', error);
62
- return (0, utils_1.readFile)(RESULT_FILE);
63
- })
64
- // if results, great we handle them
65
- // if not we warn the user
66
- .then(function (data) { return handleJestResults(data, options, resolve, reject); }, function (error) {
67
- logger_1.default.debug(options, 'An error occurred while reading jest results: ', error);
68
- return warnUserThatJestFailed(reject);
69
- }));
70
- });
71
- };
72
- exports.default = jest;