40 lines
859 B
Plaintext
40 lines
859 B
Plaintext
|
import jitiFactory from 'jiti'
|
||
|
import { transform } from 'sucrase'
|
||
|
|
||
|
import { Config } from '../../types/config'
|
||
|
|
||
|
let jiti: ReturnType<typeof jitiFactory> | null = null
|
||
|
|
||
|
// @internal
|
||
|
// This WILL be removed in some future release
|
||
|
// If you rely on this your stuff WILL break
|
||
|
export function useCustomJiti(_jiti: () => ReturnType<typeof jitiFactory>) {
|
||
|
jiti = _jiti()
|
||
|
}
|
||
|
|
||
|
function lazyJiti() {
|
||
|
return (
|
||
|
jiti ??
|
||
|
(jiti = jitiFactory(__filename, {
|
||
|
interopDefault: true,
|
||
|
transform: (opts) => {
|
||
|
return transform(opts.source, {
|
||
|
transforms: ['typescript', 'imports'],
|
||
|
})
|
||
|
},
|
||
|
}))
|
||
|
)
|
||
|
}
|
||
|
|
||
|
export function loadConfig(path: string): Config {
|
||
|
let config = (function () {
|
||
|
try {
|
||
|
return path ? require(path) : {}
|
||
|
} catch {
|
||
|
return lazyJiti()(path)
|
||
|
}
|
||
|
})()
|
||
|
|
||
|
return config.default ?? config
|
||
|
}
|