UNPKG

rdf-dataset-fragmenter

Version:
34 lines 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FragmentationStrategyStreamAdapter = void 0; const node_stream_1 = require("node:stream"); /** * An abstract implementation of a fragmentation strategy. */ class FragmentationStrategyStreamAdapter { async fragment(quadStream, quadSink) { // eslint-disable-next-line ts/no-this-alias const self = this; const transform = new node_stream_1.Transform({ objectMode: true, transform(quad, encoding, callback) { self.handleQuad(quad, quadSink).then(() => callback(), callback); }, }); await new Promise((resolve, reject) => { quadStream.on('error', error => transformed.emit('error', error)); const transformed = quadStream.pipe(transform); // Enter flow-mode, but not need to attach a data-listener transformed.resume(); transformed.on('error', reject); transformed.on('end', resolve); }); await this.flush(quadSink); } // eslint-disable-next-line unused-imports/no-unused-vars async flush(quadSink) { // Do nothing, implementors of this class can optionally override this } } exports.FragmentationStrategyStreamAdapter = FragmentationStrategyStreamAdapter; //# sourceMappingURL=FragmentationStrategyStreamAdapter.js.map