gulp-typescript-helper
Version:
export interface CoreTypeScriptOptions
153 lines • 6.95 kB
JavaScript
;
/*!
* @author electricessence / https://github.com/electricessence/
* Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md
*/
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
}
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var gulp = require("gulp");
var sourcemaps = require("gulp-sourcemaps");
var typescript = require("gulp-typescript");
var replace = require("gulp-replace");
var mergeStreams = require("merge2");
var stream_to_promise_agnostic_1 = require("stream-to-promise-agnostic");
var BuildHelperBase_1 = require("./BuildHelperBase");
var mergeValues_1 = require("./mergeValues");
var StreamConvert = stream_to_promise_agnostic_1.streamToPromise(function (e) { return require("q").promise(e); });
function endsWith(source, pattern) {
return source.lastIndexOf(pattern) == (source.length - pattern.length);
}
var REMOVE_EMPTY_LINES_REGEX = /(\n\s*$)+/gm;
var REMOVE_EXTRANEOUS_ES6_HELPERS = /\n?^(\s|\t)*\b(var|const|let)\s+(__extends|__generator)\s*=\s*\w+(\.\w+)*(\s*;)?(\s|\t)*$/gm;
var BuildHelper = (function (_super) {
__extends(BuildHelper, _super);
function BuildHelper() {
return _super !== null && _super.apply(this, arguments) || this;
}
BuildHelper.prototype.removeExtraneousES6Helpers = function () {
this.addPreProcess(function (source) {
return source.pipe(replace(REMOVE_EXTRANEOUS_ES6_HELPERS, ""));
});
return this;
};
BuildHelper.prototype.onExecute = function () {
var options = this.compilerOptions, from = this.sourceFolder, to = this.destinationFolder;
var declaration = options.declaration;
var tsStart = gulp.src(from + '/**/*.ts');
for (var _i = 0, _a = this._preProcessors; _i < _a.length; _i++) {
var p = _a[_i];
tsStart = p(tsStart);
}
if (options.sourceMap)
tsStart = tsStart.pipe(sourcemaps.init());
var tsResult = tsStart.pipe(typescript(options));
var dts = tsResult.dts;
if (options.removeComments) {
var o = mergeValues_1.default({}, options);
delete o.removeComments;
dts = tsStart.pipe(typescript(o)).dts;
}
var js = declaration ? tsResult.js : tsResult;
if (this._minify)
js = js.pipe(this.getPostProcess());
js = js.pipe(replace(REMOVE_EMPTY_LINES_REGEX, ""));
if (options.sourceMap)
js = js.pipe(sourcemaps.write('.', this.sourceMapOptions));
js = js.pipe(replace(REMOVE_EMPTY_LINES_REGEX, ""));
var stream = declaration
?
mergeStreams([
gulp.src([from + '/**/*.d.ts']),
dts,
js
])
: js;
return StreamConvert.toPromise(stream.pipe(gulp.dest(to)));
};
return BuildHelper;
}(BuildHelperBase_1.BuildHelperBase));
exports.BuildHelper = BuildHelper;
(function (BuildHelper) {
function inject(promiseFactory) {
StreamConvert = stream_to_promise_agnostic_1.streamToPromise(promiseFactory);
return Factory;
}
BuildHelper.inject = inject;
var Factory = (function () {
function Factory(sourceFolder, destinationFolder, defaults) {
if (destinationFolder === void 0) { destinationFolder = './'; }
this.sourceFolder = sourceFolder;
this.destinationFolder = destinationFolder;
this.compilerOptionDefaults
= mergeValues_1.default({}, defaults);
}
Factory.from = function (sourceFolder, defaults) {
return new Factory(sourceFolder, null, defaults);
};
Factory.fromTo = function (sourceFolder, destinationFolder, defaults) {
return new Factory(sourceFolder, destinationFolder, defaults);
};
Factory.at = function (path, defaults) {
return new Factory(path, path, defaults);
};
Factory.defaults = function (options) {
return new Factory(null, null, options);
};
Factory.prototype.from = function (sourceFolder) {
return new Factory(sourceFolder, this.destinationFolder, this.compilerOptionDefaults);
};
Factory.prototype.to = function (destinationFolder) {
return new Factory(this.sourceFolder, destinationFolder, this.compilerOptionDefaults);
};
Factory.prototype.at = function (targetFolder) {
return new Factory(targetFolder, targetFolder, this.compilerOptionDefaults);
};
Factory.prototype.defaults = function (options) {
return new Factory(this.sourceFolder, this.destinationFolder, options);
};
Factory.prototype.init = function (toSubFolder, target, module) {
var source = this.sourceFolder;
if (!source)
throw new Error("Need to define a source folder before initializing.");
var dest = this.destinationFolder;
if (!dest)
throw new Error("Need to define a base destination folder before initializing.");
if (toSubFolder) {
if (!endsWith(dest, '/'))
dest += '/';
dest += toSubFolder;
}
var options = {};
if (target)
options.target = target;
if (module)
options.module = module;
return new BuildHelper(source, dest, mergeValues_1.default(options, this.compilerOptionDefaults));
};
Factory.prototype.addOptions = function (value) {
return new Factory(this.sourceFolder, this.destinationFolder, mergeValues_1.default(value, this.compilerOptionDefaults));
};
Factory.prototype.target = function (value) {
return this.addOptions({ target: value });
};
Factory.prototype.module = function (value) {
return this.addOptions({ module: value });
};
return Factory;
}());
BuildHelper.Factory = Factory;
})(BuildHelper = exports.BuildHelper || (exports.BuildHelper = {}));
exports.BuildHelper = BuildHelper;
//# sourceMappingURL=BuildHelper.js.map