Compare commits

...

27 Commits

Author SHA1 Message Date
83aa10eb52 7.0.2 2017-03-31 16:46:52 +02:00
ebc3cb70ff add support for picking up all .ts files in .test/ 2017-03-31 16:46:48 +02:00
9b595e75cd 7.0.1 2017-03-26 19:24:44 +02:00
4e85589dea now executing tests correctly 2017-03-26 19:24:41 +02:00
2b44f61ace improve README 2017-03-26 11:41:47 +02:00
0928a6d9d2 7.0.0 2017-03-25 21:52:46 +01:00
e464afd544 update dependencies 2017-03-25 21:52:38 +01:00
468d07f5f3 add smartanalytics 2017-03-04 23:44:16 +01:00
ae68ddfaf8 Merge branch 'switch_to_tap' into 'master'
Switch to tap

Closes #16

See merge request !3
2017-03-04 20:49:11 +00:00
ad275d2113 Switch to tap 2017-03-04 20:49:10 +00:00
f99605da8f 6.1.15 2017-02-27 23:52:30 +01:00
508aa23e59 6.1.14 2017-02-27 23:52:04 +01:00
ce7f28404a update projectinfo 2017-02-27 23:52:02 +01:00
237b084411 6.1.14 2017-02-27 23:51:02 +01:00
bc6a7ae1da update projectinfo 2017-02-27 23:50:59 +01:00
31fdd4c0a7 6.1.13 2017-02-27 22:19:22 +01:00
c820350bb6 updated dependencies 2017-02-27 22:19:14 +01:00
92bf6d7bab fix README 2017-02-05 11:33:44 +01:00
e77bece3fc fix README 2017-02-05 11:32:50 +01:00
df96486d2f 6.1.12 2017-02-05 11:27:38 +01:00
980db3eb28 fix git links 2017-02-05 11:15:36 +01:00
34d3d4d963 fix README 2017-02-05 11:14:25 +01:00
a3c02cad4e update README to reflect gitzone 2017-02-05 10:15:26 +01:00
a12190638d 6.1.11 2017-02-02 21:48:12 +01:00
f2a36e7a45 update README 2017-02-02 21:48:09 +01:00
60c025e638 6.1.10 2017-02-02 20:57:52 +01:00
5d16734c00 shift to push.rocks brand 2017-02-02 20:57:46 +01:00
30 changed files with 3793 additions and 305 deletions

View File

@ -3,3 +3,9 @@ Please view this file on the master branch, on stable branches it's out of date.
v 6.0.0 (released)
- remove TypeDoc, please look at npmpage
- check package.json
v 7.0.0
- switch from mocha to tap
- run tests in SubProcesses with coverage
- improve ES6 handling
- add smartanalytics

View File

@ -2,43 +2,38 @@
Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
## Availabililty
[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmts)
[![git](https://push.rocks/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/npmts)
[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.com/pushrocks/npmts)
[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/npmts/)
[![npm](https://gitzone.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmts)
[![git](https://gitzone.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/gitzone/npmts)
[![git](https://gitzone.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/gitzone/npmts)
[![docs](https://gitzone.gitlab.io/assets/repo-button-docs.svg)](https://gitzone.gitlab.io/npmts/)
## Status for master
[![build status](https://gitlab.com/pushrocks/npmts/badges/master/build.svg)](https://gitlab.com/pushrocks/npmts/commits/master)
[![coverage report](https://gitlab.com/pushrocks/npmts/badges/master/coverage.svg)](https://gitlab.com/pushrocks/npmts/commits/master)
[![build status](https://GitLab.com/gitzone/npmts/badges/master/build.svg)](https://GitLab.com/gitzone/npmts/commits/master)
[![coverage report](https://GitLab.com/gitzone/npmts/badges/master/coverage.svg)](https://GitLab.com/gitzone/npmts/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/npmts.svg)](https://www.npmjs.com/package/npmts)
[![docker pulls](https://img.shields.io/docker/pulls/hosttoday/ht-docker-node.svg)](https://hub.docker.com/r/hosttoday/ht-docker-node/)
[![Dependency Status](https://david-dm.org/pushrocks/npmts.svg)](https://david-dm.org/pushrocks/npmts)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/npmts/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/npmts/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/npmts/badges/code.svg)](https://www.bithound.io/github/pushrocks/npmts)
[![Dependency Status](https://david-dm.org/gitzone/npmts.svg)](https://david-dm.org/gitzone/npmts)
[![bitHound Dependencies](https://www.bithound.io/github/gitzone/npmts/badges/dependencies.svg)](https://www.bithound.io/github/gitzone/npmts/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/gitzone/npmts/badges/code.svg)](https://www.bithound.io/github/gitzone/npmts)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Introduction
## Usage
NPMTS is your friend when writing, testing, publishing and documenting npm modules written in TypeScript.
npmts will
1. check your dependencies and package.json
1. check your dependencies and package.json (unused, missing, updates, security)
1. transpile your code with tsc,
1. document your code with typedoc,
1. test your code with mocha
1. create coverage with istanbul
1. test your code with tap (supports the fancy stuff like Promises, Generators, async/await, sourcemaps, parallel test execution in child processes)
1. create coverage with istanbul (supports tracing of the originating TypeScript)
For more information on how tests are run check out the [tapbuffer module](https://www.npmjs.com/package/tapbuffer).
This works on your machine and in CI. There is a prebuild docker image available that includes npmts to make CI a breeze:
[hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
For further information read the docs:
1. [Intro](https://pushrocks.gitlab.io/npmts/index.html)
2. [Install](https://pushrocks.gitlab.io/npmts/install.html)
3. [Default Behaviour](https://pushrocks.gitlab.io/npmts/default.html)
4. [Configuration](https://pushrocks.gitlab.io/npmts/config.html)
5. [Examples](https://pushrocks.gitlab.io/npmts/examples.html)
6. [Info](https://pushrocks.gitlab.io/npmts/info.html)
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)
[![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

1
dist/index.js vendored
View File

@ -3,6 +3,7 @@
Fabulous TypeScript development
* ================================================== */
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const early = require("early");
early.start('NPMTS');
const plugins = require("./npmts.plugins");

4
dist/mod00/index.js vendored
View File

@ -1,6 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/* ------------------------------------------
* This module compiles TypeScript files
* This module compiles the module's TypeScript files
* Note: Test files are only compiled in memory
* -------------------------------------------- */
const q = require("smartq");
const plugins = require("./mod00.plugins");

View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const q = require("smartq");
const paths = require("../npmts.paths");
const plugins = require("./mod00.plugins");

View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const q = require("smartq");
const projectinfo_1 = require("projectinfo");
const paths = require("../npmts.paths");

View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const q = require("smartq");
const paths = require("../npmts.paths");
const plugins = require("./mod00.plugins");

View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const q = require("smartq");
const paths = require("../npmts.paths");
const plugins = require("./mod00.plugins");
@ -8,12 +9,7 @@ exports.run = function (configArg) {
plugins.beautylog.ora.text('now compiling ' + 'TypeScript'.yellow);
plugins.tsn.compileGlobStringObject(config.ts, config.tsOptions, paths.cwd)
.then(() => {
plugins.beautylog.ok('compiled main TypeScript!');
plugins.beautylog.log('now compiling tests!');
return plugins.tsn.compileGlobStringObject(config.testTs, config.tsOptions, paths.cwd);
})
.then(function () {
plugins.beautylog.ok('compiled all TypeScript!');
plugins.beautylog.ok(`compiled the module's TypeScript!`);
done.resolve(config);
}).catch(err => { console.log(err); });
return done.promise;

View File

@ -2,6 +2,7 @@
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("../npmts.plugins"));
const tsn = require("tsn");
exports.tsn = tsn;

1
dist/mod01/index.js vendored
View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/* ------------------------------------------
* This module creates TypeScript documentation
* -------------------------------------------- */

View File

@ -2,4 +2,5 @@
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("../npmts.plugins"));

74
dist/mod02/index.js vendored
View File

@ -7,6 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
/* ------------------------------------------
* This module tests the compiled TypeScript files
* -------------------------------------------- */
@ -17,11 +18,16 @@ const q = require("smartq");
* runs mocha
* @returns INpmtsConfig
*/
let mocha = function (configArg) {
plugins.beautylog.ora.text('Instrumentalizing and testing transpiled JS');
plugins.beautylog.ora.end(); // end plugins.beautylog.ora for tests.
let tap = function (configArg) {
let done = q.defer();
let coverageSmartstream = new plugins.smartstream.Smartstream([
/**
* the TabBuffer for npmts
*/
let npmtsTapBuffer = new plugins.tapbuffer.TabBuffer();
/**
* handle the testable files
*/
let testableFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, './ts/**/*.ts')]),
plugins.gulpSourcemaps.init(),
plugins.gulpTypeScript({
@ -30,38 +36,35 @@ let mocha = function (configArg) {
experimentalDecorators: true,
lib: ['DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable']
}),
plugins.gulpIstanbul({}),
plugins.gulpSourcemaps.write(),
plugins.gulpFunction.forEach((file) => __awaiter(this, void 0, void 0, function* () {
file.path = file.path.replace(paths.tsDir, paths.distDir);
})),
plugins.gulpInjectModules(),
plugins.through2.obj((file, enc, cb) => {
cb();
}, (cb) => {
cb();
})
npmtsTapBuffer.pipeTestableFiles(),
plugins.smartstream.cleanPipe()
]);
let localSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.ts')]),
/**
* handle the test files
*/
let testFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/*.ts')]),
plugins.gulpTypeScript({
target: 'ES5',
emitDecoratorMetadata: true,
experimentalDecorators: true,
lib: ['DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable']
}),
plugins.gulpInjectModules(),
plugins.gulpMocha(),
plugins.gulpIstanbul.writeReports({
dir: plugins.path.join(paths.cwd, './coverage'),
reporters: ['lcovonly', 'json', 'text', 'text-summary']
})
npmtsTapBuffer.pipeTestFiles(),
plugins.smartstream.cleanPipe()
]);
coverageSmartstream.run()
.then(() => {
plugins.beautylog.info('code is now transpiled to ES5, instrumented with istanbul, and injected for mocha!');
return localSmartstream.run()
.then(() => { done.resolve(configArg); }, (err) => {
// lets run the smartstream
Promise.all([
testableFilesSmartstream.run(),
testFilesSmartstream.run()
]).then(() => __awaiter(this, void 0, void 0, function* () {
yield npmtsTapBuffer.runTests();
done.resolve(configArg);
}), (err) => {
plugins.beautylog.error('Tests failed!');
console.log(err);
if (configArg.watch) {
@ -71,22 +74,17 @@ let mocha = function (configArg) {
process.exit(1);
}
});
}, (err) => {
console.log(err);
});
return done.promise;
};
let coverage = function (configArg) {
let handleCoverageData = function (configArg) {
let done = q.defer();
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir, 'lcov.info'), 2)
.then(function (percentageArg) {
if (percentageArg >= configArg.coverageTreshold) {
plugins.beautylog.ok(`${percentageArg.toString()}% `
if (71 >= configArg.coverageTreshold) {
plugins.beautylog.ok(`${(71).toString()}% `
+ `coverage exceeds your treshold of `
+ `${configArg.coverageTreshold.toString()}%`);
}
else {
plugins.beautylog.warn(`${percentageArg.toString()}% `
plugins.beautylog.warn(`${(71).toString()}% `
+ `coverage fails your treshold of `
+ `${configArg.coverageTreshold.toString()}%`);
plugins.beautylog.error('exiting due to coverage failure');
@ -95,7 +93,6 @@ let coverage = function (configArg) {
}
}
done.resolve(configArg);
});
return done.promise;
};
exports.run = function (configArg) {
@ -103,11 +100,10 @@ exports.run = function (configArg) {
let config = configArg;
if (config.test === true) {
plugins.beautylog.ora.text('now starting tests');
plugins.beautylog.log('------------------------------------------------------\n' +
'*************************** TESTS: ***************************\n' +
'--------------------------------------------------------------');
mocha(config)
.then(coverage)
plugins.beautylog.ora.end();
plugins.beautylog.log('ready for tapbuffer:');
tap(config)
.then(handleCoverageData)
.then(() => {
done.resolve(config);
}).catch(err => { console.log(err); });

View File

@ -1,9 +1,7 @@
export * from '../npmts.plugins';
import * as gulp from 'gulp';
import * as gulpFunction from 'gulp-function';
import * as gulpIstanbul from 'gulp-istanbul';
declare let gulpInjectModules: any;
import * as gulpMocha from 'gulp-mocha';
import * as gulpSourcemaps from 'gulp-sourcemaps';
import * as gulpTypeScript from 'gulp-typescript';
export { gulp, gulpFunction, gulpIstanbul, gulpInjectModules, gulpMocha, gulpSourcemaps, gulpTypeScript };
import * as tapbuffer from 'tapbuffer';
export { gulp, gulpFunction, gulpSourcemaps, gulpTypeScript, tapbuffer };

View File

@ -2,18 +2,15 @@
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("../npmts.plugins"));
const gulp = require("gulp");
exports.gulp = gulp;
const gulpFunction = require("gulp-function");
exports.gulpFunction = gulpFunction;
const gulpIstanbul = require("gulp-istanbul");
exports.gulpIstanbul = gulpIstanbul;
let gulpInjectModules = require('gulp-inject-modules');
exports.gulpInjectModules = gulpInjectModules;
const gulpMocha = require("gulp-mocha");
exports.gulpMocha = gulpMocha;
const gulpSourcemaps = require("gulp-sourcemaps");
exports.gulpSourcemaps = gulpSourcemaps;
const gulpTypeScript = require("gulp-typescript");
exports.gulpTypeScript = gulpTypeScript;
const tapbuffer = require("tapbuffer");
exports.tapbuffer = tapbuffer;

3
dist/npmts.cli.js vendored
View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const q = require("smartq");
const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
@ -6,6 +7,8 @@ const NpmtsConfig = require("./npmts.config");
const NpmtsMods = require("./npmts.mods");
const NpmtsWatch = require("./npmts.watch");
const NpmtsShip = require("./npmts.ship");
let npmtsAnalytics = new plugins.smartanalytics.AnalyticsAccount('npmts', 'UA-64087619-2');
npmtsAnalytics.sendEvent('npm', 'exec', 'push.rocks');
exports.run = () => {
let done = q.defer();
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot);

View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
const q = require("smartq");

1
dist/npmts.mods.js vendored
View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const smartsystem_1 = require("smartsystem");
exports.mod00 = new smartsystem_1.LazyModule('./mod00/index', __dirname);
exports.mod01 = new smartsystem_1.LazyModule('./mod01/index', __dirname);

1
dist/npmts.paths.js vendored
View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const plugins = require("./npmts.plugins");
// NPMTS Paths
exports.npmtsPackageRoot = plugins.path.join(__dirname, '../');

View File

@ -5,8 +5,8 @@ import * as lodash from 'lodash';
import * as npmextra from 'npmextra';
import * as projectinfo from 'projectinfo';
import * as path from 'path';
import * as smartanalytics from 'smartanalytics';
import * as smartcli from 'smartcli';
import * as smartcov from 'smartcov';
import * as smartenv from 'smartenv';
import * as smartfile from 'smartfile';
import * as smartpath from 'smartpath';
@ -15,4 +15,4 @@ import * as smartstring from 'smartstring';
import * as smartsystem from 'smartsystem';
import * as through2 from 'through2';
export declare let sourceMapSupport: any;
export { beautylog, depcheck, lodash, npmextra, projectinfo, path, smartcli, smartcov, smartenv, smartfile, smartpath, smartstream, smartstring, smartsystem, through2 };
export { beautylog, depcheck, lodash, npmextra, projectinfo, path, smartanalytics, smartcli, smartenv, smartfile, smartpath, smartstream, smartstring, smartsystem, through2 };

View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("typings-global");
const beautylog = require("beautylog");
exports.beautylog = beautylog;
@ -12,10 +13,10 @@ const projectinfo = require("projectinfo");
exports.projectinfo = projectinfo;
const path = require("path");
exports.path = path;
const smartanalytics = require("smartanalytics");
exports.smartanalytics = smartanalytics;
const smartcli = require("smartcli");
exports.smartcli = smartcli;
const smartcov = require("smartcov");
exports.smartcov = smartcov;
const smartenv = require("smartenv");
exports.smartenv = smartenv;
const smartfile = require("smartfile");

1
dist/npmts.ship.js vendored
View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const q = require("smartq");
const plugins = require("./npmts.plugins");
exports.run = (configArg) => {

1
dist/npmts.watch.js vendored
View File

@ -1,4 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const q = require("smartq");
const smartchok = require("smartchok");
const plugins = require("./npmts.plugins");

View File

@ -1,6 +1,6 @@
{
"name": "npmts",
"version": "6.1.9",
"version": "7.0.2",
"description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.",
"main": "dist/index.js",
"bin": {
@ -14,14 +14,14 @@
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
"typedoc": "(typedoc --out ./pages/api --target ES6 ./ts/)",
"npmpage": "(npmpage)",
"check": "(cd test && npm install && node ../dist/index.js)",
"check": "(cd test && yarn install && node ../dist/index.js)",
"checkVersion": "(cd test/ && node ../dist/index.js -v)",
"checkNoTest": "(cd test && node ../dist/index.js --notest)",
"checkNoDocs": "(cd test && node ../dist/index.js --nodocs)"
},
"repository": {
"type": "git",
"url": "git+https://gitlab.com/pushrocks/npmts.git"
"url": "git+https://gitlab.com/gitzone/npmts.git"
},
"keywords": [
"TypeScript",
@ -30,47 +30,41 @@
"author": "Lossless GmbH",
"license": "MIT",
"bugs": {
"url": "https://gitlab.com/pushrocks/npmts/issues"
"url": "https://gitlab.com/gitzone/npmts/issues"
},
"homepage": "https://gitlab.com/pushrocks/npmts#readme",
"homepage": "https://gitlab.com/gitzone/npmts#readme",
"dependencies": {
"@types/gulp": "^3.8.32",
"@types/gulp-istanbul": "^0.9.30",
"@types/gulp-mocha": "0.0.29",
"@types/gulp-sourcemaps": "0.0.29",
"@types/gulp": "^4.0.2",
"@types/gulp-sourcemaps": "0.0.30",
"@types/minimatch": "^2.0.29",
"@types/through2": "^2.0.32",
"beautylog": "6.1.0",
"beautylog": "6.1.5",
"depcheck": "^0.6.7",
"early": "^2.0.35",
"early": "^2.0.36",
"gulp": "3.9.1",
"gulp-function": "^2.2.3",
"gulp-inject-modules": "^1.0.0",
"gulp-istanbul": "^1.1.1",
"gulp-mocha": "^3.0.1",
"gulp-sourcemaps": "^2.4.0",
"gulp-typescript": "^3.1.4",
"gulp-sourcemaps": "^2.4.1",
"gulp-typescript": "^3.1.6",
"lodash": "^4.17.4",
"npmextra": "^2.0.3",
"projectinfo": "3.0.1",
"smartchok": "^1.0.4",
"npmextra": "^2.0.5",
"projectinfo": "^3.0.2",
"smartanalytics": "^1.0.3",
"smartchok": "^1.0.5",
"smartcli": "2.0.1",
"smartcov": "1.0.0",
"smartenv": "2.0.0",
"smartfile": "4.1.4",
"smartpath": "3.2.7",
"smartq": "^1.0.4",
"smartstream": "^1.0.5",
"smartstring": "^2.0.22",
"smartfile": "^4.1.9",
"smartpath": "^3.2.8",
"smartq": "^1.1.1",
"smartstream": "^1.0.8",
"smartstring": "^2.0.24",
"smartsystem": "^1.0.12",
"source-map-support": "^0.4.10",
"source-map-support": "^0.4.14",
"tapbuffer": "^1.0.9",
"through2": "^2.0.3",
"tsn": "^2.0.15",
"typescript": "next",
"typescript": "^2.2.1",
"typings-global": "^1.0.14"
},
"devDependencies": {
"@types/should": "^8.1.30",
"should": "^11.1.2"
}
"devDependencies": {}
}

View File

@ -1,5 +1,6 @@
/* ------------------------------------------
* This module compiles TypeScript files
* This module compiles the module's TypeScript files
* Note: Test files are only compiled in memory
* -------------------------------------------- */
import * as q from 'smartq'

View File

@ -10,12 +10,7 @@ export let run = function (configArg) {
plugins.beautylog.ora.text('now compiling ' + 'TypeScript'.yellow)
plugins.tsn.compileGlobStringObject(config.ts, config.tsOptions, paths.cwd)
.then(() => {
plugins.beautylog.ok('compiled main TypeScript!')
plugins.beautylog.log('now compiling tests!')
return plugins.tsn.compileGlobStringObject(config.testTs,config.tsOptions,paths.cwd)
})
.then(function () {
plugins.beautylog.ok('compiled all TypeScript!')
plugins.beautylog.ok(`compiled the module's TypeScript!`)
done.resolve(config)
}).catch(err => { console.log(err) })
return done.promise

View File

@ -12,12 +12,18 @@ import { INpmtsConfig } from '../npmts.config'
* runs mocha
* @returns INpmtsConfig
*/
let mocha = function (configArg: INpmtsConfig) {
plugins.beautylog.ora.text('Instrumentalizing and testing transpiled JS')
plugins.beautylog.ora.end() // end plugins.beautylog.ora for tests.
let tap = function (configArg: INpmtsConfig) {
let done = q.defer()
let coverageSmartstream = new plugins.smartstream.Smartstream([
/**
* the TabBuffer for npmts
*/
let npmtsTapBuffer = new plugins.tapbuffer.TabBuffer()
/**
* handle the testable files
*/
let testableFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([ plugins.path.join(paths.cwd, './ts/**/*.ts') ]),
plugins.gulpSourcemaps.init(),
plugins.gulpTypeScript({
@ -26,44 +32,38 @@ let mocha = function (configArg: INpmtsConfig) {
experimentalDecorators: true,
lib: [ 'DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable' ]
}),
plugins.gulpIstanbul({
}),
plugins.gulpSourcemaps.write(),
plugins.gulpFunction.forEach(async file => {
file.path = file.path.replace(paths.tsDir, paths.distDir)
}),
plugins.gulpInjectModules(),
plugins.through2.obj(
(file, enc, cb) => {
cb()
},
(cb) => {
cb()
}
)
npmtsTapBuffer.pipeTestableFiles(),
plugins.smartstream.cleanPipe()
])
let localSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.ts')]),
/**
* handle the test files
*/
let testFilesSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([ plugins.path.join(paths.cwd, 'test/*.ts') ]),
plugins.gulpTypeScript({
target: 'ES5',
emitDecoratorMetadata: true,
experimentalDecorators: true,
lib: [ 'DOM', 'ES5', 'ES2015.Promise', 'ES2015.Generator', 'ES2015.Iterable' ]
}),
plugins.gulpInjectModules(),
plugins.gulpMocha(),
plugins.gulpIstanbul.writeReports({
dir: plugins.path.join(paths.cwd, './coverage'),
reporters: ['lcovonly', 'json', 'text', 'text-summary']
})
npmtsTapBuffer.pipeTestFiles(),
plugins.smartstream.cleanPipe()
])
coverageSmartstream.run()
.then(
() => {
plugins.beautylog.info('code is now transpiled to ES5, instrumented with istanbul, and injected for mocha!')
return localSmartstream.run()
.then(() => { done.resolve(configArg) }, (err) => {
// lets run the smartstream
Promise.all([
testableFilesSmartstream.run(),
testFilesSmartstream.run()
]).then(
async () => {
await npmtsTapBuffer.runTests()
done.resolve(configArg)
}, (err) => {
plugins.beautylog.error('Tests failed!')
console.log(err)
if (configArg.watch) {
@ -72,26 +72,21 @@ let mocha = function (configArg: INpmtsConfig) {
process.exit(1)
}
})
},
(err) => {
console.log(err)
})
return done.promise
}
let coverage = function (configArg: INpmtsConfig) {
let handleCoverageData = function (configArg: INpmtsConfig) {
let done = q.defer()
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir, 'lcov.info'), 2)
.then(function (percentageArg) {
if (percentageArg >= configArg.coverageTreshold) {
if (71 >= configArg.coverageTreshold) {
plugins.beautylog.ok(
`${percentageArg.toString()}% `
`${(71).toString()}% `
+ `coverage exceeds your treshold of `
+ `${configArg.coverageTreshold.toString()}%`
)
} else {
plugins.beautylog.warn(
`${percentageArg.toString()}% `
`${(71).toString()}% `
+ `coverage fails your treshold of `
+ `${configArg.coverageTreshold.toString()}%`
)
@ -99,7 +94,6 @@ let coverage = function (configArg: INpmtsConfig) {
if (!configArg.watch) { process.exit(1) }
}
done.resolve(configArg)
})
return done.promise
}
@ -108,14 +102,11 @@ export let run = function (configArg: INpmtsConfig) {
let config = configArg
if (config.test === true) {
plugins.beautylog.ora.text('now starting tests')
plugins.beautylog.log(
'------------------------------------------------------\n' +
'*************************** TESTS: ***************************\n' +
'--------------------------------------------------------------'
)
plugins.beautylog.ora.end()
plugins.beautylog.log('ready for tapbuffer:')
mocha(config)
.then(coverage)
tap(config)
.then(handleCoverageData)
.then(() => {
done.resolve(config)
}).catch(err => { console.log(err) })

View File

@ -2,18 +2,14 @@ export * from '../npmts.plugins'
import * as gulp from 'gulp'
import * as gulpFunction from 'gulp-function'
import * as gulpIstanbul from 'gulp-istanbul'
let gulpInjectModules = require('gulp-inject-modules')
import * as gulpMocha from 'gulp-mocha'
import * as gulpSourcemaps from 'gulp-sourcemaps'
import * as gulpTypeScript from 'gulp-typescript'
import * as tapbuffer from 'tapbuffer'
export {
gulp,
gulpFunction,
gulpIstanbul,
gulpInjectModules,
gulpMocha,
gulpSourcemaps,
gulpTypeScript
gulpTypeScript,
tapbuffer
}

View File

@ -7,6 +7,9 @@ import * as NpmtsMods from './npmts.mods'
import * as NpmtsWatch from './npmts.watch'
import * as NpmtsShip from './npmts.ship'
let npmtsAnalytics = new plugins.smartanalytics.AnalyticsAccount('npmts','UA-64087619-2')
npmtsAnalytics.sendEvent('npm','exec','push.rocks')
export let run = () => {
let done = q.defer()
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot)

View File

@ -6,8 +6,8 @@ import * as lodash from 'lodash'
import * as npmextra from 'npmextra'
import * as projectinfo from 'projectinfo'
import * as path from 'path'
import * as smartanalytics from 'smartanalytics'
import * as smartcli from 'smartcli'
import * as smartcov from 'smartcov'
import * as smartenv from 'smartenv'
import * as smartfile from 'smartfile'
import * as smartpath from 'smartpath'
@ -24,8 +24,8 @@ export {
npmextra,
projectinfo,
path,
smartanalytics,
smartcli,
smartcov,
smartenv,
smartfile,
smartpath,

3502
yarn.lock Normal file

File diff suppressed because it is too large Load Diff