MARC record implementation in JavaScript


376.1.2a month ago3 years agoMinified + gzip package size for @natlibfi/marc-record in KB


MARC record implementation in JavaScript

NPM Version Build Status Test Coverage

MARC record implementation in JavaScript. A JSON schema file specifies the data format.

This a fork of the original marc-record-js. The new implementation uses ES6 syntax and adds validation of the record structure.


import {MarcRecord} from '@natlibfi/marc-record';
const record = new MarcRecord();

Create record from object

const record = new MarcRecord({leader: 'foo', fields: [
  {tag: '001', value: 'bar'}

Validation options

MarcRecord.getValidationOptions(); // {fields: true, subfields: true, subfieldValues: true }
MarcRecord.setValidationOptions({fields: false});

const record = new MarcRecord({leader: 'foo', fields: []}); // This is ok because setting strict field validation to false

try {
  const record = new MarcRecord({leader: 'foo', fields: []}, {fields: true); // No longer ok
 } catch (err) {
   MarcRecord.setValidationOptions({}); // Reset to default

Mutating the record

record.leader = "00000cam^a22001817i^4500";

// Insert field to the record. Proper ordering is handled automatically.
    tag: "001"
    value: "007045872"

// Append fields to the end of the record
    tag: '245',
    ind2: '1',
    subfields: [
            code: "a"
            value: "The title of the book"
            code: "c",
            value: "Some author"

Querying for fields

record.getFields('245', [{code: 'a', value: 'foo'}]);
record.getFields('001', 'foo');

Cloning a record

const recordB = MarcRecord.clone(recordA)

Record equality check

MarcRecord.isEqual(recordA, recordB);

Simple assertions

record.containsFieldWithValue('245', [{code: 'a', value: 'foo'}]);
record.containsFieldWithValue('001', 'foo');

See also

To serialize and unserialize MARC records, see marc-record-serializers

License and copyright

Copyright (c) 2014-2017 Pasi Tuominen pasi.tuominen@gmail.com

Copyright (c) 2018 University Of Helsinki (The National Library Of Finland)

This project's source code is licensed under the terms of MIT License or any later version.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.