flow like the river
This commit is contained in:
commit
013fe673f3
42435 changed files with 5764238 additions and 0 deletions
102
VISUALIZACION/node_modules/safer-eval/lib/browser.js
generated
vendored
Executable file
102
VISUALIZACION/node_modules/safer-eval/lib/browser.js
generated
vendored
Executable file
|
|
@ -0,0 +1,102 @@
|
|||
/**
|
||||
* @copyright 2017 Commenthol
|
||||
* @license MIT
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||
|
||||
var _require = require('./common'),
|
||||
createContext = _require.createContext,
|
||||
allow = _require.allow;
|
||||
/**
|
||||
* reuse saferEval context
|
||||
* @class
|
||||
* @example
|
||||
* const {SaferEval} = require('safer-eval')
|
||||
* const safer = new SaferEval()
|
||||
* let res1 = safer.runInContext('new Date('1970-01-01')')
|
||||
* let res2 = safer.runInContext('new Date('1970-07-01')')
|
||||
*/
|
||||
|
||||
|
||||
var SaferEval =
|
||||
/*#__PURE__*/
|
||||
function () {
|
||||
/**
|
||||
* @param {Object} [context] - allowed context
|
||||
*/
|
||||
function SaferEval(context) {
|
||||
_classCallCheck(this, SaferEval);
|
||||
|
||||
// define disallowed objects in context
|
||||
var __context = createContext(); // apply "allowed" context vars
|
||||
|
||||
|
||||
allow(context, __context);
|
||||
this._context = __context;
|
||||
}
|
||||
/**
|
||||
* @param {String} code - a string containing javascript code
|
||||
* @return {Any} evaluated code
|
||||
*/
|
||||
|
||||
|
||||
_createClass(SaferEval, [{
|
||||
key: "runInContext",
|
||||
value: function runInContext(code) {
|
||||
if (typeof code !== 'string') {
|
||||
throw new TypeError('not a string');
|
||||
}
|
||||
|
||||
var __context = this._context;
|
||||
var src = 'this.constructor.constructor = function () {};\n'; // set local scope vars from each context property
|
||||
|
||||
Object.keys(__context).forEach(function (key) {
|
||||
src += 'var ' + key + ' = __context[\'' + key + '\'];\n';
|
||||
});
|
||||
src += 'return ' + code + ';\n';
|
||||
return Function('__context', src).call(null, __context); // eslint-disable-line
|
||||
}
|
||||
}]);
|
||||
|
||||
return SaferEval;
|
||||
}();
|
||||
/**
|
||||
* A safer approach for eval. (Browser)
|
||||
*
|
||||
* This might not be as safe as the nodeJs version as there is no real sandboxing
|
||||
* available in the browser.
|
||||
*
|
||||
* **Warning: This function might be harmful - so you are warned!**
|
||||
*
|
||||
* `context` allows the definition of passed in Objects into the sandbox.
|
||||
* Take care, injected `code` can overwrite those passed context props!
|
||||
* Check the tests under "harmful context"!
|
||||
*
|
||||
* @static
|
||||
* @throws Error
|
||||
* @param {String} code - a string containing javascript code
|
||||
* @param {Object} [context] - define globals, properties for evaluation context
|
||||
* @param {Object} [opts] - options
|
||||
* @param {Object} [opts.freeze=true] - freeze all native objects
|
||||
* @return {Any} evaluated code
|
||||
* @example
|
||||
* var code = `{d: new Date('1970-01-01'), b: function () { return navigator.userAgent }`
|
||||
* var res = saferEval(code, {navigator: window.navigator})
|
||||
* // => toString.call(res.d) = '[object Date]'
|
||||
* // => toString.call(res.b) = '[object Function]'
|
||||
*/
|
||||
|
||||
|
||||
function saferEval(code, context) {
|
||||
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
||||
return new SaferEval(context).runInContext(code);
|
||||
}
|
||||
|
||||
module.exports = saferEval;
|
||||
module.exports.SaferEval = SaferEval;
|
||||
140
VISUALIZACION/node_modules/safer-eval/lib/common.js
generated
vendored
Executable file
140
VISUALIZACION/node_modules/safer-eval/lib/common.js
generated
vendored
Executable file
|
|
@ -0,0 +1,140 @@
|
|||
'use strict';
|
||||
|
||||
var clones = require('clones');
|
||||
|
||||
var hasWindow = typeof window !== 'undefined';
|
||||
exports.hasWindow = hasWindow;
|
||||
var hasGlobal = typeof global !== 'undefined';
|
||||
exports.hasGlobal = hasGlobal;
|
||||
var FN_NOOP = 'function () {}';
|
||||
var NON_IDENTIFIER = /^\d|-|^(break|case|catch|continue|debugger|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|this|throw|try|typeof|var|void|while|with|class|const|enum|export|extends|import|super|implements|interface|let|package|private|protected|public|static|yield|null|true|false)$/;
|
||||
|
||||
var isIdentifier = function isIdentifier(key) {
|
||||
return !NON_IDENTIFIER.test(key);
|
||||
};
|
||||
|
||||
exports.isIdentifier = isIdentifier;
|
||||
/**
|
||||
* create a fresh context where nearly nothing is allowed
|
||||
* @private
|
||||
*/
|
||||
|
||||
exports.createContext = function () {
|
||||
// protection might not be complete!
|
||||
var context = {
|
||||
// disallowed
|
||||
global: undefined,
|
||||
process: undefined,
|
||||
module: undefined,
|
||||
require: undefined,
|
||||
document: undefined,
|
||||
window: undefined,
|
||||
Window: undefined,
|
||||
// no evil...
|
||||
eval: undefined,
|
||||
Function: undefined
|
||||
};
|
||||
|
||||
var fillContext = function fillContext(root) {
|
||||
Object.keys(root).forEach(function (key) {
|
||||
if (isIdentifier(key)) {
|
||||
context[key] = undefined;
|
||||
}
|
||||
});
|
||||
}; // locally define all potential global vars
|
||||
|
||||
|
||||
if (hasGlobal) {
|
||||
fillContext(global);
|
||||
cloneFunctions(context);
|
||||
context.Buffer = _protect('Buffer');
|
||||
context.console = clones(console, console); // console needs special treatment
|
||||
|
||||
context.console.constructor.constructor = FN_NOOP;
|
||||
}
|
||||
|
||||
if (hasWindow) {
|
||||
fillContext(window, true);
|
||||
cloneFunctions(context);
|
||||
protectBuiltInObjects(context);
|
||||
context.console = clones(console, console); // console needs special treatment
|
||||
|
||||
try {
|
||||
context.Object.constructor.constructor = FN_NOOP;
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
return context;
|
||||
};
|
||||
/**
|
||||
* Apply allowed context properties
|
||||
* @private
|
||||
*/
|
||||
|
||||
|
||||
exports.allow = function (context, newContext) {
|
||||
Object.keys(context || {}).forEach(function (key) {
|
||||
if (isIdentifier(key)) {
|
||||
newContext[key] = context[key]; // this is harmful - objects can be overwritten
|
||||
}
|
||||
});
|
||||
};
|
||||
/**
|
||||
* clone global functions
|
||||
* @private
|
||||
*/
|
||||
|
||||
|
||||
function cloneFunctions(context) {
|
||||
;
|
||||
['clearImmediate', 'clearInterval', 'clearTimeout'].forEach(function (str) {
|
||||
try {
|
||||
var fn = new Function("return ".concat(str))(); // eslint-disable-line no-new-func
|
||||
|
||||
context[str] = fn ? function () {
|
||||
return fn.apply(null, [].slice.call(arguments));
|
||||
} : undefined;
|
||||
} catch (e) {}
|
||||
});
|
||||
['setImmediate', 'setInterval', 'setTimeout'].forEach(function (str) {
|
||||
try {
|
||||
var fn = new Function("return ".concat(str))(); // eslint-disable-line no-new-func
|
||||
|
||||
context[str] = fn ? function (f) {
|
||||
if (typeof f === 'function') {
|
||||
return fn.apply(null, [].slice.call(arguments));
|
||||
} else {
|
||||
throw new Error(str + ' requires function as argument');
|
||||
}
|
||||
} : undefined;
|
||||
} catch (e) {}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* wraps up build-in objects using a cloned copy
|
||||
* protect object against overwriting
|
||||
* @private
|
||||
*/
|
||||
|
||||
|
||||
function protectBuiltInObjects(context) {
|
||||
;
|
||||
['Object', 'Boolean', 'Symbol', 'Error', 'EvalError', 'InternalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'Number', 'Math', 'Date', 'String', 'RegExp', 'Array', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', 'Float64Array', 'Map', 'Set', 'WeakMap', 'WeakSet', 'ArrayBuffer', 'SharedArrayBuffer', 'Atomics', 'DataView', 'JSON', 'Promise', 'Generator', 'GeneratorFunction', 'Reflect', 'Proxy', 'Intl', 'Buffer'].forEach(function (str) {
|
||||
try {
|
||||
context[str] = _protect(str);
|
||||
new context[str](); // eslint-disable-line no-new
|
||||
} catch (e) {}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
|
||||
|
||||
function _protect(str) {
|
||||
try {
|
||||
var type = new Function("return ".concat(str))(); // eslint-disable-line no-new-func
|
||||
|
||||
return type ? clones.classes(type) : undefined;
|
||||
} catch (e) {}
|
||||
}
|
||||
99
VISUALIZACION/node_modules/safer-eval/lib/index.js
generated
vendored
Executable file
99
VISUALIZACION/node_modules/safer-eval/lib/index.js
generated
vendored
Executable file
|
|
@ -0,0 +1,99 @@
|
|||
/**
|
||||
* @copyright 2017 Commenthol
|
||||
* @license MIT
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||
|
||||
var vm = require('vm');
|
||||
|
||||
var _require = require('./common'),
|
||||
createContext = _require.createContext,
|
||||
allow = _require.allow;
|
||||
/**
|
||||
* reuse saferEval context
|
||||
* @class
|
||||
* @example
|
||||
* const {SaferEval} = require('safer-eval')
|
||||
* const safer = new SaferEval()
|
||||
* let res1 = safer.runInContext('new Date('1970-01-01')')
|
||||
* let res2 = safer.runInContext('new Date('1970-07-01')')
|
||||
*/
|
||||
|
||||
|
||||
var SaferEval =
|
||||
/*#__PURE__*/
|
||||
function () {
|
||||
/**
|
||||
* @param {Object} [context] - allowed context
|
||||
* @param {Object} [options] - options for `vm.runInContext`
|
||||
*/
|
||||
function SaferEval(context, options) {
|
||||
_classCallCheck(this, SaferEval);
|
||||
|
||||
// define disallowed objects in context
|
||||
var __context = createContext(); // apply "allowed" context vars
|
||||
|
||||
|
||||
allow(context, __context);
|
||||
this._context = vm.createContext(__context);
|
||||
this._options = options;
|
||||
}
|
||||
/**
|
||||
* @param {String} code - a string containing javascript code
|
||||
* @return {Any} evaluated code
|
||||
*/
|
||||
|
||||
|
||||
_createClass(SaferEval, [{
|
||||
key: "runInContext",
|
||||
value: function runInContext(code) {
|
||||
if (typeof code !== 'string') {
|
||||
throw new TypeError('not a string');
|
||||
}
|
||||
|
||||
var src = '(function () {"use strict";\n';
|
||||
src += 'Object.constructor = function () {};\n';
|
||||
src += 'return ' + code + ';\n';
|
||||
src += '})()';
|
||||
return vm.runInContext(src, this._context, this._options);
|
||||
}
|
||||
}]);
|
||||
|
||||
return SaferEval;
|
||||
}();
|
||||
/**
|
||||
* A safer approach for eval. (node)
|
||||
*
|
||||
* In node the `vm` module is used to sandbox the evaluation of `code`.
|
||||
*
|
||||
* `context` allows the definition of passed in Objects into the sandbox.
|
||||
* Take care, injected `code` can overwrite those passed context props!
|
||||
* Check the tests under "harmful context"!
|
||||
*
|
||||
* @static
|
||||
* @throws Error
|
||||
* @param {String} code - a string containing javascript code
|
||||
* @param {Object} [context] - define globals, properties for evaluation context
|
||||
* @return {Any} evaluated code
|
||||
* @example
|
||||
* var code = `{d: new Date('1970-01-01'), b: new Buffer('data')}`
|
||||
* var res = saferEval(code, {Buffer: Buffer})
|
||||
* // => toString.call(res.d) = '[object Date]'
|
||||
* // => toString.call(res.b) = '[object Buffer]'
|
||||
*/
|
||||
|
||||
|
||||
function saferEval(code, context) {
|
||||
'use strict';
|
||||
|
||||
return new SaferEval(context).runInContext(code);
|
||||
}
|
||||
|
||||
module.exports = saferEval;
|
||||
module.exports.SaferEval = SaferEval;
|
||||
Loading…
Add table
Add a link
Reference in a new issue