StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
StackGenVis/frontend/node_modules/base-config-process/index.js

81 lines
2.0 KiB

'use strict';
var debug = require('debug')('base:config:process');
var fields = require('./lib/fields/');
var utils = require('./lib/utils');
/**
* Custom mappings for the base-config plugin.
*/
module.exports = function(options) {
return function plugin(app, base) {
if (!utils.isValid(app, 'base-config-process')) return;
debug('initializing <%s>, called from <%s>', __filename, module.parent.id);
var opts = createOpts(app, options);
var schema;
if (typeof this.cwd === 'undefined') {
this.use(utils.cwd(opts));
}
if (typeof this.option === 'undefined') {
this.use(utils.option(opts));
}
if (typeof this.config === 'undefined') {
this.use(utils.config(opts));
}
Object.defineProperty(this.config, 'schema', {
configurable: true,
enumerable: true,
set: function(val) {
schema = val;
},
get: function() {
return schema || utils.schema(app, createOpts(app, options));
}
});
// add commands
for (var key in fields) {
debug('mapping field "%s"', key);
app.config.map(key, fields[key](app, base, opts));
}
var fn = this.config.process;
this.config.process = function(config, cb) {
debug('normalizing config object', config);
var defaults = {
sortArrays: false,
omitEmpty: true,
keys: ['init', 'run', 'toc', 'layout', 'tasks', 'options', 'data', 'plugins', 'related', 'reflinks']
};
var obj = this.schema.normalize(config, createOpts(app, options, defaults));
debug('processing config object', obj);
fn.call(this, obj, function(err) {
if (err) {
cb(err);
return;
}
cb(null, obj);
});
};
return plugin;
};
};
function createOpts(app, config, defaults) {
if (typeof defaults !== 'undefined') {
config = utils.merge({}, defaults, config);
}
var options = utils.merge({}, config, app.options);
if (options.schema) {
return utils.merge({}, options, options.schema);
}
return options;
}