rdf-dataset-fragmenter
Version:
Fragments an RDF dataset into multiple parts
34 lines • 1.41 kB
JavaScript
;
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