38 lines
3.3 KiB
JavaScript
38 lines
3.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Render = void 0;
|
|
const error_1 = require("../util/error");
|
|
const simple_emitter_1 = require("../emitters/simple-emitter");
|
|
const streamed_emitter_1 = require("../emitters/streamed-emitter");
|
|
const async_1 = require("../util/async");
|
|
const keeping_type_emitter_1 = require("../emitters/keeping-type-emitter");
|
|
class Render {
|
|
renderTemplatesToNodeStream(templates, ctx) {
|
|
const emitter = new streamed_emitter_1.StreamedEmitter();
|
|
Promise.resolve().then(() => (0, async_1.toPromise)(this.renderTemplates(templates, ctx, emitter)))
|
|
.then(() => emitter.end(), err => emitter.error(err));
|
|
return emitter.stream;
|
|
}
|
|
*renderTemplates(templates, ctx, emitter) {
|
|
if (!emitter) {
|
|
emitter = ctx.opts.keepOutputType ? new keeping_type_emitter_1.KeepingTypeEmitter() : new simple_emitter_1.SimpleEmitter();
|
|
}
|
|
for (const tpl of templates) {
|
|
try {
|
|
// if tpl.render supports emitter, it'll return empty `html`
|
|
const html = yield tpl.render(ctx, emitter);
|
|
// if not, it'll return an `html`, write to the emitter for it
|
|
html && emitter.write(html);
|
|
if (emitter['break'] || emitter['continue'])
|
|
break;
|
|
}
|
|
catch (e) {
|
|
const err = error_1.RenderError.is(e) ? e : new error_1.RenderError(e, tpl);
|
|
throw err;
|
|
}
|
|
}
|
|
return emitter.buffer;
|
|
}
|
|
}
|
|
exports.Render = Render;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpcXVpZGpzL3JlbmRlci9yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBSTNDLCtEQUEwRDtBQUMxRCxtRUFBOEQ7QUFDOUQseUNBQXlDO0FBQ3pDLDJFQUFxRTtBQUVyRSxNQUFhLE1BQU07SUFDViwyQkFBMkIsQ0FBRSxTQUFxQixFQUFFLEdBQVk7UUFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQ0FBZSxFQUFFLENBQUE7UUFDckMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDbkYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDdkIsQ0FBQztJQUNNLENBQUUsZUFBZSxDQUFFLFNBQXFCLEVBQUUsR0FBWSxFQUFFLE9BQWlCO1FBQzlFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUkseUNBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSw4QkFBYSxFQUFFLENBQUE7U0FDbkY7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRTtZQUMzQixJQUFJO2dCQUNGLDREQUE0RDtnQkFDNUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDM0MsOERBQThEO2dCQUM5RCxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDM0IsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQztvQkFBRSxNQUFLO2FBQ25EO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLEdBQUcsbUJBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxtQkFBVyxDQUFDLENBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDcEUsTUFBTSxHQUFHLENBQUE7YUFDVjtTQUNGO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFBO0lBQ3ZCLENBQUM7Q0FDRjtBQXpCRCx3QkF5QkMifQ==
|