@tsdi/pack
Version:
@tsdi/pack is simple build tasks, base on AOP, Ioc container, via @tsdi. dev build pack activities.
56 lines (54 loc) • 1.69 kB
JavaScript
import { __awaiter } from "tslib";
import { isDefined, PromiseUtil } from '@tsdi/ioc';
import { NodeActivity } from '../NodeActivity';
import { isTransform } from '../ITransform';
/**
* transform activity.
*
* @export
* @abstract
* @class TransfrmActivity
* @extends {NodeActivity<ITransform>}
*/
export class TransformActivity extends NodeActivity {
/**
* execute stream pipe.
*
* @protected
* @param {NodeActivityContext} ctx
* @param {ITransform} stream stream pipe from
* @param {GActivityType<ITransform>} transform steam pipe to.
* @param {boolean} [waitend=false] wait pipe end or not.
* @returns {Promise<ITransform>}
* @memberof TransformActivity
*/
pipeStream(ctx, stream, transform, waitend = false) {
return __awaiter(this, void 0, void 0, function* () {
let transPipe;
if (isTransform(transform)) {
transPipe = transform;
}
else {
transPipe = yield ctx.resolveExpression(transform);
}
let next = stream.pipe(transPipe);
next.once('error', err => {
console.error(err);
if (isDefined(process)) {
process.exit(1);
}
throw err;
});
if (waitend) {
let defer = PromiseUtil.defer();
next.once('end', defer.resolve);
yield defer.promise;
}
return next;
});
}
static ρAnn() {
return { "name": "TransformActivity" };
}
}
//# sourceMappingURL=../sourcemaps/transforms/TransformActivity.js.map