sharyn
Version:
Combines all the other packages under one.
36 lines (28 loc) • 966 B
Flow
// @flow
/* eslint-disable global-require, import/no-dynamic-require */
import appRoot from './app-root'
import hasFile from './has-file'
const { NODE_ENV } = process.env
const requireCascade_ = (...filenames: any[]) => {
if (!filenames.length) {
throw Error('requireCascade takes at least one argument')
}
let module
const filesnames_ = Array.isArray(filenames[0]) ? filenames[0] : filenames
filesnames_.some(f => {
if (hasFile(f)) {
// flow-disable-next-line
const requiredModule = require(`${appRoot}/${f}`)
module = requiredModule.default ?? requiredModule
return true
}
return false
})
return module
}
const requireCascadeFromSource_ = (...filenames: string[]) =>
requireCascade_(
filenames.map(f => `${NODE_ENV === 'production' || NODE_ENV === 'test' ? 'lib/' : 'src/'}${f}`),
)
export const requireCascade = requireCascade_
export const requireCascadeFromSource = requireCascadeFromSource_