tscoverage/dist/mod_compile/mod.check.js

137 lines
5.1 KiB
JavaScript
Raw Permalink Normal View History

2016-07-28 01:10:51 +00:00
"use strict";
2017-06-21 18:54:28 +00:00
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
2017-02-27 21:19:14 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
2017-01-17 23:58:09 +00:00
const q = require("smartq");
2016-09-22 21:23:16 +00:00
const projectinfo_1 = require("projectinfo");
2016-10-21 15:48:52 +00:00
const paths = require("../npmts.paths");
2017-11-28 16:33:55 +00:00
const plugins = require("./mod.plugins");
2016-09-22 21:23:16 +00:00
let checkProjectTypings = (configArg) => {
2016-10-02 18:35:13 +00:00
let done = q.defer();
2017-01-21 22:23:00 +00:00
plugins.beautylog.ora.text('Check Module: Check Project Typings...');
2016-09-02 15:42:41 +00:00
exports.projectInfo = new projectinfo_1.ProjectinfoNpm(paths.cwd);
2016-09-06 15:21:25 +00:00
if (typeof exports.projectInfo.packageJson.typings === 'undefined') {
2016-09-22 21:23:16 +00:00
plugins.beautylog.error(`please add typings field to package.json`);
process.exit(1);
}
2016-07-28 01:10:51 +00:00
done.resolve(configArg);
return done.promise;
};
2016-09-22 21:23:16 +00:00
const depcheckOptions = {
ignoreBinPackage: false,
parsers: {
// the target parsers
2016-09-06 15:21:25 +00:00
'*.ts': plugins.depcheck.parser.typescript
},
detectors: [
// the target detectors
plugins.depcheck.detector.requireCallExpression,
plugins.depcheck.detector.importDeclaration
],
specials: [
// the target special parsers
plugins.depcheck.special.eslint,
plugins.depcheck.special.webpack
2016-09-06 15:21:25 +00:00
]
};
2016-09-22 21:23:16 +00:00
let checkDependencies = (configArg) => {
2016-10-02 18:35:13 +00:00
let done = q.defer();
2017-01-21 22:23:00 +00:00
plugins.beautylog.ora.text('Check Module: Check Dependencies...');
2016-09-22 21:23:16 +00:00
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
2016-07-28 01:10:51 +00:00
ignoreDirs: [
// folder with these names will be ignored
2016-07-28 01:10:51 +00:00
'test',
'dist',
'bower_components'
],
ignoreMatches: [
// ignore dependencies that matches these globs
2016-09-06 15:21:25 +00:00
'@types/*',
'babel-preset-*'
]
});
plugins.depcheck(paths.cwd, depcheckOptionsMerged, unused => {
2016-09-22 21:23:16 +00:00
for (let item of unused.dependencies) {
plugins.beautylog.warn(`Watch out: unused dependency "${item}"`);
2016-07-28 01:10:51 +00:00
}
2016-09-22 21:23:16 +00:00
for (let item in unused.missing) {
2016-10-22 00:38:55 +00:00
plugins.beautylog.error(`missing dependency "${item}" in package.json`);
2016-07-28 01:10:51 +00:00
}
if (unused.missing.length > 0) {
2016-09-06 15:21:25 +00:00
plugins.beautylog.info('exiting due to missing dependencies in package.json');
2016-07-28 01:10:51 +00:00
process.exit(1);
}
2016-09-22 21:23:16 +00:00
for (let item in unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item}`);
2016-07-28 01:10:51 +00:00
}
2016-09-22 21:23:16 +00:00
for (let item in unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item}`);
2016-07-28 01:10:51 +00:00
}
done.resolve(configArg);
});
return done.promise;
};
2016-09-22 21:23:16 +00:00
let checkDevDependencies = (configArg) => {
2016-10-02 18:35:13 +00:00
let done = q.defer();
2017-01-21 22:23:00 +00:00
plugins.beautylog.ora.text('Check Module: Check devDependencies...');
2016-09-22 21:23:16 +00:00
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [
// folder with these names will be ignored
'ts',
'dist',
'bower_components'
],
ignoreMatches: [
// ignore dependencies that matches these globs
2016-09-06 15:21:25 +00:00
'@types/*',
'babel-preset-*'
]
});
plugins.depcheck(paths.cwd, depcheckOptionsMerged, unused => {
2016-09-22 21:23:16 +00:00
for (let item of unused.devDependencies) {
plugins.beautylog.log(`unused devDependency ${item}`);
}
2016-09-22 21:23:16 +00:00
for (let item in unused.missing) {
plugins.beautylog.error(`missing devDependency ${item}`);
}
if (unused.missing.length > 0) {
2016-09-06 15:21:25 +00:00
plugins.beautylog.info('exiting due to missing dependencies in package.json');
process.exit(1);
}
2016-09-22 21:23:16 +00:00
for (let item in unused.invalidFiles) {
plugins.beautylog.warn(`Watch out: could not parse file ${item}`);
}
2016-09-22 21:23:16 +00:00
for (let item in unused.invalidDirs) {
plugins.beautylog.warn(`Watch out: could not parse directory ${item}`);
}
done.resolve(configArg);
});
return done.promise;
};
2016-09-22 21:23:16 +00:00
let checkNodeVersion = (configArg) => {
2016-10-02 18:35:13 +00:00
let done = q.defer();
2017-01-21 22:23:00 +00:00
plugins.beautylog.ora.text('checking node version');
2016-07-28 01:10:51 +00:00
done.resolve(configArg);
return done.promise;
};
2017-06-21 18:54:28 +00:00
exports.run = (configArg) => __awaiter(this, void 0, void 0, function* () {
2017-01-21 22:23:00 +00:00
plugins.beautylog.ora.text('Check Module: ...');
2017-06-15 23:42:48 +00:00
if (configArg.checkDependencies) {
2017-06-21 18:54:28 +00:00
configArg = yield checkProjectTypings(configArg);
configArg = yield checkDependencies(configArg);
configArg = yield checkDevDependencies(configArg);
configArg = yield checkNodeVersion(configArg);
return configArg;
2017-06-15 23:42:48 +00:00
}
else {
2017-06-21 18:54:28 +00:00
configArg = yield checkProjectTypings(configArg);
return configArg;
2017-06-15 23:42:48 +00:00
}
2017-06-21 18:54:28 +00:00
});