Socket
Socket
Sign inDemoInstall

read-metadata

Package Overview
Dependencies
Maintainers
4
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

read-metadata - npm Package Compare versions

Comparing version 0.0.2 to 1.0.0

test/fixtures/metadata.yml

64

index.js

@@ -0,1 +1,2 @@

var fs = require('fs');

@@ -5,28 +6,53 @@ var extname = require('path').extname;

function parse(ext, data) {
if (ext === '.json') {
return JSON.parse(data);
}
if (ext === '.yaml') {
return yaml.load(data);
}
return new Error('Invalid metadata file type');
}
/**
* Expose `readMetadata`.
*/
module.exports = exports = function(path, done) {
var ext = extname(path);
module.exports = exports = readMetadata;
/**
* Read a metadata file by `path` and callback `done(err, obj)`.
*
* @param {String} path
* @param {Function} done
*/
function readMetadata(path, done) {
fs.readFile(path, 'utf-8', function(err, data){
if (err) return done(err);
var result = parse(ext, data);
if (result instanceof Error) {
return done(result);
}
done(null, result);
var parse = parser(path);
if (!parse) return done(new Error('Invalid metadata file type.'));
done(null, parse(data));
});
};
/**
* Read a metadata file synchronously by `path`.
*
* @param {String} path
* @return {Object}
*/
exports.sync = function(path) {
var ext = extname(path);
var parse = parser(path);
if (!parse) throw new Error('Invalid metadata file type.');
var data = fs.readFileSync(path, 'utf-8');
return parse(ext, data);
};
return parse(data);
};
/**
* Return a parser for a given `file`.
*
* @param {String} file
* @return {Function}
*/
function parser(file) {
switch (extname(file)) {
case '.json':
return JSON.parse;
case '.yaml':
case '.yml':
return yaml.load;
}
}
{
"name": "read-metadata",
"version": "0.0.2",
"version": "1.0.0",
"description": "Load a JSON or YAML metadata file as an object",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -17,2 +17,7 @@ var load = require('..');

});
it('should load yml files', function (done) {
var data = load.sync('test/fixtures/metadata.yml');
assert.equal(data.name, 'Batman');
done();
});
});

@@ -33,2 +38,8 @@

});
it('should load yml files', function (done) {
load('test/fixtures/metadata.yml', function(err, data){
assert.equal(data.name, 'Batman');
done();
});
});
it('should throw an error if the file is missing', function (done) {

@@ -35,0 +46,0 @@ load('test/fixtures/metadata2.yaml', function(err, data){

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc