63 lines
1.3 KiB
JavaScript
63 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var util = require('util');
|
|
var mout = require('mout');
|
|
var cyan = require('colors/safe').cyan;
|
|
var forEach = mout.array.forEach;
|
|
var isEmpty = mout.lang.isEmpty;
|
|
var deepClone = mout.lang.deepClone;
|
|
var objectUnset = mout.object.unset;
|
|
|
|
var JsonFile = require('./JsonFile');
|
|
var ALLOWED_PROPERTIES = [
|
|
'main',
|
|
'registry',
|
|
'dependencies',
|
|
'devDependencies',
|
|
'directories.lib',
|
|
'directories.dist',
|
|
'format',
|
|
'map',
|
|
'meta',
|
|
'jspmPackage',
|
|
'defaultExtension',
|
|
'files',
|
|
'ignore',
|
|
'shim',
|
|
'jspmNodeConversion',
|
|
'browser',
|
|
'modules',
|
|
'systemjs',
|
|
'defaultExtension'
|
|
];
|
|
|
|
/**
|
|
* @constructor PackageOverrideFile
|
|
*/
|
|
var PackageOverrideFile = module.exports = function PackageOverrideFile(file){
|
|
|
|
if( !(this instanceof PackageOverrideFile) )
|
|
return new PackageOverrideFile();
|
|
|
|
JsonFile.call(this, file);
|
|
|
|
if(!this.hasErrors())
|
|
{
|
|
var notAllowedProperties = deepClone(this._json);
|
|
|
|
forEach(ALLOWED_PROPERTIES, function(allowedProperty){
|
|
|
|
objectUnset(notAllowedProperties, allowedProperty);
|
|
|
|
});
|
|
|
|
if(isEmpty(notAllowedProperties.directories))
|
|
objectUnset(notAllowedProperties, 'directories');
|
|
|
|
if(!isEmpty(notAllowedProperties))
|
|
this.error( this._file + ' contains not allowed properties: \n\t' + cyan( JSON.stringify(notAllowedProperties) ) );
|
|
}
|
|
|
|
};
|
|
|
|
util.inherits(PackageOverrideFile, JsonFile); |