Source: configs/rollup.benchs.conf.js

/**
 * @author [Tristan Valcke]{@link https://github.com/Itee}
 * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause}
 *
 * @module Config-Rollup-Test
 * @description The file manage the rollup configuration for build tests
 */

const packageInfos = require( '../package' )
const { nodeResolve } = require( '@rollup/plugin-node-resolve' )
const cleanup         = require( 'rollup-plugin-cleanup' )
const replace         = require( 'rollup-plugin-re' )
const alias           = require( '@rollup/plugin-alias' )

/**
 * Will create an appropriate configuration object for rollup, related to the given arguments.
 *
 * @generator
 * @return {Array.<json>} An array of rollup configuration
 */
function CreateBenchmarksRollupConfigs ( /*options*/ ) {
    'use strict'

    return [
        // For Node
        {
            input:    `tests/benchmarks/${ packageInfos.name }.benchs.js`,
            external: [
                'benchmark',
                'fs',
                'path'
            ],
            plugins: [
                replace( {
                    defines: {
                        IS_KEEP_ON_BUILD:     true,
                        IS_BACKEND_SPECIFIC:  true,
                        IS_FRONTEND_SPECIFIC: false,
                    }
                } ),
                nodeResolve( {
                    preferBuiltins: true
                } ),
                alias( {
                    entries: [
                        {
                            find:        'itee-utils',
                            replacement: '../../../builds/itee-utils.esm.js'
                        }
                        //                                        {
                        //                                            find:        'itee-validators',
                        //                                            replacement: 'node_modules/itee-validators/builds/itee-validators.cjs.js'
                        //                                        }
                    ]
                } ),
                cleanup( {
                    comments: 'none'
                } )
            ],
            treeshake: true,
            output:    {
                indent: '\t',
                format: 'cjs',
                file:   `tests/benchmarks/builds/${ packageInfos.name }.benchs.cjs.js`
            }
        },
        // For Karma
        {
            input:    `tests/benchmarks/${ packageInfos.name }.benchs.js`,
            external: [
                'benchmark'
            ],
            plugins: [
                replace( {
                    defines: {
                        IS_KEEP_ON_BUILD:     true,
                        IS_BACKEND_SPECIFIC:  false,
                        IS_FRONTEND_SPECIFIC: true,
                    }
                } ),
                nodeResolve( {
                    preferBuiltins: true
                } ),
                alias( {
                    entries: [
                        {
                            find:        'itee-utils',
                            replacement: '../../../builds/itee-utils.esm.js'
                        }
                        //                                        {
                        //                                            find:        'itee-validators',
                        //                                            replacement: 'node_modules/itee-validators/builds/itee-validators.cjs.js'
                        //                                        }
                    ]
                } ),
                cleanup( {
                    comments: 'none'
                } )
            ],
            treeshake: {
                moduleSideEffects:                false,
                annotations:                      true,
                correctVarValueBeforeDeclaration: true,
                propertyReadSideEffects:          false,
                tryCatchDeoptimization:           true,
                unknownGlobalSideEffects:         false
            },
            output: {
                indent:  '\t',
                format:  'iife',
                name:    'Itee.Benchmarks',
                globals: {
                    'benchmark': 'Benchmark'
                },
                file: `tests/benchmarks/builds/${ packageInfos.name }.benchs.iife.js`
            }
        },
    ]
}

module.exports = CreateBenchmarksRollupConfigs