The primary purpose of marc-transformed is to transform streams of bytes into streams of Record objects and to
transform streams of Record objects into streams of bytes.
How a MARC records looks as a stream of bytes depends on the transform format. marc-transform supports the following
transport formats.
| Transport format | Transforming from | Transforming to |
|---|---|---|
| ISO 2609 MARC transmission format (1) | transformFrom('marc') |
transformTo('marc') |
| MARCXML | transformFrom('xml') |
transformTo('xml') |
| MARC in JSON | transformFrom('json') |
transformTo('json') |
| Text (2) | transformFrom('text') |
transformTo('text') |
(1) Transmission format is also sometimes called binary format. marc-transformed only supports Unicode records, and not MARC-8.
(2) The text format is compatible with MarcEdit.
Returns a stream.Transform that transforms a stream of bytes in a given transport format into a stream of records.
The writable (input) side of the transform expects Buffers of bytes. The readable (output) side of the transform will be
in object mode and will emit data events containing a Record object.
If the transform is unable to decode a records from the given transport format, it will emit an error event.
The transform may internally buffer some of the input data. You may need to close the source readable before the transform emits the last record.
NOTE The transforms are stateful and cannot be reused. Call transformForm each time you need one.
Returns a stream.Transform that transforms a stream of records into a stream of bytes in a given transport format.
The writable (input) side of the transform will be in object mode and expects Record objects. The readable (output)
side of the transform is not in object mode and will emit data events containing a Buffer of bytes.
The transform may emit multiple Buffers for a single record.
If the transform is unable to encode a record into the given transport format, it will emit an error event.
This may be after the transform has already emitted some data events for the record.
NOTE The transforms are stateful and cannot be reused. Call transformTo each time you need one.
Returns a stream.Transform that applies the given transform function to each record in the stream.
Typically transformRecord is put between a transformFrom and a transformTo in a stream pipeline.
The given transformFunction take a single Record parameter and operates on the record somehow.
If transformFunction returns a record (not necessarily the same record object it was given), the transform will emit a
data event containing the record.
If transformFunction returns null or undefined, then the transform will not emit any data event and move onto
the next record in the stream.
If transformFunction throws an Error, the transform will emit an error event containing that error.