#include #include #include #include #include #ifdef _WIN32 #include #endif // _WIN32 #include "../handler/multithread.h" #include "../handler/webget.h" #include "../handler/settings.h" #include "../parser/config/proxy.h" #include "../utils/map_extra.h" #include "../utils/system.h" #include "script_quickjs.h" std::string parseProxy(const std::string &source); static const std::string qjs_require_module {R"(import * as std from 'std' import * as os from 'os' let modules = {} let debug = console.log { let _debugOptions = std.getenv('DEBUG') if (typeof _debugOptions == 'undefined' || _debugOptions.split(',').indexOf('require') === -1) { debug = function () {} } } class CJSModule { constructor (id) { this.id = id this._failed = null this._loaded = false this.exports = {} } load () { const __file = this.id const __dir = _basename(this.id) const _require = require let ctx = { exports: {} } // Prevents modules from changing exports Object.seal(ctx) const _mark = '<