Source: configs/rollup.units.conf.js

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

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

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

    return [
        // For Node
        {
            input:    `tests/units/${ packageInfos.name }.units.js`,
            external: [ 'itee-utils', 'mocha', 'chai', 'fs' ],
            plugins:  [
                replace( {
                    replaces: {
                        'coresUnits.call': '//coresUnits.call',

                        'isEventTargetUnits.call': '//isEventTargetUnits.call',
                    }
                } ),
                cleanup( {
                    comments: 'none'
                } )
            ],
            treeshake: true,
            output:    {
                indent: '\t',
                format: 'cjs',
                file:   `tests/units/builds/${ packageInfos.name }.units.cjs.js`
            }
        },
        // For Karma
        {
            input:    `tests/units/${ packageInfos.name }.units.js`,
            external: [
                'mocha',
                'chai'
            ],
            plugins: [
                nodeResolve(), // required to bundle itee-utils that cannot be integrated as standalone file (why???)=> because circular ref with itee validator package -_-'
                replace( {
                    replaces: {
                        // 'coresUnits.call':          '//coresUnits.call',

                        'isBlockDevicePathUnits.call':          '//isBlockDevicePathUnits.call',
                        'isValidBlockDevicePathUnits.call':     '//isValidBlockDevicePathUnits.call',
                        'isCharacterDevicePathUnits.call':      '//isCharacterDevicePathUnits.call',
                        'isValidCharacterDevicePathUnits.call': '//isValidCharacterDevicePathUnits.call',
                        'isDirectoryPathUnits.call':            '//isDirectoryPathUnits.call',
                        'isValidDirectoryPathUnits.call':       '//isValidDirectoryPathUnits.call',
                        'isEmptyDirectoryUnits.call':           '//isEmptyDirectoryUnits.call',
                        'isFIFOPathUnits.call':                 '//isFIFOPathUnits.call',
                        'isValidFIFOPathUnits.call':            '//isValidFIFOPathUnits.call',
                        'isFilePathUnits.call':                 '//isFilePathUnits.call',
                        'isValidFilePathUnits.call':            '//isValidFilePathUnits.call',
                        'isEmptyFileUnits.call':                '//isEmptyFileUnits.call',
                        'isValidPathUnits.call':                '//isValidPathUnits.call',
                        'isSocketPathUnits.call':               '//isSocketPathUnits.call',
                        'isValidSocketPathUnits.call':          '//isValidSocketPathUnits.call',
                        'isSymbolicLinkPathUnits.call':         '//isSymbolicLinkPathUnits.call',
                        'isValidSymbolicLinkPathUnits.call':    '//isValidSymbolicLinkPathUnits.call'
                    }
                } ),
                cleanup( {
                    comments: 'none'
                } )
            ],
            treeshake: true,
            output:    {
                indent:  '\t',
                format:  'iife',
                name:    'Itee.Units',
                globals: {
                    'mocha': 'Mocha',
                    'chai':  'chai'
                },
                file: `tests/units/builds/${ packageInfos.name }.units.iife.js`
            }
        },
    ]

}

module.exports = CreateUnitsRollupConfigs