@tsdi/pack
Version:
@tsdi/pack is simple build tasks, base on AOP, Ioc container, via @tsdi. dev build pack activities.
73 lines (71 loc) • 3.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WatchActivity = void 0;
var tslib_1 = require("tslib");
var ioc_1 = require("@tsdi/ioc");
var components_1 = require("@tsdi/components");
var activities_1 = require("@tsdi/activities");
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
var NodeActivity_1 = require("../NodeActivity");
var chokidar = require('chokidar');
/**
* watch activity.
*
* @export
* @class WatchActivity
* @extends {BuildHandleActivity}
*/
var WatchActivity = /** @class */ (function (_super) {
tslib_1.__extends(WatchActivity, _super);
function WatchActivity() {
return _super !== null && _super.apply(this, arguments) || this;
}
WatchActivity.prototype.execute = function (ctx) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var watchSrc, options, watcher, defer;
var _this = this;
return tslib_1.__generator(this, function (_a) {
watchSrc = this.watch;
options = this.options;
watcher = chokidar.watch(ctx.platform.normalizeSrc(watchSrc), Object.assign({ ignored: /[\/\\]\./, ignoreInitial: true, cwd: ctx.platform.getRootPath() }, options));
defer = ioc_1.PromiseUtil.defer();
rxjs_1.fromEventPattern(function (handler) {
watcher.on('add', function (paths) { return handler(paths); });
watcher.on('change', function (paths) { return handler(paths); });
watcher.on('unlink', function (paths) { return handler(paths); });
watcher.on('unlinkDir', function (paths) { return handler(paths); });
}, function (handler) {
watcher.close();
})
.pipe(operators_1.bufferTime(300), operators_1.filter(function (c) { return c.length > 0; }))
.subscribe(function (chg) {
ctx.getExector().runActivity(_this.body);
});
defer.promise;
return [2 /*return*/];
});
});
};
WatchActivity.ρAnn = function () {
return { "name": "WatchActivity", "params": { "execute": ["ctx"] } };
};
tslib_1.__decorate([
components_1.Input(),
tslib_1.__metadata("design:type", Object)
], WatchActivity.prototype, "watch", void 0);
tslib_1.__decorate([
components_1.Input('watchOptions'),
tslib_1.__metadata("design:type", Object)
], WatchActivity.prototype, "options", void 0);
tslib_1.__decorate([
components_1.Input({ bindingType: 'dynamic' }),
tslib_1.__metadata("design:type", Object)
], WatchActivity.prototype, "body", void 0);
WatchActivity = tslib_1.__decorate([
activities_1.Task('watch')
], WatchActivity);
return WatchActivity;
}(NodeActivity_1.NodeActivity));
exports.WatchActivity = WatchActivity;
//# sourceMappingURL=../sourcemaps/tasks/WatchActivity.js.map