Запустить ненадежную функцию 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 и получить возвращаемое значение?

0 ответов

Другие вопросы по тегам