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/plotly.js/tasks/sync_packages.js

311 lines
8.1 KiB

var path = require('path');
var fs = require('fs-extra');
var exec = require('child_process').exec;
var runSeries = require('run-series');
var glob = require('glob');
var common = require('./util/common');
var constants = require('./util/constants');
var pkg = require('../package.json');
var year = (new Date()).getFullYear();
var copyrightAndLicense = [
'## Copyright and license',
'',
'Code and documentation copyright ' + year + ' Plotly, Inc.',
'',
'Code released under the [MIT license](https://github.com/plotly/plotly.js/blob/master/LICENSE).',
'',
'Docs released under the [Creative Commons license](https://github.com/plotly/documentation/blob/source/LICENSE).',
''
].join('\n');
// sync "partial bundle" packages
constants.partialBundlePaths
.map(function(d) {
return {
name: 'plotly.js-' + d.name + '-dist',
index: d.index,
main: 'plotly-' + d.name + '.js',
dist: d.dist,
desc: 'Ready-to-use plotly.js ' + d.name + ' distributed bundle.',
};
})
.concat([{
name: 'plotly.js-dist',
index: path.join(constants.pathToLib, 'index.js'),
main: 'plotly.js',
dist: constants.pathToPlotlyDist,
desc: 'Ready-to-use plotly.js distributed bundle.',
}])
.forEach(syncPartialBundlePkg);
// sync "minified partial bundle" packages
constants.partialBundlePaths
.map(function(d) {
return {
name: 'plotly.js-' + d.name + '-dist-min',
index: d.index,
main: 'plotly-' + d.name + '.min.js',
dist: d.distMin,
desc: 'Ready-to-use minified plotly.js ' + d.name + ' distributed bundle.',
};
})
.concat([{
name: 'plotly.js-dist-min',
index: path.join(constants.pathToLib, 'index.js'),
main: 'plotly.min.js',
dist: constants.pathToPlotlyDistMin,
desc: 'Ready-to-use minified plotly.js distributed bundle.',
}])
.forEach(syncPartialBundlePkg);
// sync "locales" package
syncLocalesPkg({
name: 'plotly.js-locales',
dir: path.join(constants.pathToLib, 'locales'),
main: 'index.js',
desc: 'Ready-to-use plotly.js locales',
});
function syncPartialBundlePkg(d) {
var pkgPath = path.join(constants.pathToBuild, d.name);
var initDirectory = _initDirectory(d, pkgPath);
function writePackageJSON(cb) {
var cnt = {
name: d.name,
version: pkg.version,
description: d.desc,
license: pkg.license,
main: d.main,
repository: pkg.repository,
bugs: pkg.bugs,
author: pkg.author,
keywords: pkg.keywords,
files: [
'LICENSE',
'README.md',
d.main
]
};
fs.writeFile(
path.join(pkgPath, 'package.json'),
JSON.stringify(cnt, null, 2) + '\n',
cb
);
}
function writeREADME(cb) {
var moduleList = common.findModuleList(d.index);
var cnt = [
'# ' + d.name,
'',
d.desc,
'',
'Contains trace modules ' + common.formatEnumeration(moduleList) + '.',
'',
'For more info on plotly.js, go to https://github.com/plotly/plotly.js',
'',
'## Installation',
'',
'```',
'npm install ' + d.name,
'```',
'## Usage',
'',
'```js',
'// ES6 module',
'import Plotly from \'' + d.name + '\';',
'',
'// CommonJS',
'var Plotly = require(\'' + d.name + '\');',
'```',
'',
copyrightAndLicense
];
fs.writeFile(
path.join(pkgPath, 'README.md'),
cnt.join('\n'),
cb
);
}
function copyMain(cb) {
fs.copy(d.dist, path.join(pkgPath, d.main), cb);
}
var copyLicense = _copyLicense(d, pkgPath);
var publishToNPM = _publishToNPM(d, pkgPath);
runSeries([
initDirectory,
writePackageJSON,
writeREADME,
copyMain,
copyLicense,
publishToNPM
], function(err) {
if(err) throw err;
});
}
function syncLocalesPkg(d) {
var pkgPath = path.join(constants.pathToBuild, d.name);
var initDirectory = _initDirectory(d, pkgPath);
var localeFiles;
function listLocalFiles(cb) {
var localeGlob = path.join(constants.pathToLib, 'locales', '*.js');
glob(localeGlob, function(err, _localeFiles) {
if(err) cb(null);
localeFiles = _localeFiles;
cb();
});
}
function writePackageJSON(cb) {
var cnt = {
name: d.name,
version: pkg.version,
description: d.desc,
license: pkg.license,
main: d.main,
repository: pkg.repository,
bugs: pkg.bugs,
author: pkg.author,
keywords: pkg.keywords,
files: [
'LICENSE',
'README.md',
d.main
].concat(localeFiles.map(function(f) { return path.basename(f); }))
};
fs.writeFile(
path.join(pkgPath, 'package.json'),
JSON.stringify(cnt, null, 2) + '\n',
cb
);
}
function writeREADME(cb) {
var cnt = [
'# ' + d.name,
'',
d.desc,
'',
'For more info on plotly.js, go to https://github.com/plotly/plotly.js',
'',
'## Installation',
'',
'```',
'npm install ' + d.name,
'```',
'## Usage',
'',
'For example to setup the `fr` locale:',
'',
'```js',
'// ES6 module',
'import Plotly from \'plotly.js\';',
'import locale from \'' + d.name + '/fr' + '\';',
'',
'// CommonJS',
'var Plotly = require(\'plotly.js\');',
'var locale = require(\'' + d.name + '/fr\');',
'',
'// then',
'Plotly.register(locale);',
'Plotly.setPlotConfig({locale: \'fr\'})',
'```',
'',
copyrightAndLicense
];
fs.writeFile(
path.join(pkgPath, 'README.md'),
cnt.join('\n'),
cb
);
}
function writeMain(cb) {
var cnt = [constants.licenseSrc, ''];
localeFiles.forEach(function(f) {
var n = path.basename(f, '.js');
cnt.push('exports[\'' + n + '\'] = require(\'./' + n + '.js\');');
});
cnt.push('');
fs.writeFile(
path.join(pkgPath, d.main),
cnt.join('\n'),
cb
);
}
function copyLocaleFiles(cb) {
runSeries(localeFiles.map(function(f) {
return function(cb) {
fs.copy(f, path.join(pkgPath, path.basename(f)), cb);
};
}), cb);
}
var copyLicense = _copyLicense(d, pkgPath);
var publishToNPM = _publishToNPM(d, pkgPath);
runSeries([
initDirectory,
listLocalFiles,
writePackageJSON,
writeREADME,
writeMain,
copyLocaleFiles,
copyLicense,
publishToNPM
], function(err) {
if(err) throw err;
});
}
function _initDirectory(d, pkgPath) {
return function(cb) {
if(common.doesDirExist(pkgPath)) {
cb();
} else {
fs.mkdir(pkgPath, cb);
}
};
}
function _copyLicense(d, pkgPath) {
return function(cb) {
fs.copy(
path.join(constants.pathToRoot, 'LICENSE'),
path.join(pkgPath, 'LICENSE'),
cb
);
};
}
function _publishToNPM(d, pkgPath) {
return function(cb) {
if(process.env.DRYRUN) {
console.log('dry run, did not publish ' + d.name);
cb();
return;
}
exec('npm publish', {cwd: pkgPath}, cb).stdout.pipe(process.stdout);
};
}