ManifestParser parses text-based payload and tag manifests that conform to the BagIt spec. These files have the following format:

924238a7018a567062c6527675fcf1c0 data/docs/index.html

The first item on each line is a checksum and the second is the relative path (within the bag) of the file it was calculated from. The two items are separated by one or more spaces.

This class has no methods. It simply responds to events on the stream you pipe into it. After parsing the stream, it stores the data it has parsed in bagItFile.keyValueCollection. Within that collection, you can use the first() method to look up the checksum for a file.

You can attach your own callback to the end event, if you want to do something with the BagItFile or (more likely) its keyValueCollection when parsing completes.


new ManifestParser(bagItFile)

Name Type Description
bagItFile BagItFile

A BagItFile object. If the object does not already have a keyValueCollection, the parser will create one.

For more on the BagIt spec, see BagIt Spec

For info about how to read the parsed data from the file, see KeyValueCollection

// Set up a BagItFile. Note the file itself is a payload manifest.
let pathToManifest = "/path/to/bag-info.txt";
let stats = fs.statSync(pathToManifest);
let bagItFile = new BagItFile(pathToManifest, "manifest-sha256.txt", stats);

// Open the BagItFile for reading
let stream = fs.createReadStream(pathToManifest);

// Create a new ManifestParser to parse the BagItFile
let manifestParser = new ManifestParser(bagItFile);

// Optional: Hook up your callback to do something with
// bagItFile when the parsing is done.'end', YOUR_CALLBACK_HERE);

// Required: Pipe your file reader into the parser.
stream.pipe('error', function(e){handleError(e)});


bagItFile :BagItFile

bagItFile is the file that will be parsed. When parsing is complete, bagItFile.keyValueCollection will be populated with relative file paths and the checksum digests that correspond to those paths.


stream :stream.PassThrough

stream is a PassThrough stream that allows for data to be piped from a ReadStream into the parser. You can attach your own 'data' and 'end' events to this stream, but the parser already does the parsing work for you.