UNPKG

r2-shared-js

Version:

Readium 2 'shared' for NodeJS (TypeScript)

65 lines 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransformerHTML = void 0; const tslib_1 = require("tslib"); const debug_ = require("debug"); const mime = require("mime-types"); const BufferUtils_1 = require("r2-utils-js/dist/es7-es2016/src/_utils/stream/BufferUtils"); const debug = debug_("r2:shared#transform/transformer-html"); class TransformerHTML { constructor(transformerFunction) { this.transformString = transformerFunction; } supports(_publication, link) { let mediaType = mime.lookup(link.Href); if (link && link.TypeLink) { mediaType = link.TypeLink; } if (mediaType === "text/html" || mediaType === "application/xhtml+xml") { return true; } return false; } transformStream(publication, link, url, stream, _isPartialByteRangeRequest, _partialByteBegin, _partialByteEnd, sessionInfo) { return tslib_1.__awaiter(this, void 0, void 0, function* () { let data; try { data = yield (0, BufferUtils_1.streamToBufferPromise)(stream.stream); } catch (err) { return Promise.reject(err); } let buff; try { buff = yield this.transformBuffer(publication, link, url, data, sessionInfo); } catch (err) { return Promise.reject(err); } const sal = { length: buff.length, reset: () => tslib_1.__awaiter(this, void 0, void 0, function* () { return Promise.resolve(sal); }), stream: (0, BufferUtils_1.bufferToStream)(buff), }; return Promise.resolve(sal); }); } transformBuffer(publication, link, url, data, sessionInfo) { return tslib_1.__awaiter(this, void 0, void 0, function* () { try { const str = data.toString("utf8"); const str_ = this.transformString(publication, link, url, str, sessionInfo); return Promise.resolve(Buffer.from(str_)); } catch (err) { debug("TransformerHTML fail => no change"); debug(err); return Promise.resolve(data); } }); } } exports.TransformerHTML = TransformerHTML; //# sourceMappingURL=transformer-html.js.map