diff options
| author | akiyamn | 2023-09-24 23:22:21 +1000 |
|---|---|---|
| committer | akiyamn | 2023-09-24 23:22:21 +1000 |
| commit | 4e87195739f2a5d9a05451b48773c8afdc680765 (patch) | |
| tree | 9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/rollup-plugin-node-polyfills/polyfills/vm.js | |
| download | price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.tar.gz price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.zip | |
Initial commit (by create-cloudflare CLI)
Diffstat (limited to 'node_modules/rollup-plugin-node-polyfills/polyfills/vm.js')
| -rw-r--r-- | node_modules/rollup-plugin-node-polyfills/polyfills/vm.js | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/node_modules/rollup-plugin-node-polyfills/polyfills/vm.js b/node_modules/rollup-plugin-node-polyfills/polyfills/vm.js new file mode 100644 index 0000000..9150657 --- /dev/null +++ b/node_modules/rollup-plugin-node-polyfills/polyfills/vm.js @@ -0,0 +1,202 @@ +/* +from https://github.com/substack/vm-browserify/blob/bfd7c5f59edec856dc7efe0b77a4f6b2fa20f226/index.js + +MIT license no Copyright holder mentioned +*/ + + +function Object_keys(obj) { + if (Object.keys) return Object.keys(obj) + else { + var res = []; + for (var key in obj) res.push(key) + return res; + } +} + +function forEach(xs, fn) { + if (xs.forEach) return xs.forEach(fn) + else + for (var i = 0; i < xs.length; i++) { + fn(xs[i], i, xs); + } +} +var _defineProp; + +function defineProp(obj, name, value) { + if (typeof _defineProp !== 'function') { + _defineProp = createDefineProp; + } + _defineProp(obj, name, value); +} + +function createDefineProp() { + try { + Object.defineProperty({}, '_', {}); + return function(obj, name, value) { + Object.defineProperty(obj, name, { + writable: true, + enumerable: false, + configurable: true, + value: value + }) + }; + } catch (e) { + return function(obj, name, value) { + obj[name] = value; + }; + } +} + +var globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function', + 'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError', + 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError', + 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape', + 'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape' +]; + +function Context() {} +Context.prototype = {}; + +export function Script(code) { + if (!(this instanceof Script)) return new Script(code); + this.code = code; +} +function otherRunInContext(code, context) { + var args = Object_keys(global); + args.push('with (this.__ctx__){return eval(this.__code__)}'); + var fn = Function.apply(null, args); + return fn.apply({ + __code__: code, + __ctx__: context + }); +} +Script.prototype.runInContext = function(context) { + if (!(context instanceof Context)) { + throw new TypeError('needs a \'context\' argument.'); + } + if (global.document) { + var iframe = global.document.createElement('iframe'); + if (!iframe.style) iframe.style = {}; + iframe.style.display = 'none'; + + global.document.body.appendChild(iframe); + + var win = iframe.contentWindow; + var wEval = win.eval, + wExecScript = win.execScript; + + if (!wEval && wExecScript) { + // win.eval() magically appears when this is called in IE: + wExecScript.call(win, 'null'); + wEval = win.eval; + } + + forEach(Object_keys(context), function(key) { + win[key] = context[key]; + }); + forEach(globals, function(key) { + if (context[key]) { + win[key] = context[key]; + } + }); + + var winKeys = Object_keys(win); + + var res = wEval.call(win, this.code); + + forEach(Object_keys(win), function(key) { + // Avoid copying circular objects like `top` and `window` by only + // updating existing context properties or new properties in the `win` + // that was only introduced after the eval. + if (key in context || indexOf(winKeys, key) === -1) { + context[key] = win[key]; + } + }); + + forEach(globals, function(key) { + if (!(key in context)) { + defineProp(context, key, win[key]); + } + }); + global.document.body.removeChild(iframe); + + return res; + } + return otherRunInContext(this.code, context); +}; + +Script.prototype.runInThisContext = function() { + var fn = new Function('code', 'return eval(code);'); + return fn.call(global, this.code); // maybe... +}; + +Script.prototype.runInNewContext = function(context) { + var ctx = createContext(context); + var res = this.runInContext(ctx); + if (context) { + forEach(Object_keys(ctx), function(key) { + context[key] = ctx[key]; + }); + } + + return res; +}; + + +export function createScript(code) { + return new Script(code); +} + +export function createContext(context) { + if (isContext(context)) { + return context; + } + var copy = new Context(); + if (typeof context === 'object') { + forEach(Object_keys(context), function(key) { + copy[key] = context[key]; + }); + } + return copy; +} +export function runInContext(code, contextifiedSandbox, options) { + var script = new Script(code, options); + return script.runInContext(contextifiedSandbox, options); +} +export function runInThisContext(code, options) { + var script = new Script(code, options); + return script.runInThisContext(options); +} +export function isContext(context) { + return context instanceof Context; +} +export function runInNewContext(code, sandbox, options) { + var script = new Script(code, options); + return script.runInNewContext(sandbox, options); +} +export default { + runInContext: runInContext, + isContext: isContext, + createContext: createContext, + createScript: createScript, + Script: Script, + runInThisContext: runInThisContext, + runInNewContext: runInNewContext +} + + +/* +from indexOf +@ author tjholowaychuk +@ license MIT +*/ +var _indexOf = [].indexOf; + +function indexOf(arr, obj){ + if (_indexOf) return arr.indexOf(obj); + for (var i = 0; i < arr.length; ++i) { + if (arr[i] === obj) return i; + } + return -1; +} |
