in fusion-cli/build/load-fusionrc.js [54:186]
function isValid(config, silent) {
if (!(typeof config === 'object' && config !== null)) {
throw new Error('.fusionrc.js must export an object');
}
if (
!Object.keys(config).every(key =>
[
'babel',
'splitChunks',
'modernBuildOnly',
'defaultImportSideEffects',
'assumeNoImportSideEffects',
'experimentalCompile',
'experimentalTransformTest',
'experimentalBundleTest',
'nodeBuiltins',
'jest',
'brotli',
'zopfli', // TODO: Remove redundant zopfli option
'gzip',
].includes(key)
)
) {
if (config.experimentalSideEffectsTest) {
throw new Error(
`experimentalSideEffectsTest has been removed. Use assumeNoImportSideEffects instead.`
);
}
throw new Error(`Invalid property in .fusionrc.js`);
}
if (config.experimentalCompile && config.experimentalTransformTest) {
throw new Error(
`Cannot use both experimentalCompile and experimentalTransformTest in .fusionrc.js`
);
}
if (config.experimentalCompile && config.experimentalBundleTest) {
throw new Error(
`Cannot use both experimentalCompile and experimentalBundleTest in .fusionrc.js`
);
}
if (config.experimentalCompile) {
if (!silent) {
console.log(
'WARNING: experimentalCompile is deprecated. Use experimentalTransformTest instead.'
);
}
config.experimentalTransformTest = (file, defaults) => {
return 'all';
};
delete config.experimentalCompile;
}
if (
config.babel &&
!Object.keys(config.babel).every(el => ['plugins', 'presets'].includes(el))
) {
throw new Error(
`Only "plugins" and "presets" are supported in fusionrc.js babel config`
);
}
if (
!(
config.assumeNoImportSideEffects === false ||
config.assumeNoImportSideEffects === true ||
config.assumeNoImportSideEffects === void 0
)
) {
throw new Error(
'assumeNoImportSideEffects must be true, false, or undefined in fusionrc.js config'
);
}
if (
!(
config.zopfli === false ||
config.zopfli === true ||
config.zopfli === void 0
)
) {
throw new Error('zopfli must be true, false, or undefined in fusionrc.js');
}
if (config.zopfli === false || config.zopfli === true) {
console.warn('`zopfli` option has been deprecated. Use `gzip` instead');
}
if (
!(config.gzip === false || config.gzip === true || config.gzip === void 0)
) {
throw new Error('gzip must be true, false, or undefined in fusionrc.js');
}
if (
!(
config.brotli === false ||
config.brotli === true ||
config.brotli === void 0
)
) {
throw new Error('brotli must be true, false, or undefined in fusionrc.js');
}
if (
!(
config.defaultImportSideEffects === void 0 ||
config.defaultImportSideEffects === true ||
config.defaultImportSideEffects === false ||
(Array.isArray(config.defaultImportSideEffects) &&
config.defaultImportSideEffects.every(item => typeof item === 'string'))
)
) {
throw new Error(
'defaultImportSideEffects must be true, false, or an array of strings in fusionrc.js'
);
}
if (
config.defaultImportSideEffects !== void 0 &&
config.assumeNoImportSideEffects !== void 0
) {
throw new Error(
`Cannot use both defaultImportSideEffects and assumeNoImportSideEffects in .fusionrc.js`
);
}
return true;
}