@rdfjs/sink-to-duplex

Duplex wrapper for RDFJS Sink

Usage no npm install needed!

<script type="module">
  import rdfjsSinkToDuplex from 'https://cdn.skypack.dev/@rdfjs/sink-to-duplex';
</script>

README

@rdfjs/sink-to-duplex

Build Status

npm version

Creates a duplex wrapper for RDFJS Sink. With the duplex wrapper it's possible to use a RDFJS Sink like a Node.js duplex stream with a Readable and Writable interface.

Usage

The package exports just the factory function to create the wrapper. A second argument can be given that will be used to create the duplex stream. That second argument could be needed to enable object mode on the Readable or Writeable interface.

Enable object mode on the Readable interface:

sinkToDuplex(new N3Parser(), { readableObjectMode: true })

Enable object mode on the Writable interface:

sinkToDuplex(new NTriplesSerializer(), { writableObjectMode: true })

Example

In this examples triples from a Turtle file are parsed, serialized with the N-Triples serializer and written to stdout. Without the duplex wrapper nested .import() calls are required:

const fs = require('fs')
const N3Parser = require('@rdfjs/parser-n3')
const NTriplesSerializer = require('@rdfjs/serializer-ntriples')

const input = fs.createReadStream('test.ttl')
const parser = new N3Parser()
const serializer = new NTriplesSerializer()

serializer.import(parser.import(input)).pipe(process.stdout)

With the duplex wrapper it's possible to use a .pipe() chain:

const fs = require('fs')
const sinkToDuplex = require('@rdfjs/sink-to-duplex')
const N3Parser = require('@rdfjs/parser-n3')
const NTriplesSerializer = require('@rdfjs/serializer-ntriples')

const input = fs.createReadStream('test.ttl')
const parser = sinkToDuplex(new N3Parser(), { readableObjectMode: true })
const serializer = sinkToDuplex(new NTriplesSerializer(), { writableObjectMode: true })

input.pipe(parser).pipe(serializer).pipe(process.stdout)