UNPKG

rdf-dataset-fragmenter

Version:
44 lines 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Fragmenter = void 0; const QuadTransformStream_1 = require("./transform/QuadTransformStream"); /** * Fragments quads from a given source into a given sink. */ class Fragmenter { quadSource; transformers; fragmentationStrategy; quadSink; transformCallBack; constructor(options) { this.quadSource = options.quadSource; this.transformers = options.transformers; this.fragmentationStrategy = options.fragmentationStrategy; this.quadSink = options.quadSink; this.transformCallBack = options.transformCallback; } static getTransformedQuadStream(quadSource, transformers, transformCallback) { const quadStream = quadSource.getQuads(); if (transformers.length > 0) { const transformedQuadStream = new QuadTransformStream_1.QuadTransformStream(transformers, transformCallback); quadStream.on('error', (error) => transformedQuadStream.emit('error', error)); quadStream.pipe(transformedQuadStream); return transformedQuadStream; } return quadStream; } /** * Read quads from a given source, fragment it into the sink, and close the sink. */ async fragment() { if (this.transformCallBack) { await Promise.all(this.transformCallBack.map(callback => callback.initializeCallback())); } await this.fragmentationStrategy.fragment(Fragmenter.getTransformedQuadStream(this.quadSource, this.transformers ?? [], this.transformCallBack), this.quadSink); await this.quadSink.close(); this.transformCallBack?.map(callback => callback.end()); } } exports.Fragmenter = Fragmenter; //# sourceMappingURL=Fragmenter.js.map