
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
A Node.js module for handling MARC records
npm install marc4js
marc4js provides the following features
Examples can be found in the the marc4js_examples. You can also find examples in the test directory.
var marc4js = require('marc4js');
Parsers take various MARC formats and convert them to marc4js.marc.Record objects. Marc4js supports ISO2709, text
(MarcEdit .mrc file) and MARCXML formats.
There are three ways to use a parser.
marc4js.parse(data, options, function(err, records) {
});
var parser = marc4js.parse(options);
parser.on('data', function(record) {
});
parser.on('end', function() {
});
parser.on('error', function(err) {
});
parser.write(data);
parser.end();
All events are based on the Node.js stream API.
Note that the parsers always work in the paused (aka non-flowing) streaming mode - therefore the objectMode option of
the stream api is disabled, and is always set to true. Listening to the readable event will throw an erorr.
var parser = marc4js.parse(options);
fs.createReadStream('/path/to/your/file').pipe(parser).pipe(transformer).pipe(process.stdout);
format: default iso2709, possible values iso2709, marc, text, mrk, marcxml, xml
Parses ISO2709 format. Used by default or when format is iso2709 or marc
Parses MarcEdit text format (.mrk files). Used when format is mrk
Other options:
spaceReplace: In MarcEdit mrk files, spaces in data field indicators or control fields are replace by \. By default
MrkPaser will convert \ to space in those places. It can be configured with this option.Parses a text format that is slightly different from mrk format. Used when format is text.
Parses MarcEdit text format (.mrk files). Used when format is marcxml or xml
The stream and pipe API is SAX based so it doesn't require in-memory storage of the records. This is suitable for processing large MARCXML file. The callback API will read all records in memory and return it in the callback function and is not advised to process large MARCXML file.
Other options:
strict: default is false. When in strict mode, the parser will fail if the XML is not well-formatted. For details, see the strict option in sax-js.Parses MARC-in-JSON format. Used when format is json or mij.
The stream and pipe API uses a sax-like JSON stream parser so it doesn't require in-memory storage of the records. Thus it can process large number of MARC-in-JSON records.
Transformers transform the marc4js.marc.Record objects into various MARC formats. Marc4js supports ISO2709, text
(MarcEdit .mrc file) and MARCXML formats.
Like parsers, transformers can also be used in three different ways.
marc4js.transform(records, options, function(err, output) {
});
var transformer = marc4js.transform(options);
transformer.on('readable', function(output) {
});
transformer.on('end', function() {
});
transformer.on('error', function(err) {
});
transformer.write(record); // one record
// or to write an array of records
// records.forEach(function(record) {
// transformer.write(record);
// });
transformer.end();
Note that even though parsers can be only in the flowing mode, the transformers can use either flowing or paused (aka non-flowing) mode in the
stream API. In the above example it's using the paused mode, but it can also use the data event handler
if flowing mode is used.
var transformer = marc4js.transform(options);
fs.createReadStream('/path/to/your/file').pipe(parser).pipe(transformer).pipe(process.stdout);
format: default iso2709, possible values iso2709, marc, text, mrk, marcxml, xml
objectMode: default false. Used to switch between the flowing and paused (aka non-flowing) mode in the stream API.
Outputs ISO2709 format. Used by default or when format is iso2709 or marc
Outputs MarcEdit text format (.mrk files). Used when format is mrk
Other options:
spaceReplace: by default space in data field indicators and control fields are replaced with \. But it can be configured with this option.Outputs text format, which is slightly different from mrk format. Used when format is text.
Outputs MarcEdit text format (.mrk files). Used when format is marcxml or xml
Other options:
pretty: default is true. Output XML in pretty format. If set to false, new indentation and line-breakers in outputs.indent: default is ' ' (two spaces). Used to indent lines in pretty format.newline: default is \n. Used in pretty format.declaration: default is true. If set to false, the XML declaration line (<?xml versiont ...>) is not included in the output.root: default is true. If false, the root <collection> element is not included in the output.Outputs MARC-in-JSON string. Used when format is json or mij.
Other options:
true. By default the output will be in an JSON array format, even if there is only one record.
If this option set to false, the output will not write the enclosing brackets [ and ] at the beginning and end of the output.FAQs
a node.js module for handling MARC data
We found that marc4js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.