siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
41 lines (28 loc) • 1.1 kB
text/typescript
let vm = require('vm')
export const requireInContext = (fileName : string, ctx? : object, requireFun? : Function) : object => {
let old = vm.runInThisContext
let context : any = ctx
if (!ctx) {
context = Object.assign(ctx || {}, {
Buffer : Buffer,
process : process,
console : console,
setImmediate : setImmediate,
clearImmediate : clearImmediate,
setTimeout : setTimeout,
clearTimeout : clearTimeout,
setInterval : setInterval,
clearInterval : clearInterval
})
if (typeof URL != 'undefined') context.URL = URL
if (typeof URLSearchParams != 'undefined') context.URLSearchParams = URLSearchParams
context.global = context
vm.createContext(context)
}
vm.runInThisContext = (code, options) => {
return vm.runInContext(code, context, options)
}
(requireFun || require)(fileName)
vm.runInThisContext = old
return context
}