Запустить ненадежную функцию JS без побочных эффектов в узле
Я хочу, чтобы пользователи автоматизировали определенные части создаваемого мной веб-сервиса. По сути, пользователи создают функции, которые имеют определенные входные параметры, которые будут обрабатываться, и возвращаемое значение. Примерно так (в финальной версии может быть посложнее):
function messageReceived(message){
let rejected=false
//really don't like that guy
if(message.author=="thomas.wayne74")
rejected=true
//this might be extended to allow sending of messages or primitive permanent storage which will happen outside the function authors control
return {
"rejected":rejected
}
}
}
Идея состоит в том, что у пользователей есть ограниченное количество вызовов и памяти компьютера на выполнение, и программа будет завершена, если это займет больше 100 мс. Но для создания чего-то подобного мне понадобится способ запустить одну функцию в изолированной среде внутри узла, которая бы запрещала ему такие вещи, как доступ к файлам, сетевые соединения и т. Д. У него не должно быть абсолютно никаких побочных эффектов, кроме возврата значения JSON и Мне также понадобится способ ограничить память, которую разрешено использовать программе. Есть ли способ сделать это, запустить одну функцию в песочнице с nodejs и получить возвращаемое значение?