add smartstream

This commit is contained in:
Philipp Kunz 2016-09-25 20:22:10 +02:00
parent 71588595e6
commit 7c960649bc
15 changed files with 163 additions and 46 deletions

2
.gitignore vendored
View File

@ -1,4 +1,6 @@
node_modules/ node_modules/
test/ test/
pages/ pages/
public/
npm-debug/
.DS_Store .DS_Store

View File

@ -31,6 +31,12 @@ npmts will
This works on your machine and in CI. There is a prebuild docker image available that includes npmts to make CI a breeze: 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/) [hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
For further information read the docs. For further information read the docs:
* [1. Intro](https://pushrocks.gitlab.io/npmts/gitbook/index.md)
* [2. Install](https://pushrocks.gitlab.io/npmts/gitbook/install.md)
* [3. Default Behaviour](https://pushrocks.gitlab.io/npmts/gitbook/default.md)
* [4. Configuration](https://pushrocks.gitlab.io/npmts/gitbook/config.md)
* [5. Examples](https://pushrocks.gitlab.io/npmts/gitbook/examples.md)
* [6. Info](https://pushrocks.gitlab.io/npmts/gitbook/info.md)
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks) [![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)

View File

@ -23,6 +23,7 @@ export import smartcov = require('smartcov');
export import smartenv = require('smartenv'); export import smartenv = require('smartenv');
export import smartfile = require('smartfile'); export import smartfile = require('smartfile');
export import smartpath = require('smartpath'); export import smartpath = require('smartpath');
export import smartstream = require('smartstream');
export import smartstring = require('smartstring'); export import smartstring = require('smartstring');
export declare let sourceMapSupport: any; export declare let sourceMapSupport: any;
export import tsn = require('tsn'); export import tsn = require('tsn');

View File

@ -24,6 +24,7 @@ exports.smartcov = require("smartcov");
exports.smartenv = require("smartenv"); exports.smartenv = require("smartenv");
exports.smartfile = require("smartfile"); exports.smartfile = require("smartfile");
exports.smartpath = require("smartpath"); exports.smartpath = require("smartpath");
exports.smartstream = require("smartstream");
exports.smartstring = require("smartstring"); exports.smartstring = require("smartstring");
exports.sourceMapSupport = require('source-map-support').install(); // display errors correctly during testing exports.sourceMapSupport = require('source-map-support').install(); // display errors correctly during testing
exports.tsn = require("tsn"); exports.tsn = require("tsn");

View File

@ -1,4 +1,5 @@
/// <reference types="q" /> /// <reference types="q" />
import 'typings-global'; import 'typings-global';
import plugins = require('./npmts.plugins'); import plugins = require('./npmts.plugins');
export declare let run: (configArg: any) => plugins.q.Promise<{}>; import { INpmtsConfig } from './npmts.options';
export declare let run: (configArg: INpmtsConfig) => plugins.q.Promise<{}>;

35
dist/npmts.tests.js vendored
View File

@ -4,8 +4,8 @@ const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths"); const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain"); const npmts_promisechain_1 = require("./npmts.promisechain");
/** /**
* * runs mocha
* @returns {*} * @returns INpmtsConfig
*/ */
let mocha = function (configArg) { let mocha = function (configArg) {
npmts_promisechain_1.npmtsOra.text('Instrumentalizing and testing transpiled JS'); npmts_promisechain_1.npmtsOra.text('Instrumentalizing and testing transpiled JS');
@ -22,22 +22,31 @@ let mocha = function (configArg) {
.pipe(plugins.g.sourcemaps.write()) .pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.injectModules()) .pipe(plugins.g.injectModules())
.on('finish', function () { .on('finish', function () {
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]) let localSmartstream = new plugins.smartstream.Smartstream([
.pipe(plugins.g.babel({ plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]),
plugins.g.babel({
presets: [ presets: [
require.resolve('babel-preset-es2015') require.resolve('babel-preset-es2015')
] ]
})) }),
.pipe(plugins.g.injectModules()) plugins.g.injectModules(),
.pipe(plugins.g.mocha()) plugins.g.mocha(),
.pipe(plugins.g.istanbul.writeReports({ plugins.g.istanbul.writeReports({
dir: plugins.path.join(paths.cwd, './coverage'), dir: plugins.path.join(paths.cwd, './coverage'),
reporters: ['lcovonly', 'json', 'text', 'text-summary'] reporters: ['lcovonly', 'json', 'text', 'text-summary']
})) })
.pipe(plugins.g.gFunction(function () { ]);
plugins.beautylog.ok('Tested!'); localSmartstream.run()
.then(() => { done.resolve(configArg); }, (err) => {
plugins.beautylog.error('Tests failed!');
configArg.watch = true;
if (configArg.watch) {
done.resolve(configArg); done.resolve(configArg);
}, 'atEnd')); }
else {
process.exit(1);
}
});
}); });
return done.promise; return done.promise;
}; };
@ -55,8 +64,10 @@ let coverage = function (configArg) {
+ `coverage fails your treshold of ` + `coverage fails your treshold of `
+ `${configArg.coverageTreshold.toString()}%`); + `${configArg.coverageTreshold.toString()}%`);
plugins.beautylog.error('exiting due to coverage failure'); plugins.beautylog.error('exiting due to coverage failure');
if (!configArg.watch) {
process.exit(1); process.exit(1);
} }
}
done.resolve(configArg); done.resolve(configArg);
}); });
return done.promise; return done.promise;

View File

@ -1,3 +1,4 @@
/// <reference types="q" /> /// <reference types="q" />
import * as plugins from './npmts.plugins'; import * as plugins from './npmts.plugins';
export declare let run: (configArg: any) => plugins.q.Promise<{}>; import { INpmtsConfig } from './npmts.options';
export declare let run: (configArg: INpmtsConfig) => plugins.q.Promise<{}>;

3
dist/npmts.watch.js vendored
View File

@ -9,6 +9,9 @@ exports.run = (configArg) => {
for (let key in configArg.ts) { for (let key in configArg.ts) {
pathsToWatch.push(key); pathsToWatch.push(key);
} }
for (let key in configArg.testTs) {
pathsToWatch.push(key);
}
npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch); npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch);
npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => { npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => {
plugins.beautylog.info('now watching...'); plugins.beautylog.info('now watching...');

42
docs/index.md Normal file
View File

@ -0,0 +1,42 @@
# npmts
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/gitbook)
## 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)
[![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)
[![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
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. transpile your code with tsc,
1. document your code with typedoc,
1. test your code with mocha
1. create coverage with istanbul
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/gitbook/index.md)
* [2. Install](https://pushrocks.gitlab.io/npmts/gitbook/install.md)
* [3. Default Behaviour](https://pushrocks.gitlab.io/npmts/gitbook/default.md)
* [4. Configuration](https://pushrocks.gitlab.io/npmts/gitbook/config.md)
* [5. Examples](https://pushrocks.gitlab.io/npmts/gitbook/examples.md)
* [6. Info](https://pushrocks.gitlab.io/npmts/gitbook/info.md)
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)

View File

@ -5,7 +5,7 @@ Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.
[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmts) [![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-git.svg)](https://gitlab.com/pushrocks/npmts)
[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.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/docs) [![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/npmts/gitbook)
## Status for master ## Status for master
[![build status](https://gitlab.com/pushrocks/npmts/badges/master/build.svg)](https://gitlab.com/pushrocks/npmts/commits/master) [![build status](https://gitlab.com/pushrocks/npmts/badges/master/build.svg)](https://gitlab.com/pushrocks/npmts/commits/master)
@ -31,6 +31,12 @@ npmts will
This works on your machine and in CI. There is a prebuild docker image available that includes npmts to make CI a breeze: 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/) [hosttoday/ht-docker-node:npmts on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-node/)
For further information read the docs. For further information read the docs:
* [1. Intro](https://pushrocks.gitlab.io/npmts/gitbook/index.md)
* [2. Install](https://pushrocks.gitlab.io/npmts/gitbook/install.md)
* [3. Default Behaviour](https://pushrocks.gitlab.io/npmts/gitbook/default.md)
* [4. Configuration](https://pushrocks.gitlab.io/npmts/gitbook/config.md)
* [5. Examples](https://pushrocks.gitlab.io/npmts/gitbook/examples.md)
* [6. Info](https://pushrocks.gitlab.io/npmts/gitbook/info.md)
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks) [![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)

32
npm-debug.log Normal file
View File

@ -0,0 +1,32 @@
0 info it worked if it ends with ok
1 verbose cli [ '/Users/philkunz/.nvm/versions/node/v6.5.0/bin/node',
1 verbose cli '/Users/philkunz/.nvm/versions/node/v6.5.0/bin/npm',
1 verbose cli 'version',
1 verbose cli 'patch' ]
2 info using npm@3.10.3
3 info using node@v6.5.0
4 info git [ 'status', '--porcelain' ]
5 verbose stack Error: Git working directory not clean.
5 verbose stack M README.md
5 verbose stack M gitbook/index.md
5 verbose stack at /Users/philkunz/.nvm/versions/node/v6.5.0/lib/node_modules/npm/lib/version.js:247:19
5 verbose stack at /Users/philkunz/.nvm/versions/node/v6.5.0/lib/node_modules/npm/lib/utils/no-progress-while-running.js:21:8
5 verbose stack at ChildProcess.exithandler (child_process.js:197:7)
5 verbose stack at emitTwo (events.js:106:13)
5 verbose stack at ChildProcess.emit (events.js:191:7)
5 verbose stack at maybeClose (internal/child_process.js:877:16)
5 verbose stack at Socket.<anonymous> (internal/child_process.js:334:11)
5 verbose stack at emitOne (events.js:96:13)
5 verbose stack at Socket.emit (events.js:188:7)
5 verbose stack at Pipe._handle.close [as _onclose] (net.js:493:12)
6 verbose cwd /Users/philkunz/gitlab/pushrocks/npmts
7 error Darwin 16.0.0
8 error argv "/Users/philkunz/.nvm/versions/node/v6.5.0/bin/node" "/Users/philkunz/.nvm/versions/node/v6.5.0/bin/npm" "version" "patch"
9 error node v6.5.0
10 error npm v3.10.3
11 error Git working directory not clean.
11 error M README.md
11 error M gitbook/index.md
12 error If you need help, you may report this error at:
12 error <https://github.com/npm/npm/issues>
13 verbose exit [ 1, true ]

View File

@ -51,7 +51,7 @@
"gulp-sourcemaps": "^1.6.0", "gulp-sourcemaps": "^1.6.0",
"gulp-typedoc": "^2.0.0", "gulp-typedoc": "^2.0.0",
"lodash": "^4.16.1", "lodash": "^4.16.1",
"npmextra": "^2.0.1", "npmextra": "^2.0.3",
"projectinfo": "1.0.3", "projectinfo": "1.0.3",
"q": "^1.4.1", "q": "^1.4.1",
"shelljs": "^0.7.4", "shelljs": "^0.7.4",
@ -59,8 +59,9 @@
"smartcli": "1.0.9", "smartcli": "1.0.9",
"smartcov": "1.0.0", "smartcov": "1.0.0",
"smartenv": "1.2.5", "smartenv": "1.2.5",
"smartfile": "4.0.20", "smartfile": "4.0.21",
"smartpath": "3.2.2", "smartpath": "3.2.2",
"smartstream": "^1.0.5",
"smartstring": "^2.0.17", "smartstring": "^2.0.17",
"source-map-support": "^0.4.2", "source-map-support": "^0.4.2",
"tsn": "^2.0.3", "tsn": "^2.0.3",

View File

@ -23,6 +23,7 @@ export import smartcov = require('smartcov')
export import smartenv = require('smartenv') export import smartenv = require('smartenv')
export import smartfile = require('smartfile') export import smartfile = require('smartfile')
export import smartpath = require('smartpath') export import smartpath = require('smartpath')
export import smartstream = require('smartstream')
export import smartstring = require('smartstring') export import smartstring = require('smartstring')
export let sourceMapSupport = require('source-map-support').install() // display errors correctly during testing export let sourceMapSupport = require('source-map-support').install() // display errors correctly during testing
export import tsn = require('tsn') export import tsn = require('tsn')

View File

@ -2,12 +2,13 @@ import 'typings-global'
import plugins = require('./npmts.plugins') import plugins = require('./npmts.plugins')
import paths = require('./npmts.paths') import paths = require('./npmts.paths')
import { npmtsOra } from './npmts.promisechain' import { npmtsOra } from './npmts.promisechain'
import { INpmtsConfig } from './npmts.options'
/** /**
* * runs mocha
* @returns {*} * @returns INpmtsConfig
*/ */
let mocha = function (configArg) { let mocha = function (configArg: INpmtsConfig) {
npmtsOra.text('Instrumentalizing and testing transpiled JS') npmtsOra.text('Instrumentalizing and testing transpiled JS')
npmtsOra.end() // end npmtsOra for tests. npmtsOra.end() // end npmtsOra for tests.
let done = plugins.q.defer() let done = plugins.q.defer()
@ -23,30 +24,34 @@ let mocha = function (configArg) {
.pipe(plugins.g.sourcemaps.write()) .pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.injectModules()) .pipe(plugins.g.injectModules())
.on('finish', function () { .on('finish', function () {
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]) let localSmartstream = new plugins.smartstream.Smartstream([
.pipe(plugins.g.babel({ plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]),
plugins.g.babel({
presets: [ presets: [
require.resolve('babel-preset-es2015') require.resolve('babel-preset-es2015')
] ]
})) }),
.pipe(plugins.g.injectModules()) plugins.g.injectModules(),
.pipe(plugins.g.mocha()) plugins.g.mocha(),
.pipe(plugins.g.istanbul.writeReports({ plugins.g.istanbul.writeReports({
dir: plugins.path.join(paths.cwd, './coverage'), dir: plugins.path.join(paths.cwd, './coverage'),
reporters: ['lcovonly', 'json', 'text', 'text-summary'] reporters: ['lcovonly', 'json', 'text', 'text-summary']
})) })
.pipe(plugins.g.gFunction( ])
function () { localSmartstream.run()
plugins.beautylog.ok('Tested!') .then(() => { done.resolve(configArg) }, (err) => {
plugins.beautylog.error('Tests failed!')
if (configArg.watch) {
done.resolve(configArg) done.resolve(configArg)
}, } else {
'atEnd' process.exit(1)
)) }
})
}) })
return done.promise return done.promise
} }
let coverage = function (configArg) { let coverage = function (configArg: INpmtsConfig) {
let done = plugins.q.defer() let done = plugins.q.defer()
plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir, 'lcov.info'), 2) plugins.smartcov.get.percentage(plugins.path.join(paths.coverageDir, 'lcov.info'), 2)
.then(function (percentageArg) { .then(function (percentageArg) {
@ -63,14 +68,14 @@ let coverage = function (configArg) {
+ `${configArg.coverageTreshold.toString()}%` + `${configArg.coverageTreshold.toString()}%`
) )
plugins.beautylog.error('exiting due to coverage failure') plugins.beautylog.error('exiting due to coverage failure')
process.exit(1) if (!configArg.watch) { process.exit(1) }
} }
done.resolve(configArg) done.resolve(configArg)
}) })
return done.promise return done.promise
} }
export let run = function (configArg) { export let run = function (configArg: INpmtsConfig) {
let done = plugins.q.defer() let done = plugins.q.defer()
let config = configArg let config = configArg
if (config.test === true) { if (config.test === true) {

View File

@ -1,14 +1,18 @@
import * as plugins from './npmts.plugins' import * as plugins from './npmts.plugins'
import * as promisechain from './npmts.promisechain' import * as promisechain from './npmts.promisechain'
let npmtsSmartchok: plugins.smartchok.Smartchok = null let npmtsSmartchok: plugins.smartchok.Smartchok = null
import { INpmtsConfig } from './npmts.options'
export let run = (configArg) => { export let run = (configArg: INpmtsConfig) => {
let done = plugins.q.defer() let done = plugins.q.defer()
if (configArg.watch && npmtsSmartchok === null) { if (configArg.watch && npmtsSmartchok === null) {
let pathsToWatch: string[] = [] let pathsToWatch: string[] = []
for (let key in configArg.ts) { for (let key in configArg.ts) {
pathsToWatch.push(key) pathsToWatch.push(key)
} }
for (let key in configArg.testTs) {
pathsToWatch.push(key)
}
npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch) npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch)
npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => { npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => {
plugins.beautylog.info('now watching...') plugins.beautylog.info('now watching...')