summaryrefslogtreecommitdiff
path: root/node_modules/rollup-plugin-node-polyfills/polyfills/vm.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rollup-plugin-node-polyfills/polyfills/vm.js')
-rw-r--r--node_modules/rollup-plugin-node-polyfills/polyfills/vm.js202
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;
+}