Compare commits

...

38 Commits

Author SHA1 Message Date
57aa38af89 5.5.7 2016-11-25 00:52:25 +01:00
12cf37f01f update messages for better feedback 2016-11-25 00:52:17 +01:00
44150f4d83 5.5.6 2016-11-25 00:36:50 +01:00
3fd755691d now catching babel errors 2016-11-25 00:36:44 +01:00
00983205ce 5.5.5 2016-11-22 18:54:56 +01:00
a0b1b1847c improve README 2016-11-22 18:54:35 +01:00
be9e98ad0c 5.5.4 2016-11-22 18:52:48 +01:00
84578e8dd0 update README 2016-11-22 18:51:51 +01:00
6d759706ac 5.5.3 2016-10-27 21:59:24 +02:00
2bd4063d22 speed bump 2016-10-27 21:59:19 +02:00
c274590184 5.5.2 2016-10-22 02:38:59 +02:00
de8992da84 fix some minor issues 2016-10-22 02:38:55 +02:00
dc598e1627 5.5.1 2016-10-22 01:34:11 +02:00
bfcd78b169 fix version display 2016-10-22 01:34:07 +02:00
2352456be1 5.5.0 2016-10-21 17:51:19 +02:00
8e4a4e5766 now modularized, implements #11 2016-10-21 17:48:52 +02:00
4f93ef3fb2 update dependencies 2016-10-20 22:57:32 +02:00
69742fd6a7 moved cli into its own file 2016-10-06 21:03:30 +02:00
d7b08034da 5.4.49 2016-10-05 12:59:46 +02:00
349c6cce77 fix 2016-10-05 12:59:30 +02:00
4770b1e349 5.4.48 2016-10-05 12:37:48 +02:00
7043a844f0 fix cli 2016-10-05 12:37:45 +02:00
5f4a8d3ee5 5.4.47 2016-10-05 12:27:34 +02:00
0b6fc610e8 made cli.js path discovery smarter 2016-10-05 12:27:30 +02:00
3d78bf268d 5.4.46 2016-10-03 12:45:56 +02:00
36887512ee 5.4.45 2016-10-03 12:38:56 +02:00
fb7025d7ec 5.4.44 2016-10-02 20:35:17 +02:00
8dcdad9e2c some more es6 module syntax 2016-10-02 20:35:13 +02:00
1898db5472 5.4.43 2016-09-29 16:25:29 +02:00
1f01bee204 fix README 2016-09-29 16:25:16 +02:00
851653a6ae 5.4.42 2016-09-29 16:19:59 +02:00
9229cd79dd fix tsn issue 2016-09-29 16:19:49 +02:00
86fb639c82 5.4.41 2016-09-29 00:19:56 +02:00
d536e6aa8c improve test compilation 2016-09-29 00:19:46 +02:00
c91ff6ef4a 5.4.40 2016-09-25 20:28:46 +02:00
2c88c889bf improve README 2016-09-25 20:28:42 +02:00
d3f8ea0433 5.4.39 2016-09-25 20:25:31 +02:00
d57b05c6d0 fix README 2016-09-25 20:25:06 +02:00
87 changed files with 999 additions and 739 deletions

View File

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2016 Push.Rocks Copyright (c) 2016 Lossless GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -5,11 +5,13 @@ 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/gitbook) [![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/npmts/)
## 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)
[![coverage report](https://gitlab.com/pushrocks/npmts/badges/master/coverage.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)
[![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) [![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 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) [![bitHound Code](https://www.bithound.io/github/pushrocks/npmts/badges/code.svg)](https://www.bithound.io/github/pushrocks/npmts)
@ -32,11 +34,11 @@ This works on your machine and in CI. There is a prebuild docker image available
[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) 1. [Intro](https://pushrocks.gitlab.io/npmts/index.html)
* [2. Install](https://pushrocks.gitlab.io/npmts/gitbook/install.md) 2. [Install](https://pushrocks.gitlab.io/npmts/install.html)
* [3. Default Behaviour](https://pushrocks.gitlab.io/npmts/gitbook/default.md) 3. [Default Behaviour](https://pushrocks.gitlab.io/npmts/default.html)
* [4. Configuration](https://pushrocks.gitlab.io/npmts/gitbook/config.md) 4. [Configuration](https://pushrocks.gitlab.io/npmts/config.html)
* [5. Examples](https://pushrocks.gitlab.io/npmts/gitbook/examples.md) 5. [Examples](https://pushrocks.gitlab.io/npmts/examples.html)
* [6. Info](https://pushrocks.gitlab.io/npmts/gitbook/info.md) 6. [Info](https://pushrocks.gitlab.io/npmts/info.html)
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks) [![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)

View File

@ -1,2 +1,2 @@
#!/usr/bin/env node #!/usr/bin/env node
var index = require("./index.js"); var index = require("../{{pathToIndex}}");

2
assets/cliNpmts.js Normal file
View File

@ -0,0 +1,2 @@
#!/usr/bin/env node
var index = require("../dist/index.js");

2
dist/cli.js vendored
View File

@ -1,2 +0,0 @@
#!/usr/bin/env node
var index = require("./index.js");

1
dist/index.d.ts vendored
View File

@ -1 +0,0 @@
import 'typings-global';

21
dist/index.js vendored
View File

@ -1,23 +1,14 @@
"use strict";
require("typings-global");
/* ================================================== * /* ================================================== *
Starting NPMTS main process. **** NPMTS ****
Fabulous TypeScript development
* ================================================== */ * ================================================== */
"use strict";
const early = require("early"); const early = require("early");
early.start('NPMTS'); early.start('NPMTS');
const plugins = require("./npmts.plugins"); const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths"); const cli = require("./npmts.cli");
const promisechain = require("./npmts.promisechain");
early.stop() early.stop()
.then(() => { .then(() => {
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot); let loaded = plugins; // to make sure plugins get actually loaded
let npmtsCli = new plugins.smartcli.Smartcli(); cli.run();
npmtsCli.standardTask()
.then((argvArg) => {
plugins.beautylog.figletSync('NPMTS');
plugins.beautylog.info('npmts version: ' + npmtsProjectInfo.version);
promisechain.run(argvArg).catch((err) => { console.log(err); });
});
npmtsCli.addVersion(npmtsProjectInfo.version);
npmtsCli.startParse();
}); });

4
dist/mod00/index.d.ts vendored Normal file
View File

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

22
dist/mod00/index.js vendored Normal file
View File

@ -0,0 +1,22 @@
"use strict";
/* ------------------------------------------
* This module compiles TypeScript files
* -------------------------------------------- */
const q = require("q");
const npmts_log_1 = require("../npmts.log");
const NpmtsAssets = require("./mod00.assets");
const NpmtsCheck = require("./mod00.check");
const NpmtsClean = require("./mod00.clean");
const NpmtsCompile = require("./mod00.compile");
exports.run = function (configArg) {
let done = q.defer();
npmts_log_1.npmtsOra.text('starting TypeScript Compilation');
NpmtsClean.run(configArg)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(function () {
done.resolve(configArg);
});
return done.promise;
};

3
dist/mod00/mod00.assets.d.ts vendored Normal file
View File

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

24
dist/mod00/mod00.assets.js vendored Normal file
View File

@ -0,0 +1,24 @@
"use strict";
const q = require("q");
const paths = require("../npmts.paths");
const npmts_log_1 = require("../npmts.log");
const plugins = require("./mod00.plugins");
const mod00_check_1 = require("../mod00/mod00.check");
exports.run = function (configArg) {
let done = q.defer();
let config = configArg;
npmts_log_1.npmtsOra.text('now looking at ' + 'required assets'.yellow);
if (config.cli === true) {
let mainJsPath = mod00_check_1.projectInfo.packageJson.main;
let cliJsString = plugins.smartfile.fs.toStringSync(plugins.path.join(paths.npmtsAssetsDir, 'cli.js'));
cliJsString = cliJsString.replace('{{pathToIndex}}', mainJsPath);
plugins.smartfile.memory.toFsSync(cliJsString, plugins.path.join(paths.distDir, 'cli.js'));
plugins.beautylog.ok('installed CLI assets!');
done.resolve(config);
}
else {
plugins.beautylog.ok('No additional assets required!');
done.resolve(config);
}
return done.promise;
};

View File

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

View File

@ -1,11 +1,12 @@
"use strict"; "use strict";
const plugins = require("./npmts.plugins"); const q = require("q");
const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain");
const projectinfo_1 = require("projectinfo"); const projectinfo_1 = require("projectinfo");
const paths = require("../npmts.paths");
const npmts_log_1 = require("../npmts.log");
const plugins = require("./mod00.plugins");
let checkProjectTypings = (configArg) => { let checkProjectTypings = (configArg) => {
let done = plugins.q.defer(); let done = q.defer();
npmts_promisechain_1.npmtsOra.text('Check Module: Check Project Typings...'); npmts_log_1.npmtsOra.text('Check Module: Check Project Typings...');
exports.projectInfo = new projectinfo_1.ProjectinfoNpm(paths.cwd); exports.projectInfo = new projectinfo_1.ProjectinfoNpm(paths.cwd);
if (typeof exports.projectInfo.packageJson.typings === 'undefined') { if (typeof exports.projectInfo.packageJson.typings === 'undefined') {
plugins.beautylog.error(`please add typings field to package.json`); plugins.beautylog.error(`please add typings field to package.json`);
@ -30,8 +31,8 @@ const depcheckOptions = {
] ]
}; };
let checkDependencies = (configArg) => { let checkDependencies = (configArg) => {
let done = plugins.q.defer(); let done = q.defer();
npmts_promisechain_1.npmtsOra.text('Check Module: Check Dependencies...'); npmts_log_1.npmtsOra.text('Check Module: Check Dependencies...');
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ ignoreDirs: [
'test', 'test',
@ -48,7 +49,7 @@ let checkDependencies = (configArg) => {
plugins.beautylog.warn(`Watch out: unused dependency "${item}"`); plugins.beautylog.warn(`Watch out: unused dependency "${item}"`);
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`unused devDependency "${item}"`); plugins.beautylog.error(`missing dependency "${item}" in package.json`);
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json'); plugins.beautylog.info('exiting due to missing dependencies in package.json');
@ -66,8 +67,8 @@ let checkDependencies = (configArg) => {
return done.promise; return done.promise;
}; };
let checkDevDependencies = (configArg) => { let checkDevDependencies = (configArg) => {
let done = plugins.q.defer(); let done = q.defer();
npmts_promisechain_1.npmtsOra.text('Check Module: Check devDependencies...'); npmts_log_1.npmtsOra.text('Check Module: Check devDependencies...');
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ ignoreDirs: [
'ts', 'ts',
@ -101,14 +102,14 @@ let checkDevDependencies = (configArg) => {
return done.promise; return done.promise;
}; };
let checkNodeVersion = (configArg) => { let checkNodeVersion = (configArg) => {
let done = plugins.q.defer(); let done = q.defer();
npmts_promisechain_1.npmtsOra.text('checking node version'); npmts_log_1.npmtsOra.text('checking node version');
done.resolve(configArg); done.resolve(configArg);
return done.promise; return done.promise;
}; };
exports.run = (configArg) => { exports.run = (configArg) => {
let done = plugins.q.defer(); let done = q.defer();
npmts_promisechain_1.npmtsOra.text('Check Module: ...'); npmts_log_1.npmtsOra.text('Check Module: ...');
checkProjectTypings(configArg) checkProjectTypings(configArg)
.then(checkDependencies) .then(checkDependencies)
.then(checkDevDependencies) .then(checkDevDependencies)

3
dist/mod00/mod00.clean.d.ts vendored Normal file
View File

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

42
dist/mod00/mod00.clean.js vendored Normal file
View File

@ -0,0 +1,42 @@
"use strict";
const q = require("q");
const paths = require("../npmts.paths");
const npmts_log_1 = require("../npmts.log");
const plugins = require("./mod00.plugins");
/**
* removes the dist directory which will be entirely rebuild
*/
let removeDist = function () {
npmts_log_1.npmtsOra.text('cleaning dist folder');
return plugins.smartfile.fs.remove(paths.distDir);
};
/**
* remove .d.ts files from testDirctory
*/
let removeTestDeclarations = function () {
let done = q.defer();
plugins.smartfile.fs.listFileTree('./test/', '**/*.d.ts').then(fileArray => {
let fileArrayToRemove = plugins.smartpath.transform.toAbsolute(fileArray, process.cwd() + '//test/');
plugins.smartfile.fs.removeManySync(fileArrayToRemove);
done.resolve();
});
};
/**
* remove old pages
*/
let removePages = function () {
npmts_log_1.npmtsOra.text('cleaning pages folder');
return plugins.smartfile.fs.remove(paths.pagesDir);
};
exports.run = function (configArg) {
npmts_log_1.npmtsOra.text('cleaning up from previous builds...');
let done = q.defer();
removeDist()
.then(removeTestDeclarations)
.then(removePages)
.then(function () {
plugins.beautylog.ok('Cleaned up from previous builds!');
done.resolve(configArg);
});
return done.promise;
};

3
dist/mod00/mod00.compile.d.ts vendored Normal file
View File

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

View File

@ -1,21 +1,21 @@
"use strict"; "use strict";
require("typings-global"); const q = require("q");
const plugins = require("./npmts.plugins"); const paths = require("../npmts.paths");
const paths = require("./npmts.paths"); const npmts_log_1 = require("../npmts.log");
const npmts_promisechain_1 = require("./npmts.promisechain"); const plugins = require("./mod00.plugins");
exports.run = function (configArg) { exports.run = function (configArg) {
let done = plugins.q.defer(); let done = q.defer();
let config = configArg; let config = configArg;
npmts_promisechain_1.npmtsOra.text('now compiling ' + 'TypeScript'.yellow); npmts_log_1.npmtsOra.text('now compiling ' + 'TypeScript'.yellow);
plugins.tsn.compileGlobStringObject(config.ts, config.tsOptions, paths.cwd) plugins.tsn.compileGlobStringObject(config.ts, config.tsOptions, paths.cwd)
.then(() => { .then(() => {
plugins.beautylog.ok('compiled main TypeScript!'); plugins.beautylog.ok('compiled main TypeScript!');
plugins.beautylog.log('now compiling tests!'); plugins.beautylog.log('now compiling tests!');
return plugins.tsn.compileGlobStringObject(config.testTs); return plugins.tsn.compileGlobStringObject(config.testTs, config.tsOptions, paths.cwd);
}) })
.then(function () { .then(function () {
plugins.beautylog.ok('compiled all TypeScript!'); plugins.beautylog.ok('compiled all TypeScript!');
done.resolve(config); done.resolve(config);
}); }).catch(err => { console.log(err); });
return done.promise; return done.promise;
}; };

6
dist/mod00/mod00.plugins.d.ts vendored Normal file
View File

@ -0,0 +1,6 @@
export * from '../npmts.plugins';
import * as tsn from 'tsn';
import * as shelljs from 'shelljs';
import * as smartchok from 'smartchok';
import * as smartstream from 'smartstream';
export { tsn, shelljs, smartchok, smartstream };

13
dist/mod00/mod00.plugins.js vendored Normal file
View File

@ -0,0 +1,13 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
__export(require("../npmts.plugins"));
const tsn = require("tsn");
exports.tsn = tsn;
const shelljs = require("shelljs");
exports.shelljs = shelljs;
const smartchok = require("smartchok");
exports.smartchok = smartchok;
const smartstream = require("smartstream");
exports.smartstream = smartstream;

4
dist/mod01/index.d.ts vendored Normal file
View File

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

54
dist/mod01/index.js vendored Normal file
View File

@ -0,0 +1,54 @@
"use strict";
/* ------------------------------------------
* This module creates TypeScript documentation
* -------------------------------------------- */
const q = require("q");
const paths = require("../npmts.paths");
const npmts_log_1 = require("../npmts.log");
const plugins = require("./mod01.plugins");
const mod00_check_1 = require("../mod00/mod00.check");
let genTypeDoc = function (configArg) {
let done = q.defer();
npmts_log_1.npmtsOra.text('now generating ' + 'TypeDoc documentation'.yellow);
plugins.beautylog.log('TypeDoc Output:');
let localSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src(plugins.path.join(paths.tsDir, '**/*.ts')),
plugins.gulpTypedoc({
// TypeScript options (see typescript docs)
module: 'commonjs',
target: 'es6',
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.pagesApiDir,
json: plugins.path.join(paths.pagesApiDir, 'file.json'),
// TypeDoc options (see typedoc docs)
name: mod00_check_1.projectInfo.name,
readme: plugins.path.join(paths.cwd, 'README.md'),
// theme: "default",
version: true
})
]);
localSmartstream.run().then(() => {
plugins.beautylog.ok('TypeDoc documentation generated!');
done.resolve(configArg);
}, (err) => {
plugins.beautylog.warn('TypeDoc documentation generation failed!');
console.log(err);
done.resolve(configArg);
});
return done.promise;
};
exports.run = function (configArg) {
let done = q.defer();
if (configArg.docs) {
genTypeDoc(configArg)
.then(() => {
done.resolve(configArg);
});
}
else {
done.resolve(configArg);
}
;
return done.promise;
};

4
dist/mod01/mod01.plugins.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
export * from '../npmts.plugins';
import * as gulp from 'gulp';
declare let gulpTypedoc: any;
export { gulp, gulpTypedoc };

9
dist/mod01/mod01.plugins.js vendored Normal file
View File

@ -0,0 +1,9 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
__export(require("../npmts.plugins"));
const gulp = require("gulp");
exports.gulp = gulp;
let gulpTypedoc = require('gulp-typedoc');
exports.gulpTypedoc = gulpTypedoc;

4
dist/mod02/index.d.ts vendored Normal file
View File

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

103
dist/mod02/index.js vendored Normal file
View File

@ -0,0 +1,103 @@
"use strict";
/* ------------------------------------------
* This module tests the compiled TypeScript files
* -------------------------------------------- */
const plugins = require("./mod02.plugins");
const paths = require("../npmts.paths");
const q = require("q");
const npmts_log_1 = require("../npmts.log");
/**
* runs mocha
* @returns INpmtsConfig
*/
let mocha = function (configArg) {
npmts_log_1.npmtsOra.text('Instrumentalizing and testing transpiled JS');
npmts_log_1.npmtsOra.end(); // end npmtsOra for tests.
let done = q.defer();
let babelCoverageSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'dist/*.js')]),
plugins.gulpSourcemaps.init(),
plugins.gulpBabel({
presets: [
require.resolve('babel-preset-es2015')
]
}),
plugins.gulpIstanbul({}),
plugins.gulpSourcemaps.write(),
plugins.gulpInjectModules()
]);
let localSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]),
plugins.gulpBabel({
presets: [
require.resolve('babel-preset-es2015')
]
}),
plugins.gulpInjectModules(),
plugins.gulpMocha(),
plugins.gulpIstanbul.writeReports({
dir: plugins.path.join(paths.cwd, './coverage'),
reporters: ['lcovonly', 'json', 'text', 'text-summary']
})
]);
babelCoverageSmartstream.run()
.then(() => {
plugins.beautylog.info('transpiled code to ES5 for use in mocha');
return localSmartstream.run()
.then(() => { done.resolve(configArg); }, (err) => {
plugins.beautylog.error('Tests failed!');
console.log(err);
if (configArg.watch) {
done.resolve(configArg);
}
else {
process.exit(1);
}
});
}, (err) => {
console.log(err);
});
return done.promise;
};
let coverage = 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()}% `
+ `coverage exceeds your treshold of `
+ `${configArg.coverageTreshold.toString()}%`);
}
else {
plugins.beautylog.warn(`${percentageArg.toString()}% `
+ `coverage fails your treshold of `
+ `${configArg.coverageTreshold.toString()}%`);
plugins.beautylog.error('exiting due to coverage failure');
if (!configArg.watch) {
process.exit(1);
}
}
done.resolve(configArg);
});
return done.promise;
};
exports.run = function (configArg) {
let done = q.defer();
let config = configArg;
if (config.test === true) {
npmts_log_1.npmtsOra.text('now starting tests');
plugins.beautylog.log('------------------------------------------------------\n' +
'*************************** TESTS: ***************************\n' +
'--------------------------------------------------------------');
mocha(config)
.then(coverage)
.then(() => {
done.resolve(config);
});
}
else {
npmts_log_1.npmtsOra.end();
done.resolve(config);
}
return done.promise;
};

9
dist/mod02/mod02.plugins.d.ts vendored Normal file
View File

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

19
dist/mod02/mod02.plugins.js vendored Normal file
View File

@ -0,0 +1,19 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
__export(require("../npmts.plugins"));
const gulp = require("gulp");
exports.gulp = gulp;
const gulpBabel = require("gulp-babel");
exports.gulpBabel = gulpBabel;
const gulpIstanbul = require("gulp-istanbul");
exports.gulpIstanbul = gulpIstanbul;
const gulpFunction = require("gulp-function");
exports.gulpFunction = gulpFunction;
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;

View File

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

20
dist/npmts.assets.js vendored
View File

@ -1,20 +0,0 @@
"use strict";
require("typings-global");
const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain");
exports.run = function (configArg) {
let done = plugins.q.defer();
let config = configArg;
npmts_promisechain_1.npmtsOra.text('now looking at ' + 'required assets'.yellow);
if (config.cli === true) {
plugins.smartfile.fs.copySync(plugins.path.join(paths.npmtsAssetsDir, 'cli.js'), plugins.path.join(paths.distDir, 'cli.js'));
plugins.beautylog.ok('installed CLI assets!');
done.resolve(config);
}
else {
plugins.beautylog.ok('No additional assets required!');
done.resolve(config);
}
return done.promise;
};

View File

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

24
dist/npmts.clean.js vendored
View File

@ -1,24 +0,0 @@
"use strict";
require("typings-global");
const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain");
let removeDist = function () {
npmts_promisechain_1.npmtsOra.text('cleaning dist folder');
return plugins.smartfile.fs.remove(paths.distDir);
};
let removePages = function () {
npmts_promisechain_1.npmtsOra.text('cleaning pages folder');
return plugins.smartfile.fs.remove(paths.pagesDir);
};
exports.run = function (configArg) {
npmts_promisechain_1.npmtsOra.text('cleaning up from previous builds...');
let done = plugins.q.defer();
removeDist()
.then(removePages)
.then(function () {
plugins.beautylog.ok('Cleaned up from previous builds!');
done.resolve(configArg);
});
return done.promise;
};

3
dist/npmts.cli.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
/// <reference types="q" />
import * as q from 'q';
export declare let run: () => q.Promise<{}>;

59
dist/npmts.cli.js vendored Normal file
View File

@ -0,0 +1,59 @@
"use strict";
const q = require("q");
const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
const NpmtsConfig = require("./npmts.config");
const NpmtsMods = require("./npmts.mods");
const NpmtsWatch = require("./npmts.watch");
const NpmtsShip = require("./npmts.ship");
const npmts_log_1 = require("./npmts.log");
exports.run = () => {
let done = q.defer();
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot);
let npmtsCli = new plugins.smartcli.Smartcli();
npmtsCli.standardTask()
.then((argvArg) => {
plugins.beautylog.figletSync('NPMTS');
plugins.beautylog.info('npmts version: ' + npmtsProjectInfo.version);
return NpmtsConfig.run(argvArg);
})
.then((configArg) => {
let done = q.defer();
npmts_log_1.npmtsOra.start('loading additional modules...');
NpmtsMods.mod00.load()
.then((mod00) => {
return mod00.run(configArg);
})
.then(configArg => {
let done = q.defer();
NpmtsMods.mod01.load()
.then(mod01 => {
return mod01.run(configArg);
})
.then(configArg => {
done.resolve(configArg);
});
return done.promise;
})
.then(configArg => {
let done = q.defer();
NpmtsMods.mod02.load()
.then(mod02 => {
return mod02.run(configArg);
})
.then(configArg => {
done.resolve(configArg);
});
return done.promise;
})
.then(NpmtsWatch.run)
.then(NpmtsShip.run);
return done.promise;
})
.catch((err) => { if (err instanceof Error) {
console.log(err);
} });
npmtsCli.addVersion(npmtsProjectInfo.version);
npmtsCli.startParse();
return done.promise;
};

View File

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

View File

@ -1,6 +1,5 @@
/// <reference types="q" /> /// <reference types="q" />
import 'typings-global'; import * as q from 'q';
import plugins = require('./npmts.plugins');
export declare type npmtsMode = 'default' | 'custom'; export declare type npmtsMode = 'default' | 'custom';
export interface INpmtsConfig { export interface INpmtsConfig {
argv: any; argv: any;
@ -13,4 +12,4 @@ export interface INpmtsConfig {
tsOptions: any; tsOptions: any;
watch: boolean; watch: boolean;
} }
export declare var run: (argvArg: any) => plugins.q.Promise<{}>; export declare var run: (argvArg: any) => q.Promise<{}>;

View File

@ -1,11 +1,11 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmts.plugins"); const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths"); const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain"); const q = require("q");
const npmts_log_1 = require("./npmts.log");
; ;
exports.run = function (argvArg) { exports.run = function (argvArg) {
let done = plugins.q.defer(); let done = q.defer();
let defaultConfig = { let defaultConfig = {
argv: undefined, argv: undefined,
coverageTreshold: 70, coverageTreshold: 70,
@ -18,7 +18,7 @@ exports.run = function (argvArg) {
watch: false watch: false
}; };
// mix with configfile // mix with configfile
npmts_promisechain_1.npmtsOra.text('running npmextra'); npmts_log_1.npmtsOra.text('running npmextra');
let localNpmextra = new plugins.npmextra.Npmextra(paths.cwd); let localNpmextra = new plugins.npmextra.Npmextra(paths.cwd);
let config = localNpmextra.dataFor('npmts', defaultConfig); let config = localNpmextra.dataFor('npmts', defaultConfig);
// add argv // add argv
@ -38,10 +38,10 @@ exports.run = function (argvArg) {
// handle default mode // handle default mode
if (config.mode === 'default') { if (config.mode === 'default') {
config.ts = { config.ts = {
['./ts/**/*.ts']: './dist/' './ts/**/*.ts': './dist/'
}; };
config.testTs = { config.testTs = {
['./test/test.ts']: './test/' './test/**/*.ts': './test/'
}; };
} }
; ;

2
dist/npmts.log.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
import { Ora } from 'beautylog';
export declare let npmtsOra: Ora;

3
dist/npmts.log.js vendored Normal file
View File

@ -0,0 +1,3 @@
"use strict";
const beautylog_1 = require("beautylog");
exports.npmtsOra = new beautylog_1.Ora('setting up TaskChain', 'cyan');

7
dist/npmts.mods.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
import { LazyModule } from 'smartsystem';
import * as _mod00 from './mod00/index';
import * as _mod01 from './mod01/index';
import * as _mod02 from './mod02/index';
export declare let mod00: LazyModule<typeof _mod00>;
export declare let mod01: LazyModule<typeof _mod01>;
export declare let mod02: LazyModule<typeof _mod02>;

5
dist/npmts.mods.js vendored Normal file
View File

@ -0,0 +1,5 @@
"use strict";
const smartsystem_1 = require("smartsystem");
exports.mod00 = new smartsystem_1.LazyModule('./mod00/index', __dirname);
exports.mod01 = new smartsystem_1.LazyModule('./mod01/index', __dirname);
exports.mod02 = new smartsystem_1.LazyModule('./mod02/index', __dirname);

View File

@ -1,4 +1,3 @@
import 'typings-global';
export declare let npmtsPackageRoot: string; export declare let npmtsPackageRoot: string;
export declare let cwd: string; export declare let cwd: string;
export declare let tsDir: string; export declare let tsDir: string;

1
dist/npmts.paths.js vendored
View File

@ -1,5 +1,4 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmts.plugins"); const plugins = require("./npmts.plugins");
// NPMTS Paths // NPMTS Paths
exports.npmtsPackageRoot = plugins.path.join(__dirname, '../'); exports.npmtsPackageRoot = plugins.path.join(__dirname, '../');

View File

@ -1,29 +1,17 @@
import 'typings-global'; import 'typings-global';
export import beautylog = require('beautylog'); import * as beautylog from 'beautylog';
export declare let depcheck: any; declare let depcheck: any;
export import gulp = require('gulp'); import * as lodash from 'lodash';
export declare let g: { import * as npmextra from 'npmextra';
babel: any; import * as projectinfo from 'projectinfo';
istanbul: any; import * as path from 'path';
gFunction: any; import * as smartcli from 'smartcli';
injectModules: any; import * as smartcov from 'smartcov';
mocha: any; import * as smartenv from 'smartenv';
sourcemaps: any; import * as smartfile from 'smartfile';
typedoc: any; import * as smartpath from 'smartpath';
}; import * as smartstream from 'smartstream';
export import lodash = require('lodash'); import * as smartstring from 'smartstring';
export import npmextra = require('npmextra'); import * as smartsystem from 'smartsystem';
export import projectinfo = require('projectinfo');
export import path = require('path');
export import q = require('q');
export import shelljs = require('shelljs');
export import smartchok = require('smartchok');
export import smartcli = require('smartcli');
export import smartcov = require('smartcov');
export import smartenv = require('smartenv');
export import smartfile = require('smartfile');
export import smartpath = require('smartpath');
export import smartstream = require('smartstream');
export import smartstring = require('smartstring');
export declare let sourceMapSupport: any; export declare let sourceMapSupport: any;
export import tsn = require('tsn'); export { beautylog, depcheck, lodash, npmextra, projectinfo, path, smartcli, smartcov, smartenv, smartfile, smartpath, smartstream, smartstring, smartsystem };

55
dist/npmts.plugins.js vendored
View File

@ -1,30 +1,31 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
exports.beautylog = require("beautylog"); const beautylog = require("beautylog");
exports.depcheck = require('depcheck'); exports.beautylog = beautylog;
exports.gulp = require("gulp"); let depcheck = require('depcheck');
exports.g = { exports.depcheck = depcheck;
babel: require('gulp-babel'), const lodash = require("lodash");
istanbul: require('gulp-istanbul'), exports.lodash = lodash;
gFunction: require('gulp-function'), const npmextra = require("npmextra");
injectModules: require('gulp-inject-modules'), exports.npmextra = npmextra;
mocha: require('gulp-mocha'), const projectinfo = require("projectinfo");
sourcemaps: require('gulp-sourcemaps'), exports.projectinfo = projectinfo;
typedoc: require('gulp-typedoc') const path = require("path");
}; exports.path = path;
exports.lodash = require("lodash"); const smartcli = require("smartcli");
exports.npmextra = require("npmextra"); exports.smartcli = smartcli;
exports.projectinfo = require("projectinfo"); const smartcov = require("smartcov");
exports.path = require("path"); exports.smartcov = smartcov;
exports.q = require("q"); const smartenv = require("smartenv");
exports.shelljs = require("shelljs"); exports.smartenv = smartenv;
exports.smartchok = require("smartchok"); const smartfile = require("smartfile");
exports.smartcli = require("smartcli"); exports.smartfile = smartfile;
exports.smartcov = require("smartcov"); const smartpath = require("smartpath");
exports.smartenv = require("smartenv"); exports.smartpath = smartpath;
exports.smartfile = require("smartfile"); const smartstream = require("smartstream");
exports.smartpath = require("smartpath"); exports.smartstream = smartstream;
exports.smartstream = require("smartstream"); const smartstring = require("smartstring");
exports.smartstring = require("smartstring"); exports.smartstring = smartstring;
const smartsystem = require("smartsystem");
exports.smartsystem = smartsystem;
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");

View File

@ -1,6 +0,0 @@
/// <reference types="q" />
import 'typings-global';
import plugins = require('./npmts.plugins');
import { Ora } from 'beautylog';
export declare let npmtsOra: Ora;
export declare let run: (argvArg: any) => plugins.q.Promise<{}>;

View File

@ -1,50 +0,0 @@
"use strict";
require("typings-global");
const plugins = require("./npmts.plugins");
const beautylog_1 = require("beautylog");
exports.npmtsOra = new beautylog_1.Ora('setting up TaskChain', 'cyan');
const NpmtsAssets = require("./npmts.assets");
const NpmtsCheck = require("./npmts.check");
const NpmtsClean = require("./npmts.clean");
const NpmtsCompile = require("./npmts.compile");
const NpmtsTypeDoc = require("./npmts.typedoc");
const NpmtsOptions = require("./npmts.options");
const NpmtsTests = require("./npmts.tests");
const NpmtsWatch = require("./npmts.watch");
exports.run = function (argvArg) {
let done = plugins.q.defer();
exports.npmtsOra.start();
NpmtsOptions.run(argvArg)
.then(NpmtsClean.run)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsTypeDoc.run)
.then(NpmtsTests.run)
.then(NpmtsWatch.run)
.then(function (configArg) {
let shipString = '' +
'\n' +
'\n' +
' # # ( )\n' +
' ___#_#___|__\n' +
' _ |____________| _\n' +
' _=====| | | | | |==== _\n' +
' =====| |.---------------------------. | |====\n' +
" <--------------------' . . . . . . . . '--------------/\n" +
' \\ /\n' +
' \\___________________________________________________________/\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n';
if (process.env.CI) {
console.log(shipString);
plugins.beautylog.success('READY TO SHIP!');
}
else {
plugins.beautylog.success('Done!');
}
done.resolve(configArg);
});
return done.promise;
};

2
dist/npmts.ship.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
import { INpmtsConfig } from './npmts.config';
export declare let run: (configArg: INpmtsConfig) => void;

28
dist/npmts.ship.js vendored Normal file
View File

@ -0,0 +1,28 @@
"use strict";
const q = require("q");
const plugins = require("./npmts.plugins");
exports.run = (configArg) => {
let done = q.defer();
let shipString = '' +
'\n' +
'\n' +
' # # ( )\n' +
' ___#_#___|__\n' +
' _ |____________| _\n' +
' _=====| | | | | |==== _\n' +
' =====| |.---------------------------. | |====\n' +
" <--------------------' . . . . . . . . '--------------/\n" +
' \\ /\n' +
' \\___________________________________________________________/\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n';
if (process.env.CI) {
console.log(shipString);
plugins.beautylog.success('READY TO SHIP!');
}
else {
plugins.beautylog.success('Done!');
}
done.resolve(configArg);
};

View File

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

94
dist/npmts.tests.js vendored
View File

@ -1,94 +0,0 @@
"use strict";
require("typings-global");
const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain");
/**
* runs mocha
* @returns INpmtsConfig
*/
let mocha = function (configArg) {
npmts_promisechain_1.npmtsOra.text('Instrumentalizing and testing transpiled JS');
npmts_promisechain_1.npmtsOra.end(); // end npmtsOra for tests.
let done = plugins.q.defer();
plugins.gulp.src([plugins.path.join(paths.cwd, 'dist/*.js')])
.pipe(plugins.g.sourcemaps.init())
.pipe(plugins.g.babel({
presets: [
require.resolve('babel-preset-es2015')
]
}))
.pipe(plugins.g.istanbul({}))
.pipe(plugins.g.sourcemaps.write())
.pipe(plugins.g.injectModules())
.on('finish', function () {
let localSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]),
plugins.g.babel({
presets: [
require.resolve('babel-preset-es2015')
]
}),
plugins.g.injectModules(),
plugins.g.mocha(),
plugins.g.istanbul.writeReports({
dir: plugins.path.join(paths.cwd, './coverage'),
reporters: ['lcovonly', 'json', 'text', 'text-summary']
})
]);
localSmartstream.run()
.then(() => { done.resolve(configArg); }, (err) => {
plugins.beautylog.error('Tests failed!');
configArg.watch = true;
if (configArg.watch) {
done.resolve(configArg);
}
else {
process.exit(1);
}
});
});
return done.promise;
};
let coverage = function (configArg) {
let done = plugins.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()}% `
+ `coverage exceeds your treshold of `
+ `${configArg.coverageTreshold.toString()}%`);
}
else {
plugins.beautylog.warn(`${percentageArg.toString()}% `
+ `coverage fails your treshold of `
+ `${configArg.coverageTreshold.toString()}%`);
plugins.beautylog.error('exiting due to coverage failure');
if (!configArg.watch) {
process.exit(1);
}
}
done.resolve(configArg);
});
return done.promise;
};
exports.run = function (configArg) {
let done = plugins.q.defer();
let config = configArg;
if (config.test === true) {
npmts_promisechain_1.npmtsOra.text('now starting tests');
plugins.beautylog.log('-------------------------------------------------------\n' +
'*************************** TESTS: ***************************\n' +
'--------------------------------------------------------------');
mocha(config)
.then(coverage)
.then(() => {
done.resolve(config);
});
}
else {
npmts_promisechain_1.npmtsOra.end();
done.resolve(config);
}
return done.promise;
};

View File

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

43
dist/npmts.typedoc.js vendored
View File

@ -1,43 +0,0 @@
"use strict";
require("typings-global");
const plugins = require("./npmts.plugins");
const paths = require("./npmts.paths");
const npmts_promisechain_1 = require("./npmts.promisechain");
const npmts_check_1 = require("./npmts.check");
let genTypeDoc = function (configArg) {
let done = plugins.q.defer();
npmts_promisechain_1.npmtsOra.text('now generating ' + 'TypeDoc documentation'.yellow);
plugins.beautylog.log('TypeDoc Output:');
plugins.gulp.src(plugins.path.join(paths.tsDir, '**/*.ts'))
.pipe(plugins.g.typedoc({
// TypeScript options (see typescript docs)
module: 'commonjs',
target: 'es6',
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.pagesApiDir,
json: plugins.path.join(paths.pagesApiDir, 'file.json'),
// TypeDoc options (see typedoc docs)
name: npmts_check_1.projectInfo.name,
readme: plugins.path.join(paths.cwd, 'README.md'),
// theme: "default",
ignoreCompilerErrors: true,
version: true
}))
.pipe(plugins.g.gFunction(done.resolve, 'atEnd'));
return done.promise;
};
exports.run = function (configArg) {
let done = plugins.q.defer();
if (configArg.docs) {
genTypeDoc(configArg)
.then(() => {
done.resolve(configArg);
});
}
else {
done.resolve(configArg);
}
;
return done.promise;
};

View File

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

11
dist/npmts.watch.js vendored
View File

@ -1,9 +1,11 @@
"use strict"; "use strict";
const q = require("q");
const smartchok = require("smartchok");
const plugins = require("./npmts.plugins"); const plugins = require("./npmts.plugins");
const promisechain = require("./npmts.promisechain"); const cli = require("./npmts.cli");
let npmtsSmartchok = null; let npmtsSmartchok = null;
exports.run = (configArg) => { exports.run = (configArg) => {
let done = plugins.q.defer(); let done = q.defer();
if (configArg.watch && npmtsSmartchok === null) { if (configArg.watch && npmtsSmartchok === null) {
let pathsToWatch = []; let pathsToWatch = [];
for (let key in configArg.ts) { for (let key in configArg.ts) {
@ -12,17 +14,18 @@ exports.run = (configArg) => {
for (let key in configArg.testTs) { for (let key in configArg.testTs) {
pathsToWatch.push(key); pathsToWatch.push(key);
} }
npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch); npmtsSmartchok = new smartchok.Smartchok(pathsToWatch);
npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => { npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => {
plugins.beautylog.info('now watching...'); plugins.beautylog.info('now watching...');
changeObservableArg.subscribe(() => { changeObservableArg.subscribe(() => {
promisechain.run(configArg); cli.run();
}); });
}); });
npmtsSmartchok.start(); npmtsSmartchok.start();
done.resolve(configArg); done.resolve(configArg);
} }
else { else {
plugins.beautylog.info('not watching');
done.resolve(configArg); done.resolve(configArg);
} }
return done.promise; return done.promise;

View File

@ -1,15 +0,0 @@
{
"structure": {
"readme": "index.md"
},
"plugins": [
"tonic",
"edit-link"
],
"pluginsConfig": {
"edit-link": {
"base": "https://gitlab.com/pushrocks/npmts/edit/master/docs/",
"label": "Edit on GitLab"
}
}
}

View File

@ -1,42 +0,0 @@
# 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

@ -1,32 +0,0 @@
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

@ -1,16 +1,16 @@
{ {
"name": "npmts", "name": "npmts",
"version": "5.4.38", "version": "5.5.7",
"description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.", "description": "Write npm modules with TypeScript without hassle. TypeScript ready. Fully ES6.",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {
"npmts": "dist/cli.js" "npmts": "assets/cliNpmts.js"
}, },
"scripts": { "scripts": {
"test": "(npm run compile && npm run prepareTest && npm run setupCheck && npm run check && npm run checkVersion && npm run checkNoTest && npm run checkNoDocs)", "test": "(npm run compile && npm run prepareTest && npm run setupCheck && npm run check && npm run checkVersion && npm run checkNoTest && npm run checkNoDocs)",
"testShort": "(npm run compile && npm run check)", "testShort": "(npm run compile && npm run check)",
"prepareTest": "(rm -rf test/)", "prepareTest": "(rm -rf test/)",
"compile": "(rm -r dist/ && tsc && cp assets/cli.js dist/ )", "compile": "(rm -r dist/ && tsc)",
"setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)", "setupCheck": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
"typedoc": "(typedoc --out ./pages/api --target ES6 ./ts/)", "typedoc": "(typedoc --out ./pages/api --target ES6 ./ts/)",
"npmpage": "(npmpage)", "npmpage": "(npmpage)",
@ -27,7 +27,7 @@
"TypeScript", "TypeScript",
"Declaration" "Declaration"
], ],
"author": "Lossless Digital UG (haftungsbeschraenkt)", "author": "Lossless GmbH",
"license": "MIT", "license": "MIT",
"bugs": { "bugs": {
"url": "https://gitlab.com/pushrocks/npmts/issues" "url": "https://gitlab.com/pushrocks/npmts/issues"
@ -35,39 +35,47 @@
"homepage": "https://gitlab.com/pushrocks/npmts#readme", "homepage": "https://gitlab.com/pushrocks/npmts#readme",
"dependencies": { "dependencies": {
"@types/gulp": "^3.8.32", "@types/gulp": "^3.8.32",
"@types/gulp-babel": "^6.1.29",
"@types/gulp-istanbul": "^0.9.30",
"@types/gulp-mocha": "0.0.29",
"@types/gulp-sourcemaps": "0.0.29",
"@types/minimatch": "^2.0.29", "@types/minimatch": "^2.0.29",
"@types/q": "^0.x.x", "@types/q": "^0.x.x",
"@types/shelljs": "^0.3.31", "@types/shelljs": "^0.3.32",
"babel-preset-es2015": "^6.14.0", "babel-preset-es2015": "^6.18.0",
"beautylog": "5.0.23", "beautylog": "6.0.0",
"depcheck": "^0.6.4", "depcheck": "^0.6.4",
"early": "^2.0.35", "early": "^2.0.35",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-babel": "^6.1.2", "gulp-babel": "^6.1.2",
"gulp-function": "^1.3.6", "gulp-function": "^2.2.0",
"gulp-inject-modules": "^1.0.0", "gulp-inject-modules": "^1.0.0",
"gulp-istanbul": "^1.1.1", "gulp-istanbul": "^1.1.1",
"gulp-mocha": "^3.0.1", "gulp-mocha": "^3.0.1",
"gulp-sourcemaps": "^1.6.0", "gulp-sourcemaps": "^2.2.0",
"gulp-typedoc": "^2.0.0", "gulp-typedoc": "^2.0.0",
"lodash": "^4.16.1", "lodash": "^4.16.4",
"npmextra": "^2.0.3", "npmextra": "^2.0.3",
"projectinfo": "1.0.3", "projectinfo": "1.0.4",
"q": "^1.4.1", "q": "^1.4.1",
"shelljs": "^0.7.4", "shelljs": "^0.7.5",
"smartchok": "^1.0.2", "smartchok": "^1.0.2",
"smartcli": "1.0.9", "smartcli": "1.0.10",
"smartcov": "1.0.0", "smartcov": "1.0.0",
"smartenv": "1.2.5", "smartenv": "1.2.5",
"smartfile": "4.0.21", "smartfile": "4.1.0",
"smartpath": "3.2.2", "smartpath": "3.2.5",
"smartstream": "^1.0.5", "smartstream": "^1.0.5",
"smartstring": "^2.0.17", "smartstring": "^2.0.17",
"source-map-support": "^0.4.2", "smartsystem": "^1.0.9",
"tsn": "^2.0.3", "source-map-support": "^0.4.5",
"typedoc": "^0.4.5", "tsn": "^2.0.13",
"typedoc": "^0.5.0",
"typescript": "next", "typescript": "next",
"typings-global": "^1.0.14" "typings-global": "^1.0.14"
}, },
"devDependencies": {} "devDependencies": {
"@types/should": "^8.1.30",
"should": "^11.1.1"
}
} }

View File

@ -1,24 +1,14 @@
import 'typings-global'
/* ================================================== * /* ================================================== *
Starting NPMTS main process. **** NPMTS ****
Fabulous TypeScript development
* ================================================== */ * ================================================== */
import * as early from 'early' import * as early from 'early'
early.start('NPMTS') early.start('NPMTS')
import * as plugins from './npmts.plugins' import * as plugins from './npmts.plugins'
import * as paths from './npmts.paths' import * as cli from './npmts.cli'
import * as promisechain from './npmts.promisechain'
early.stop() early.stop()
.then(() => { .then(() => {
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot) let loaded = plugins // to make sure plugins get actually loaded
let npmtsCli = new plugins.smartcli.Smartcli() cli.run()
npmtsCli.standardTask()
.then((argvArg) => {
plugins.beautylog.figletSync('NPMTS')
plugins.beautylog.info('npmts version: ' + npmtsProjectInfo.version)
promisechain.run(argvArg).catch((err) => { console.log(err) })
})
npmtsCli.addVersion(npmtsProjectInfo.version)
npmtsCli.startParse()
}) })

27
ts/mod00/index.ts Normal file
View File

@ -0,0 +1,27 @@
/* ------------------------------------------
* This module compiles TypeScript files
* -------------------------------------------- */
import * as q from 'q'
import { npmtsOra } from '../npmts.log'
import { INpmtsConfig } from '../npmts.config'
import * as plugins from './mod00.plugins'
import * as NpmtsAssets from './mod00.assets'
import * as NpmtsCheck from './mod00.check'
import * as NpmtsClean from './mod00.clean'
import * as NpmtsCompile from './mod00.compile'
export let run = function(configArg: INpmtsConfig): q.Promise<INpmtsConfig> {
let done = q.defer<INpmtsConfig>()
npmtsOra.text('starting TypeScript Compilation')
NpmtsClean.run(configArg)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(function(){
done.resolve(configArg)
})
return done.promise
}

25
ts/mod00/mod00.assets.ts Normal file
View File

@ -0,0 +1,25 @@
import * as q from 'q'
import paths = require('../npmts.paths')
import { npmtsOra } from '../npmts.log'
import plugins = require('./mod00.plugins')
import { projectInfo } from '../mod00/mod00.check'
export var run = function(configArg){
let done = q.defer()
let config = configArg
npmtsOra.text('now looking at ' + 'required assets'.yellow)
if (config.cli === true) {
let mainJsPath = projectInfo.packageJson.main
let cliJsString: string = plugins.smartfile.fs.toStringSync(plugins.path.join(paths.npmtsAssetsDir,'cli.js'))
cliJsString = cliJsString.replace('{{pathToIndex}}',mainJsPath)
plugins.smartfile.memory.toFsSync(cliJsString, plugins.path.join(paths.distDir,'cli.js'))
plugins.beautylog.ok('installed CLI assets!')
done.resolve(config)
} else {
plugins.beautylog.ok('No additional assets required!')
done.resolve(config)
}
return done.promise
}

View File

@ -1,13 +1,15 @@
import * as plugins from './npmts.plugins' import * as q from 'q'
import * as paths from './npmts.paths' import { ProjectinfoNpm } from 'projectinfo'
import { npmtsOra } from './npmts.promisechain'
import {ProjectinfoNpm} from 'projectinfo' import * as paths from '../npmts.paths'
import { npmtsOra } from '../npmts.log'
import * as plugins from './mod00.plugins'
export let projectInfo: ProjectinfoNpm export let projectInfo: ProjectinfoNpm
let checkProjectTypings = (configArg) => { let checkProjectTypings = (configArg) => {
let done = plugins.q.defer() let done = q.defer()
npmtsOra.text('Check Module: Check Project Typings...') npmtsOra.text('Check Module: Check Project Typings...')
projectInfo = new ProjectinfoNpm(paths.cwd) projectInfo = new ProjectinfoNpm(paths.cwd)
if (typeof projectInfo.packageJson.typings === 'undefined') { if (typeof projectInfo.packageJson.typings === 'undefined') {
@ -34,7 +36,7 @@ const depcheckOptions = {
} }
let checkDependencies = (configArg) => { let checkDependencies = (configArg) => {
let done = plugins.q.defer() let done = q.defer()
npmtsOra.text('Check Module: Check Dependencies...') npmtsOra.text('Check Module: Check Dependencies...')
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored ignoreDirs: [ // folder with these names will be ignored
@ -52,7 +54,7 @@ let checkDependencies = (configArg) => {
plugins.beautylog.warn(`Watch out: unused dependency "${item}"`) plugins.beautylog.warn(`Watch out: unused dependency "${item}"`)
} }
for (let item in unused.missing) { for (let item in unused.missing) {
plugins.beautylog.error(`unused devDependency "${item}"`) plugins.beautylog.error(`missing dependency "${item}" in package.json`)
} }
if (unused.missing.length > 0) { if (unused.missing.length > 0) {
plugins.beautylog.info('exiting due to missing dependencies in package.json') plugins.beautylog.info('exiting due to missing dependencies in package.json')
@ -70,7 +72,7 @@ let checkDependencies = (configArg) => {
} }
let checkDevDependencies = (configArg) => { let checkDevDependencies = (configArg) => {
let done = plugins.q.defer() let done = q.defer()
npmtsOra.text('Check Module: Check devDependencies...') npmtsOra.text('Check Module: Check devDependencies...')
let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, { let depcheckOptionsMerged = plugins.lodash.merge(depcheckOptions, {
ignoreDirs: [ // folder with these names will be ignored ignoreDirs: [ // folder with these names will be ignored
@ -106,14 +108,14 @@ let checkDevDependencies = (configArg) => {
} }
let checkNodeVersion = (configArg) => { let checkNodeVersion = (configArg) => {
let done = plugins.q.defer() let done = q.defer()
npmtsOra.text('checking node version') npmtsOra.text('checking node version')
done.resolve(configArg) done.resolve(configArg)
return done.promise return done.promise
} }
export let run = (configArg) => { export let run = (configArg) => {
let done = plugins.q.defer() let done = q.defer()
npmtsOra.text('Check Module: ...') npmtsOra.text('Check Module: ...')
checkProjectTypings(configArg) checkProjectTypings(configArg)
.then(checkDependencies) .then(checkDependencies)

47
ts/mod00/mod00.clean.ts Normal file
View File

@ -0,0 +1,47 @@
import * as q from 'q'
import paths = require('../npmts.paths')
import { npmtsOra } from '../npmts.log'
import plugins = require('./mod00.plugins')
/**
* removes the dist directory which will be entirely rebuild
*/
let removeDist = function () {
npmtsOra.text('cleaning dist folder')
return plugins.smartfile.fs.remove(paths.distDir)
}
/**
* remove .d.ts files from testDirctory
*/
let removeTestDeclarations = function () {
let done = q.defer()
plugins.smartfile.fs.listFileTree('./test/', '**/*.d.ts').then(fileArray => {
let fileArrayToRemove = plugins.smartpath.transform.toAbsolute(fileArray, process.cwd() + '//test/')
plugins.smartfile.fs.removeManySync(fileArrayToRemove)
done.resolve()
})
}
/**
* remove old pages
*/
let removePages = function () {
npmtsOra.text('cleaning pages folder')
return plugins.smartfile.fs.remove(paths.pagesDir)
}
export let run = function (configArg) {
npmtsOra.text('cleaning up from previous builds...')
let done = q.defer()
removeDist()
.then(removeTestDeclarations)
.then(removePages)
.then(function () {
plugins.beautylog.ok('Cleaned up from previous builds!')
done.resolve(configArg)
})
return done.promise
}

View File

@ -1,21 +1,23 @@
import 'typings-global' import * as q from 'q'
import plugins = require('./npmts.plugins')
import paths = require('./npmts.paths') import * as paths from '../npmts.paths'
import {npmtsOra} from './npmts.promisechain' import { npmtsOra } from '../npmts.log'
import * as plugins from './mod00.plugins'
export let run = function (configArg) { export let run = function (configArg) {
let done = plugins.q.defer() let done = q.defer()
let config = configArg let config = configArg
npmtsOra.text('now compiling ' + 'TypeScript'.yellow) npmtsOra.text('now compiling ' + 'TypeScript'.yellow)
plugins.tsn.compileGlobStringObject(config.ts,config.tsOptions,paths.cwd) plugins.tsn.compileGlobStringObject(config.ts,config.tsOptions,paths.cwd)
.then(() => { .then(() => {
plugins.beautylog.ok('compiled main TypeScript!') plugins.beautylog.ok('compiled main TypeScript!')
plugins.beautylog.log('now compiling tests!') plugins.beautylog.log('now compiling tests!')
return plugins.tsn.compileGlobStringObject(config.testTs) return plugins.tsn.compileGlobStringObject(config.testTs,config.tsOptions,paths.cwd)
}) })
.then(function () { .then(function () {
plugins.beautylog.ok('compiled all TypeScript!') plugins.beautylog.ok('compiled all TypeScript!')
done.resolve(config) done.resolve(config)
}) }).catch(err => { console.log(err) })
return done.promise return done.promise
} }

13
ts/mod00/mod00.plugins.ts Normal file
View File

@ -0,0 +1,13 @@
export * from '../npmts.plugins'
import * as tsn from 'tsn'
import * as shelljs from 'shelljs'
import * as smartchok from 'smartchok'
import * as smartstream from 'smartstream'
export {
tsn,
shelljs,
smartchok,
smartstream
}

63
ts/mod01/index.ts Normal file
View File

@ -0,0 +1,63 @@
/* ------------------------------------------
* This module creates TypeScript documentation
* -------------------------------------------- */
import * as q from 'q'
import * as paths from '../npmts.paths'
import { npmtsOra } from '../npmts.log'
import { INpmtsConfig } from '../npmts.config'
import * as plugins from './mod01.plugins'
import { projectInfo } from '../mod00/mod00.check'
let genTypeDoc = function (configArg: INpmtsConfig) {
let done = q.defer()
npmtsOra.text('now generating ' + 'TypeDoc documentation'.yellow)
plugins.beautylog.log('TypeDoc Output:')
let localSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src(plugins.path.join(paths.tsDir, '**/*.ts')),
plugins.gulpTypedoc({
// TypeScript options (see typescript docs)
module: 'commonjs',
target: 'es6',
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.pagesApiDir,
json: plugins.path.join(paths.pagesApiDir, 'file.json'),
// TypeDoc options (see typedoc docs)
name: projectInfo.name,
readme: plugins.path.join(paths.cwd, 'README.md'),
// theme: "default",
version: true
})
])
localSmartstream.run().then(
() => {
plugins.beautylog.ok('TypeDoc documentation generated!')
done.resolve(configArg)
},
(err) => {
plugins.beautylog.warn('TypeDoc documentation generation failed!')
console.log(err)
done.resolve(configArg)
}
)
return done.promise
}
export let run = function (configArg: INpmtsConfig) {
let done = q.defer<INpmtsConfig>()
if (configArg.docs) {
genTypeDoc(configArg)
.then(() => {
done.resolve(configArg)
})
} else {
done.resolve(configArg)
};
return done.promise
}

View File

@ -0,0 +1,9 @@
export * from '../npmts.plugins'
import * as gulp from 'gulp'
let gulpTypedoc = require('gulp-typedoc')
export {
gulp,
gulpTypedoc
}

View File

@ -1,8 +1,13 @@
import 'typings-global' /* ------------------------------------------
import plugins = require('./npmts.plugins') * This module tests the compiled TypeScript files
import paths = require('./npmts.paths') * -------------------------------------------- */
import { npmtsOra } from './npmts.promisechain' import plugins = require('./mod02.plugins')
import { INpmtsConfig } from './npmts.options' import paths = require('../npmts.paths')
import * as q from 'q'
import { npmtsOra } from '../npmts.log'
import { INpmtsConfig } from '../npmts.config'
/** /**
* runs mocha * runs mocha
@ -11,48 +16,58 @@ import { INpmtsConfig } from './npmts.options'
let mocha = function (configArg: INpmtsConfig) { 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 = q.defer()
plugins.gulp.src([plugins.path.join(paths.cwd, 'dist/*.js')]) let babelCoverageSmartstream = new plugins.smartstream.Smartstream([
.pipe(plugins.g.sourcemaps.init()) plugins.gulp.src([plugins.path.join(paths.cwd, 'dist/*.js')]),
.pipe(plugins.g.babel({ plugins.gulpSourcemaps.init(),
plugins.gulpBabel({
presets: [ presets: [
require.resolve('babel-preset-es2015') require.resolve('babel-preset-es2015')
] ]
})) }),
.pipe(plugins.g.istanbul({ plugins.gulpIstanbul({
})) }),
.pipe(plugins.g.sourcemaps.write()) plugins.gulpSourcemaps.write(),
.pipe(plugins.g.injectModules()) plugins.gulpInjectModules()
.on('finish', function () { ])
let localSmartstream = new plugins.smartstream.Smartstream([ let localSmartstream = new plugins.smartstream.Smartstream([
plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]), plugins.gulp.src([plugins.path.join(paths.cwd, 'test/test.js')]),
plugins.g.babel({ plugins.gulpBabel({
presets: [ presets: [
require.resolve('babel-preset-es2015') require.resolve('babel-preset-es2015')
] ]
}), }),
plugins.g.injectModules(), plugins.gulpInjectModules(),
plugins.g.mocha(), plugins.gulpMocha(),
plugins.g.istanbul.writeReports({ plugins.gulpIstanbul.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']
}) })
]) ])
localSmartstream.run()
babelCoverageSmartstream.run()
.then(
() => {
plugins.beautylog.info('transpiled code to ES5 for use in mocha')
return localSmartstream.run()
.then(() => { done.resolve(configArg) }, (err) => { .then(() => { done.resolve(configArg) }, (err) => {
plugins.beautylog.error('Tests failed!') plugins.beautylog.error('Tests failed!')
console.log(err)
if (configArg.watch) { if (configArg.watch) {
done.resolve(configArg) done.resolve(configArg)
} else { } else {
process.exit(1) process.exit(1)
} }
}) })
},
(err) => {
console.log(err)
}) })
return done.promise return done.promise
} }
let coverage = function (configArg: INpmtsConfig) { let coverage = function (configArg: INpmtsConfig) {
let done = plugins.q.defer() let done = 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) {
if (percentageArg >= configArg.coverageTreshold) { if (percentageArg >= configArg.coverageTreshold) {
@ -76,12 +91,12 @@ let coverage = function (configArg: INpmtsConfig) {
} }
export let run = function (configArg: INpmtsConfig) { export let run = function (configArg: INpmtsConfig) {
let done = plugins.q.defer() let done = q.defer<INpmtsConfig>()
let config = configArg let config = configArg
if (config.test === true) { if (config.test === true) {
npmtsOra.text('now starting tests') npmtsOra.text('now starting tests')
plugins.beautylog.log( plugins.beautylog.log(
'-------------------------------------------------------\n' + '------------------------------------------------------\n' +
'*************************** TESTS: ***************************\n' + '*************************** TESTS: ***************************\n' +
'--------------------------------------------------------------' '--------------------------------------------------------------'
) )

19
ts/mod02/mod02.plugins.ts Normal file
View File

@ -0,0 +1,19 @@
export * from '../npmts.plugins'
import * as gulp from 'gulp'
import * as gulpBabel from 'gulp-babel'
import * as gulpIstanbul from 'gulp-istanbul'
import * as gulpFunction from 'gulp-function'
let gulpInjectModules = require('gulp-inject-modules')
import * as gulpMocha from 'gulp-mocha'
import * as gulpSourcemaps from 'gulp-sourcemaps'
export {
gulp,
gulpBabel,
gulpIstanbul,
gulpFunction,
gulpInjectModules,
gulpMocha,
gulpSourcemaps
}

View File

@ -1,22 +0,0 @@
import 'typings-global'
import plugins = require('./npmts.plugins')
import paths = require('./npmts.paths')
import {npmtsOra} from './npmts.promisechain'
export var run = function(configArg){
let done = plugins.q.defer()
let config = configArg
npmtsOra.text('now looking at ' + 'required assets'.yellow)
if (config.cli === true) {
plugins.smartfile.fs.copySync(
plugins.path.join(paths.npmtsAssetsDir,'cli.js'),
plugins.path.join(paths.distDir,'cli.js')
)
plugins.beautylog.ok('installed CLI assets!')
done.resolve(config)
} else {
plugins.beautylog.ok('No additional assets required!')
done.resolve(config)
}
return done.promise
}

View File

@ -1,26 +0,0 @@
import 'typings-global'
import plugins = require('./npmts.plugins')
import paths = require('./npmts.paths')
import {npmtsOra} from './npmts.promisechain'
let removeDist = function(){
npmtsOra.text('cleaning dist folder')
return plugins.smartfile.fs.remove(paths.distDir)
}
let removePages = function(){
npmtsOra.text('cleaning pages folder')
return plugins.smartfile.fs.remove(paths.pagesDir)
}
export let run = function(configArg){
npmtsOra.text('cleaning up from previous builds...')
let done = plugins.q.defer()
removeDist()
.then(removePages)
.then(function(){
plugins.beautylog.ok('Cleaned up from previous builds!')
done.resolve(configArg)
})
return done.promise
}

60
ts/npmts.cli.ts Normal file
View File

@ -0,0 +1,60 @@
import * as q from 'q'
import * as plugins from './npmts.plugins'
import * as paths from './npmts.paths'
import * as NpmtsConfig from './npmts.config'
import * as NpmtsMods from './npmts.mods'
import * as NpmtsWatch from './npmts.watch'
import * as NpmtsShip from './npmts.ship'
import { npmtsOra } from './npmts.log'
export let run = () => {
let done = q.defer()
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot)
let npmtsCli = new plugins.smartcli.Smartcli()
npmtsCli.standardTask()
.then((argvArg) => {
plugins.beautylog.figletSync('NPMTS')
plugins.beautylog.info('npmts version: ' + npmtsProjectInfo.version)
return NpmtsConfig.run(argvArg)
})
.then((configArg: NpmtsConfig.INpmtsConfig) => {
let done = q.defer()
npmtsOra.start('loading additional modules...')
NpmtsMods.mod00.load()
.then((mod00) => {
return mod00.run(configArg)
})
.then(configArg => {
let done = q.defer<NpmtsConfig.INpmtsConfig>()
NpmtsMods.mod01.load()
.then(mod01 => {
return mod01.run(configArg)
})
.then(configArg => {
done.resolve(configArg)
})
return done.promise
})
.then(configArg => {
let done = q.defer<NpmtsConfig.INpmtsConfig>()
NpmtsMods.mod02.load()
.then(mod02 => {
return mod02.run(configArg)
})
.then(configArg => {
done.resolve(configArg)
})
return done.promise
})
.then(NpmtsWatch.run)
.then(NpmtsShip.run)
return done.promise
})
.catch((err) => { if (err instanceof Error) { console.log(err) } } )
npmtsCli.addVersion(npmtsProjectInfo.version)
npmtsCli.startParse()
return done.promise
}

View File

@ -1,7 +1,9 @@
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 * as q from 'q'
import { npmtsOra } from './npmts.log'
export type npmtsMode = 'default' | 'custom' export type npmtsMode = 'default' | 'custom'
@ -19,7 +21,7 @@ export interface INpmtsConfig {
}; };
export var run = function (argvArg) { export var run = function (argvArg) {
let done = plugins.q.defer() let done = q.defer()
let defaultConfig: INpmtsConfig = { let defaultConfig: INpmtsConfig = {
argv: undefined, argv: undefined,
coverageTreshold: 70, coverageTreshold: 70,
@ -59,10 +61,10 @@ export var run = function (argvArg) {
// handle default mode // handle default mode
if (config.mode === 'default') { if (config.mode === 'default') {
config.ts = { config.ts = {
['./ts/**/*.ts']: './dist/' './ts/**/*.ts': './dist/'
} }
config.testTs = { config.testTs = {
['./test/test.ts']: './test/' './test/**/*.ts': './test/'
} }
}; };

2
ts/npmts.log.ts Normal file
View File

@ -0,0 +1,2 @@
import {Ora} from 'beautylog'
export let npmtsOra = new Ora('setting up TaskChain','cyan')

11
ts/npmts.mods.ts Normal file
View File

@ -0,0 +1,11 @@
import * as plugins from './npmts.plugins'
import { LazyModule } from 'smartsystem'
import * as _mod00 from './mod00/index'
import * as _mod01 from './mod01/index'
import * as _mod02 from './mod02/index'
export let mod00 = new LazyModule<typeof _mod00>('./mod00/index',__dirname)
export let mod01 = new LazyModule<typeof _mod01>('./mod01/index',__dirname)
export let mod02 = new LazyModule<typeof _mod02>('./mod02/index',__dirname)

View File

@ -1,4 +1,3 @@
import 'typings-global'
import plugins = require('./npmts.plugins') import plugins = require('./npmts.plugins')
// NPMTS Paths // NPMTS Paths

View File

@ -1,29 +1,34 @@
import 'typings-global' import 'typings-global'
export import beautylog = require('beautylog') import * as beautylog from 'beautylog'
export let depcheck = require('depcheck') let depcheck = require('depcheck')
export import gulp = require('gulp')
export let g = { import * as lodash from 'lodash'
babel: require('gulp-babel'), import * as npmextra from 'npmextra'
istanbul: require('gulp-istanbul'), import * as projectinfo from 'projectinfo'
gFunction: require('gulp-function'), import * as path from 'path'
injectModules: require('gulp-inject-modules'), import * as smartcli from 'smartcli'
mocha: require('gulp-mocha'), import * as smartcov from 'smartcov'
sourcemaps: require('gulp-sourcemaps'), import * as smartenv from 'smartenv'
typedoc: require('gulp-typedoc') import * as smartfile from 'smartfile'
} import * as smartpath from 'smartpath'
export import lodash = require('lodash') import * as smartstream from 'smartstream'
export import npmextra = require('npmextra') import * as smartstring from 'smartstring'
export import projectinfo = require('projectinfo') import * as smartsystem from 'smartsystem'
export import path = require('path')
export import q = require('q')
export import shelljs = require('shelljs')
export import smartchok = require('smartchok')
export import smartcli = require('smartcli')
export import smartcov = require('smartcov')
export import smartenv = require('smartenv')
export import smartfile = require('smartfile')
export import smartpath = require('smartpath')
export import smartstream = require('smartstream')
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 {
beautylog,
depcheck,
lodash,
npmextra,
projectinfo,
path,
smartcli,
smartcov,
smartenv,
smartfile,
smartpath,
smartstream,
smartstring,
smartsystem
}

View File

@ -1,51 +0,0 @@
import 'typings-global'
import plugins = require('./npmts.plugins')
import {Ora} from 'beautylog'
export let npmtsOra = new Ora('setting up TaskChain','cyan')
import * as NpmtsAssets from './npmts.assets'
import * as NpmtsCheck from './npmts.check'
import * as NpmtsClean from './npmts.clean'
import * as NpmtsCompile from './npmts.compile'
import * as NpmtsTypeDoc from './npmts.typedoc'
import * as NpmtsOptions from './npmts.options'
import * as NpmtsTests from './npmts.tests'
import * as NpmtsWatch from './npmts.watch'
export let run = function(argvArg){
let done = plugins.q.defer()
npmtsOra.start()
NpmtsOptions.run(argvArg)
.then(NpmtsClean.run)
.then(NpmtsCheck.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsTypeDoc.run)
.then(NpmtsTests.run)
.then(NpmtsWatch.run)
.then(function(configArg){
let shipString = '' +
'\n' +
'\n' +
' # # ( )\n' +
' ___#_#___|__\n' +
' _ |____________| _\n' +
' _=====| | | | | |==== _\n' +
' =====| |.---------------------------. | |====\n' +
" <--------------------' . . . . . . . . '--------------/\n" +
' \\ /\n' +
' \\___________________________________________________________/\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n'
if (process.env.CI) {
console.log(shipString)
plugins.beautylog.success('READY TO SHIP!')
} else {
plugins.beautylog.success('Done!')
}
done.resolve(configArg)
})
return done.promise
}

30
ts/npmts.ship.ts Normal file
View File

@ -0,0 +1,30 @@
import * as q from 'q'
import * as plugins from './npmts.plugins'
import { INpmtsConfig } from './npmts.config'
export let run = (configArg: INpmtsConfig) => {
let done = q.defer()
let shipString = '' +
'\n' +
'\n' +
' # # ( )\n' +
' ___#_#___|__\n' +
' _ |____________| _\n' +
' _=====| | | | | |==== _\n' +
' =====| |.---------------------------. | |====\n' +
" <--------------------' . . . . . . . . '--------------/\n" +
' \\ /\n' +
' \\___________________________________________________________/\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n' +
' wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n'
if (process.env.CI) {
console.log(shipString)
plugins.beautylog.success('READY TO SHIP!')
} else {
plugins.beautylog.success('Done!')
}
done.resolve(configArg)
}

View File

@ -1,45 +0,0 @@
import 'typings-global'
import plugins = require('./npmts.plugins')
import paths = require('./npmts.paths')
import { npmtsOra } from './npmts.promisechain'
import { projectInfo } from './npmts.check'
let genTypeDoc = function (configArg) {
let done = plugins.q.defer()
npmtsOra.text('now generating ' + 'TypeDoc documentation'.yellow)
plugins.beautylog.log('TypeDoc Output:')
plugins.gulp.src(plugins.path.join(paths.tsDir, '**/*.ts'))
.pipe(plugins.g.typedoc({
// TypeScript options (see typescript docs)
module: 'commonjs',
target: 'es6',
includeDeclarations: true,
// Output options (see typedoc docs)
out: paths.pagesApiDir,
json: plugins.path.join(paths.pagesApiDir, 'file.json'),
// TypeDoc options (see typedoc docs)
name: projectInfo.name,
readme: plugins.path.join(paths.cwd, 'README.md'),
// theme: "default",
ignoreCompilerErrors: true,
version: true
}))
.pipe(plugins.g.gFunction(done.resolve, 'atEnd'))
return done.promise
}
export let run = function (configArg) {
let done = plugins.q.defer()
if (configArg.docs) {
genTypeDoc(configArg)
.then(() => {
done.resolve(configArg)
})
} else {
done.resolve(configArg)
};
return done.promise
}

View File

@ -1,10 +1,14 @@
import * as plugins from './npmts.plugins' import * as q from 'q'
import * as promisechain from './npmts.promisechain' import * as smartchok from 'smartchok'
let npmtsSmartchok: plugins.smartchok.Smartchok = null
import { INpmtsConfig } from './npmts.options'
import * as plugins from './npmts.plugins'
import * as cli from './npmts.cli'
import { INpmtsConfig } from './npmts.config'
let npmtsSmartchok: smartchok.Smartchok = null
export let run = (configArg: INpmtsConfig) => { export let run = (configArg: INpmtsConfig) => {
let done = plugins.q.defer() let done = 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) {
@ -13,16 +17,17 @@ export let run = (configArg: INpmtsConfig) => {
for (let key in configArg.testTs) { for (let key in configArg.testTs) {
pathsToWatch.push(key) pathsToWatch.push(key)
} }
npmtsSmartchok = new plugins.smartchok.Smartchok(pathsToWatch) npmtsSmartchok = new smartchok.Smartchok(pathsToWatch)
npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => { npmtsSmartchok.getObservableFor('change').then((changeObservableArg) => {
plugins.beautylog.info('now watching...') plugins.beautylog.info('now watching...')
changeObservableArg.subscribe(() => { changeObservableArg.subscribe(() => {
promisechain.run(configArg) cli.run()
}) })
}) })
npmtsSmartchok.start() npmtsSmartchok.start()
done.resolve(configArg) done.resolve(configArg)
} else { } else {
plugins.beautylog.info('not watching')
done.resolve(configArg) done.resolve(configArg)
} }
return done.promise return done.promise