read-metadata
Advanced tools
Comparing version 0.0.2 to 1.0.0
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){ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
4067
11
101
1
1